diff --git a/.changeset/empty-cougars-grab.md b/.changeset/empty-cougars-grab.md deleted file mode 100644 index 7500abb6e6..0000000000 --- a/.changeset/empty-cougars-grab.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@graphql-inspector/patch': patch ---- - -Initial release. Patch applies a list of changes (output from `@graphql-inspector/core`'s `diff`) to -a GraphQL Schema. - -Example usage: - -```typescript -import { buildSchema } from "graphql"; -import { diff } from "@graphql-inspector/core"; -import { patchSchema } from "@graphql-inspector/patch"; - -const schemaA = buildSchema(before, { assumeValid: true, assumeValidSDL: true }); -const schemaB = buildSchema(after, { assumeValid: true, assumeValidSDL: true }); - -const changes = await diff(schemaA, schemaB); -const patched = patchSchema(schemaA, changes); -``` - -If working from an AST, you may alternatively use the exported `patch` function. But be careful to make sure directives are included in your AST or those changes will be missed. diff --git a/.changeset/khaki-terms-call.md b/.changeset/khaki-terms-call.md deleted file mode 100644 index 40fae613e1..0000000000 --- a/.changeset/khaki-terms-call.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@graphql-inspector/commands': minor -'@graphql-inspector/loaders': minor -'@graphql-inspector/core': minor -'@graphql-inspector/cli': minor ---- - -Apollo Federation v2 support. Introduced built-in Federation v2 directives and a new CLI flag ---federationV2 to enable processing schemas that use them. diff --git a/.changeset/long-rules-shop.md b/.changeset/long-rules-shop.md deleted file mode 100644 index d4bd7aaa3d..0000000000 --- a/.changeset/long-rules-shop.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@graphql-inspector/diff-command': major ---- - -Added option to include nested changes. Use `--rule verboseChanges`. Enabling this will output nested changes. I.e. if adding a new type, then `verboseChanges` will also include the addition of the fields on that type. By default, these changes are excluded from the output because they don't impact the outcome and create a lot of noise. - -Added better directive support. - -Adjusted severity level for conditionally safe changes: -- Adding or removing deprecated directive is considered non-breaking -- Adding an interface to a new type is non-breaking -- Adding an argument to a new field is non-breaking -- Adding a directive to a new object (type, interface, etc..) is non-breaking diff --git a/.changeset/purple-otters-remain.md b/.changeset/purple-otters-remain.md deleted file mode 100644 index fb5fdf6495..0000000000 --- a/.changeset/purple-otters-remain.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@graphql-inspector/cli': major ---- - -major upgrade to diff command which modifies paths, severity levels, and adds support for -directives. See changelog for diff-command package for more insights. diff --git a/.changeset/seven-jars-yell.md b/.changeset/seven-jars-yell.md deleted file mode 100644 index 6ed95b4dc2..0000000000 --- a/.changeset/seven-jars-yell.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -'@graphql-inspector/core': major ---- - -This is a major change to `@graphql-inspector/core` and introduces a new `@graphql-inspector/patch` package, which applies changes output from `diff` on top of a schema -- essentially rebasing these changes onto any schema. - -These changes include: -- Numerous adjustments to Change types to create more accurate severity levels, such as a boolean indicating if the change applies to a new type or an existing type. -- Adjustmented the "path" on several change types in order to consistently map to the exact AST node being changed. For example, `EnumValueDeprecationReasonAdded`'s path previously referenced the enumValue (e.g. `EnumName.value`), not the deprecated directive (e.g. `EnumName.value.@deprecated`). -- Added new attributes in order to provide enough context for a new "@graphql-inspector/patch" function to apply changes accurately. -- Added support for repeatable directives -- Includes all nested changes in `diff` output when a new node is added. This can dramatically increase the number of changes listed which can be noisy, but it makes it possible for "@graphql-inspector/patch" to apply all changes from a schema. This can be optionally filtered using a newly exported `DiffRule.simplifyChanges` rule. - -For example, given an existing schema: - -```graphql -type User { - id: ID! - name: String! -} -``` - -And a diff schema: - -```graphql -type User { - id: ID! - name: String! - address: Address -} - -type Address { - line1: String! - line2: String! -} -``` - -Then previously the output would be: - -```json -[ - { - "criticality": { - "level": "NON_BREAKING", - }, - "message": "Type 'Address' was added", - "meta": { - "addedTypeKind": "ObjectTypeDefinition", - "addedTypeName": "Address", - }, - "path": "Address", - "type": "TYPE_ADDED", - }, - { - "criticality": { - "level": "NON_BREAKING", - }, - "message": "Field 'address' was added to object type 'User'", - "meta": { - "addedFieldName": "address", - "addedFieldReturnType": "Address", - "typeName": "User", - "typeType": "object type", - }, - "path": "User.address", - "type": "FIELD_ADDED", - }, -] -``` - -But now the output also includes the fields inside the new `Address` type: - -```json -[ - { - "criticality": { - "level": "NON_BREAKING", - }, - "message": "Type 'Address' was added", - "meta": { - "addedTypeKind": "ObjectTypeDefinition", - "addedTypeName": "Address", - }, - "path": "Address", - "type": "TYPE_ADDED", - }, - { - "criticality": { - "level": "NON_BREAKING", - }, - "message": "Field 'line1' was added to object type 'Address'", - "meta": { - "addedFieldName": "line1", - "addedFieldReturnType": "String!", - "typeName": "Address", - "typeType": "object type", - }, - "path": "Address.line1", - "type": "FIELD_ADDED", - }, - { - "criticality": { - "level": "NON_BREAKING", - }, - "message": "Field 'line2' was added to object type 'Address'", - "meta": { - "addedFieldName": "line2", - "addedFieldReturnType": "String!", - "typeName": "Address", - "typeType": "object type", - }, - "path": "Address.line2", - "type": "FIELD_ADDED", - }, - { - "criticality": { - "level": "NON_BREAKING", - }, - "message": "Field 'address' was added to object type 'User'", - "meta": { - "addedFieldName": "address", - "addedFieldReturnType": "Address", - "typeName": "User", - "typeType": "object type", - }, - "path": "User.address", - "type": "FIELD_ADDED", - }, -] -``` - -These additional changes can be filtered using a new rule: - -```js -import { DiffRule, diff } from "@graphql-inspector/core"; -const changes = await diff(a, b, [DiffRule.simplifyChanges]); -``` diff --git a/.changeset/tasty-cycles-press.md b/.changeset/tasty-cycles-press.md deleted file mode 100644 index c087a3d852..0000000000 --- a/.changeset/tasty-cycles-press.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@graphql-inspector/diff-command': minor ---- - -Allow TypeScript rules to be applied to diff commands from the CLI diff --git a/packages/action/CHANGELOG.md b/packages/action/CHANGELOG.md index 517ac06d27..e3cd866653 100644 --- a/packages/action/CHANGELOG.md +++ b/packages/action/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/action +## 5.0.12 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/action/package.json b/packages/action/package.json index bf0462ea3d..a5533ca007 100644 --- a/packages/action/package.json +++ b/packages/action/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/action", - "version": "5.0.11", + "version": "5.0.12", "type": "module", "description": "GraphQL Inspector functionality for GitHub Actions", "repository": { diff --git a/packages/ci/CHANGELOG.md b/packages/ci/CHANGELOG.md index 91ee23e42e..8174be9f3e 100644 --- a/packages/ci/CHANGELOG.md +++ b/packages/ci/CHANGELOG.md @@ -1,5 +1,14 @@ # @graphql-inspector/ci +## 5.0.7 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/loaders@4.1.0 + ## 5.0.6 ### Patch Changes diff --git a/packages/ci/package.json b/packages/ci/package.json index b807b2c3c2..ff8190bc5e 100644 --- a/packages/ci/package.json +++ b/packages/ci/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/ci", - "version": "5.0.6", + "version": "5.0.7", "type": "module", "description": "Tooling for GraphQL. Compare GraphQL Schemas, check documents, find breaking changes, find similar types.", "repository": { diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index e7bb44ce21..172f5aa23a 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,40 @@ # @graphql-inspector/cli +## 6.0.0 + +### Major Changes + +- [#2913](https://github.com/graphql-hive/graphql-inspector/pull/2913) + [`cf9c40c`](https://github.com/graphql-hive/graphql-inspector/commit/cf9c40c7a105ebf0b910bc5f0cb8b18f0f15b79b) + Thanks [@jdolle](https://github.com/jdolle)! - major upgrade to diff command which modifies paths, + severity levels, and adds support for directives. See changelog for diff-command package for more + insights. + +### Minor Changes + +- [#2900](https://github.com/graphql-hive/graphql-inspector/pull/2900) + [`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a) + Thanks [@emileriksson](https://github.com/emileriksson)! - Apollo Federation v2 support. + Introduced built-in Federation v2 directives and a new CLI flag --federationV2 to enable + processing schemas that use them. + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00), + [`6a8add5`](https://github.com/graphql-hive/graphql-inspector/commit/6a8add530e66e3751d692c6b970a78a5e211dcdd)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/loaders@4.1.0 + - @graphql-inspector/diff-command@6.0.0 + - @graphql-inspector/audit-command@5.0.12 + - @graphql-inspector/coverage-command@6.1.6 + - @graphql-inspector/docs-command@5.0.5 + - @graphql-inspector/introspect-command@5.0.12 + - @graphql-inspector/serve-command@5.0.7 + - @graphql-inspector/similar-command@5.0.12 + - @graphql-inspector/validate-command@5.0.12 + ## 5.0.11 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index f3e5670bbb..3b34ca1383 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/cli", - "version": "5.0.11", + "version": "6.0.0", "type": "module", "description": "Tooling for GraphQL. Compare GraphQL Schemas, check documents, find breaking changes, find similar types.", "repository": { diff --git a/packages/commands/audit/CHANGELOG.md b/packages/commands/audit/CHANGELOG.md index cc3d553634..02798f8718 100644 --- a/packages/commands/audit/CHANGELOG.md +++ b/packages/commands/audit/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/audit-command +## 5.0.12 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/commands/audit/package.json b/packages/commands/audit/package.json index a5b2a97aed..9e21512dd6 100644 --- a/packages/commands/audit/package.json +++ b/packages/commands/audit/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/audit-command", - "version": "5.0.11", + "version": "5.0.12", "type": "module", "description": "Audit Documents in GraphQL Inspector", "repository": { diff --git a/packages/commands/commands/CHANGELOG.md b/packages/commands/commands/CHANGELOG.md index 6d5fcf3e86..78112b7027 100644 --- a/packages/commands/commands/CHANGELOG.md +++ b/packages/commands/commands/CHANGELOG.md @@ -1,5 +1,21 @@ # @graphql-inspector/commands +## 6.0.0 + +### Minor Changes + +- [#2900](https://github.com/graphql-hive/graphql-inspector/pull/2900) + [`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a) + Thanks [@emileriksson](https://github.com/emileriksson)! - Apollo Federation v2 support. + Introduced built-in Federation v2 directives and a new CLI flag --federationV2 to enable + processing schemas that use them. + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a)]: + - @graphql-inspector/loaders@4.1.0 + ## 5.0.4 ### Patch Changes diff --git a/packages/commands/commands/package.json b/packages/commands/commands/package.json index e35939ede1..6e5d085a3b 100644 --- a/packages/commands/commands/package.json +++ b/packages/commands/commands/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/commands", - "version": "5.0.4", + "version": "6.0.0", "type": "module", "description": "Plugin system for commands in GraphQL Inspector", "repository": { @@ -62,7 +62,7 @@ }, "peerDependencies": { "@graphql-inspector/config": "^4.0.0", - "@graphql-inspector/loaders": "^4.0.5", + "@graphql-inspector/loaders": "^4.1.0", "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0", "yargs": "17.7.2" }, diff --git a/packages/commands/coverage/CHANGELOG.md b/packages/commands/coverage/CHANGELOG.md index 9181dfde21..540274d309 100644 --- a/packages/commands/coverage/CHANGELOG.md +++ b/packages/commands/coverage/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/coverage-command +## 6.1.6 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 6.1.5 ### Patch Changes diff --git a/packages/commands/coverage/package.json b/packages/commands/coverage/package.json index 030a8cc36f..e4c5420e33 100644 --- a/packages/commands/coverage/package.json +++ b/packages/commands/coverage/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/coverage-command", - "version": "6.1.5", + "version": "6.1.6", "type": "module", "description": "Schema Coverage in GraphQL Inspector", "repository": { diff --git a/packages/commands/diff/CHANGELOG.md b/packages/commands/diff/CHANGELOG.md index 7480cae1f9..0110a2193d 100644 --- a/packages/commands/diff/CHANGELOG.md +++ b/packages/commands/diff/CHANGELOG.md @@ -1,5 +1,41 @@ # @graphql-inspector/diff-command +## 6.0.0 + +### Major Changes + +- [#2893](https://github.com/graphql-hive/graphql-inspector/pull/2893) + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00) + Thanks [@jdolle](https://github.com/jdolle)! - Added option to include nested changes. Use + `--rule verboseChanges`. Enabling this will output nested changes. I.e. if adding a new type, then + `verboseChanges` will also include the addition of the fields on that type. By default, these + changes are excluded from the output because they don't impact the outcome and create a lot of + noise. + + Added better directive support. + + Adjusted severity level for conditionally safe changes: + + - Adding or removing deprecated directive is considered non-breaking + - Adding an interface to a new type is non-breaking + - Adding an argument to a new field is non-breaking + - Adding a directive to a new object (type, interface, etc..) is non-breaking + +### Minor Changes + +- [#2910](https://github.com/graphql-hive/graphql-inspector/pull/2910) + [`6a8add5`](https://github.com/graphql-hive/graphql-inspector/commit/6a8add530e66e3751d692c6b970a78a5e211dcdd) + Thanks [@Tohaker](https://github.com/Tohaker)! - Allow TypeScript rules to be applied to diff + commands from the CLI + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/commands/diff/package.json b/packages/commands/diff/package.json index 1838543a5b..fcc69d53c3 100644 --- a/packages/commands/diff/package.json +++ b/packages/commands/diff/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/diff-command", - "version": "5.0.11", + "version": "6.0.0", "type": "module", "description": "Compare GraphQL Schemas", "repository": { diff --git a/packages/commands/docs/CHANGELOG.md b/packages/commands/docs/CHANGELOG.md index 70c0ced490..835a79d97f 100644 --- a/packages/commands/docs/CHANGELOG.md +++ b/packages/commands/docs/CHANGELOG.md @@ -1,5 +1,13 @@ # @graphql-inspector/docs-command +## 5.0.5 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a)]: + - @graphql-inspector/commands@6.0.0 + ## 5.0.4 ### Patch Changes diff --git a/packages/commands/docs/package.json b/packages/commands/docs/package.json index d5c8367e59..532986b36d 100644 --- a/packages/commands/docs/package.json +++ b/packages/commands/docs/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/docs-command", - "version": "5.0.4", + "version": "5.0.5", "type": "module", "description": "Open GraphQL Inspector Documentation", "repository": { diff --git a/packages/commands/introspect/CHANGELOG.md b/packages/commands/introspect/CHANGELOG.md index 68c2df53f8..71b17ec24c 100644 --- a/packages/commands/introspect/CHANGELOG.md +++ b/packages/commands/introspect/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/introspect-command +## 5.0.12 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/commands/introspect/package.json b/packages/commands/introspect/package.json index 8baa263dda..388cfd3b05 100644 --- a/packages/commands/introspect/package.json +++ b/packages/commands/introspect/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/introspect-command", - "version": "5.0.11", + "version": "5.0.12", "type": "module", "description": "Introspects GraphQL Schema", "repository": { diff --git a/packages/commands/serve/CHANGELOG.md b/packages/commands/serve/CHANGELOG.md index 06dce1510e..8f8ac87fb7 100644 --- a/packages/commands/serve/CHANGELOG.md +++ b/packages/commands/serve/CHANGELOG.md @@ -1,5 +1,13 @@ # @graphql-inspector/serve-command +## 5.0.7 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a)]: + - @graphql-inspector/commands@6.0.0 + ## 5.0.6 ### Patch Changes diff --git a/packages/commands/serve/package.json b/packages/commands/serve/package.json index f6c1238afe..39915cadaf 100644 --- a/packages/commands/serve/package.json +++ b/packages/commands/serve/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/serve-command", - "version": "5.0.6", + "version": "5.0.7", "type": "module", "description": "Serves GraphQL Schemma", "repository": { diff --git a/packages/commands/similar/CHANGELOG.md b/packages/commands/similar/CHANGELOG.md index d2db065946..70ecbca241 100644 --- a/packages/commands/similar/CHANGELOG.md +++ b/packages/commands/similar/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/similar-command +## 5.0.12 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/commands/similar/package.json b/packages/commands/similar/package.json index dd94f45be1..f091630bc9 100644 --- a/packages/commands/similar/package.json +++ b/packages/commands/similar/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/similar-command", - "version": "5.0.11", + "version": "5.0.12", "type": "module", "description": "Find similar types in GraphQL Schema", "repository": { diff --git a/packages/commands/validate/CHANGELOG.md b/packages/commands/validate/CHANGELOG.md index c76d028cc4..ec6687e0f8 100644 --- a/packages/commands/validate/CHANGELOG.md +++ b/packages/commands/validate/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/validate-command +## 5.0.12 + +### Patch Changes + +- Updated dependencies + [[`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a), + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00)]: + - @graphql-inspector/commands@6.0.0 + - @graphql-inspector/core@7.0.0 + ## 5.0.11 ### Patch Changes diff --git a/packages/commands/validate/package.json b/packages/commands/validate/package.json index 00bd9a74f3..988e26cd8e 100644 --- a/packages/commands/validate/package.json +++ b/packages/commands/validate/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/validate-command", - "version": "5.0.11", + "version": "5.0.12", "type": "module", "description": "Validate Documents in GraphQL Inspector", "repository": { diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 696f45272a..f50f16eb3b 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,165 @@ # @graphql-inspector/core +## 7.0.0 + +### Major Changes + +- [#2893](https://github.com/graphql-hive/graphql-inspector/pull/2893) + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00) + Thanks [@jdolle](https://github.com/jdolle)! - This is a major change to `@graphql-inspector/core` + and introduces a new `@graphql-inspector/patch` package, which applies changes output from `diff` + on top of a schema -- essentially rebasing these changes onto any schema. + + These changes include: + + - Numerous adjustments to Change types to create more accurate severity levels, such as a boolean + indicating if the change applies to a new type or an existing type. + - Adjustmented the "path" on several change types in order to consistently map to the exact AST + node being changed. For example, `EnumValueDeprecationReasonAdded`'s path previously referenced + the enumValue (e.g. `EnumName.value`), not the deprecated directive (e.g. + `EnumName.value.@deprecated`). + - Added new attributes in order to provide enough context for a new "@graphql-inspector/patch" + function to apply changes accurately. + - Added support for repeatable directives + - Includes all nested changes in `diff` output when a new node is added. This can dramatically + increase the number of changes listed which can be noisy, but it makes it possible for + "@graphql-inspector/patch" to apply all changes from a schema. This can be optionally filtered + using a newly exported `DiffRule.simplifyChanges` rule. + + For example, given an existing schema: + + ```graphql + type User { + id: ID! + name: String! + } + ``` + + And a diff schema: + + ```graphql + type User { + id: ID! + name: String! + address: Address + } + + type Address { + line1: String! + line2: String! + } + ``` + + Then previously the output would be: + + ```json + [ + { + "criticality": { + "level": "NON_BREAKING" + }, + "message": "Type 'Address' was added", + "meta": { + "addedTypeKind": "ObjectTypeDefinition", + "addedTypeName": "Address" + }, + "path": "Address", + "type": "TYPE_ADDED" + }, + { + "criticality": { + "level": "NON_BREAKING" + }, + "message": "Field 'address' was added to object type 'User'", + "meta": { + "addedFieldName": "address", + "addedFieldReturnType": "Address", + "typeName": "User", + "typeType": "object type" + }, + "path": "User.address", + "type": "FIELD_ADDED" + } + ] + ``` + + But now the output also includes the fields inside the new `Address` type: + + ```json + [ + { + "criticality": { + "level": "NON_BREAKING" + }, + "message": "Type 'Address' was added", + "meta": { + "addedTypeKind": "ObjectTypeDefinition", + "addedTypeName": "Address" + }, + "path": "Address", + "type": "TYPE_ADDED" + }, + { + "criticality": { + "level": "NON_BREAKING" + }, + "message": "Field 'line1' was added to object type 'Address'", + "meta": { + "addedFieldName": "line1", + "addedFieldReturnType": "String!", + "typeName": "Address", + "typeType": "object type" + }, + "path": "Address.line1", + "type": "FIELD_ADDED" + }, + { + "criticality": { + "level": "NON_BREAKING" + }, + "message": "Field 'line2' was added to object type 'Address'", + "meta": { + "addedFieldName": "line2", + "addedFieldReturnType": "String!", + "typeName": "Address", + "typeType": "object type" + }, + "path": "Address.line2", + "type": "FIELD_ADDED" + }, + { + "criticality": { + "level": "NON_BREAKING" + }, + "message": "Field 'address' was added to object type 'User'", + "meta": { + "addedFieldName": "address", + "addedFieldReturnType": "Address", + "typeName": "User", + "typeType": "object type" + }, + "path": "User.address", + "type": "FIELD_ADDED" + } + ] + ``` + + These additional changes can be filtered using a new rule: + + ```js + import { diff, DiffRule } from '@graphql-inspector/core' + + const changes = await diff(a, b, [DiffRule.simplifyChanges]) + ``` + +### Minor Changes + +- [#2900](https://github.com/graphql-hive/graphql-inspector/pull/2900) + [`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a) + Thanks [@emileriksson](https://github.com/emileriksson)! - Apollo Federation v2 support. + Introduced built-in Federation v2 directives and a new CLI flag --federationV2 to enable + processing schemas that use them. + ## 6.4.1 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 2a5f694c66..36c23f60da 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/core", - "version": "6.4.1", + "version": "7.0.0", "type": "module", "description": "Tooling for GraphQL. Compare GraphQL Schemas, check documents, find breaking changes, find similar types.", "repository": { diff --git a/packages/loaders/loaders/CHANGELOG.md b/packages/loaders/loaders/CHANGELOG.md index feed11a206..5688596680 100644 --- a/packages/loaders/loaders/CHANGELOG.md +++ b/packages/loaders/loaders/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-inspector/loaders +## 4.1.0 + +### Minor Changes + +- [#2900](https://github.com/graphql-hive/graphql-inspector/pull/2900) + [`2fc8b25`](https://github.com/graphql-hive/graphql-inspector/commit/2fc8b254b425b63781b59c5913b7043a3f95c68a) + Thanks [@emileriksson](https://github.com/emileriksson)! - Apollo Federation v2 support. + Introduced built-in Federation v2 directives and a new CLI flag --federationV2 to enable + processing schemas that use them. + ## 4.0.5 ### Patch Changes diff --git a/packages/loaders/loaders/package.json b/packages/loaders/loaders/package.json index f4d53e506f..93f79a08bc 100644 --- a/packages/loaders/loaders/package.json +++ b/packages/loaders/loaders/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/loaders", - "version": "4.0.5", + "version": "4.1.0", "type": "module", "description": "Loaders in GraphQL Inspector", "repository": { diff --git a/packages/patch/CHANGELOG.md b/packages/patch/CHANGELOG.md new file mode 100644 index 0000000000..3334fd1998 --- /dev/null +++ b/packages/patch/CHANGELOG.md @@ -0,0 +1,27 @@ +# @graphql-inspector/patch + +## 0.0.1 + +### Patch Changes + +- [#2893](https://github.com/graphql-hive/graphql-inspector/pull/2893) + [`ef13125`](https://github.com/graphql-hive/graphql-inspector/commit/ef131254cc4f33efa52e8e48b842cdbd35f50d00) + Thanks [@jdolle](https://github.com/jdolle)! - Initial release. Patch applies a list of changes + (output from `@graphql-inspector/core`'s `diff`) to a GraphQL Schema. + + Example usage: + + ```typescript + import { buildSchema } from 'graphql' + import { diff } from '@graphql-inspector/core' + import { patchSchema } from '@graphql-inspector/patch' + + const schemaA = buildSchema(before, { assumeValid: true, assumeValidSDL: true }) + const schemaB = buildSchema(after, { assumeValid: true, assumeValidSDL: true }) + + const changes = await diff(schemaA, schemaB) + const patched = patchSchema(schemaA, changes) + ``` + + If working from an AST, you may alternatively use the exported `patch` function. But be careful to + make sure directives are included in your AST or those changes will be missed. diff --git a/packages/patch/package.json b/packages/patch/package.json index 359df6495f..7e826618c8 100644 --- a/packages/patch/package.json +++ b/packages/patch/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-inspector/patch", - "version": "0.0.0", + "version": "0.0.1", "type": "module", "description": "Applies changes output from @graphql-inspect/diff", "repository": {