Skip to content

Commit 6e2b6d0

Browse files
committed
ES6
1 parent 684ba31 commit 6e2b6d0

File tree

14 files changed

+682
-614
lines changed

14 files changed

+682
-614
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# hapi-swaggered
22
Yet another hapi plugin providing swagger compliant API specifications (swagger specs 2.0) based on routes and joi schemas to be used with swagger-ui.
33

4-
Supports hapi 8.x, 9.x and 10.x
4+
Supports hapi 10.x and up
55

66
[![Build Status](https://img.shields.io/travis/z0mt3c/hapi-swaggered/master.svg)](https://travis-ci.org/z0mt3c/hapi-swaggered)
77
[![Coverage Status](https://img.shields.io/coveralls/z0mt3c/hapi-swaggered/master.svg)](https://coveralls.io/r/z0mt3c/hapi-swaggered?branch=master)

index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
'use strict'
2+
13
module.exports = require('./lib')

lib/defaults.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
'use strict'
2+
13
module.exports = {
24
requiredTags: ['api'],
35
produces: ['application/json'],

lib/generator.js

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
var Hoek = require('hoek')
2-
var _ = require('lodash')
3-
var utils = require('./utils')
4-
var generator = module.exports = {}
1+
'use strict'
2+
3+
const Hoek = require('hoek')
4+
const _ = require('lodash')
5+
const utils = require('./utils')
6+
const generator = module.exports = {}
57

68
generator.createProperties = function (schema, definitions) {
7-
return _.reduce(Hoek.reach(schema, '_inner.children'), function (memo, property) {
8-
var schema = generator.fromJoiSchema(property.schema, definitions)
9+
return _.reduce(Hoek.reach(schema, '_inner.children'), (memo, property) => {
10+
const schema = generator.fromJoiSchema(property.schema, definitions)
911

1012
if (schema) {
1113
memo[property.key] = schema
@@ -16,31 +18,31 @@ generator.createProperties = function (schema, definitions) {
1618
}
1719

1820
generator.newModel = function (schema, definitions) {
19-
var schemaType = utils.getPrimitiveType(schema)
21+
const schemaType = utils.getPrimitiveType(schema)
2022
Hoek.assert(schemaType !== 'array', 'generator.newModel does not support array schema')
2123

2224
// Don't generate model for primitive types!
2325
if (utils.isPrimitiveSwaggerType(schemaType)) {
24-
var format = utils.getFormat(schema)
26+
const format = utils.getFormat(schema)
2527

2628
return {
2729
type: utils.mapSwaggerType(schema, schemaType),
2830
format: format
2931
}
3032
}
3133

32-
var model = {
34+
const model = {
3335
required: [],
3436
properties: {}
3537
}
3638

37-
var properties = generator.createProperties(schema, definitions)
38-
model.properties = _.reduce(properties, function (memo, value, key) {
39+
let properties = generator.createProperties(schema, definitions)
40+
model.properties = _.reduce(properties, (memo, value, key) => {
3941
if (value.required) {
4042
model.required.push(key)
4143
}
4244

43-
var pick = _.has(value, '$ref') ? ['$ref'] : ['type', 'format', 'items', 'default', 'description', '$ref', 'enum', 'minimum', 'maximum', 'minLength', 'maxLength', 'collectionFormat']
45+
const pick = _.has(value, '$ref') ? ['$ref'] : ['type', 'format', 'items', 'default', 'description', '$ref', 'enum', 'minimum', 'maximum', 'minLength', 'maxLength', 'collectionFormat']
4446
memo[key] = _.pick(value, pick)
4547
return memo
4648
}, model.properties)
@@ -49,11 +51,11 @@ generator.newModel = function (schema, definitions) {
4951
delete model.required
5052
}
5153

52-
var modelName = utils.generateNameWithFallback(schema, definitions, model)
54+
let modelName = utils.generateNameWithFallback(schema, definitions, model)
5355
definitions[modelName] = model
5456

5557
return {
56-
$ref: '#/definitions/' + modelName
58+
$ref: `#/definitions/${modelName}`
5759
}
5860
}
5961

@@ -62,10 +64,10 @@ generator.newArray = function (schema, definitions, arrayModel) {
6264
arrayModel.type = 'array'
6365

6466
// TODO: Improve array handling, multiple inclusion types are not supported by swagger specs. Only possiblity would be to extract common denominator as interface-schema.
65-
var firstInclusionType = utils.getFirstInclusionType(schema)
67+
const firstInclusionType = utils.getFirstInclusionType(schema)
6668

6769
if (firstInclusionType) {
68-
var firstInclusionTypeModel = generator.fromJoiSchema(firstInclusionType, definitions)
70+
const firstInclusionTypeModel = generator.fromJoiSchema(firstInclusionType, definitions)
6971
if (firstInclusionTypeModel.$ref) {
7072
arrayModel.items = _.pick(firstInclusionTypeModel, ['$ref'])
7173
} else {
@@ -78,32 +80,32 @@ generator.newArray = function (schema, definitions, arrayModel) {
7880

7981
return arrayModel
8082

81-
/*
82-
// May extract all arrays and use a reference? Sometimes inline required?
83-
var required = arrayModel.required
84-
delete arrayModel.required
85-
var name = utils.generateNameWithFallback(schema, definitions, arrayModel)
86-
definitions[name] = arrayModel
87-
88-
return {
89-
required: required,
90-
description: arrayModel.description,
91-
$ref: '#/definitions/' + name
92-
}
93-
*/
83+
/*
84+
// May extract all arrays and use a reference? Sometimes inline required?
85+
var required = arrayModel.required
86+
delete arrayModel.required
87+
var name = utils.generateNameWithFallback(schema, definitions, arrayModel)
88+
definitions[name] = arrayModel
89+
90+
return {
91+
required: required,
92+
description: arrayModel.description,
93+
$ref: '#/definitions/' + name
94+
}
95+
*/
9496
}
9597

9698
generator.extractAsDefinition = function (schema, definitions, definition) {
9799
if (definition.type === 'array') {
98-
var required = definition.required
100+
const required = definition.required
99101
delete definition.required
100-
var name = utils.generateNameWithFallback(schema, definitions, definition)
102+
let name = utils.generateNameWithFallback(schema, definitions, definition)
101103
definitions[name] = definition
102104

103105
return {
104106
required: required,
105107
description: definition.description,
106-
$ref: '#/definitions/' + name
108+
$ref: `#/definitions/${name}`
107109
}
108110
}
109111

@@ -115,8 +117,8 @@ generator.fromJoiSchema = function (schema, definitions) {
115117
Hoek.assert(schema.isJoi, 'Schema is no joi schema')
116118

117119
if (utils.isSupportedSchema(schema)) {
118-
var schemaType = utils.getPrimitiveType(schema)
119-
var baseModel = utils.parseBaseModelAttributes(schema)
120+
const schemaType = utils.getPrimitiveType(schema)
121+
const baseModel = utils.parseBaseModelAttributes(schema)
120122

121123
if (schemaType === 'object') {
122124
return Hoek.merge(baseModel, generator.newModel(schema, definitions))

lib/index.js

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,35 @@
1-
var Hoek = require('hoek')
2-
var Joi = require('joi')
3-
var Schema = require('./schema')
4-
var utils = require('./utils')
1+
'use strict'
52

6-
var SWAGGER_VERSION = '2.0'
7-
var defaultOptions = require('./defaults')
3+
const Hoek = require('hoek')
4+
const Joi = require('joi')
5+
const Schema = require('./schema')
6+
const utils = require('./utils')
7+
8+
const SWAGGER_VERSION = '2.0'
9+
const defaultOptions = require('./defaults')
810

911
module.exports.register = function (plugin, options, next) {
10-
var settings = Hoek.applyToDefaults(defaultOptions, options)
12+
const settings = Hoek.applyToDefaults(defaultOptions, options)
1113
Joi.assert(options, Schema.PluginOptions)
12-
var routeConfig = utils.getRoutesModifiers(plugin)
14+
const routeConfig = utils.getRoutesModifiers(plugin)
1315
settings.pluginRoutePrefix = routeConfig.route.prefix || ''
1416

15-
var internals = {
17+
const internals = {
1618
resources: require('./resources'),
17-
keyGenerator: function (request) {
18-
var requestConnection = utils.getRequestConnection(request)
19-
return 'hapi-swaggered:' + requestConnection.info.uri + ':' + request.url.path
19+
keyGenerator (request) {
20+
const requestConnection = utils.getRequestConnection(request)
21+
return `hapi-swaggered:${requestConnection.info.uri}:${request.url.path}`
2022
}
2123
}
2224

23-
var methods = {
24-
resources: function (request, reply) {
25-
var requestConnection = utils.getRequestConnection(request)
26-
var serverSettings = Hoek.reach(requestConnection, 'settings.app.swagger')
27-
var currentSettings = utils.getCurrentSettings(settings, serverSettings)
28-
var resources = internals.resources(currentSettings, requestConnection.table(), request.query.tags)
25+
const methods = {
26+
resources (request, reply) {
27+
const requestConnection = utils.getRequestConnection(request)
28+
const serverSettings = Hoek.reach(requestConnection, 'settings.app.swagger')
29+
const currentSettings = utils.getCurrentSettings(settings, serverSettings)
30+
const resources = internals.resources(currentSettings, requestConnection.table(), request.query.tags)
2931

30-
var data = {
32+
const data = {
3133
swagger: SWAGGER_VERSION,
3234
schemes: currentSettings.schemes,
3335
externalDocs: currentSettings.externalDocs,
@@ -48,7 +50,7 @@ module.exports.register = function (plugin, options, next) {
4850
}
4951
}
5052

51-
var resourcesGenerator = methods.resources
53+
let resourcesGenerator = methods.resources
5254

5355
if (settings.cache !== false) {
5456
plugin.method('resources', resourcesGenerator, {
@@ -59,14 +61,14 @@ module.exports.register = function (plugin, options, next) {
5961
resourcesGenerator = plugin.methods.resources
6062
}
6163

62-
var handler = {
63-
resources: function (request, reply) {
64-
return resourcesGenerator(request, function (error, data) {
64+
const handler = {
65+
resources (request, reply) {
66+
return resourcesGenerator(request, (error, data) => {
6567
Hoek.assert(!error, 'swagger-resource generation failed')
6668

67-
var requestConnection = utils.getRequestConnection(request)
68-
var serverSettings = Hoek.reach(requestConnection, 'settings.app.swagger')
69-
var currentSettings = utils.getCurrentSettings(settings, serverSettings)
69+
const requestConnection = utils.getRequestConnection(request)
70+
const serverSettings = Hoek.reach(requestConnection, 'settings.app.swagger')
71+
const currentSettings = utils.getCurrentSettings(settings, serverSettings)
7072
data.host = currentSettings.host
7173

7274
return reply(data)

0 commit comments

Comments
 (0)