json-schema-ref-resolver
Advanced tools
Comparing version
10
index.js
@@ -36,3 +36,5 @@ 'use strict' | ||
if (schema === undefined) { | ||
throw new Error(`Schema with id "${schemaId}" is not found.`) | ||
throw new Error( | ||
`Cannot resolve ref "${schemaId}${jsonPointer}". Schema with id "${schemaId}" is not found.` | ||
) | ||
} | ||
@@ -101,2 +103,8 @@ if (schema.anchors[jsonPointer] !== undefined) { | ||
const targetSchema = this.getDerefSchema(refSchemaId, refJsonPointer) | ||
if (targetSchema === null) { | ||
throw new Error( | ||
`Cannot resolve ref "${ref.ref}". Ref "${refJsonPointer}" is not found in schema "${refSchemaId}".` | ||
) | ||
} | ||
ref.targetSchema = targetSchema | ||
@@ -103,0 +111,0 @@ ref.targetSchemaId = refSchemaId |
{ | ||
"name": "json-schema-ref-resolver", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "JSON schema reference resolver", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -31,3 +31,3 @@ # json-schema-ref-resolver | ||
const assert = require('node:assert') | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -53,3 +53,3 @@ const sourceSchema = { | ||
const resolver = new RefResolver() | ||
const refResolver = new RefResolver() | ||
@@ -110,3 +110,3 @@ refResolver.addSchema(sourceSchema) | ||
const assert = require('node:assert') | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -121,9 +121,9 @@ const schema = { | ||
const resolver = new RefResolver() | ||
resolver.addSchema(schema) | ||
const refResolver = new RefResolver() | ||
refResolver.addSchema(schema) | ||
const rootSchema = resolver.getSchema(schema.$id) | ||
const rootSchema = refResolver.getSchema(schema.$id) | ||
assert.deepStrictEqual(rootSchema, schema) | ||
const subSchema = resolver.getSchema(schema.$id, '#/properties/foo') | ||
const subSchema = refResolver.getSchema(schema.$id, '#/properties/foo') | ||
assert.deepStrictEqual(subSchema, { type: 'string' }) | ||
@@ -138,3 +138,3 @@ ``` | ||
const assert = require('node:assert') | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -151,6 +151,6 @@ const schema = { | ||
const resolver = new RefResolver() | ||
resolver.addSchema(schema) | ||
const refResolver = new RefResolver() | ||
refResolver.addSchema(schema) | ||
const anchorSchema = resolver.getSchema(schema.$id, '#bar') | ||
const anchorSchema = refResolver.getSchema(schema.$id, '#bar') | ||
assert.deepStrictEqual(subSchema, { | ||
@@ -180,3 +180,3 @@ $id: '#bar', | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -226,3 +226,3 @@ const sourceSchema = { | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -276,3 +276,3 @@ const targetSchema1 = { | ||
const assert = require('node:assert') | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -298,3 +298,3 @@ const sourceSchema = { | ||
const resolver = new RefResolver() | ||
const refResolver = new RefResolver() | ||
@@ -334,3 +334,3 @@ refResolver.addSchema(sourceSchema) | ||
const assert = require('node:assert') | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -356,3 +356,3 @@ const sourceSchema = { | ||
const resolver = new RefResolver() | ||
const refResolver = new RefResolver() | ||
@@ -382,3 +382,3 @@ refResolver.addSchema(sourceSchema) | ||
const assert = require('node:assert') | ||
const { RefResolver } = require('@fastify/json-schema-ref-resolver') | ||
const { RefResolver } = require('json-schema-ref-resolver') | ||
@@ -406,7 +406,7 @@ const targetSchema = { | ||
const resolver = new RefResolver() | ||
resolver.addSchema(targetSchema) | ||
resolver.addSchema(sourceSchema) | ||
const refResolver = new RefResolver() | ||
refResolver.addSchema(targetSchema) | ||
refResolver.addSchema(sourceSchema) | ||
resolver.derefSchema('sourceSchema') // Throws an error | ||
refResolver.derefSchema('sourceSchema') // Throws an error | ||
``` |
@@ -52,4 +52,6 @@ 'use strict' | ||
} catch (err) { | ||
assert.equal(err.message, 'Schema with id "#subSchemaId" is not found.') | ||
assert.equal( | ||
err.message, 'Cannot resolve ref "#subSchemaId#". Schema with id "#subSchemaId" is not found.' | ||
) | ||
} | ||
}) |
@@ -195,1 +195,43 @@ 'use strict' | ||
}) | ||
test('should throw if target ref schema is not found', () => { | ||
const inputSchema = { | ||
$id: 'http://example.com/root.json', | ||
definitions: { | ||
A: { $id: '#foo' }, | ||
B: { | ||
$id: 'other.json', | ||
definitions: { | ||
X: { $id: '#bar', type: 'string' }, | ||
Y: { $id: 't/inner.json' } | ||
} | ||
}, | ||
C: { | ||
$id: 'urn:uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f', | ||
type: 'object' | ||
} | ||
} | ||
} | ||
const addresSchema = { | ||
$id: 'relativeAddress', // Note: prefer always absolute URI like: http://mysite.com | ||
type: 'object', | ||
properties: { | ||
zip: { $ref: 'urn:uuid:ee564b8a-7a87-4125-8c96-e9f123d6766f' }, | ||
city2: { $ref: '#foo' } | ||
} | ||
} | ||
const refResolver = new RefResolver() | ||
refResolver.addSchema(inputSchema) | ||
refResolver.addSchema(addresSchema) | ||
try { | ||
refResolver.derefSchema('relativeAddress') | ||
} catch (error) { | ||
assert.strictEqual( | ||
error.message, | ||
'Cannot resolve ref "#foo". Ref "#foo" is not found in schema "relativeAddress".' | ||
) | ||
} | ||
}) |
@@ -167,3 +167,6 @@ 'use strict' | ||
} catch (err) { | ||
assert.equal(err.message, `Schema with id "${schemaIdArgument}" is not found.`) | ||
assert.equal( | ||
err.message, | ||
`Cannot resolve ref "${schemaIdArgument}#". Schema with id "${schemaIdArgument}" is not found.` | ||
) | ||
} | ||
@@ -191,3 +194,6 @@ }) | ||
} catch (err) { | ||
assert.equal(err.message, `Schema with id "${schemaIdProperty}" is not found.`) | ||
assert.equal( | ||
err.message, | ||
`Cannot resolve ref "${schemaIdProperty}#". Schema with id "${schemaIdProperty}" is not found.` | ||
) | ||
} | ||
@@ -194,0 +200,0 @@ |
55958
2.65%1434
3.84%