@loopback/rest 3.2.0 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,44 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.3.2](https://github.com/strongloop/loopback-next/compare/@loopback/rest@3.3.1...@loopback/rest@3.3.2) (2020-04-29)
7
+
8
+ **Note:** Version bump only for package @loopback/rest
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.3.1](https://github.com/strongloop/loopback-next/compare/@loopback/rest@3.3.0...@loopback/rest@3.3.1) (2020-04-23)
15
+
16
+ **Note:** Version bump only for package @loopback/rest
17
+
18
+
19
+
20
+
21
+
22
+ # [3.3.0](https://github.com/strongloop/loopback-next/compare/@loopback/rest@3.2.1...@loopback/rest@3.3.0) (2020-04-22)
23
+
24
+
25
+ ### Features
26
+
27
+ * **rest:** ensure OpenAPI spec components are merged ([2efa27b](https://github.com/strongloop/loopback-next/commit/2efa27b283d86258fe705914c557536abaf2c435))
28
+ * migrate loopback-example-passport repo as lb4 example ([dd3c328](https://github.com/strongloop/loopback-next/commit/dd3c328a138621bb3f6ae770b4db83ba21ecc2d6))
29
+ * update package.json and .travis.yml for builds ([cb2b8e6](https://github.com/strongloop/loopback-next/commit/cb2b8e6a18616dda7783c0193091039d4e608131))
30
+ * **rest:** add openapi schema consolidation ([6a039ed](https://github.com/strongloop/loopback-next/commit/6a039edd4e056089bca8cf2acd4ed7ddab55d55e))
31
+
32
+
33
+
34
+
35
+
36
+ ## [3.2.1](https://github.com/strongloop/loopback-next/compare/@loopback/rest@3.2.0...@loopback/rest@3.2.1) (2020-04-11)
37
+
38
+ **Note:** Version bump only for package @loopback/rest
39
+
40
+
41
+
42
+
43
+
6
44
  # [3.2.0](https://github.com/strongloop/loopback-next/compare/@loopback/rest@3.1.0...@loopback/rest@3.2.0) (2020-04-08)
7
45
 
8
46
 
@@ -1,7 +1,8 @@
1
- export * from './types';
2
1
  export * from './body-parser';
2
+ export * from './body-parser.helpers';
3
3
  export * from './body-parser.json';
4
+ export * from './body-parser.raw';
5
+ export * from './body-parser.stream';
4
6
  export * from './body-parser.text';
5
7
  export * from './body-parser.urlencoded';
6
- export * from './body-parser.stream';
7
- export * from './body-parser.raw';
8
+ export * from './types';
@@ -5,11 +5,12 @@
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const tslib_1 = require("tslib");
8
- tslib_1.__exportStar(require("./types"), exports);
9
8
  tslib_1.__exportStar(require("./body-parser"), exports);
9
+ tslib_1.__exportStar(require("./body-parser.helpers"), exports);
10
10
  tslib_1.__exportStar(require("./body-parser.json"), exports);
11
+ tslib_1.__exportStar(require("./body-parser.raw"), exports);
12
+ tslib_1.__exportStar(require("./body-parser.stream"), exports);
11
13
  tslib_1.__exportStar(require("./body-parser.text"), exports);
12
14
  tslib_1.__exportStar(require("./body-parser.urlencoded"), exports);
13
- tslib_1.__exportStar(require("./body-parser.stream"), exports);
14
- tslib_1.__exportStar(require("./body-parser.raw"), exports);
15
+ tslib_1.__exportStar(require("./types"), exports);
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/body-parsers/index.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,kDAAwB;AACxB,wDAA8B;AAC9B,6DAAmC;AACnC,6DAAmC;AACnC,mEAAyC;AACzC,+DAAqC;AACrC,4DAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/body-parsers/index.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,wDAA8B;AAC9B,gEAAsC;AACtC,6DAAmC;AACnC,4DAAkC;AAClC,+DAAqC;AACrC,6DAAmC;AACnC,mEAAyC;AACzC,kDAAwB"}
@@ -40,4 +40,4 @@ export declare function matchDateFormat(date: string): boolean;
40
40
  * @param type - The type in an OpenAPI schema specification
41
41
  * @param format - The format in an OpenAPI schema specification
42
42
  */
43
- export declare function getOAIPrimitiveType(type?: string, format?: string): "object" | "number" | "string" | "boolean" | "array" | "date" | "integer" | "date-time" | "float" | "double" | "byte" | "binary" | "password" | "long" | undefined;
43
+ export declare function getOAIPrimitiveType(type?: string, format?: string): "object" | "boolean" | "string" | "number" | "array" | "byte" | "binary" | "date" | "date-time" | "password" | "float" | "double" | "long" | "integer" | undefined;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="express" />
2
2
  import { Context } from '@loopback/context';
3
- import { ControllerSpec, PathObject, SchemasObject } from '@loopback/openapi-v3';
3
+ import { ComponentsObject, ControllerSpec, PathObject, SchemasObject } from '@loopback/openapi-v3';
4
4
  import { RestServerResolvedConfig } from './rest.server';
5
5
  import { ControllerClass, ControllerFactory, ResolvedRoute, RouteEntry, RoutingTable } from './router';
6
6
  import { Request, Response } from './types';
@@ -8,13 +8,31 @@ export declare class HttpHandler {
8
8
  protected readonly _rootContext: Context;
9
9
  protected readonly _serverConfig: RestServerResolvedConfig;
10
10
  protected readonly _routes: RoutingTable;
11
- protected _apiDefinitions: SchemasObject;
11
+ /**
12
+ * Shared OpenAPI spec objects as `components`
13
+ */
14
+ protected _openApiComponents: ComponentsObject;
12
15
  handleRequest: (request: Request, response: Response) => Promise<void>;
13
16
  constructor(_rootContext: Context, _serverConfig: RestServerResolvedConfig, _routes?: RoutingTable);
14
17
  registerController<T>(spec: ControllerSpec, controllerCtor: ControllerClass<T>, controllerFactory?: ControllerFactory<T>): void;
15
18
  registerRoute(route: RouteEntry): void;
19
+ /**
20
+ * @deprecated Use `registerApiComponents`
21
+ * @param defs Schemas
22
+ */
16
23
  registerApiDefinitions(defs: SchemasObject): void;
17
- getApiDefinitions(): SchemasObject;
24
+ /**
25
+ * Merge components into the OpenApi spec
26
+ * @param defs - Components
27
+ */
28
+ registerApiComponents(defs: ComponentsObject): void;
29
+ getApiComponents(): ComponentsObject;
30
+ /**
31
+ * @deprecated Use `getApiComponents`
32
+ */
33
+ getApiDefinitions(): {
34
+ [schema: string]: import("@loopback/openapi-v3").SchemaObject | import("@loopback/openapi-v3").ReferenceObject;
35
+ } | undefined;
18
36
  describeApiPaths(): PathObject;
19
37
  findRoute(request: Request): ResolvedRoute;
20
38
  protected _handleRequest(request: Request, response: Response): Promise<void>;
@@ -20,11 +20,34 @@ class HttpHandler {
20
20
  registerRoute(route) {
21
21
  this._routes.registerRoute(route);
22
22
  }
23
+ /**
24
+ * @deprecated Use `registerApiComponents`
25
+ * @param defs Schemas
26
+ */
23
27
  registerApiDefinitions(defs) {
24
- this._apiDefinitions = Object.assign({}, this._apiDefinitions, defs);
28
+ this.registerApiComponents({ schemas: defs });
25
29
  }
30
+ /**
31
+ * Merge components into the OpenApi spec
32
+ * @param defs - Components
33
+ */
34
+ registerApiComponents(defs) {
35
+ var _a;
36
+ this._openApiComponents = (_a = this._openApiComponents) !== null && _a !== void 0 ? _a : {};
37
+ for (const p in defs) {
38
+ // Merge each child, such as `schemas`, `parameters`, and `headers`
39
+ this._openApiComponents[p] = { ...this._openApiComponents[p], ...defs[p] };
40
+ }
41
+ }
42
+ getApiComponents() {
43
+ return this._openApiComponents;
44
+ }
45
+ /**
46
+ * @deprecated Use `getApiComponents`
47
+ */
26
48
  getApiDefinitions() {
27
- return this._apiDefinitions;
49
+ var _a;
50
+ return (_a = this._openApiComponents) === null || _a === void 0 ? void 0 : _a.schemas;
28
51
  }
29
52
  describeApiPaths() {
30
53
  return this._routes.describeApiPaths();
@@ -1 +1 @@
1
- {"version":3,"file":"http-handler.js","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;AAIhE,iCAAoC;AACpC,uDAAiD;AAEjD,qCAMkB;AAIlB,MAAa,WAAW;IAKtB,YACqB,YAAqB,EACrB,aAAuC,EACvC,UAAU,IAAI,qBAAY,EAAE;QAF5B,iBAAY,GAAZ,YAAY,CAAS;QACrB,kBAAa,GAAb,aAAa,CAA0B;QACvC,YAAO,GAAP,OAAO,CAAqB;QAE/C,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB,CAChB,IAAoB,EACpB,cAAkC,EAClC,iBAAwC;QAExC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB,CAAC,IAAmB;QACxC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,OAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAgB,EAChB,QAAkB;QAElB,MAAM,cAAc,GAAG,IAAI,gCAAc,CACvC,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CACvC,mBAAY,CAAC,QAAQ,CACtB,CAAC;QACF,MAAM,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF;AA3DD,kCA2DC"}
1
+ {"version":3,"file":"http-handler.js","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;AAShE,iCAAoC;AACpC,uDAAiD;AAEjD,qCAMkB;AAIlB,MAAa,WAAW;IAQtB,YACqB,YAAqB,EACrB,aAAuC,EACvC,UAAU,IAAI,qBAAY,EAAE;QAF5B,iBAAY,GAAZ,YAAY,CAAS;QACrB,kBAAa,GAAb,aAAa,CAA0B;QACvC,YAAO,GAAP,OAAO,CAAqB;QAE/C,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB,CAChB,IAAoB,EACpB,cAAkC,EAClC,iBAAwC;QAExC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,IAAmB;QACxC,IAAI,CAAC,qBAAqB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,IAAsB;;QAC1C,IAAI,CAAC,kBAAkB,SAAG,IAAI,CAAC,kBAAkB,mCAAI,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,mEAAmE;YACnE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC;SAC1E;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,iBAAiB;;QACf,aAAO,IAAI,CAAC,kBAAkB,0CAAE,OAAO,CAAC;IAC1C,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,OAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAgB,EAChB,QAAkB;QAElB,MAAM,cAAc,GAAG,IAAI,gCAAc,CACvC,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CACvC,mBAAY,CAAC,QAAQ,CACtB,CAAC;QACF,MAAM,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF;AArFD,kCAqFC"}
@@ -21,7 +21,10 @@ let ParseParamsProvider = class ParseParamsProvider {
21
21
  this.ajvFactory = ajvFactory;
22
22
  }
23
23
  value() {
24
- return (request, route) => parser_1.parseOperationArgs(request, route, this.requestBodyParser, Object.assign({ ajvFactory: this.ajvFactory }, this.validationOptions));
24
+ return (request, route) => parser_1.parseOperationArgs(request, route, this.requestBodyParser, {
25
+ ajvFactory: this.ajvFactory,
26
+ ...this.validationOptions,
27
+ });
25
28
  }
26
29
  };
27
30
  ParseParamsProvider = tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"parse-params.provider.js","sourceRoot":"","sources":["../../src/providers/parse-params.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAAmD;AACnD,kDAAkD;AAClD,kCAAqC;AACrC,sCAA6C;AAQ7C;;;;GAIG;AACH,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YAEU,iBAAoC,EAKpC,oBAAkD,EAAE,EAEpD,UAAuB;QAPvB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAKpC,sBAAiB,GAAjB,iBAAiB,CAAmC;QAEpD,eAAU,GAAV,UAAU,CAAa;IAC9B,CAAC;IAEJ,KAAK;QACH,OAAO,CAAC,OAAgB,EAAE,KAAoB,EAAE,EAAE,CAChD,2BAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,kBACvD,UAAU,EAAE,IAAI,CAAC,UAAU,IACxB,IAAI,CAAC,iBAAiB,EACzB,CAAC;IACP,CAAC;CACF,CAAA;AApBY,mBAAmB;IAE3B,mBAAA,gBAAM,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAA;IAExC,mBAAA,gBAAM,CACL,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAA;IAEA,mBAAA,gBAAM,CAAC,mBAAY,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;6CANxB,gCAAiB;GAHnC,mBAAmB,CAoB/B;AApBY,kDAAmB"}
1
+ {"version":3,"file":"parse-params.provider.js","sourceRoot":"","sources":["../../src/providers/parse-params.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAAmD;AACnD,kDAAkD;AAClD,kCAAqC;AACrC,sCAA6C;AAQ7C;;;;GAIG;AACH,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YAEU,iBAAoC,EAKpC,oBAAkD,EAAE,EAEpD,UAAuB;QAPvB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAKpC,sBAAiB,GAAjB,iBAAiB,CAAmC;QAEpD,eAAU,GAAV,UAAU,CAAa;IAC9B,CAAC;IAEJ,KAAK;QACH,OAAO,CAAC,OAAgB,EAAE,KAAoB,EAAE,EAAE,CAChD,2BAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACzD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,IAAI,CAAC,iBAAiB;SAC1B,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AApBY,mBAAmB;IAE3B,mBAAA,gBAAM,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAA;IAExC,mBAAA,gBAAM,CACL,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAA;IAEA,mBAAA,gBAAM,CAAC,mBAAY,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;6CANxB,gCAAiB;GAHnC,mBAAmB,CAoB/B;AApBY,kDAAmB"}
@@ -2,13 +2,14 @@ import { Binding, Constructor } from '@loopback/context';
2
2
  import { Application, Component, ProviderMap, Server } from '@loopback/core';
3
3
  import { RequestBodyParser } from './body-parsers';
4
4
  import { RestServerConfig } from './rest.server';
5
+ import { ConsolidationEnhancer } from './spec-enhancers/consolidate.spec-enhancer';
5
6
  import { InfoSpecEnhancer } from './spec-enhancers/info.spec-enhancer';
6
7
  export declare class RestComponent implements Component {
7
8
  providers: ProviderMap;
8
9
  /**
9
10
  * Add built-in body parsers
10
11
  */
11
- bindings: (Binding<import("./body-parsers").BodyParser> | Binding<RequestBodyParser> | Binding<InfoSpecEnhancer>)[];
12
+ bindings: (Binding<import("./body-parsers").BodyParser> | Binding<RequestBodyParser> | Binding<InfoSpecEnhancer> | Binding<ConsolidationEnhancer>)[];
12
13
  servers: {
13
14
  [name: string]: Constructor<Server>;
14
15
  };
@@ -14,6 +14,7 @@ const keys_1 = require("./keys");
14
14
  const providers_1 = require("./providers");
15
15
  const rest_server_1 = require("./rest.server");
16
16
  const sequence_1 = require("./sequence");
17
+ const consolidate_spec_enhancer_1 = require("./spec-enhancers/consolidate.spec-enhancer");
17
18
  const info_spec_enhancer_1 = require("./spec-enhancers/info.spec-enhancer");
18
19
  const ajv_factory_provider_1 = require("./validation/ajv-factory.provider");
19
20
  let RestComponent = class RestComponent {
@@ -43,6 +44,7 @@ let RestComponent = class RestComponent {
43
44
  rest_server_1.createBodyParserBinding(body_parser_raw_1.RawBodyParser, keys_1.RestBindings.REQUEST_BODY_PARSER_RAW),
44
45
  rest_server_1.createBodyParserBinding(body_parsers_1.StreamBodyParser, keys_1.RestBindings.REQUEST_BODY_PARSER_STREAM),
45
46
  context_1.createBindingFromClass(info_spec_enhancer_1.InfoSpecEnhancer),
47
+ context_1.createBindingFromClass(consolidate_spec_enhancer_1.ConsolidationEnhancer),
46
48
  ];
47
49
  this.servers = {
48
50
  RestServer: rest_server_1.RestServer,
@@ -1 +1 @@
1
- {"version":3,"file":"rest.component.js","sourceRoot":"","sources":["../src/rest.component.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAK2B;AAC3B,yCAMwB;AACxB,qDAAwD;AACxD,iDAMwB;AACxB,oEAA6D;AAC7D,iCAAoC;AACpC,2CASqB;AACrB,+CAIuB;AACvB,yCAA2C;AAC3C,4EAAqE;AACrE,4EAAqE;AAErE,IAAa,aAAa,GAA1B,MAAa,aAAa;IA+CxB,YAC6C,GAAgB,EAC9B,MAA4B;;QAhD3D,cAAS,GAAgB;YACvB,CAAC,mBAAY,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,4BAAgB;YAC9D,CAAC,mBAAY,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,6BAAiB;YAChE,CAAC,mBAAY,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,gCAAoB;YACtE,CAAC,mBAAY,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,0BAAc;YACzD,CAAC,mBAAY,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,+BAAmB;YACpD,CAAC,mBAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,kCAAsB;YAC3D,CAAC,mBAAY,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,+BAAmB;YACpE,CAAC,mBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,wBAAY;YACrD,CAAC,mBAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,yCAAkB;SACnD,CAAC;QACF;;WAEG;QACH,aAAQ,GAAG;YACT,wEAAwE;YACxE,2DAA2D;YAC3D,iBAAO,CAAC,IAAI,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gCAAiB,CAAC;YACzE,qCAAuB,CACrB,6BAAc,EACd,mBAAY,CAAC,wBAAwB,CACtC;YACD,qCAAuB,CACrB,6BAAc,EACd,mBAAY,CAAC,wBAAwB,CACtC;YACD,qCAAuB,CACrB,mCAAoB,EACpB,mBAAY,CAAC,8BAA8B,CAC5C;YACD,qCAAuB,CACrB,+BAAa,EACb,mBAAY,CAAC,uBAAuB,CACrC;YACD,qCAAuB,CACrB,+BAAgB,EAChB,mBAAY,CAAC,0BAA0B,CACxC;YACD,gCAAsB,CAAC,qCAAgB,CAAC;SACzC,CAAC;QACF,YAAO,GAEH;YACF,UAAU,EAAV,wBAAU;SACX,CAAC;QAMA,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,0BAAe,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,+BAAkB,EAAE,CAAC;QACrC,sEAAsE;QACtE,UAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,OAAO,EAAE;YAChC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAC,CAAC,CAAC;SAC/D;QACD,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AA3DY,aAAa;IAgDrB,mBAAA,gBAAM,CAAC,mBAAY,CAAC,oBAAoB,CAAC,CAAA;IACzC,mBAAA,gBAAM,CAAC,mBAAY,CAAC,MAAM,CAAC,CAAA;6CADoB,kBAAW;GAhDlD,aAAa,CA2DzB;AA3DY,sCAAa"}
1
+ {"version":3,"file":"rest.component.js","sourceRoot":"","sources":["../src/rest.component.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,+CAK2B;AAC3B,yCAMwB;AACxB,qDAAwD;AACxD,iDAMwB;AACxB,oEAA6D;AAC7D,iCAAoC;AACpC,2CASqB;AACrB,+CAIuB;AACvB,yCAA2C;AAC3C,0FAAiF;AACjF,4EAAqE;AACrE,4EAAqE;AAErE,IAAa,aAAa,GAA1B,MAAa,aAAa;IAgDxB,YAC6C,GAAgB,EAC9B,MAA4B;;QAjD3D,cAAS,GAAgB;YACvB,CAAC,mBAAY,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,4BAAgB;YAC9D,CAAC,mBAAY,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,6BAAiB;YAChE,CAAC,mBAAY,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,gCAAoB;YACtE,CAAC,mBAAY,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,0BAAc;YACzD,CAAC,mBAAY,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,+BAAmB;YACpD,CAAC,mBAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,kCAAsB;YAC3D,CAAC,mBAAY,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,+BAAmB;YACpE,CAAC,mBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,wBAAY;YACrD,CAAC,mBAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,yCAAkB;SACnD,CAAC;QACF;;WAEG;QACH,aAAQ,GAAG;YACT,wEAAwE;YACxE,2DAA2D;YAC3D,iBAAO,CAAC,IAAI,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,gCAAiB,CAAC;YACzE,qCAAuB,CACrB,6BAAc,EACd,mBAAY,CAAC,wBAAwB,CACtC;YACD,qCAAuB,CACrB,6BAAc,EACd,mBAAY,CAAC,wBAAwB,CACtC;YACD,qCAAuB,CACrB,mCAAoB,EACpB,mBAAY,CAAC,8BAA8B,CAC5C;YACD,qCAAuB,CACrB,+BAAa,EACb,mBAAY,CAAC,uBAAuB,CACrC;YACD,qCAAuB,CACrB,+BAAgB,EAChB,mBAAY,CAAC,0BAA0B,CACxC;YACD,gCAAsB,CAAC,qCAAgB,CAAC;YACxC,gCAAsB,CAAC,iDAAqB,CAAC;SAC9C,CAAC;QACF,YAAO,GAEH;YACF,UAAU,EAAV,wBAAU;SACX,CAAC;QAMA,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,0BAAe,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,+BAAkB,EAAE,CAAC;QACrC,sEAAsE;QACtE,UAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,OAAO,EAAE;YAChC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAC,CAAC,CAAC;SAC/D;QACD,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AA5DY,aAAa;IAiDrB,mBAAA,gBAAM,CAAC,mBAAY,CAAC,oBAAoB,CAAC,CAAA;IACzC,mBAAA,gBAAM,CAAC,mBAAY,CAAC,MAAM,CAAC,CAAA;6CADoB,kBAAW;GAjDlD,aAAa,CA4DzB;AA5DY,sCAAa"}
@@ -383,6 +383,11 @@ export interface OpenApiSpecOptions {
383
383
  * Set this flag to disable the endpoint for OpenAPI spec
384
384
  */
385
385
  disabled?: true;
386
+ /**
387
+ * Set this flag to `false` to disable OAS schema consolidation. If not set,
388
+ * the value defaults to `true`.
389
+ */
390
+ consolidate?: boolean;
386
391
  }
387
392
  export interface ApiExplorerOptions {
388
393
  /**
@@ -14,6 +14,7 @@ const cors_1 = tslib_1.__importDefault(require("cors"));
14
14
  const debug_1 = tslib_1.__importDefault(require("debug"));
15
15
  const express_1 = tslib_1.__importDefault(require("express"));
16
16
  const js_yaml_1 = require("js-yaml");
17
+ const lodash_1 = require("lodash");
17
18
  const strong_error_handler_1 = require("strong-error-handler");
18
19
  const body_parsers_1 = require("./body-parsers");
19
20
  const http_handler_1 = require("./http-handler");
@@ -24,11 +25,6 @@ const router_spec_1 = require("./router/router-spec");
24
25
  const sequence_1 = require("./sequence");
25
26
  const debug = debug_1.default('loopback:rest:server');
26
27
  const SequenceActions = keys_1.RestBindings.SequenceActions;
27
- // NOTE(bajtos) we cannot use `import cloneDeep from 'lodash/cloneDeep'
28
- // because it produces the following TypeScript error:
29
- // Module '"(...)/node_modules/@types/lodash/cloneDeep/index"' resolves to
30
- // a non-module entity and cannot be imported using this construct.
31
- const cloneDeep = require('lodash/cloneDeep');
32
28
  /**
33
29
  * A REST API server for use with Loopback.
34
30
  * Add this server to your application by importing the RestComponent.
@@ -281,8 +277,8 @@ let RestServer = class RestServer extends context_1.Context {
281
277
  continue;
282
278
  }
283
279
  debug('Registering controller %s', controllerName);
284
- if (apiSpec.components && apiSpec.components.schemas) {
285
- this._httpHandler.registerApiDefinitions(apiSpec.components.schemas);
280
+ if (apiSpec.components) {
281
+ this._httpHandler.registerApiComponents(apiSpec.components);
286
282
  }
287
283
  const controllerFactory = router_1.createControllerFactoryForBinding(b.key);
288
284
  const routes = router_1.createRoutesForController(apiSpec, ctor, controllerFactory);
@@ -498,15 +494,14 @@ let RestServer = class RestServer extends context_1.Context {
498
494
  * in the returned spec
499
495
  */
500
496
  async getApiSpec(requestContext) {
501
- var _a;
502
497
  let spec = await this.get(keys_1.RestBindings.API_SPEC);
503
- const defs = this.httpHandler.getApiDefinitions();
498
+ const components = this.httpHandler.getApiComponents();
504
499
  // Apply deep clone to prevent getApiSpec() callers from
505
500
  // accidentally modifying our internal routing data
506
- spec.paths = cloneDeep(this.httpHandler.describeApiPaths());
507
- if (defs) {
508
- spec.components = (_a = spec.components) !== null && _a !== void 0 ? _a : {};
509
- spec.components.schemas = cloneDeep(defs);
501
+ spec.paths = lodash_1.cloneDeep(this.httpHandler.describeApiPaths());
502
+ if (components) {
503
+ const defs = lodash_1.cloneDeep(components);
504
+ spec.components = { ...spec.components, ...defs };
510
505
  }
511
506
  router_spec_1.assignRouterSpec(spec, this._externalRoutes.routerSpec);
512
507
  if (requestContext) {
@@ -720,7 +715,7 @@ const DEFAULT_CONFIG = {
720
715
  listenOnStart: true,
721
716
  };
722
717
  function resolveRestServerConfig(config) {
723
- const result = Object.assign(cloneDeep(DEFAULT_CONFIG), config);
718
+ const result = Object.assign(lodash_1.cloneDeep(DEFAULT_CONFIG), config);
724
719
  // Can't check falsiness, 0 is a valid port.
725
720
  if (result.port == null) {
726
721
  result.port = 3000;
@@ -732,7 +727,7 @@ function resolveRestServerConfig(config) {
732
727
  if (!result.openApiSpec.endpointMapping) {
733
728
  // mapping may be mutated by addOpenApiSpecEndpoint, be sure that doesn't
734
729
  // pollute the default mapping configuration
735
- result.openApiSpec.endpointMapping = cloneDeep(OPENAPI_SPEC_MAPPING);
730
+ result.openApiSpec.endpointMapping = lodash_1.cloneDeep(OPENAPI_SPEC_MAPPING);
736
731
  }
737
732
  result.apiExplorer = normalizeApiExplorerConfig(config.apiExplorer);
738
733
  if (result.openApiSpec.disabled) {
@@ -1 +1 @@
1
- {"version":3,"file":"rest.server.js","sourceRoot":"","sources":["../src/rest.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rest.server.js","sourceRoot":"","sources":["../src/rest.server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { ApplicationConfig } from '@loopback/core';
2
+ import { OASEnhancer, OpenApiSpec } from '@loopback/openapi-v3';
3
+ /**
4
+ * This enhancer consolidates schemas into `/components/schemas` and replaces
5
+ * instances of said schema with a $ref pointer.
6
+ *
7
+ * Please note that the title property must be set on a schema in order to be
8
+ * considered for consolidation.
9
+ *
10
+ * For example, with the following schema instance:
11
+ *
12
+ * ```json
13
+ * schema: {
14
+ * title: 'loopback.example',
15
+ * properties: {
16
+ * test: {
17
+ * type: 'string',
18
+ * },
19
+ * },
20
+ * }
21
+ * ```
22
+ *
23
+ * The consolidator will copy the schema body to
24
+ * `/components/schemas/loopback.example` and replace any instance of the schema
25
+ * with a reference to the component schema as follows:
26
+ *
27
+ * ```json
28
+ * schema: {
29
+ * $ref: '#/components/schemas/loopback.example',
30
+ * }
31
+ * ```
32
+ *
33
+ * When comparing schemas to avoid naming collisions, the description field
34
+ * is ignored.
35
+ */
36
+ export declare class ConsolidationEnhancer implements OASEnhancer {
37
+ readonly config?: ApplicationConfig | undefined;
38
+ name: string;
39
+ disabled: boolean;
40
+ constructor(config?: ApplicationConfig | undefined);
41
+ modifySpec(spec: OpenApiSpec): OpenApiSpec;
42
+ /**
43
+ * Recursively search OpenApiSpec PathsObject for SchemaObjects with title
44
+ * property. Moves reusable schema bodies to #/components/schemas and replace
45
+ * with json pointer. It handles title collisions with schema body comparision.
46
+ */
47
+ private consolidateSchemaObjects;
48
+ private recursiveWalk;
49
+ /**
50
+ * Carry out schema consolidation after tree traversal. If 'title' property
51
+ * set then we consider current schema for consolidation. SchemaObjects with
52
+ * properties (and title set) are moved to #/components/schemas/<title> and
53
+ * replaced with ReferenceObject.
54
+ *
55
+ * Features:
56
+ * - name collision protection
57
+ *
58
+ * @param schema - current schema element to process
59
+ * @param parentPath - path object to parent
60
+ * @param spec - subject OpenApi specification
61
+ */
62
+ private processSchema;
63
+ private getRefSchema;
64
+ private patchRef;
65
+ private patchPath;
66
+ private ifConsolidationCandidate;
67
+ private isTraversable;
68
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. 2020. All Rights Reserved.
3
+ // Node module: @loopback/rest
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const tslib_1 = require("tslib");
8
+ const core_1 = require("@loopback/core");
9
+ const openapi_v3_1 = require("@loopback/openapi-v3");
10
+ const debug_1 = tslib_1.__importDefault(require("debug"));
11
+ const json_schema_compare_1 = tslib_1.__importDefault(require("json-schema-compare"));
12
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
13
+ const debug = debug_1.default('loopback:openapi:spec-enhancer:consolidate');
14
+ /**
15
+ * This enhancer consolidates schemas into `/components/schemas` and replaces
16
+ * instances of said schema with a $ref pointer.
17
+ *
18
+ * Please note that the title property must be set on a schema in order to be
19
+ * considered for consolidation.
20
+ *
21
+ * For example, with the following schema instance:
22
+ *
23
+ * ```json
24
+ * schema: {
25
+ * title: 'loopback.example',
26
+ * properties: {
27
+ * test: {
28
+ * type: 'string',
29
+ * },
30
+ * },
31
+ * }
32
+ * ```
33
+ *
34
+ * The consolidator will copy the schema body to
35
+ * `/components/schemas/loopback.example` and replace any instance of the schema
36
+ * with a reference to the component schema as follows:
37
+ *
38
+ * ```json
39
+ * schema: {
40
+ * $ref: '#/components/schemas/loopback.example',
41
+ * }
42
+ * ```
43
+ *
44
+ * When comparing schemas to avoid naming collisions, the description field
45
+ * is ignored.
46
+ */
47
+ let ConsolidationEnhancer = class ConsolidationEnhancer {
48
+ constructor(config) {
49
+ var _a, _b, _c;
50
+ this.config = config;
51
+ this.name = 'consolidate';
52
+ this.disabled = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.rest) === null || _b === void 0 ? void 0 : _b.openApiSpec) === null || _c === void 0 ? void 0 : _c.consolidate) === false;
53
+ }
54
+ modifySpec(spec) {
55
+ return !this.disabled ? this.consolidateSchemaObjects(spec) : spec;
56
+ }
57
+ /**
58
+ * Recursively search OpenApiSpec PathsObject for SchemaObjects with title
59
+ * property. Moves reusable schema bodies to #/components/schemas and replace
60
+ * with json pointer. It handles title collisions with schema body comparision.
61
+ */
62
+ consolidateSchemaObjects(spec) {
63
+ // use 'paths' as crawl root
64
+ this.recursiveWalk(spec.paths, ['paths'], spec);
65
+ return spec;
66
+ }
67
+ recursiveWalk(rootSchema, parentPath, spec) {
68
+ if (this.isTraversable(rootSchema)) {
69
+ Object.entries(rootSchema).forEach(([key, subSchema]) => {
70
+ if (subSchema) {
71
+ this.recursiveWalk(subSchema, parentPath.concat(key), spec);
72
+ this.processSchema(subSchema, parentPath.concat(key), spec);
73
+ }
74
+ });
75
+ }
76
+ }
77
+ /**
78
+ * Carry out schema consolidation after tree traversal. If 'title' property
79
+ * set then we consider current schema for consolidation. SchemaObjects with
80
+ * properties (and title set) are moved to #/components/schemas/<title> and
81
+ * replaced with ReferenceObject.
82
+ *
83
+ * Features:
84
+ * - name collision protection
85
+ *
86
+ * @param schema - current schema element to process
87
+ * @param parentPath - path object to parent
88
+ * @param spec - subject OpenApi specification
89
+ */
90
+ processSchema(schema, parentPath, spec) {
91
+ const schemaObj = this.ifConsolidationCandidate(schema);
92
+ if (schemaObj) {
93
+ // name collison protection
94
+ let instanceNo = 1;
95
+ let title = schemaObj.title;
96
+ let refSchema = this.getRefSchema(title, spec);
97
+ while (refSchema &&
98
+ !json_schema_compare_1.default(schemaObj, refSchema, {
99
+ ignore: ['description'],
100
+ })) {
101
+ title = `${schemaObj.title}${instanceNo++}`;
102
+ refSchema = this.getRefSchema(title, spec);
103
+ }
104
+ if (!refSchema) {
105
+ debug('Creating new component $ref with schema %j', schema);
106
+ this.patchRef(title, schema, spec);
107
+ }
108
+ debug('Creating link to $ref %j', title);
109
+ this.patchPath(title, parentPath, spec);
110
+ }
111
+ }
112
+ getRefSchema(name, spec) {
113
+ const schema = lodash_1.default.get(spec, ['components', 'schemas', name]);
114
+ return schema;
115
+ }
116
+ patchRef(name, value, spec) {
117
+ lodash_1.default.set(spec, ['components', 'schemas', name], value);
118
+ }
119
+ patchPath(name, path, spec) {
120
+ const patch = {
121
+ $ref: `#/components/schemas/${name}`,
122
+ };
123
+ lodash_1.default.set(spec, path, patch);
124
+ }
125
+ ifConsolidationCandidate(schema) {
126
+ // use title to discriminate references
127
+ return openapi_v3_1.isSchemaObject(schema) && schema.properties && schema.title
128
+ ? schema
129
+ : undefined;
130
+ }
131
+ isTraversable(schema) {
132
+ return schema && typeof schema === 'object' ? true : false;
133
+ }
134
+ };
135
+ ConsolidationEnhancer = tslib_1.__decorate([
136
+ core_1.bind(openapi_v3_1.asSpecEnhancer, { scope: core_1.BindingScope.SINGLETON }),
137
+ tslib_1.__param(0, core_1.inject(core_1.CoreBindings.APPLICATION_CONFIG, { optional: true })),
138
+ tslib_1.__metadata("design:paramtypes", [Object])
139
+ ], ConsolidationEnhancer);
140
+ exports.ConsolidationEnhancer = ConsolidationEnhancer;
141
+ //# sourceMappingURL=consolidate.spec-enhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidate.spec-enhancer.js","sourceRoot":"","sources":["../../src/spec-enhancers/consolidate.spec-enhancer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -162,3 +162,25 @@ export declare type OperationArgs = any[];
162
162
  export declare type OperationRetval = any;
163
163
  export declare type GetFromContext = (key: string) => Promise<BoundValue>;
164
164
  export declare type BindElement = (key: string) => Binding;
165
+ /**
166
+ * user profile to add in session
167
+ */
168
+ export interface SessionUserProfile {
169
+ provider: string;
170
+ token: string;
171
+ email: string;
172
+ [attribute: string]: any;
173
+ }
174
+ /**
175
+ * interface to set variables in user session
176
+ */
177
+ export interface Session {
178
+ profile: SessionUserProfile;
179
+ [key: string]: any;
180
+ }
181
+ /**
182
+ * extending express request type with a session field
183
+ */
184
+ export interface RequestWithSession extends Request {
185
+ session: Session;
186
+ }
@@ -22,13 +22,20 @@ let AjvFactoryProvider = class AjvFactoryProvider {
22
22
  value() {
23
23
  return options => {
24
24
  var _a;
25
- let validationOptions = Object.assign(Object.assign({}, this.options), options);
25
+ let validationOptions = {
26
+ ...this.options,
27
+ ...options,
28
+ };
26
29
  // See https://github.com/epoberezkin/ajv#options
27
- validationOptions = Object.assign({ allErrors: true, jsonPointers: true,
30
+ validationOptions = {
31
+ allErrors: true,
32
+ jsonPointers: true,
28
33
  // nullable: support keyword "nullable" from Open API 3 specification.
29
- nullable: true,
34
+ nullable: true,
30
35
  // Allow OpenAPI spec binary format
31
- unknownFormats: ['binary'] }, validationOptions);
36
+ unknownFormats: ['binary'],
37
+ ...validationOptions,
38
+ };
32
39
  debug('AJV options', validationOptions);
33
40
  const ajvInst = new ajv_1.default(validationOptions);
34
41
  if (validationOptions.ajvKeywords === true) {
@@ -1 +1 @@
1
- {"version":3,"file":"ajv-factory.provider.js","sourceRoot":"","sources":["../../src/validation/ajv-factory.provider.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAMwB;AACxB,sDAA0B;AAC1B,0DAAgC;AAChC,kCAA+C;AAO/C,MAAM,KAAK,GAAG,eAAW,CAAC,mBAAmB,CAAC,CAAC;AAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAExC;;GAEG;AAEH,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAC7B,YAKU,UAAwC,EAAE;QAA1C,YAAO,GAAP,OAAO,CAAmC;IACjD,CAAC;IAQJ,KAAK;QACH,OAAO,OAAO,CAAC,EAAE;;YACf,IAAI,iBAAiB,mCAChB,IAAI,CAAC,OAAO,GACZ,OAAO,CACX,CAAC;YACF,iDAAiD;YACjD,iBAAiB,mBACf,SAAS,EAAE,IAAI,EACf,YAAY,EAAE,IAAI;gBAClB,sEAAsE;gBACtE,QAAQ,EAAE,IAAI;gBACd,mCAAmC;gBACnC,cAAc,EAAE,CAAC,QAAQ,CAAC,IACvB,iBAAiB,CACrB,CAAC;YAEF,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,aAAO,CAAC,iBAAiB,CAAC,CAAC;YAE/C,IAAI,iBAAiB,CAAC,WAAW,KAAK,IAAI,EAAE;gBAC1C,WAAW,CAAC,OAAO,CAAC,CAAC;aACtB;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;gBACvD,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;aACrD;YAED,IAAI,iBAAiB,CAAC,SAAS,KAAK,IAAI,EAAE;gBACxC,SAAS,CAAC,OAAO,CAAC,CAAC;aACpB;iBAAM,IAAI,OAAA,iBAAiB,CAAC,SAAS,0CAAE,WAAW,MAAK,MAAM,EAAE;gBAC9D,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;aACjD;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC9B,KAAK,CAAC,uBAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC7C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC5B,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;aACJ;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AArDC;IADC,aAAM,CAAC,kBAAW,CAAC,eAAQ,CAAC,WAAW,CAAC,CAAC;;oDACX;AAG/B;IADC,aAAM,CAAC,kBAAW,CAAC,eAAQ,CAAC,UAAU,CAAC,CAAC;;mDACZ;AAblB,kBAAkB;IAD9B,WAAI,CAAC,EAAC,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAC,CAAC;IAGjC,mBAAA,aAAM,CACL,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAA;;GALQ,kBAAkB,CA+D9B;AA/DY,gDAAkB"}
1
+ {"version":3,"file":"ajv-factory.provider.js","sourceRoot":"","sources":["../../src/validation/ajv-factory.provider.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAMwB;AACxB,sDAA0B;AAC1B,0DAAgC;AAChC,kCAA+C;AAO/C,MAAM,KAAK,GAAG,eAAW,CAAC,mBAAmB,CAAC,CAAC;AAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAExC;;GAEG;AAEH,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAC7B,YAKU,UAAwC,EAAE;QAA1C,YAAO,GAAP,OAAO,CAAmC;IACjD,CAAC;IAQJ,KAAK;QACH,OAAO,OAAO,CAAC,EAAE;;YACf,IAAI,iBAAiB,GAAiC;gBACpD,GAAG,IAAI,CAAC,OAAO;gBACf,GAAG,OAAO;aACX,CAAC;YACF,iDAAiD;YACjD,iBAAiB,GAAG;gBAClB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI;gBAClB,sEAAsE;gBACtE,QAAQ,EAAE,IAAI;gBACd,mCAAmC;gBACnC,cAAc,EAAE,CAAC,QAAQ,CAAC;gBAC1B,GAAG,iBAAiB;aACrB,CAAC;YAEF,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,aAAO,CAAC,iBAAiB,CAAC,CAAC;YAE/C,IAAI,iBAAiB,CAAC,WAAW,KAAK,IAAI,EAAE;gBAC1C,WAAW,CAAC,OAAO,CAAC,CAAC;aACtB;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;gBACvD,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;aACrD;YAED,IAAI,iBAAiB,CAAC,SAAS,KAAK,IAAI,EAAE;gBACxC,SAAS,CAAC,OAAO,CAAC,CAAC;aACpB;iBAAM,IAAI,OAAA,iBAAiB,CAAC,SAAS,0CAAE,WAAW,MAAK,MAAM,EAAE;gBAC9D,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;aACjD;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC9B,KAAK,CAAC,uBAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC7C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;YAED,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC5B,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC,CAAC,CAAC;aACJ;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AArDC;IADC,aAAM,CAAC,kBAAW,CAAC,eAAQ,CAAC,WAAW,CAAC,CAAC;;oDACX;AAG/B;IADC,aAAM,CAAC,kBAAW,CAAC,eAAQ,CAAC,UAAU,CAAC,CAAC;;mDACZ;AAblB,kBAAkB;IAD9B,WAAI,CAAC,EAAC,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAC,CAAC;IAGjC,mBAAA,aAAM,CACL,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAA;;GALQ,kBAAkB,CA+D9B;AA/DY,gDAAkB"}
@@ -45,7 +45,7 @@ async function validateRequestBody(body, requestBodySpec, globalSchemas = {}, op
45
45
  }
46
46
  if (!schema)
47
47
  return;
48
- options = Object.assign({ coerceTypes: !!body.coercionRequired }, options);
48
+ options = { coerceTypes: !!body.coercionRequired, ...options };
49
49
  await validateValueAgainstSchema(body.value, schema, globalSchemas, options);
50
50
  }
51
51
  exports.validateRequestBody = validateRequestBody;
@@ -150,9 +150,9 @@ function createValidator(schema, globalSchemas = {}, ajvInst) {
150
150
  const schemas = {};
151
151
  for (const name in globalSchemas) {
152
152
  // See https://github.com/strongloop/loopback-next/issues/4939
153
- schemas[name] = Object.assign(Object.assign({}, globalSchemas[name]), { $async: true });
153
+ schemas[name] = { ...globalSchemas[name], $async: true };
154
154
  }
155
- const schemaWithRef = Object.assign({ components: { schemas } }, jsonSchema);
155
+ const schemaWithRef = { components: { schemas }, ...jsonSchema };
156
156
  // See https://ajv.js.org/#asynchronous-validation for async validation
157
157
  schemaWithRef.$async = true;
158
158
  return ajvInst.compile(schemaWithRef);
@@ -1 +1 @@
1
- {"version":3,"file":"request-body.validator.js","sourceRoot":"","sources":["../../src/validation/request-body.validator.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAEhE,qDAM8B;AAE9B,0DAAgC;AAChC,4DAAuB;AACvB,wDAAwB;AACxB,0BAA2D;AAE3D,iEAA0D;AAE1D,MAAM,YAAY,GAAG,OAAO,CAAC,gDAAgD,CAAC,CAAC;AAC/E,MAAM,KAAK,GAAG,eAAW,CAAC,0BAA0B,CAAC,CAAC;AAEtD;;;;;;;;;GASG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAAiB,EACjB,eAAmC,EACnC,gBAA+B,EAAE,EACjC,UAAwC,EAAE;IAE1C,MAAM,QAAQ,GAAG,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,QAAQ,CAAC;IAE3C,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CACvB,IAAI,cAAU,CAAC,UAAU,CAAC,0BAA0B,CAAC,EACrD;YACE,IAAI,EAAE,4BAA4B;YAClC,aAAa,EAAE,cAAc;SAC9B,CACF,CAAC;QACF,MAAM,GAAG,CAAC;KACX;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,KAAK,CAAC,sBAAsB,EAAE,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;QACnE,IACE,MAAM;YACN,8BAAiB,CAAC,MAAM,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAC/C;YACA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAC9D,KAAK,CAAC,gBAAgB,EAAE,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;SAC1E;KACF;IACD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,OAAO,mBAAI,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAK,OAAO,CAAC,CAAC;IAC7D,MAAM,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC;AApCD,kDAoCC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,aAA2B;IACtD,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,KAAK,CACH,6CAA6C,EAC7C,cAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CACxC,CAAC;KACH;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,6BAA6B,GAAyB,IAAI,OAAO,EAAE,CAAC;AAE1E;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAqC;IAC7D,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,wBAAwB;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACtB,OAAO,CACR,CAAC,IAAI,EAA4C,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;QACpB,IAAI,CAAC,KAAK,qBAAqB;YAAE,SAAS;QAC1C,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KAC5B;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,0BAA0B;AACvC,8DAA8D;AAC9D,IAAS,EACT,MAAsC,EACtC,gBAA+B,EAAE,EACjC,UAAwC,EAAE;;IAE1C,IAAI,QAA0C,CAAC;IAE/C,MAAM,KAAK,SAAG,OAAO,CAAC,mBAAmB,mCAAI,6BAA6B,CAAC;IAC3E,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,YAA2D,CAAC;IAChE,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACrB,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAClC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAClC;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,UAAU,SACd,OAAO,CAAC,UAAU,mCAAI,IAAI,yCAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3D,YAAY,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,GAAG,EAAE,CAAC;QACzC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACjC;IAED,IAAI,gBAAgB,GAAsB,EAAE,CAAC;IAC7C,IAAI;QACF,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,mEAAmE;QACnE,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,IAAI,EAAE;YACjD,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC7C,OAAO;SACR;KACF;IAAC,OAAO,KAAK,EAAE;QACd,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;KACjC;IAED,wBAAwB;IACxB,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,KAAK,CACH,sCAAsC,EACtC,cAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EACjC,cAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAC/B,CAAC;KACH;IAED,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,UAAU,EAAE;QACrD,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KAClE;IAED,MAAM,KAAK,GAAG,kBAAc,CAAC,kBAAkB,EAAE,CAAC;IAClD,KAAK,CAAC,OAAO,GAAG,gBAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE;QAC1C,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,IAAI,EAAE,CAAC,CAAC,OAAO;YACf,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,MAAM;SACf,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CACtB,MAAoB,EACpB,gBAA+B,EAAE,EACjC,OAAY;IAEZ,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE/C,kDAAkD;IAClD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;QAChC,8DAA8D;QAC9D,OAAO,CAAC,IAAI,CAAC,mCAAO,aAAa,CAAC,IAAI,CAAC,KAAE,MAAM,EAAE,IAAI,GAAC,CAAC;KACxD;IACD,MAAM,aAAa,mBAAI,UAAU,EAAE,EAAC,OAAO,EAAC,IAAK,UAAU,CAAC,CAAC;IAE7D,uEAAuE;IACvE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC;IAE5B,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"request-body.validator.js","sourceRoot":"","sources":["../../src/validation/request-body.validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loopback/rest",
3
- "version": "3.2.0",
3
+ "version": "3.3.2",
4
4
  "description": "",
5
5
  "engines": {
6
6
  "node": ">=10"
@@ -8,7 +8,7 @@
8
8
  "scripts": {
9
9
  "acceptance": "lb-mocha \"dist/__tests__/acceptance/**/*.js\"",
10
10
  "build": "lb-tsc",
11
- "clean": "lb-clean loopback-rest*.tgz dist tsconfig.build.tsbuildinfo package",
11
+ "clean": "lb-clean loopback-rest*.tgz dist *.tsbuildinfo package",
12
12
  "pretest": "npm run build",
13
13
  "integration": "lb-mocha \"dist/__tests__/integration/**/*.js\"",
14
14
  "test": "lb-mocha \"dist/__tests__/**/*.js\"",
@@ -19,20 +19,20 @@
19
19
  "copyright.owner": "IBM Corp.",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@loopback/context": "^3.3.0",
23
- "@loopback/core": "^2.2.1",
24
- "@loopback/http-server": "^2.0.3",
25
- "@loopback/openapi-v3": "^3.1.2",
22
+ "@loopback/context": "^3.6.0",
23
+ "@loopback/core": "^2.4.2",
24
+ "@loopback/http-server": "^2.1.2",
25
+ "@loopback/openapi-v3": "^3.3.0",
26
26
  "@openapi-contrib/openapi-schema-to-json-schema": "^3.0.0",
27
27
  "@types/body-parser": "^1.19.0",
28
28
  "@types/cors": "^2.8.6",
29
- "@types/express": "^4.17.5",
30
- "@types/express-serve-static-core": "^4.17.4",
29
+ "@types/express": "^4.17.6",
30
+ "@types/express-serve-static-core": "^4.17.5",
31
31
  "@types/http-errors": "^1.6.3",
32
32
  "@types/on-finished": "^2.3.1",
33
33
  "@types/serve-static": "1.13.3",
34
34
  "@types/type-is": "^1.6.3",
35
- "ajv": "^6.12.0",
35
+ "ajv": "^6.12.2",
36
36
  "ajv-errors": "^1.0.1",
37
37
  "ajv-keywords": "^3.4.1",
38
38
  "body-parser": "^1.19.0",
@@ -41,6 +41,7 @@
41
41
  "express": "^4.17.1",
42
42
  "http-errors": "^1.7.3",
43
43
  "js-yaml": "^3.13.1",
44
+ "json-schema-compare": "^0.2.2",
44
45
  "lodash": "^4.17.15",
45
46
  "on-finished": "^2.3.0",
46
47
  "path-to-regexp": "^6.1.0",
@@ -51,16 +52,17 @@
51
52
  "validator": "^13.0.0"
52
53
  },
53
54
  "devDependencies": {
54
- "@loopback/build": "^5.0.1",
55
- "@loopback/eslint-config": "^6.0.3",
56
- "@loopback/openapi-spec-builder": "^2.0.3",
57
- "@loopback/repository": "^2.1.0",
58
- "@loopback/testlab": "^3.0.0",
55
+ "@loopback/build": "^5.3.0",
56
+ "@loopback/eslint-config": "^6.0.5",
57
+ "@loopback/openapi-spec-builder": "^2.1.2",
58
+ "@loopback/repository": "^2.3.0",
59
+ "@loopback/testlab": "^3.1.2",
59
60
  "@types/debug": "^4.1.5",
60
61
  "@types/js-yaml": "^3.12.3",
61
- "@types/lodash": "^4.14.149",
62
- "@types/multer": "^1.4.2",
63
- "@types/node": "^10.17.19",
62
+ "@types/json-schema-compare": "^0.2.0",
63
+ "@types/lodash": "^4.14.150",
64
+ "@types/multer": "^1.4.3",
65
+ "@types/node": "^10.17.21",
64
66
  "@types/on-finished": "^2.3.1",
65
67
  "@types/qs": "^6.9.1",
66
68
  "multer": "^1.4.2"
@@ -78,5 +80,5 @@
78
80
  "url": "https://github.com/strongloop/loopback-next.git",
79
81
  "directory": "packages/rest"
80
82
  },
81
- "gitHead": "744a85c76a2dd260f6dc21e5b497f14eccaf099d"
83
+ "gitHead": "9ecee6fc8648b8f0999be6c13934d4756e9b0ddc"
82
84
  }
@@ -3,10 +3,11 @@
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
- export * from './types';
7
6
  export * from './body-parser';
7
+ export * from './body-parser.helpers';
8
8
  export * from './body-parser.json';
9
+ export * from './body-parser.raw';
10
+ export * from './body-parser.stream';
9
11
  export * from './body-parser.text';
10
12
  export * from './body-parser.urlencoded';
11
- export * from './body-parser.stream';
12
- export * from './body-parser.raw';
13
+ export * from './types';
@@ -4,7 +4,12 @@
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
6
  import {Context} from '@loopback/context';
7
- import {ControllerSpec, PathObject, SchemasObject} from '@loopback/openapi-v3';
7
+ import {
8
+ ComponentsObject,
9
+ ControllerSpec,
10
+ PathObject,
11
+ SchemasObject,
12
+ } from '@loopback/openapi-v3';
8
13
  import {RestBindings} from './keys';
9
14
  import {RequestContext} from './request-context';
10
15
  import {RestServerResolvedConfig} from './rest.server';
@@ -19,7 +24,10 @@ import {SequenceHandler} from './sequence';
19
24
  import {Request, Response} from './types';
20
25
 
21
26
  export class HttpHandler {
22
- protected _apiDefinitions: SchemasObject;
27
+ /**
28
+ * Shared OpenAPI spec objects as `components`
29
+ */
30
+ protected _openApiComponents: ComponentsObject;
23
31
 
24
32
  public handleRequest: (request: Request, response: Response) => Promise<void>;
25
33
 
@@ -43,12 +51,35 @@ export class HttpHandler {
43
51
  this._routes.registerRoute(route);
44
52
  }
45
53
 
54
+ /**
55
+ * @deprecated Use `registerApiComponents`
56
+ * @param defs Schemas
57
+ */
46
58
  registerApiDefinitions(defs: SchemasObject) {
47
- this._apiDefinitions = Object.assign({}, this._apiDefinitions, defs);
59
+ this.registerApiComponents({schemas: defs});
60
+ }
61
+
62
+ /**
63
+ * Merge components into the OpenApi spec
64
+ * @param defs - Components
65
+ */
66
+ registerApiComponents(defs: ComponentsObject) {
67
+ this._openApiComponents = this._openApiComponents ?? {};
68
+ for (const p in defs) {
69
+ // Merge each child, such as `schemas`, `parameters`, and `headers`
70
+ this._openApiComponents[p] = {...this._openApiComponents[p], ...defs[p]};
71
+ }
72
+ }
73
+
74
+ getApiComponents() {
75
+ return this._openApiComponents;
48
76
  }
49
77
 
78
+ /**
79
+ * @deprecated Use `getApiComponents`
80
+ */
50
81
  getApiDefinitions() {
51
- return this._apiDefinitions;
82
+ return this._openApiComponents?.schemas;
52
83
  }
53
84
 
54
85
  describeApiPaths(): PathObject {
@@ -42,6 +42,7 @@ import {
42
42
  RestServerConfig,
43
43
  } from './rest.server';
44
44
  import {DefaultSequence} from './sequence';
45
+ import {ConsolidationEnhancer} from './spec-enhancers/consolidate.spec-enhancer';
45
46
  import {InfoSpecEnhancer} from './spec-enhancers/info.spec-enhancer';
46
47
  import {AjvFactoryProvider} from './validation/ajv-factory.provider';
47
48
 
@@ -85,6 +86,7 @@ export class RestComponent implements Component {
85
86
  RestBindings.REQUEST_BODY_PARSER_STREAM,
86
87
  ),
87
88
  createBindingFromClass(InfoSpecEnhancer),
89
+ createBindingFromClass(ConsolidationEnhancer),
88
90
  ];
89
91
  servers: {
90
92
  [name: string]: Constructor<Server>;
@@ -35,6 +35,7 @@ import {PathParams} from 'express-serve-static-core';
35
35
  import {IncomingMessage, ServerResponse} from 'http';
36
36
  import {ServerOptions} from 'https';
37
37
  import {safeDump} from 'js-yaml';
38
+ import {cloneDeep} from 'lodash';
38
39
  import {ServeStaticOptions} from 'serve-static';
39
40
  import {writeErrorToResponse} from 'strong-error-handler';
40
41
  import {BodyParser, REQUEST_BODY_PARSER_TAG} from './body-parsers';
@@ -83,12 +84,6 @@ export interface HttpServerLike {
83
84
 
84
85
  const SequenceActions = RestBindings.SequenceActions;
85
86
 
86
- // NOTE(bajtos) we cannot use `import cloneDeep from 'lodash/cloneDeep'
87
- // because it produces the following TypeScript error:
88
- // Module '"(...)/node_modules/@types/lodash/cloneDeep/index"' resolves to
89
- // a non-module entity and cannot be imported using this construct.
90
- const cloneDeep: <T>(value: T) => T = require('lodash/cloneDeep');
91
-
92
87
  /**
93
88
  * A REST API server for use with Loopback.
94
89
  * Add this server to your application by importing the RestComponent.
@@ -421,8 +416,8 @@ export class RestServer extends Context implements Server, HttpServerLike {
421
416
  }
422
417
 
423
418
  debug('Registering controller %s', controllerName);
424
- if (apiSpec.components && apiSpec.components.schemas) {
425
- this._httpHandler.registerApiDefinitions(apiSpec.components.schemas);
419
+ if (apiSpec.components) {
420
+ this._httpHandler.registerApiComponents(apiSpec.components);
426
421
  }
427
422
  const controllerFactory = createControllerFactoryForBinding(b.key);
428
423
  const routes = createRoutesForController(
@@ -798,14 +793,14 @@ export class RestServer extends Context implements Server, HttpServerLike {
798
793
  */
799
794
  async getApiSpec(requestContext?: RequestContext): Promise<OpenApiSpec> {
800
795
  let spec = await this.get<OpenApiSpec>(RestBindings.API_SPEC);
801
- const defs = this.httpHandler.getApiDefinitions();
796
+ const components = this.httpHandler.getApiComponents();
802
797
 
803
798
  // Apply deep clone to prevent getApiSpec() callers from
804
799
  // accidentally modifying our internal routing data
805
800
  spec.paths = cloneDeep(this.httpHandler.describeApiPaths());
806
- if (defs) {
807
- spec.components = spec.components ?? {};
808
- spec.components.schemas = cloneDeep(defs);
801
+ if (components) {
802
+ const defs = cloneDeep(components);
803
+ spec.components = {...spec.components, ...defs};
809
804
  }
810
805
 
811
806
  assignRouterSpec(spec, this._externalRoutes.routerSpec);
@@ -1066,6 +1061,12 @@ export interface OpenApiSpecOptions {
1066
1061
  * Set this flag to disable the endpoint for OpenAPI spec
1067
1062
  */
1068
1063
  disabled?: true;
1064
+
1065
+ /**
1066
+ * Set this flag to `false` to disable OAS schema consolidation. If not set,
1067
+ * the value defaults to `true`.
1068
+ */
1069
+ consolidate?: boolean;
1069
1070
  }
1070
1071
 
1071
1072
  export interface ApiExplorerOptions {
@@ -0,0 +1,182 @@
1
+ // Copyright IBM Corp. 2020. All Rights Reserved.
2
+ // Node module: @loopback/rest
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {
7
+ ApplicationConfig,
8
+ bind,
9
+ BindingScope,
10
+ CoreBindings,
11
+ inject,
12
+ } from '@loopback/core';
13
+ import {
14
+ asSpecEnhancer,
15
+ ISpecificationExtension,
16
+ isSchemaObject,
17
+ OASEnhancer,
18
+ OpenApiSpec,
19
+ ReferenceObject,
20
+ SchemaObject,
21
+ } from '@loopback/openapi-v3';
22
+ import debugFactory from 'debug';
23
+ import compare from 'json-schema-compare';
24
+ import _ from 'lodash';
25
+
26
+ const debug = debugFactory('loopback:openapi:spec-enhancer:consolidate');
27
+
28
+ /**
29
+ * This enhancer consolidates schemas into `/components/schemas` and replaces
30
+ * instances of said schema with a $ref pointer.
31
+ *
32
+ * Please note that the title property must be set on a schema in order to be
33
+ * considered for consolidation.
34
+ *
35
+ * For example, with the following schema instance:
36
+ *
37
+ * ```json
38
+ * schema: {
39
+ * title: 'loopback.example',
40
+ * properties: {
41
+ * test: {
42
+ * type: 'string',
43
+ * },
44
+ * },
45
+ * }
46
+ * ```
47
+ *
48
+ * The consolidator will copy the schema body to
49
+ * `/components/schemas/loopback.example` and replace any instance of the schema
50
+ * with a reference to the component schema as follows:
51
+ *
52
+ * ```json
53
+ * schema: {
54
+ * $ref: '#/components/schemas/loopback.example',
55
+ * }
56
+ * ```
57
+ *
58
+ * When comparing schemas to avoid naming collisions, the description field
59
+ * is ignored.
60
+ */
61
+ @bind(asSpecEnhancer, {scope: BindingScope.SINGLETON})
62
+ export class ConsolidationEnhancer implements OASEnhancer {
63
+ name = 'consolidate';
64
+ disabled: boolean;
65
+
66
+ constructor(
67
+ @inject(CoreBindings.APPLICATION_CONFIG, {optional: true})
68
+ readonly config?: ApplicationConfig,
69
+ ) {
70
+ this.disabled = this.config?.rest?.openApiSpec?.consolidate === false;
71
+ }
72
+
73
+ modifySpec(spec: OpenApiSpec): OpenApiSpec {
74
+ return !this.disabled ? this.consolidateSchemaObjects(spec) : spec;
75
+ }
76
+
77
+ /**
78
+ * Recursively search OpenApiSpec PathsObject for SchemaObjects with title
79
+ * property. Moves reusable schema bodies to #/components/schemas and replace
80
+ * with json pointer. It handles title collisions with schema body comparision.
81
+ */
82
+ private consolidateSchemaObjects(spec: OpenApiSpec): OpenApiSpec {
83
+ // use 'paths' as crawl root
84
+ this.recursiveWalk(spec.paths, ['paths'], spec);
85
+
86
+ return spec;
87
+ }
88
+
89
+ private recursiveWalk(
90
+ rootSchema: ISpecificationExtension,
91
+ parentPath: Array<string>,
92
+ spec: OpenApiSpec,
93
+ ) {
94
+ if (this.isTraversable(rootSchema)) {
95
+ Object.entries(rootSchema).forEach(([key, subSchema]) => {
96
+ if (subSchema) {
97
+ this.recursiveWalk(subSchema, parentPath.concat(key), spec);
98
+ this.processSchema(subSchema, parentPath.concat(key), spec);
99
+ }
100
+ });
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Carry out schema consolidation after tree traversal. If 'title' property
106
+ * set then we consider current schema for consolidation. SchemaObjects with
107
+ * properties (and title set) are moved to #/components/schemas/<title> and
108
+ * replaced with ReferenceObject.
109
+ *
110
+ * Features:
111
+ * - name collision protection
112
+ *
113
+ * @param schema - current schema element to process
114
+ * @param parentPath - path object to parent
115
+ * @param spec - subject OpenApi specification
116
+ */
117
+ private processSchema(
118
+ schema: SchemaObject | ReferenceObject,
119
+ parentPath: Array<string>,
120
+ spec: OpenApiSpec,
121
+ ) {
122
+ const schemaObj = this.ifConsolidationCandidate(schema);
123
+ if (schemaObj) {
124
+ // name collison protection
125
+ let instanceNo = 1;
126
+ let title = schemaObj.title!;
127
+ let refSchema = this.getRefSchema(title, spec);
128
+ while (
129
+ refSchema &&
130
+ !compare(schemaObj as ISpecificationExtension, refSchema, {
131
+ ignore: ['description'],
132
+ })
133
+ ) {
134
+ title = `${schemaObj.title}${instanceNo++}`;
135
+ refSchema = this.getRefSchema(title, spec);
136
+ }
137
+ if (!refSchema) {
138
+ debug('Creating new component $ref with schema %j', schema);
139
+ this.patchRef(title, schema, spec);
140
+ }
141
+ debug('Creating link to $ref %j', title);
142
+ this.patchPath(title, parentPath, spec);
143
+ }
144
+ }
145
+
146
+ private getRefSchema(
147
+ name: string,
148
+ spec: OpenApiSpec,
149
+ ): ISpecificationExtension | undefined {
150
+ const schema = _.get(spec, ['components', 'schemas', name]);
151
+
152
+ return schema;
153
+ }
154
+
155
+ private patchRef(
156
+ name: string,
157
+ value: ISpecificationExtension,
158
+ spec: OpenApiSpec,
159
+ ) {
160
+ _.set(spec, ['components', 'schemas', name], value);
161
+ }
162
+
163
+ private patchPath(name: string, path: Array<string>, spec: OpenApiSpec) {
164
+ const patch = {
165
+ $ref: `#/components/schemas/${name}`,
166
+ };
167
+ _.set(spec, path, patch);
168
+ }
169
+
170
+ private ifConsolidationCandidate(
171
+ schema: SchemaObject | ReferenceObject,
172
+ ): SchemaObject | undefined {
173
+ // use title to discriminate references
174
+ return isSchemaObject(schema) && schema.properties && schema.title
175
+ ? schema
176
+ : undefined;
177
+ }
178
+
179
+ private isTraversable(schema: ISpecificationExtension): boolean {
180
+ return schema && typeof schema === 'object' ? true : false;
181
+ }
182
+ }
package/src/types.ts CHANGED
@@ -199,3 +199,28 @@ export type OperationRetval = any;
199
199
 
200
200
  export type GetFromContext = (key: string) => Promise<BoundValue>;
201
201
  export type BindElement = (key: string) => Binding;
202
+
203
+ /**
204
+ * user profile to add in session
205
+ */
206
+ export interface SessionUserProfile {
207
+ provider: string;
208
+ token: string;
209
+ email: string;
210
+ [attribute: string]: any;
211
+ }
212
+
213
+ /**
214
+ * interface to set variables in user session
215
+ */
216
+ export interface Session {
217
+ profile: SessionUserProfile;
218
+ [key: string]: any;
219
+ }
220
+
221
+ /**
222
+ * extending express request type with a session field
223
+ */
224
+ export interface RequestWithSession extends Request {
225
+ session: Session;
226
+ }