@loopback/openapi-v3 1.11.0 → 1.12.0

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,19 @@
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
+ # [1.12.0](https://github.com/strongloop/loopback-next/compare/@loopback/openapi-v3@1.11.0...@loopback/openapi-v3@1.12.0) (2020-01-27)
7
+
8
+
9
+ ### Features
10
+
11
+ * support x-ts-type in anyOf/allOf/oneOf/not ([28fcc54](https://github.com/strongloop/loopback-next/commit/28fcc545e42d4c5ae88215436b873a78a3fb6c8d))
12
+ * **openapi-v3:** add support for `anyOf` and `oneOf` on the `jsonToSchemaObject` utility ([72ba132](https://github.com/strongloop/loopback-next/commit/72ba1321a85112a3e085d62fe573f60f79d5c64c)), closes [#3524](https://github.com/strongloop/loopback-next/issues/3524)
13
+ * **repository-json-schema:** add title to filter schemas ([6105883](https://github.com/strongloop/loopback-next/commit/6105883967ca5853cc8990f423d9febd1eb07101))
14
+
15
+
16
+
17
+
18
+
6
19
  # [1.11.0](https://github.com/strongloop/loopback-next/compare/@loopback/openapi-v3@1.10.3...@loopback/openapi-v3@1.11.0) (2020-01-07)
7
20
 
8
21
 
@@ -104,8 +104,10 @@ function resolveControllerSpec(constructor) {
104
104
  throw new Error('An operation should only have one parameter decorated by @requestBody');
105
105
  requestBody = requestBodies[0];
106
106
  debug(' requestBody for method %s: %j', op, requestBody);
107
+ /* istanbul ignore else */
107
108
  if (requestBody) {
108
109
  operationSpec.requestBody = requestBody;
110
+ /* istanbul ignore else */
109
111
  const content = requestBody.content || {};
110
112
  for (const mediaType in content) {
111
113
  processSchemaExtensions(spec, content[mediaType].schema);
@@ -145,6 +147,7 @@ function resolveControllerSpec(constructor) {
145
147
  }
146
148
  return spec;
147
149
  }
150
+ const SCHEMA_ARR_KEYS = ['allOf', 'anyOf', 'oneOf'];
148
151
  /**
149
152
  * Resolve the x-ts-type in the schema object
150
153
  * @param spec - Controller spec
@@ -156,25 +159,52 @@ function processSchemaExtensions(spec, schema) {
156
159
  return;
157
160
  assignRelatedSchemas(spec, schema.definitions);
158
161
  delete schema.definitions;
159
- if (types_1.isReferenceObject(schema))
160
- return;
161
- const tsType = schema[exports.TS_TYPE_KEY];
162
- debug(' %s => %o', exports.TS_TYPE_KEY, tsType);
163
- if (tsType) {
164
- schema = generate_schema_1.resolveSchema(tsType, schema);
165
- if (schema.$ref)
166
- generateOpenAPISchema(spec, tsType);
167
- // We don't want a Function type in the final spec.
168
- delete schema[exports.TS_TYPE_KEY];
169
- return;
162
+ /**
163
+ * check if we have been provided a `not`
164
+ * `not` is valid in many cases- here we're checking for
165
+ * `not: { schema: {'x-ts-type': SomeModel }}
166
+ */
167
+ if (schema.not) {
168
+ processSchemaExtensions(spec, schema.not);
170
169
  }
171
- if (schema.type === 'array') {
172
- processSchemaExtensions(spec, schema.items);
170
+ /**
171
+ * check for schema.allOf, schema.oneOf, schema.anyOf arrays first.
172
+ * You cannot provide BOTH a defnintion AND one of these keywords.
173
+ */
174
+ /* istanbul ignore else */
175
+ const hasOwn = (prop) => { var _a; return (_a = schema) === null || _a === void 0 ? void 0 : _a.hasOwnProperty(prop); };
176
+ if (SCHEMA_ARR_KEYS.some(k => hasOwn(k))) {
177
+ SCHEMA_ARR_KEYS.forEach((k) => {
178
+ var _a;
179
+ /* istanbul ignore else */
180
+ if (((_a = schema) === null || _a === void 0 ? void 0 : _a[k]) && Array.isArray(schema[k])) {
181
+ schema[k].forEach((r) => {
182
+ processSchemaExtensions(spec, r);
183
+ });
184
+ }
185
+ });
173
186
  }
174
- else if (schema.type === 'object') {
175
- if (schema.properties) {
176
- for (const p in schema.properties) {
177
- processSchemaExtensions(spec, schema.properties[p]);
187
+ else {
188
+ if (types_1.isReferenceObject(schema))
189
+ return;
190
+ const tsType = schema[exports.TS_TYPE_KEY];
191
+ debug(' %s => %o', exports.TS_TYPE_KEY, tsType);
192
+ if (tsType) {
193
+ schema = generate_schema_1.resolveSchema(tsType, schema);
194
+ if (schema.$ref)
195
+ generateOpenAPISchema(spec, tsType);
196
+ // We don't want a Function type in the final spec.
197
+ delete schema[exports.TS_TYPE_KEY];
198
+ return;
199
+ }
200
+ if (schema.type === 'array') {
201
+ processSchemaExtensions(spec, schema.items);
202
+ }
203
+ else if (schema.type === 'object') {
204
+ if (schema.properties) {
205
+ for (const p in schema.properties) {
206
+ processSchemaExtensions(spec, schema.properties[p]);
207
+ }
178
208
  }
179
209
  }
180
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controller-spec.js","sourceRoot":"","sources":["../src/controller-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller-spec.js","sourceRoot":"","sources":["../src/controller-spec.ts"],"names":[],"mappings":"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"}
@@ -28,13 +28,7 @@ function jsonToSchemaObject(json, visited = new Map()) {
28
28
  [converted]: false,
29
29
  };
30
30
  visited.set(json, result);
31
- const propsToIgnore = [
32
- 'anyOf',
33
- 'oneOf',
34
- 'additionalItems',
35
- 'defaultProperties',
36
- 'typeof',
37
- ];
31
+ const propsToIgnore = ['additionalItems', 'defaultProperties', 'typeof'];
38
32
  for (const property in json) {
39
33
  if (propsToIgnore.includes(property)) {
40
34
  continue;
@@ -51,6 +45,14 @@ function jsonToSchemaObject(json, visited = new Map()) {
51
45
  result.allOf = lodash_1.default.map(json.allOf, item => jsonToSchemaObject(item, visited));
52
46
  break;
53
47
  }
48
+ case 'anyOf': {
49
+ result.anyOf = lodash_1.default.map(json.anyOf, item => jsonToSchemaObject(item, visited));
50
+ break;
51
+ }
52
+ case 'oneOf': {
53
+ result.oneOf = lodash_1.default.map(json.oneOf, item => jsonToSchemaObject(item, visited));
54
+ break;
55
+ }
54
56
  case 'definitions': {
55
57
  result.definitions = lodash_1.default.mapValues(json.definitions, def => jsonToSchemaObject(jsonOrBooleanToJSON(def), visited));
56
58
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"json-to-schema.js","sourceRoot":"","sources":["../src/json-to-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-to-schema.js","sourceRoot":"","sources":["../src/json-to-schema.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAGhE,oDAAuB;AACvB,mCAKiB;AAwBjB;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,IAAgB,EAChB,UAAqD,IAAI,GAAG,EAAE;IAE9D,wDAAwD;IACxD,MAAM,SAAS,GAAG,sBAAsB,CAAC;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,IAAI,IAAI,IAAI,sBAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;QAC3E,OAAO,EAAC,IAAI,EAAE,wBAAwB,IAAI,CAAC,KAAK,EAAE,EAAC,CAAC;KACrD;IACD,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAC;IAElC,MAAM,MAAM,GAAiB;QAC3B,CAAC,SAAS,CAAC,EAAE,KAAK;KACnB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1B,MAAM,aAAa,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACzE,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;QAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACpC,SAAS;SACV;QACD,QAAQ,QAAQ,EAAE;YAChB,KAAK,MAAM,CAAC,CAAC;gBACX,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;oBACxC,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAC;iBACH;gBACD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAClE,MAAM;aACP;YACD,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,gBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CACtC,kBAAkB,CAAC,IAAkB,EAAE,OAAO,CAAC,CAChD,CAAC;gBACF,MAAM;aACP;YACD,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,gBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CACtC,kBAAkB,CAAC,IAAkB,EAAE,OAAO,CAAC,CAChD,CAAC;gBACF,MAAM;aACP;YACD,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,gBAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CACtC,kBAAkB,CAAC,IAAkB,EAAE,OAAO,CAAC,CAChD,CAAC;gBACF,MAAM;aACP;YACD,KAAK,aAAa,CAAC,CAAC;gBAClB,MAAM,CAAC,WAAW,GAAG,gBAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CACvD,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CACtD,CAAC;gBACF,MAAM;aACP;YACD,KAAK,YAAY,CAAC,CAAC;gBACjB,MAAM,CAAC,UAAU,GAAG,gBAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CACtD,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CACvD,CAAC;gBACF,MAAM;aACP;YACD,KAAK,sBAAsB,CAAC,CAAC;gBAC3B,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;oBAClD,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;iBACzD;qBAAM;oBACL,MAAM,CAAC,oBAAoB,GAAG,kBAAkB,CAC9C,IAAI,CAAC,oBAAqB,EAC1B,OAAO,CACR,CAAC;iBACH;gBACD,MAAM;aACP;YACD,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrE,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,KAAM,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,MAAM;aACP;YACD,KAAK,MAAM,CAAC,CAAC;gBACX,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAK,CAAC,OAAO,CAC9B,eAAe,EACf,sBAAsB,CACvB,CAAC;gBACF,MAAM;aACP;YACD,KAAK,UAAU,CAAC,CAAC;gBACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACnC;gBACD,MAAM;aACP;YACD,OAAO,CAAC,CAAC;gBACP,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAA4B,CAAC,CAAC;gBACtD,MAAM;aACP;SACF;KACF;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AAnGD,gDAmGC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,UAAgC;IAClE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,UAAU,CAAC;KACnB;SAAM;QACL,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC;KACpC;AACH,CAAC;AAND,kDAMC"}
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@loopback/openapi-v3",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "Processes openapi v3 related metadata",
5
5
  "engines": {
6
6
  "node": ">=8.9"
7
7
  },
8
8
  "dependencies": {
9
- "@loopback/core": "^1.12.1",
10
- "@loopback/repository-json-schema": "^1.11.4",
9
+ "@loopback/core": "^1.12.2",
10
+ "@loopback/repository-json-schema": "^1.12.0",
11
11
  "debug": "^4.1.1",
12
12
  "json-merge-patch": "^0.2.3",
13
13
  "lodash": "^4.17.15",
14
14
  "openapi3-ts": "^1.3.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@loopback/build": "^3.0.1",
18
- "@loopback/eslint-config": "^5.0.1",
19
- "@loopback/openapi-spec-builder": "^1.2.21",
20
- "@loopback/repository": "^1.17.0",
21
- "@loopback/testlab": "^1.10.1",
17
+ "@loopback/build": "^3.1.0",
18
+ "@loopback/eslint-config": "^5.0.2",
19
+ "@loopback/openapi-spec-builder": "^1.3.0",
20
+ "@loopback/repository": "^1.18.0",
21
+ "@loopback/testlab": "^1.10.2",
22
22
  "@types/debug": "^4.1.5",
23
23
  "@types/lodash": "^4.14.149",
24
24
  "@types/node": "^10.17.13"
@@ -56,5 +56,5 @@
56
56
  "url": "https://github.com/strongloop/loopback-next.git",
57
57
  "directory": "packages/openapi-v3"
58
58
  },
59
- "gitHead": "598baf6e84de3917bb67aff47a1ab1cb1111e3d2"
59
+ "gitHead": "d08f135a0d1040edc61497739a8d86a866e4e29a"
60
60
  }
@@ -178,9 +178,11 @@ function resolveControllerSpec(constructor: Function): ControllerSpec {
178
178
 
179
179
  requestBody = requestBodies[0];
180
180
  debug(' requestBody for method %s: %j', op, requestBody);
181
+ /* istanbul ignore else */
181
182
  if (requestBody) {
182
183
  operationSpec.requestBody = requestBody;
183
184
 
185
+ /* istanbul ignore else */
184
186
  const content = requestBody.content || {};
185
187
  for (const mediaType in content) {
186
188
  processSchemaExtensions(spec, content[mediaType].schema);
@@ -233,6 +235,9 @@ function resolveControllerSpec(constructor: Function): ControllerSpec {
233
235
  return spec;
234
236
  }
235
237
 
238
+ declare type MixKey = 'allOf' | 'anyOf' | 'oneOf';
239
+ const SCHEMA_ARR_KEYS: MixKey[] = ['allOf', 'anyOf', 'oneOf'];
240
+
236
241
  /**
237
242
  * Resolve the x-ts-type in the schema object
238
243
  * @param spec - Controller spec
@@ -248,24 +253,51 @@ function processSchemaExtensions(
248
253
  assignRelatedSchemas(spec, schema.definitions);
249
254
  delete schema.definitions;
250
255
 
251
- if (isReferenceObject(schema)) return;
256
+ /**
257
+ * check if we have been provided a `not`
258
+ * `not` is valid in many cases- here we're checking for
259
+ * `not: { schema: {'x-ts-type': SomeModel }}
260
+ */
261
+ if (schema.not) {
262
+ processSchemaExtensions(spec, schema.not);
263
+ }
264
+
265
+ /**
266
+ * check for schema.allOf, schema.oneOf, schema.anyOf arrays first.
267
+ * You cannot provide BOTH a defnintion AND one of these keywords.
268
+ */
269
+ /* istanbul ignore else */
270
+ const hasOwn = (prop: string) => schema?.hasOwnProperty(prop);
271
+
272
+ if (SCHEMA_ARR_KEYS.some(k => hasOwn(k))) {
273
+ SCHEMA_ARR_KEYS.forEach((k: MixKey) => {
274
+ /* istanbul ignore else */
275
+ if (schema?.[k] && Array.isArray(schema[k])) {
276
+ schema[k].forEach((r: (SchemaObject | ReferenceObject)[]) => {
277
+ processSchemaExtensions(spec, r);
278
+ });
279
+ }
280
+ });
281
+ } else {
282
+ if (isReferenceObject(schema)) return;
252
283
 
253
- const tsType = schema[TS_TYPE_KEY];
254
- debug(' %s => %o', TS_TYPE_KEY, tsType);
255
- if (tsType) {
256
- schema = resolveSchema(tsType, schema);
257
- if (schema.$ref) generateOpenAPISchema(spec, tsType);
284
+ const tsType = schema[TS_TYPE_KEY];
285
+ debug(' %s => %o', TS_TYPE_KEY, tsType);
286
+ if (tsType) {
287
+ schema = resolveSchema(tsType, schema);
288
+ if (schema.$ref) generateOpenAPISchema(spec, tsType);
258
289
 
259
- // We don't want a Function type in the final spec.
260
- delete schema[TS_TYPE_KEY];
261
- return;
262
- }
263
- if (schema.type === 'array') {
264
- processSchemaExtensions(spec, schema.items);
265
- } else if (schema.type === 'object') {
266
- if (schema.properties) {
267
- for (const p in schema.properties) {
268
- processSchemaExtensions(spec, schema.properties[p]);
290
+ // We don't want a Function type in the final spec.
291
+ delete schema[TS_TYPE_KEY];
292
+ return;
293
+ }
294
+ if (schema.type === 'array') {
295
+ processSchemaExtensions(spec, schema.items);
296
+ } else if (schema.type === 'object') {
297
+ if (schema.properties) {
298
+ for (const p in schema.properties) {
299
+ processSchemaExtensions(spec, schema.properties[p]);
300
+ }
269
301
  }
270
302
  }
271
303
  }
@@ -56,13 +56,7 @@ export function jsonToSchemaObject(
56
56
  [converted]: false,
57
57
  };
58
58
  visited.set(json, result);
59
- const propsToIgnore = [
60
- 'anyOf',
61
- 'oneOf',
62
- 'additionalItems',
63
- 'defaultProperties',
64
- 'typeof',
65
- ];
59
+ const propsToIgnore = ['additionalItems', 'defaultProperties', 'typeof'];
66
60
  for (const property in json) {
67
61
  if (propsToIgnore.includes(property)) {
68
62
  continue;
@@ -83,6 +77,18 @@ export function jsonToSchemaObject(
83
77
  );
84
78
  break;
85
79
  }
80
+ case 'anyOf': {
81
+ result.anyOf = _.map(json.anyOf, item =>
82
+ jsonToSchemaObject(item as JsonSchema, visited),
83
+ );
84
+ break;
85
+ }
86
+ case 'oneOf': {
87
+ result.oneOf = _.map(json.oneOf, item =>
88
+ jsonToSchemaObject(item as JsonSchema, visited),
89
+ );
90
+ break;
91
+ }
86
92
  case 'definitions': {
87
93
  result.definitions = _.mapValues(json.definitions, def =>
88
94
  jsonToSchemaObject(jsonOrBooleanToJSON(def), visited),