From d45400af13ff3f436a5c737f5dd6e81df8c64f4a Mon Sep 17 00:00:00 2001 From: Vladimir Gorej Date: Tue, 6 Dec 2022 11:08:59 +0100 Subject: [PATCH] feat(reference): add support for allowMetaPatches option This affects OpenAPI 3.1 swagger-client dereference strategy. Refs #2336 --- .../openapi-3-1-swagger-client/index.ts | 9 ++- .../openapi-3-1-swagger-client/visitor.ts | 43 +++++++++++++++ .../meta-patches-external/dereferenced.json | 14 +++++ .../fixtures/meta-patches-external/ex1.json | 5 ++ .../fixtures/meta-patches-external/ex2.json | 5 ++ .../fixtures/meta-patches-external/ex3.json | 6 ++ .../fixtures/meta-patches-external/root.json | 11 ++++ .../meta-patches-internal/dereferenced.json | 23 ++++++++ .../fixtures/meta-patches-internal/root.json | 17 ++++++ .../path-item-object/index.ts | 55 ++++++++++++++++++- .../meta-patches-external/dereferenced.json | 16 ++++++ .../fixtures/meta-patches-external/ex1.json | 5 ++ .../fixtures/meta-patches-external/ex2.json | 5 ++ .../fixtures/meta-patches-external/ex3.json | 8 +++ .../fixtures/meta-patches-external/root.json | 11 ++++ .../meta-patches-internal/dereferenced.json | 27 +++++++++ .../fixtures/meta-patches-internal/root.json | 18 ++++++ .../reference-object/index.ts | 55 ++++++++++++++++++- .../meta-patches-external/dereferenced.json | 14 +++++ .../fixtures/meta-patches-external/ex1.json | 5 ++ .../fixtures/meta-patches-external/ex2.json | 5 ++ .../fixtures/meta-patches-external/ex3.json | 8 +++ .../fixtures/meta-patches-external/root.json | 11 ++++ .../meta-patches-internal/dereferenced.json | 19 +++++++ .../fixtures/meta-patches-internal/root.json | 16 ++++++ .../schema-object/index.ts | 52 ++++++++++++++++++ 26 files changed, 460 insertions(+), 3 deletions(-) create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-external/dereferenced.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-external/ex1.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-external/ex2.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-external/ex3.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-external/root.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-internal/dereferenced.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/path-item-object/fixtures/meta-patches-internal/root.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-external/dereferenced.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-external/ex1.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-external/ex2.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-external/ex3.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-external/root.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-internal/dereferenced.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/reference-object/fixtures/meta-patches-internal/root.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-external/dereferenced.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-external/ex1.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-external/ex2.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-external/ex3.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-external/root.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-internal/dereferenced.json create mode 100644 packages/apidom-reference/test/dereference/strategies/openapi-3-1-swagger-client/schema-object/fixtures/meta-patches-internal/root.json diff --git a/packages/apidom-reference/src/dereference/strategies/openapi-3-1-swagger-client/index.ts b/packages/apidom-reference/src/dereference/strategies/openapi-3-1-swagger-client/index.ts index 5f08a26467..97e4d89751 100644 --- a/packages/apidom-reference/src/dereference/strategies/openapi-3-1-swagger-client/index.ts +++ b/packages/apidom-reference/src/dereference/strategies/openapi-3-1-swagger-client/index.ts @@ -24,6 +24,7 @@ const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')]; // eslint-disable-next-line @typescript-eslint/naming-convention interface IOpenApi3_1SwaggerClientDereferenceStrategy extends IDereferenceStrategy { useCircularStructures: boolean; + allowMetaPatches: boolean; } // eslint-disable-next-line @typescript-eslint/naming-convention @@ -31,14 +32,19 @@ const OpenApi3_1SwaggerClientDereferenceStrategy: stampit.Stamp