diff --git a/index.js b/index.js index 2f14dd0..836b4c7 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,10 @@ function SerializerSelector () { } function responseSchemaCompiler (fjsOpts, { schema /* method, url, httpStatus */ }) { + if (fjsOpts.schema && schema.$id && fjsOpts.schema[schema.$id]) { + fjsOpts.schema = { ...fjsOpts.schema } + delete fjsOpts.schema[schema.$id] + } return fastJsonStringify(schema, fjsOpts) } diff --git a/test/duplicate-schema.test.js b/test/duplicate-schema.test.js new file mode 100644 index 0000000..d6904ed --- /dev/null +++ b/test/duplicate-schema.test.js @@ -0,0 +1,26 @@ +'use strict' + +const t = require('tap') +const FjsCompiler = require('../index') + +t.test('Use input schema duplicate in the externalSchemas', async t => { + t.plan(1) + const externalSchemas = { + schema1: { + $id: 'schema1', + type: 'number' + }, + schema2: { + $id: 'schema2', + type: 'string' + } + } + + const factory = FjsCompiler() + const compiler = factory(externalSchemas) + + compiler({ schema: externalSchemas.schema1 }) + compiler({ schema: externalSchemas.schema2 }) + + t.pass() +})