Notable breaking changes:
- The swagger output is a single object (JSON response) served
at /explorer/swagger.json
- Methods with a single return arg without "root:true" flag
are expected to produce an object response with a single property now,
i.e. `{ data: arg }`.
In v1.x, we were treating such arg as if "root:true" was specified.
The new behaviour matches the actual implementation in strong-remoting.
- The property constraint "length" is translated to "maxLength" now.
- `operationId` includes model name now, because ids must be unique
- X-Forwarded-* headers are no longer processed, Swagger Spec 2.0
has a way how to specify "use the scheme + host where the doc is served"
- opts.omitProtocolInBaseUrl was removed for the same reasons as
X-Forwarded-* headers
- The deprecated opts.swaggerDistRoot was removed.
* upstream/master: (53 commits)
1.8.0
Add opts.omitProtocolInBaseUrl
Fix tests broken by fa3035c (#96)
Fix model description getting lost
1.7.2
Allow submitting token input with empty value to remove token.
Fix duplicate stylesheet issue
Fix explorer tests for different line endings on Windows
1.7.1
Remove unused external font "Droid Sans".
1.7.0
Made API doc of class use the http.path of the class if available, or the name of the class as a fallback
v1.6.4
Prevent double slash in the resource URLs
v1.6.3
Allow `uiDirs` to be defined as a String
Fix bad CLA URL in CONTRIBUTING.md
Add X-UA-Compatible tag
v1.6.2
Move 200 response to `type` on the operation object. See #75.
...
SwaggerUI builds resource URL by concatenating basePath + resourcePath.
Since the resource paths are always startign with a slash, if the
basePath ends with a slash too, an incorrect URL is produced.
This was typically happenning when `restApiRoot` was '/'.
This commit modifies the code producing the base path to remove
the trailing slash.
This change trims 134 modules from the dependency tree, many of which
were duplicate depdencies between the 4 lodash.function modules used
and their sub-dependencies.
Before:
$ npm ls | wc -l
494
$ du -sch node_modules/lodash*
432K node_modules/lodash.assign
660K node_modules/lodash.clonedeep
96K node_modules/lodash.defaults
980K node_modules/lodash.pick
2.1M total
After:
$ npm ls | wc -l
360
$ du -sch node_modules/lodash*
964K node_modules/lodash
964K total
This removes the redundancy from paths in swagger-ui such as
`/api/user/user_login`. It will now be displayed simply as
`/api/user/login`.
This is consistent with how `nickname` is used in Swagger examples.
Added tests to route nickname processing.
Add tests verifying that Swagger docs include model description for
recursively nested references to Models and Arrays of Models in
properties, modelTo and modelThrough relations, accepts,
returns and errors.
Fix bugs discovered along the way.
Add a default "success" response message, the status code is 200 or 204
depending on whether the method returns any data.
Append any error messages as specified in the `errors` property
of method's remoting metadata.
Move the description of operation's return type to the "success"
response message.
Include error message models in the API models.
Accepts/returns arguments allow anonymous object types, e.g.
{ 'arg': 'kvp', type: { 'name': 'string', 'value': 'string' } }
As of this commit, these types are converted to Swagger type 'object'.
Refactor the way how loopback types are converted to swagger data types.
- `modelHelper.LDLPropToSwaggerDataType` is responsible for
producing a valid Swagger Data Type object from LDL object
(be it a property, accepts item or returns item).
- LDLPropToSwaggerDataType picks only fields that are part
of the swagger spec, everything else is excluded from the result.
It's up to the caller to add extra fields like `description`.
- refactor `routeHelper.extendWithType` to accept an additional arg:
the original LDL object. This way it's possible to copy all
type-specific fields to the output object and don't add anything
else.