Skip to content

Instantly share code, notes, and snippets.

@bezany
Last active September 28, 2018 07:16
Show Gist options
  • Save bezany/df88b21e40a5ac44bcb43551e724f5c0 to your computer and use it in GitHub Desktop.
Save bezany/df88b21e40a5ac44bcb43551e724f5c0 to your computer and use it in GitHub Desktop.
JSON schemes dereference
var $RefParser = require('json-schema-ref-parser')
var fs = require('fs')
var path = require('path')
var folderWithSchemas = path.join(__dirname, 'src/api/schemas/')
var dereferencesFolder = path.join(folderWithSchemas, 'dereferences/')
function DereferenceAsync (fileName) {
var fileFrom = path.join(folderWithSchemas, fileName)
var fileTo = path.join(dereferencesFolder, fileName)
return $RefParser.bundle(fileFrom) // use bundle for cycle reference
.then(function (schema) {
return fs.writeFile(fileTo, JSON.stringify(schema, null, ' '), function (err) {
if (err) {
console.log(err)
throw err
}
console.log('The file was saved! ' + fileName)
})
})
}
return fs.readdir(folderWithSchemas, (err, files) => {
if (err) {
console.log(err)
throw err
}
var filesNames = files
.filter(file => file.indexOf('.json') !== -1)
var promises = filesNames.map(file => DereferenceAsync(file))
return Promise.all(promises)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment