@loopback/repository-json-schema 2.2.1 → 2.4.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,52 @@
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
+ ## [2.4.2](https://github.com/strongloop/loopback-next/compare/@loopback/repository-json-schema@2.4.1...@loopback/repository-json-schema@2.4.2) (2020-05-20)
7
+
8
+ **Note:** Version bump only for package @loopback/repository-json-schema
9
+
10
+
11
+
12
+
13
+
14
+ ## [2.4.1](https://github.com/strongloop/loopback-next/compare/@loopback/repository-json-schema@2.4.0...@loopback/repository-json-schema@2.4.1) (2020-05-19)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **repository-json-schema:** honor excluded "include" property ([3888f60](https://github.com/strongloop/loopback-next/commit/3888f60357be7006fc3aff250d291f53c0ca355e))
20
+
21
+
22
+
23
+
24
+
25
+ # [2.4.0](https://github.com/strongloop/loopback-next/compare/@loopback/repository-json-schema@2.3.0...@loopback/repository-json-schema@2.4.0) (2020-05-07)
26
+
27
+
28
+ ### Features
29
+
30
+ * **repository-json-schema:** improve schema building for null/undefined types ([845914b](https://github.com/strongloop/loopback-next/commit/845914be5a3660edf4833bcccd7e7aa2f2cfb3f2))
31
+
32
+
33
+
34
+
35
+
36
+ # [2.3.0](https://github.com/strongloop/loopback-next/compare/@loopback/repository-json-schema@2.2.1...@loopback/repository-json-schema@2.3.0) (2020-04-29)
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * **repository-json-schema:** avoid title inheritance ([723bc34](https://github.com/strongloop/loopback-next/commit/723bc3401753e4ba8f4e421e468c0bfca66582c8))
42
+
43
+
44
+ ### Features
45
+
46
+ * populate x-typescript-type for openapi schema ([02a2633](https://github.com/strongloop/loopback-next/commit/02a26339e8a49b92148aa9c05179458a4bc85a70))
47
+
48
+
49
+
50
+
51
+
6
52
  ## [2.2.1](https://github.com/strongloop/loopback-next/compare/@loopback/repository-json-schema@2.2.0...@loopback/repository-json-schema@2.2.1) (2020-04-23)
7
53
 
8
54
  **Note:** Version bump only for package @loopback/repository-json-schema
@@ -4,6 +4,7 @@
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.modelToJsonSchema = exports.getNavigationalPropertyForRelation = exports.metaToJsonProperty = exports.isArrayType = exports.stringTypeToWrapper = exports.getJsonSchemaRef = exports.getJsonSchema = exports.buildModelCacheKey = void 0;
7
8
  const tslib_1 = require("tslib");
8
9
  const context_1 = require("@loopback/context");
9
10
  const repository_1 = require("@loopback/repository");
@@ -132,6 +133,10 @@ function stringTypeToWrapper(type) {
132
133
  wrapper = Buffer;
133
134
  break;
134
135
  }
136
+ case 'null': {
137
+ wrapper = repository_1.Null;
138
+ break;
139
+ }
135
140
  default: {
136
141
  throw new Error('Unsupported type: ' + type);
137
142
  }
@@ -256,17 +261,35 @@ function isEmptyJson(obj) {
256
261
  return !(obj && Object.keys(obj).length);
257
262
  }
258
263
  /**
259
- * Checks the options and generates a descriptive suffix
260
- * @param options json schema options
264
+ * Checks the options and generates a descriptive suffix that contains the
265
+ * TypeScript type and options
266
+ * @param typeName - TypeScript's type name
267
+ * @param options - json schema options
261
268
  */
262
- function getDescriptionSuffix(rawOptions = {}) {
269
+ function getDescriptionSuffix(typeName, rawOptions = {}) {
263
270
  const options = { ...rawOptions };
264
271
  delete options.visited;
265
272
  if (options.optional && !options.optional.length) {
266
273
  delete options.optional;
267
274
  }
275
+ const type = typeName;
276
+ let tsType = type;
277
+ if (options.includeRelations) {
278
+ tsType = `${type}WithRelations`;
279
+ }
280
+ if (options.partial) {
281
+ tsType = `Partial<${tsType}>`;
282
+ }
283
+ if (options.exclude) {
284
+ const excludedProps = options.exclude.map(p => `'${p}'`);
285
+ tsType = `Omit<${tsType}, ${excludedProps.join(' | ')}>`;
286
+ }
287
+ if (options.optional) {
288
+ const optionalProps = options.optional.map(p => `'${p}'`);
289
+ tsType = `@loopback/repository-json-schema#Optional<${tsType}, ${optionalProps.join(' | ')}>`;
290
+ }
268
291
  return !isEmptyJson(options)
269
- ? `(Schema options: ${stringifyOptions(options)})`
292
+ ? `(tsType: ${tsType}, schemaOptions: ${stringifyOptions(options)})`
270
293
  : '';
271
294
  }
272
295
  // NOTE(shimks) no metadata for: union, optional, nested array, any, enum,
@@ -288,18 +311,19 @@ function modelToJsonSchema(ctor, jsonSchemaOptions = {}) {
288
311
  }
289
312
  debug('Creating schema for model %s', ctor.name);
290
313
  debug('JSON schema options: %o', options);
291
- const meta = repository_1.ModelMetadataHelper.getModelMetadata(ctor);
314
+ const modelDef = repository_1.ModelMetadataHelper.getModelMetadata(ctor);
292
315
  // returns an empty object if metadata is an empty object
293
- if (!(meta instanceof repository_1.ModelDefinition)) {
316
+ if (modelDef == null || Object.keys(modelDef).length === 0) {
294
317
  return {};
295
318
  }
319
+ const meta = modelDef;
296
320
  debug('Model settings', meta.settings);
297
321
  const title = buildSchemaTitle(ctor, meta, options);
298
322
  if (options.visited[title])
299
323
  return options.visited[title];
300
324
  const result = { title };
301
325
  options.visited[title] = result;
302
- const descriptionSuffix = getDescriptionSuffix(options);
326
+ const descriptionSuffix = getDescriptionSuffix(ctor.name, options);
303
327
  if (meta.description) {
304
328
  const formatSuffix = descriptionSuffix ? ` ${descriptionSuffix}` : '';
305
329
  result.description = meta.description + formatSuffix;
@@ -309,10 +333,12 @@ function modelToJsonSchema(ctor, jsonSchemaOptions = {}) {
309
333
  }
310
334
  for (const p in meta.properties) {
311
335
  if (options.exclude && options.exclude.includes(p)) {
336
+ debug('Property % is excluded by %s', p, options.exclude);
312
337
  continue;
313
338
  }
314
- if (!meta.properties[p].type) {
315
- continue;
339
+ if (meta.properties[p].type == null) {
340
+ // Circular import of model classes can lead to this situation
341
+ throw new Error(`Property ${ctor.name}.${p} does not have "type" in its definition`);
316
342
  }
317
343
  result.properties = (_c = result.properties) !== null && _c !== void 0 ? _c : {};
318
344
  result.properties[p] = result.properties[p] || {};
@@ -342,6 +368,10 @@ function modelToJsonSchema(ctor, jsonSchemaOptions = {}) {
342
368
  // Do not cascade `partial` to nested properties
343
369
  delete propOptions.partial;
344
370
  }
371
+ // `title` is the unique identity of a schema,
372
+ // it should be removed from the `options`
373
+ // when generating the relation or property schemas
374
+ delete propOptions.title;
345
375
  const propSchema = getJsonSchema(referenceType, propOptions);
346
376
  // JSONSchema6Definition allows both boolean and JSONSchema6 types
347
377
  if (typeof result.properties[p] !== 'boolean') {
@@ -365,13 +395,11 @@ function modelToJsonSchema(ctor, jsonSchemaOptions = {}) {
365
395
  result.properties = (_f = result.properties) !== null && _f !== void 0 ? _f : {};
366
396
  const relMeta = meta.relations[r];
367
397
  const targetType = repository_1.resolveType(relMeta.target);
398
+ // `title` is the unique identity of a schema,
399
+ // it should be removed from the `options`
400
+ // when generating the relation or property schemas
368
401
  const targetOptions = { ...options };
369
- if (targetOptions.title) {
370
- // `title` is the unique identity of a schema,
371
- // it should be removed from the `options`
372
- // when generating the relation schemas
373
- delete targetOptions.title;
374
- }
402
+ delete targetOptions.title;
375
403
  const targetSchema = getJsonSchema(targetType, targetOptions);
376
404
  const targetRef = { $ref: `#/definitions/${targetSchema.title}` };
377
405
  const propDef = getNavigationalPropertyForRelation(relMeta, targetRef);
@@ -1 +1 @@
1
- {"version":3,"file":"build-schema.js","sourceRoot":"","sources":["../src/build-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-schema.js","sourceRoot":"","sources":["../src/build-schema.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getFieldsJsonSchemaFor = exports.getWhereJsonSchemaFor = exports.getFilterJsonSchemaFor = exports.getScopeFilterJsonSchemaFor = void 0;
7
8
  const tslib_1 = require("tslib");
8
9
  const repository_1 = require("@loopback/repository");
9
10
  /**
@@ -16,11 +17,14 @@ const repository_1 = require("@loopback/repository");
16
17
  * @param modelCtor - The model constructor to build the filter schema for.
17
18
  */
18
19
  function getScopeFilterJsonSchemaFor(modelCtor, options = {}) {
19
- let EmptyModel = class EmptyModel extends repository_1.Model {
20
- };
21
- EmptyModel = tslib_1.__decorate([
22
- repository_1.model({ settings: { strict: false } })
23
- ], EmptyModel);
20
+ let EmptyModel = /** @class */ (() => {
21
+ let EmptyModel = class EmptyModel extends repository_1.Model {
22
+ };
23
+ EmptyModel = tslib_1.__decorate([
24
+ repository_1.model({ settings: { strict: false } })
25
+ ], EmptyModel);
26
+ return EmptyModel;
27
+ })();
24
28
  const schema = {
25
29
  ...getFilterJsonSchemaFor(EmptyModel, { setTitle: false }),
26
30
  ...(options.setTitle !== false && {
@@ -89,7 +93,7 @@ function getFilterJsonSchemaFor(modelCtor, options = {}) {
89
93
  };
90
94
  const modelRelations = repository_1.getModelRelations(modelCtor);
91
95
  const hasRelations = Object.keys(modelRelations).length > 0;
92
- if (hasRelations) {
96
+ if (hasRelations && !excluded.includes('include')) {
93
97
  schema.properties.include = {
94
98
  ...(options.setTitle !== false && {
95
99
  title: `${modelCtor.modelName}.IncludeFilter`,
@@ -1 +1 @@
1
- {"version":3,"file":"filter-json-schema.js","sourceRoot":"","sources":["../src/filter-json-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-json-schema.js","sourceRoot":"","sources":["../src/filter-json-schema.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -12,3 +12,25 @@ export { JsonSchema, Model } from '@loopback/repository';
12
12
  export * from './build-schema';
13
13
  export * from './filter-json-schema';
14
14
  export * from './keys';
15
+ /**
16
+ * Optional: From `T` make a set of properties by key `K` become optional
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * type Props = {
21
+ * name: string;
22
+ * age: number;
23
+ * visible: boolean;
24
+ * };
25
+ *
26
+ * // Expect: { name?: string; age?: number; visible?: boolean; }
27
+ * type Props = Optional<Props>;
28
+ *
29
+ * // Expect: { name: string; age?: number; visible?: boolean; }
30
+ * type Props = Optional<Props, 'age' | 'visible'>;
31
+ * ```
32
+ *
33
+ * @typeParam T - Type of the object
34
+ * @typeParam K - Keys of the object
35
+ */
36
+ export declare type Optional<T extends object, K extends keyof T = keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
package/dist/index.js CHANGED
@@ -16,7 +16,7 @@ const tslib_1 = require("tslib");
16
16
  * @packageDocumentation
17
17
  */
18
18
  var repository_1 = require("@loopback/repository");
19
- exports.Model = repository_1.Model;
19
+ Object.defineProperty(exports, "Model", { enumerable: true, get: function () { return repository_1.Model; } });
20
20
  tslib_1.__exportStar(require("./build-schema"), exports);
21
21
  tslib_1.__exportStar(require("./filter-json-schema"), exports);
22
22
  tslib_1.__exportStar(require("./keys"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,gDAAgD;AAChD,+CAA+C;AAC/C,gEAAgE;;;AAEhE;;;;;;;;;GASG;AAEH,mDAAuD;AAAnC,6BAAA,KAAK,CAAA;AACzB,yDAA+B;AAC/B,+DAAqC;AACrC,iDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,gDAAgD;AAChD,+CAA+C;AAC/C,gEAAgE;;;AAEhE;;;;;;;;;GASG;AAEH,mDAAuD;AAAnC,mGAAA,KAAK,OAAA;AACzB,yDAA+B;AAC/B,+DAAqC;AACrC,iDAAuB"}
package/dist/keys.js CHANGED
@@ -4,6 +4,7 @@
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.JSON_SCHEMA_KEY = void 0;
7
8
  const metadata_1 = require("@loopback/metadata");
8
9
  /**
9
10
  * Metadata key used to set or retrieve repository JSON Schema
package/dist/keys.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,gDAAgD;AAChD,+CAA+C;AAC/C,gEAAgE;;AAEhE,iDAAoD;AAGpD;;GAEG;AACU,QAAA,eAAe,GAAG,2BAAgB,CAAC,MAAM,CAGpD,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../src/keys.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,gDAAgD;AAChD,+CAA+C;AAC/C,gEAAgE;;;AAEhE,iDAAoD;AAGpD;;GAEG;AACU,QAAA,eAAe,GAAG,2BAAgB,CAAC,MAAM,CAGpD,sBAAsB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "name": "@loopback/repository-json-schema",
3
- "version": "2.2.1",
3
+ "version": "2.4.2",
4
4
  "description": "Converts TS classes into JSON Schemas using TypeScript's reflection API",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
5
7
  "engines": {
6
8
  "node": ">=10"
7
9
  },
@@ -23,25 +25,23 @@
23
25
  "access": "public"
24
26
  },
25
27
  "dependencies": {
26
- "@loopback/context": "^3.5.1",
27
- "@loopback/metadata": "^2.1.1",
28
- "@loopback/repository": "^2.2.1",
28
+ "@loopback/context": "^3.8.1",
29
+ "@loopback/metadata": "^2.1.5",
30
+ "@loopback/repository": "^2.5.1",
29
31
  "@types/json-schema": "^7.0.4",
30
32
  "debug": "^4.1.1",
31
- "tslib": "^1.11.1"
33
+ "tslib": "^2.0.0"
32
34
  },
33
35
  "devDependencies": {
34
- "@loopback/build": "^5.2.0",
35
- "@loopback/eslint-config": "^6.0.4",
36
- "@loopback/testlab": "^3.1.1",
36
+ "@loopback/build": "^5.4.1",
37
+ "@loopback/eslint-config": "^7.0.1",
38
+ "@loopback/testlab": "^3.1.5",
37
39
  "@types/debug": "^4.1.5",
38
- "@types/node": "^10.17.21",
40
+ "@types/node": "^10.17.24",
39
41
  "ajv": "^6.12.2"
40
42
  },
41
43
  "files": [
42
44
  "README.md",
43
- "index.js",
44
- "index.d.ts",
45
45
  "dist",
46
46
  "src",
47
47
  "!*/__tests__"
@@ -51,5 +51,5 @@
51
51
  "url": "https://github.com/strongloop/loopback-next.git",
52
52
  "directory": "packages/repository-json-schema"
53
53
  },
54
- "gitHead": "11f282df0bbdf25c505a2131e6d82b85005a22a2"
54
+ "gitHead": "62aea854bf85c5a5995b59e6908fe5409f7eea96"
55
55
  }
@@ -8,13 +8,14 @@ import {
8
8
  isBuiltinType,
9
9
  ModelDefinition,
10
10
  ModelMetadataHelper,
11
+ Null,
11
12
  PropertyDefinition,
12
13
  RelationMetadata,
13
14
  resolveType,
14
15
  } from '@loopback/repository';
15
16
  import debugFactory from 'debug';
16
- import {JsonSchema} from './index';
17
17
  import {inspect} from 'util';
18
+ import {JsonSchema} from './index';
18
19
  import {JSON_SCHEMA_KEY} from './keys';
19
20
  const debug = debugFactory('loopback:repository-json-schema:build-schema');
20
21
 
@@ -226,6 +227,10 @@ export function stringTypeToWrapper(type: string | Function): Function {
226
227
  wrapper = Buffer;
227
228
  break;
228
229
  }
230
+ case 'null': {
231
+ wrapper = Null;
232
+ break;
233
+ }
229
234
  default: {
230
235
  throw new Error('Unsupported type: ' + type);
231
236
  }
@@ -361,10 +366,13 @@ function isEmptyJson(obj: object) {
361
366
  }
362
367
 
363
368
  /**
364
- * Checks the options and generates a descriptive suffix
365
- * @param options json schema options
369
+ * Checks the options and generates a descriptive suffix that contains the
370
+ * TypeScript type and options
371
+ * @param typeName - TypeScript's type name
372
+ * @param options - json schema options
366
373
  */
367
374
  function getDescriptionSuffix<T extends object>(
375
+ typeName: string,
368
376
  rawOptions: JsonSchemaOptions<T> = {},
369
377
  ) {
370
378
  const options = {...rawOptions};
@@ -374,8 +382,27 @@ function getDescriptionSuffix<T extends object>(
374
382
  delete options.optional;
375
383
  }
376
384
 
385
+ const type = typeName;
386
+ let tsType = type;
387
+ if (options.includeRelations) {
388
+ tsType = `${type}WithRelations`;
389
+ }
390
+ if (options.partial) {
391
+ tsType = `Partial<${tsType}>`;
392
+ }
393
+ if (options.exclude) {
394
+ const excludedProps = options.exclude.map(p => `'${p}'`);
395
+ tsType = `Omit<${tsType}, ${excludedProps.join(' | ')}>`;
396
+ }
397
+ if (options.optional) {
398
+ const optionalProps = options.optional.map(p => `'${p}'`);
399
+ tsType = `@loopback/repository-json-schema#Optional<${tsType}, ${optionalProps.join(
400
+ ' | ',
401
+ )}>`;
402
+ }
403
+
377
404
  return !isEmptyJson(options)
378
- ? `(Schema options: ${stringifyOptions(options)})`
405
+ ? `(tsType: ${tsType}, schemaOptions: ${stringifyOptions(options)})`
379
406
  : '';
380
407
  }
381
408
 
@@ -404,23 +431,24 @@ export function modelToJsonSchema<T extends object>(
404
431
  debug('Creating schema for model %s', ctor.name);
405
432
  debug('JSON schema options: %o', options);
406
433
 
407
- const meta: ModelDefinition | {} = ModelMetadataHelper.getModelMetadata(ctor);
434
+ const modelDef = ModelMetadataHelper.getModelMetadata(ctor);
408
435
 
409
436
  // returns an empty object if metadata is an empty object
410
- if (!(meta instanceof ModelDefinition)) {
437
+ if (modelDef == null || Object.keys(modelDef).length === 0) {
411
438
  return {};
412
439
  }
413
440
 
441
+ const meta = modelDef as ModelDefinition;
442
+
414
443
  debug('Model settings', meta.settings);
415
444
 
416
445
  const title = buildSchemaTitle(ctor, meta, options);
417
-
418
446
  if (options.visited[title]) return options.visited[title];
419
447
 
420
448
  const result: JsonSchema = {title};
421
449
  options.visited[title] = result;
422
450
 
423
- const descriptionSuffix = getDescriptionSuffix(options);
451
+ const descriptionSuffix = getDescriptionSuffix(ctor.name, options);
424
452
 
425
453
  if (meta.description) {
426
454
  const formatSuffix = descriptionSuffix ? ` ${descriptionSuffix}` : '';
@@ -432,11 +460,15 @@ export function modelToJsonSchema<T extends object>(
432
460
 
433
461
  for (const p in meta.properties) {
434
462
  if (options.exclude && options.exclude.includes(p as keyof T)) {
463
+ debug('Property % is excluded by %s', p, options.exclude);
435
464
  continue;
436
465
  }
437
466
 
438
- if (!meta.properties[p].type) {
439
- continue;
467
+ if (meta.properties[p].type == null) {
468
+ // Circular import of model classes can lead to this situation
469
+ throw new Error(
470
+ `Property ${ctor.name}.${p} does not have "type" in its definition`,
471
+ );
440
472
  }
441
473
 
442
474
  result.properties = result.properties ?? {};
@@ -474,6 +506,10 @@ export function modelToJsonSchema<T extends object>(
474
506
  // Do not cascade `partial` to nested properties
475
507
  delete propOptions.partial;
476
508
  }
509
+ // `title` is the unique identity of a schema,
510
+ // it should be removed from the `options`
511
+ // when generating the relation or property schemas
512
+ delete propOptions.title;
477
513
 
478
514
  const propSchema = getJsonSchema(referenceType, propOptions);
479
515
 
@@ -502,13 +538,11 @@ export function modelToJsonSchema<T extends object>(
502
538
  const relMeta = meta.relations[r];
503
539
  const targetType = resolveType(relMeta.target);
504
540
 
541
+ // `title` is the unique identity of a schema,
542
+ // it should be removed from the `options`
543
+ // when generating the relation or property schemas
505
544
  const targetOptions = {...options};
506
- if (targetOptions.title) {
507
- // `title` is the unique identity of a schema,
508
- // it should be removed from the `options`
509
- // when generating the relation schemas
510
- delete targetOptions.title;
511
- }
545
+ delete targetOptions.title;
512
546
 
513
547
  const targetSchema = getJsonSchema(targetType, targetOptions);
514
548
  const targetRef = {$ref: `#/definitions/${targetSchema.title}`};
@@ -115,7 +115,7 @@ export function getFilterJsonSchemaFor(
115
115
  const modelRelations = getModelRelations(modelCtor);
116
116
  const hasRelations = Object.keys(modelRelations).length > 0;
117
117
 
118
- if (hasRelations) {
118
+ if (hasRelations && !excluded.includes('include')) {
119
119
  schema.properties!.include = {
120
120
  ...(options.setTitle !== false && {
121
121
  title: `${modelCtor.modelName}.IncludeFilter`,
package/src/index.ts CHANGED
@@ -18,3 +18,30 @@ export {JsonSchema, Model} from '@loopback/repository';
18
18
  export * from './build-schema';
19
19
  export * from './filter-json-schema';
20
20
  export * from './keys';
21
+
22
+ /**
23
+ * Optional: From `T` make a set of properties by key `K` become optional
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * type Props = {
28
+ * name: string;
29
+ * age: number;
30
+ * visible: boolean;
31
+ * };
32
+ *
33
+ * // Expect: { name?: string; age?: number; visible?: boolean; }
34
+ * type Props = Optional<Props>;
35
+ *
36
+ * // Expect: { name: string; age?: number; visible?: boolean; }
37
+ * type Props = Optional<Props, 'age' | 'visible'>;
38
+ * ```
39
+ *
40
+ * @typeParam T - Type of the object
41
+ * @typeParam K - Keys of the object
42
+ */
43
+ export type Optional<T extends object, K extends keyof T = keyof T> = Omit<
44
+ T,
45
+ K
46
+ > &
47
+ Partial<Pick<T, K>>;
package/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- // Copyright IBM Corp. 2018,2020. All Rights Reserved.
2
- // Node module: @loopback/repository-json-schema
3
- // This file is licensed under the MIT License.
4
- // License text available at https://opensource.org/licenses/MIT
5
-
6
- export * from './dist';
package/index.js DELETED
@@ -1,6 +0,0 @@
1
- // Copyright IBM Corp. 2018,2020. All Rights Reserved.
2
- // Node module: @loopback/repository-json-schema
3
- // This file is licensed under the MIT License.
4
- // License text available at https://opensource.org/licenses/MIT
5
-
6
- module.exports = require('./dist');