@goatlab/fluent 0.7.39 → 0.7.40
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/dist/BaseConnector.d.ts +112 -0
- package/dist/BaseConnector.js +343 -0
- package/dist/BaseConnector.js.map +1 -0
- package/dist/Fluent.d.ts +11 -0
- package/dist/Fluent.js +27 -0
- package/dist/Fluent.js.map +1 -0
- package/dist/FluentConnectorInterface.d.ts +17 -0
- package/dist/FluentConnectorInterface.js +3 -0
- package/dist/FluentConnectorInterface.js.map +1 -0
- package/dist/FluentEntity.d.ts +7 -0
- package/dist/FluentEntity.js +29 -0
- package/dist/FluentEntity.js.map +1 -0
- package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +123 -0
- package/dist/TypeOrmConnector/TypeOrmConnector.js +760 -0
- package/dist/TypeOrmConnector/TypeOrmConnector.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +12 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +167 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +11 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +52 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +20 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +7 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +19 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +11 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +173 -0
- package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +13 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +207 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js.map +1 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +11 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +214 -0
- package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js.map +1 -0
- package/dist/TypeOrmConnector/util/clearEmpties.d.ts +7 -0
- package/dist/TypeOrmConnector/util/clearEmpties.js +33 -0
- package/dist/TypeOrmConnector/util/clearEmpties.js.map +1 -0
- package/dist/TypeOrmConnector/util/extractConditions.d.ts +12 -0
- package/dist/TypeOrmConnector/util/extractConditions.js +89 -0
- package/dist/TypeOrmConnector/util/extractConditions.js.map +1 -0
- package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
- package/dist/TypeOrmConnector/util/extractInclude.js +26 -0
- package/dist/TypeOrmConnector/util/extractInclude.js.map +1 -0
- package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
- package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +49 -0
- package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js.map +1 -0
- package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +2 -0
- package/dist/TypeOrmConnector/util/extractOrderBy.js +24 -0
- package/dist/TypeOrmConnector/util/extractOrderBy.js.map +1 -0
- package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
- package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +27 -0
- package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js.map +1 -0
- package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +6 -0
- package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +29 -0
- package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js.map +1 -0
- package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
- package/dist/TypeOrmConnector/util/isAnyObject.js +8 -0
- package/dist/TypeOrmConnector/util/isAnyObject.js.map +1 -0
- package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
- package/dist/TypeOrmConnector/util/nestQueryResults.js +38 -0
- package/dist/TypeOrmConnector/util/nestQueryResults.js.map +1 -0
- package/dist/core/Loopback/build-schema.d.ts +148 -0
- package/dist/core/Loopback/build-schema.js +443 -0
- package/dist/core/Loopback/build-schema.js.map +1 -0
- package/dist/core/Loopback/common-types.d.ts +96 -0
- package/dist/core/Loopback/common-types.js +24 -0
- package/dist/core/Loopback/common-types.js.map +1 -0
- package/dist/core/Loopback/json-to-schema.d.ts +41 -0
- package/dist/core/Loopback/json-to-schema.js +113 -0
- package/dist/core/Loopback/json-to-schema.js.map +1 -0
- package/dist/core/Loopback/metadata.d.ts +16 -0
- package/dist/core/Loopback/metadata.js +49 -0
- package/dist/core/Loopback/metadata.js.map +1 -0
- package/dist/core/Loopback/model.d.ts +233 -0
- package/dist/core/Loopback/model.js +387 -0
- package/dist/core/Loopback/model.js.map +1 -0
- package/dist/core/Loopback/query.d.ts +394 -0
- package/dist/core/Loopback/query.js +482 -0
- package/dist/core/Loopback/query.js.map +1 -0
- package/dist/core/Loopback/relation.types.d.ts +141 -0
- package/dist/core/Loopback/relation.types.js +18 -0
- package/dist/core/Loopback/relation.types.js.map +1 -0
- package/dist/core/Loopback/type-resolver.d.ts +42 -0
- package/dist/core/Loopback/type-resolver.js +60 -0
- package/dist/core/Loopback/type-resolver.js.map +1 -0
- package/dist/core/Loopback/type.d.ts +38 -0
- package/dist/core/Loopback/type.js +7 -0
- package/dist/core/Loopback/type.js.map +1 -0
- package/dist/core/Nestjs/applyDecorators.d.ts +10 -0
- package/dist/core/Nestjs/applyDecorators.js +26 -0
- package/dist/core/Nestjs/applyDecorators.js.map +1 -0
- package/dist/core/Nestjs/types/common.d.ts +16 -0
- package/dist/core/Nestjs/types/common.js +38 -0
- package/dist/core/Nestjs/types/common.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
- package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +8 -0
- package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
- package/dist/core/Nestjs/types/decorators/api-property.decorator.js +66 -0
- package/dist/core/Nestjs/types/decorators/api-property.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
- package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +136 -0
- package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +4 -0
- package/dist/core/Nestjs/types/decorators/args-type.decorator.js +24 -0
- package/dist/core/Nestjs/types/decorators/args-type.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
- package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
- package/dist/core/Nestjs/types/decorators/create-property.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +4 -0
- package/dist/core/Nestjs/types/decorators/directive.decorator.js +39 -0
- package/dist/core/Nestjs/types/decorators/directive.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +4 -0
- package/dist/core/Nestjs/types/decorators/extensions.decorator.js +28 -0
- package/dist/core/Nestjs/types/decorators/extensions.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +48 -0
- package/dist/core/Nestjs/types/decorators/field.decorator.js +63 -0
- package/dist/core/Nestjs/types/decorators/field.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +25 -0
- package/dist/core/Nestjs/types/decorators/input-type.decorator.js +29 -0
- package/dist/core/Nestjs/types/decorators/input-type.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +33 -0
- package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +35 -0
- package/dist/core/Nestjs/types/decorators/interface-type.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
- package/dist/core/Nestjs/types/decorators/partial-type.helper.js +46 -0
- package/dist/core/Nestjs/types/decorators/partial-type.helper.js.map +1 -0
- package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
- package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +10 -0
- package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js.map +1 -0
- package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
- package/dist/core/Nestjs/types/errors/directive-parsing.error.js +10 -0
- package/dist/core/Nestjs/types/errors/directive-parsing.error.js.map +1 -0
- package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
- package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +10 -0
- package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js.map +1 -0
- package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
- package/dist/core/Nestjs/types/errors/undefined-type.error.js +11 -0
- package/dist/core/Nestjs/types/errors/undefined-type.error.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
- package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +11 -0
- package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +11 -0
- package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
- package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
- package/dist/core/Nestjs/types/interfaces/complexity.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/complexity.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
- package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +239 -0
- package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +7 -0
- package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
- package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
- package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
- package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js.map +1 -0
- package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
- package/dist/core/Nestjs/types/interfaces/type-options.interface.js +3 -0
- package/dist/core/Nestjs/types/interfaces/type-options.interface.js.map +1 -0
- package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
- package/dist/core/Nestjs/types/lazy-metadata.storage.js +68 -0
- package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
- package/dist/core/Nestjs/types/metadata/class.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/class.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
- package/dist/core/Nestjs/types/metadata/directive.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/directive.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
- package/dist/core/Nestjs/types/metadata/enum.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/enum.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
- package/dist/core/Nestjs/types/metadata/extensions.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/extensions.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
- package/dist/core/Nestjs/types/metadata/index.js +12 -0
- package/dist/core/Nestjs/types/metadata/index.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
- package/dist/core/Nestjs/types/metadata/interface.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/interface.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
- package/dist/core/Nestjs/types/metadata/object-type.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/object-type.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
- package/dist/core/Nestjs/types/metadata/param.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/param.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
- package/dist/core/Nestjs/types/metadata/property.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/property.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
- package/dist/core/Nestjs/types/metadata/resolver.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/resolver.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
- package/dist/core/Nestjs/types/metadata/union.metadata.js +3 -0
- package/dist/core/Nestjs/types/metadata/union.metadata.js.map +1 -0
- package/dist/core/Nestjs/types/object-type.decorator.d.ts +32 -0
- package/dist/core/Nestjs/types/object-type.decorator.js +33 -0
- package/dist/core/Nestjs/types/object-type.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
- package/dist/core/Nestjs/types/omit-type.js +34 -0
- package/dist/core/Nestjs/types/omit-type.js.map +1 -0
- package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
- package/dist/core/Nestjs/types/reflection.utils.js +65 -0
- package/dist/core/Nestjs/types/reflection.utils.js.map +1 -0
- package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +20 -0
- package/dist/core/Nestjs/types/set-metadata.decorator.js +33 -0
- package/dist/core/Nestjs/types/set-metadata.decorator.js.map +1 -0
- package/dist/core/Nestjs/types/type-metadata.storage.d.ts +73 -0
- package/dist/core/Nestjs/types/type-metadata.storage.js +351 -0
- package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -0
- package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
- package/dist/core/Nestjs/types/utils/enum.utils.js +31 -0
- package/dist/core/Nestjs/types/utils/enum.utils.js.map +1 -0
- package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +13 -0
- package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
- package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js.map +1 -0
- package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
- package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
- package/dist/core/Nestjs/types/utils/mapped-types.utils.js.map +1 -0
- package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
- package/dist/core/Nestjs/types/utils/model-properties-accessor.js +37 -0
- package/dist/core/Nestjs/types/utils/model-properties-accessor.js.map +1 -0
- package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
- package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
- package/dist/core/Nestjs/types/utils/type-helpers.utils.js.map +1 -0
- package/dist/core/types.d.ts +23 -0
- package/dist/core/types.js +31 -0
- package/dist/core/types.js.map +1 -0
- package/dist/decorators.d.ts +92 -0
- package/dist/decorators.js +162 -0
- package/dist/decorators.js.map +1 -0
- package/dist/generatorDatasource.d.ts +2 -0
- package/dist/generatorDatasource.js +13 -0
- package/dist/generatorDatasource.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/loadRelations.d.ts +12 -0
- package/dist/loadRelations.js +139 -0
- package/dist/loadRelations.js.map +1 -0
- package/dist/outputKeys.d.ts +2 -0
- package/dist/outputKeys.js +18 -0
- package/dist/outputKeys.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +104 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/package.json +47 -23
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonToSchemaObject = jsonToSchemaObject;
|
|
4
|
+
exports.jsonOrBooleanToJSON = jsonOrBooleanToJSON;
|
|
5
|
+
// Copyright IBM Corp. 2018,2020. All Rights Reserved.
|
|
6
|
+
// Node module: @loopback/openapi-v3
|
|
7
|
+
// This file is licensed under the MIT License.
|
|
8
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
9
|
+
const mapValues_1 = require("./mapValues");
|
|
10
|
+
const oas30_1 = require("openapi3-ts/oas30");
|
|
11
|
+
/**
|
|
12
|
+
* Converts JSON Schemas into a SchemaObject
|
|
13
|
+
* @param json - JSON Schema to convert from
|
|
14
|
+
* @param visited - A map to keep track of mapped json schemas to handle
|
|
15
|
+
* circular references
|
|
16
|
+
*/
|
|
17
|
+
function jsonToSchemaObject(json, visited = new Map()) {
|
|
18
|
+
// A flag to check if a schema object is fully converted
|
|
19
|
+
const converted = 'x-loopback-converted';
|
|
20
|
+
const schema = visited.get(json);
|
|
21
|
+
if (schema != null && (0, oas30_1.isSchemaObject)(schema) && schema[converted] === false) {
|
|
22
|
+
return { $ref: `#/components/schemas/${json.title}` };
|
|
23
|
+
}
|
|
24
|
+
if (schema != null)
|
|
25
|
+
return schema;
|
|
26
|
+
const result = {
|
|
27
|
+
[converted]: false
|
|
28
|
+
};
|
|
29
|
+
visited.set(json, result);
|
|
30
|
+
const propsToIgnore = ['additionalItems', 'defaultProperties', 'typeof'];
|
|
31
|
+
for (const property in json) {
|
|
32
|
+
if (propsToIgnore.includes(property)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
switch (property) {
|
|
36
|
+
case 'type': {
|
|
37
|
+
if (json.type === 'array' && !json.items) {
|
|
38
|
+
throw new Error('"items" property must be present if "type" is an array');
|
|
39
|
+
}
|
|
40
|
+
result.type = Array.isArray(json.type) ? json.type[0] : json.type;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'allOf': {
|
|
44
|
+
result.allOf = json.allOf?.map(item => (0, oas30_1.isSchemaObject)(item) ? jsonToSchemaObject(item, visited) : item);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case 'anyOf': {
|
|
48
|
+
result.anyOf = json.anyOf?.map(item => (0, oas30_1.isSchemaObject)(item) ? jsonToSchemaObject(item, visited) : item);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case 'oneOf': {
|
|
52
|
+
result.oneOf = json.oneOf?.map(item => (0, oas30_1.isSchemaObject)(item) ? jsonToSchemaObject(item, visited) : item);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case 'definitions': {
|
|
56
|
+
result.definitions = (0, mapValues_1.default)(json.definitions, def => jsonToSchemaObject(jsonOrBooleanToJSON(def), visited));
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case 'properties': {
|
|
60
|
+
result.properties = (0, mapValues_1.default)(json.properties, item => jsonToSchemaObject(jsonOrBooleanToJSON(item), visited));
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case 'additionalProperties': {
|
|
64
|
+
if (typeof json.additionalProperties === 'boolean') {
|
|
65
|
+
result.additionalProperties = json.additionalProperties;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
result.additionalProperties = jsonToSchemaObject(json.additionalProperties, visited);
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case 'items': {
|
|
73
|
+
const items = Array.isArray(json.items) ? json.items[0] : json.items;
|
|
74
|
+
result.items = jsonToSchemaObject(jsonOrBooleanToJSON(items), visited);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
case '$ref': {
|
|
78
|
+
result.$ref = json.$ref.replace('#/definitions', '#/components/schemas');
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'examples': {
|
|
82
|
+
if (Array.isArray(json.examples)) {
|
|
83
|
+
result.example = json.examples[0];
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
default: {
|
|
88
|
+
result[property] = json[property];
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
delete result[converted];
|
|
94
|
+
// Check if the description contains information about TypeScript type
|
|
95
|
+
const matched = result.description?.match(/^\(tsType: (.+), schemaOptions:/);
|
|
96
|
+
if (matched) {
|
|
97
|
+
result['x-typescript-type'] = matched[1];
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Helper function used to interpret boolean values as JSON Schemas.
|
|
103
|
+
* See http://json-schema.org/draft-06/json-schema-release-notes.html
|
|
104
|
+
* @param jsonOrBool - converts boolean values into their representative JSON Schemas
|
|
105
|
+
* @returns A JSON Schema document representing the input value.
|
|
106
|
+
*/
|
|
107
|
+
function jsonOrBooleanToJSON(jsonOrBool) {
|
|
108
|
+
if (typeof jsonOrBool === 'object') {
|
|
109
|
+
return jsonOrBool;
|
|
110
|
+
}
|
|
111
|
+
return jsonOrBool ? {} : { not: {} };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=json-to-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-to-schema.js","sourceRoot":"","sources":["../../../src/core/Loopback/json-to-schema.ts"],"names":[],"mappings":";;AAwCA,gDAwGC;AAQD,kDAKC;AA7JD,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;AAChE,2CAAmC;AACnC,6CAK0B;AAwB1B;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,IAAkB,EAClB,UAAuD,IAAI,GAAG,EAAE;IAEhE,wDAAwD;IACxD,MAAM,SAAS,GAAG,sBAAsB,CAAA;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC;QAC5E,OAAO,EAAE,IAAI,EAAE,wBAAwB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAA;IACvD,CAAC;IACD,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,MAAM,CAAA;IAEjC,MAAM,MAAM,GAAiB;QAC3B,CAAC,SAAS,CAAC,EAAE,KAAK;KACnB,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACzB,MAAM,aAAa,GAAG,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAA;IACxE,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,SAAQ;QACV,CAAC;QACD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CACb,wDAAwD,CACzD,CAAA;gBACH,CAAC;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,CAAA;gBACjE,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CACpC,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAChE,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CACpC,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAChE,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CACpC,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAChE,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,CAAC,WAAW,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CACrD,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CACtD,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,CAAC,UAAU,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CACpD,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CACvD,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;gBAC5B,IAAI,OAAO,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;oBACnD,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAA;gBACzD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,oBAAoB,GAAG,kBAAkB,CAC9C,IAAI,CAAC,oBAAoC,EACzC,OAAO,CACR,CAAA;gBACH,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,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,CAAA;gBACpE,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,KAAM,CAAC,EAAE,OAAO,CAAC,CAAA;gBACvE,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAK,CAAC,OAAO,CAC9B,eAAe,EACf,sBAAsB,CACvB,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACnC,CAAC;gBACD,MAAK;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAA8B,CAAC,CAAA;gBACvD,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAA;IACxB,sEAAsE;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC5E,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,UAAkC;IACpE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { InspectionOptions, MetadataAccessor, MetadataMap } from '@loopback/metadata';
|
|
2
|
+
import { ModelDefinition, ModelDefinitionSyntax, PropertyDefinition } from './model';
|
|
3
|
+
export declare const MODEL_KEY: MetadataAccessor<Partial<ModelDefinitionSyntax>, ClassDecorator>;
|
|
4
|
+
export declare const MODEL_PROPERTIES_KEY: MetadataAccessor<PropertyDefinition, PropertyDecorator>;
|
|
5
|
+
export declare const MODEL_WITH_PROPERTIES_KEY: MetadataAccessor<ModelDefinition, ClassDecorator>;
|
|
6
|
+
export type PropertyMap = MetadataMap<Partial<PropertyDefinition>>;
|
|
7
|
+
export declare class ModelMetadataHelper {
|
|
8
|
+
/**
|
|
9
|
+
* A utility function to simplify retrieving metadata from a target model and
|
|
10
|
+
* its properties.
|
|
11
|
+
* @param target - The class from which to retrieve metadata.
|
|
12
|
+
* @param options - An options object for the MetadataInspector to customize
|
|
13
|
+
* the output of the metadata retrieval functions.
|
|
14
|
+
*/
|
|
15
|
+
static getModelMetadata(target: Function, options?: InspectionOptions): ModelDefinition | {};
|
|
16
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright IBM Corp. 2017,2020. All Rights Reserved.
|
|
3
|
+
// Node module: @loopback/repository
|
|
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
|
+
exports.ModelMetadataHelper = exports.MODEL_WITH_PROPERTIES_KEY = exports.MODEL_PROPERTIES_KEY = exports.MODEL_KEY = void 0;
|
|
8
|
+
const metadata_1 = require("@loopback/metadata");
|
|
9
|
+
const model_1 = require("./model");
|
|
10
|
+
const RELATIONS_KEY = 'loopback:relations';
|
|
11
|
+
exports.MODEL_KEY = metadata_1.MetadataAccessor.create('loopback:model');
|
|
12
|
+
exports.MODEL_PROPERTIES_KEY = metadata_1.MetadataAccessor.create('loopback:model-properties');
|
|
13
|
+
exports.MODEL_WITH_PROPERTIES_KEY = metadata_1.MetadataAccessor.create('loopback:model-and-properties');
|
|
14
|
+
class ModelMetadataHelper {
|
|
15
|
+
/**
|
|
16
|
+
* A utility function to simplify retrieving metadata from a target model and
|
|
17
|
+
* its properties.
|
|
18
|
+
* @param target - The class from which to retrieve metadata.
|
|
19
|
+
* @param options - An options object for the MetadataInspector to customize
|
|
20
|
+
* the output of the metadata retrieval functions.
|
|
21
|
+
*/
|
|
22
|
+
static getModelMetadata(target, options) {
|
|
23
|
+
const classDef = metadata_1.MetadataInspector.getClassMetadata(exports.MODEL_WITH_PROPERTIES_KEY, target,
|
|
24
|
+
// https://github.com/loopbackio/loopback-next/issues/4721
|
|
25
|
+
// The `target` can be a subclass for a base model
|
|
26
|
+
{ ...options, ownMetadataOnly: true });
|
|
27
|
+
// Return the cached value, if it exists.
|
|
28
|
+
// XXX(kjdelisle): If we're going to support dynamic updates, then this
|
|
29
|
+
// will be problematic in the future, since it will never update.
|
|
30
|
+
if (classDef) {
|
|
31
|
+
return classDef;
|
|
32
|
+
}
|
|
33
|
+
const modelMeta = metadata_1.MetadataInspector.getClassMetadata(exports.MODEL_KEY, target, options);
|
|
34
|
+
if (!modelMeta) {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
// sets the metadata to a dedicated key if cached value does not exist
|
|
38
|
+
// set ModelDefinition properties if they don't already exist
|
|
39
|
+
const meta = new model_1.ModelDefinition({ ...modelMeta });
|
|
40
|
+
// set properties lost from creating instance of ModelDefinition
|
|
41
|
+
Object.assign(meta, modelMeta);
|
|
42
|
+
meta.properties = Object.assign(meta.properties, metadata_1.MetadataInspector.getAllPropertyMetadata(exports.MODEL_PROPERTIES_KEY, target.prototype, options));
|
|
43
|
+
meta.relations = Object.assign(meta.relations, metadata_1.MetadataInspector.getAllPropertyMetadata(RELATIONS_KEY, target.prototype, options));
|
|
44
|
+
metadata_1.MetadataInspector.defineMetadata(exports.MODEL_WITH_PROPERTIES_KEY.key, meta, target);
|
|
45
|
+
return meta;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.ModelMetadataHelper = ModelMetadataHelper;
|
|
49
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/core/Loopback/metadata.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,iDAK2B;AAC3B,mCAKgB;AAEhB,MAAM,aAAa,GAAG,oBAAoB,CAAA;AAE7B,QAAA,SAAS,GAAG,2BAAgB,CAAC,MAAM,CAG9C,gBAAgB,CAAC,CAAA;AAEN,QAAA,oBAAoB,GAAG,2BAAgB,CAAC,MAAM,CAGzD,2BAA2B,CAAC,CAAA;AAEjB,QAAA,yBAAyB,GAAG,2BAAgB,CAAC,MAAM,CAG9D,+BAA+B,CAAC,CAAA;AAIlC,MAAa,mBAAmB;IAC9B;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CACrB,MAAgB,EAChB,OAA2B;QAE3B,MAAM,QAAQ,GAAG,4BAAiB,CAAC,gBAAgB,CACjD,iCAAyB,EACzB,MAAM;QACN,0DAA0D;QAC1D,kDAAkD;QAClD,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CACtC,CAAA;QACD,yCAAyC;QACzC,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,MAAM,SAAS,GAAG,4BAAiB,CAAC,gBAAgB,CAClD,iBAAS,EACT,MAAM,EACN,OAAO,CACR,CAAA;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,CAAA;QACX,CAAC;QACD,sEAAsE;QAEtE,6DAA6D;QAC7D,MAAM,IAAI,GAAG,IAAI,uBAAe,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAA;QAElD,gEAAgE;QAChE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAE9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAChB,IAAI,CAAC,UAAU,EAC5B,4BAAiB,CAAC,sBAAsB,CACtC,4BAAoB,EACpB,MAAM,CAAC,SAAS,EAChB,OAAO,CACR,CACF,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CACL,IAAI,CAAC,SAAS,EACrC,4BAAiB,CAAC,sBAAsB,CACtC,aAAa,EACb,MAAM,CAAC,SAAS,EAChB,OAAO,CACR,CACF,CAAA;QAED,4BAAiB,CAAC,cAAc,CAC9B,iCAAyB,CAAC,GAAG,EAC7B,IAAI,EACJ,MAAM,CACP,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAlED,kDAkEC"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { SchemaObject as JsonSchema } from 'openapi3-ts/oas30';
|
|
2
|
+
import { AnyObject, DataObject, Options, PrototypeOf } from './common-types';
|
|
3
|
+
import { BelongsToDefinition, HasManyDefinition, HasOneDefinition, RelationMetadata } from './relation.types';
|
|
4
|
+
import { TypeResolver } from './type-resolver';
|
|
5
|
+
import { Type } from './type';
|
|
6
|
+
/**
|
|
7
|
+
* This module defines the key classes representing building blocks for Domain
|
|
8
|
+
* Driven Design.
|
|
9
|
+
* See https://en.wikipedia.org/wiki/Domain-driven_design#Building_blocks
|
|
10
|
+
*/
|
|
11
|
+
export interface JsonSchemaWithExtensions extends JsonSchema {
|
|
12
|
+
[attributes: string]: any;
|
|
13
|
+
}
|
|
14
|
+
export type PropertyType = string | Function | object | Type<any> | TypeResolver<Model>;
|
|
15
|
+
/**
|
|
16
|
+
* Property definition for a model
|
|
17
|
+
*/
|
|
18
|
+
export interface PropertyDefinition {
|
|
19
|
+
type: PropertyType;
|
|
20
|
+
id?: boolean | number;
|
|
21
|
+
/**
|
|
22
|
+
* Used to hide this property from the response body,
|
|
23
|
+
* adding this property to the hiddenProperties array
|
|
24
|
+
*/
|
|
25
|
+
hidden?: boolean;
|
|
26
|
+
json?: PropertyForm;
|
|
27
|
+
jsonSchema?: JsonSchemaWithExtensions;
|
|
28
|
+
store?: PropertyForm;
|
|
29
|
+
itemType?: PropertyType;
|
|
30
|
+
[attribute: string]: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Defining the settings for a model
|
|
34
|
+
* See https://loopback.io/doc/en/lb4/Model.html#supported-entries-of-model-definition
|
|
35
|
+
*/
|
|
36
|
+
export interface ModelSettings {
|
|
37
|
+
/**
|
|
38
|
+
* Description of the model
|
|
39
|
+
*/
|
|
40
|
+
description?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Prevent clients from setting the auto-generated ID value manually
|
|
43
|
+
*/
|
|
44
|
+
forceId?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Hides properties from response bodies
|
|
47
|
+
*/
|
|
48
|
+
hiddenProperties?: string[];
|
|
49
|
+
/**
|
|
50
|
+
* Scope enables you to set a scope that will apply to every query made by the model's repository
|
|
51
|
+
*/
|
|
52
|
+
scope?: object;
|
|
53
|
+
/**
|
|
54
|
+
* Specifies whether the model accepts only predefined properties or not
|
|
55
|
+
*/
|
|
56
|
+
strict?: boolean | 'filter';
|
|
57
|
+
[name: string]: any;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* See https://github.com/loopbackio/loopback-datasource-juggler/issues/432
|
|
61
|
+
*/
|
|
62
|
+
export interface PropertyForm {
|
|
63
|
+
in?: boolean;
|
|
64
|
+
out?: boolean;
|
|
65
|
+
name?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A key-value map describing model relations.
|
|
69
|
+
* A relation name is used as the key, a relation definition is the value.
|
|
70
|
+
*/
|
|
71
|
+
export type RelationDefinitionMap = {
|
|
72
|
+
[relationName: string]: RelationMetadata;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* DSL for building a model definition.
|
|
76
|
+
*/
|
|
77
|
+
export interface ModelDefinitionSyntax {
|
|
78
|
+
name: string;
|
|
79
|
+
properties?: {
|
|
80
|
+
[name: string]: PropertyDefinition | PropertyType;
|
|
81
|
+
};
|
|
82
|
+
settings?: ModelSettings;
|
|
83
|
+
relations?: RelationDefinitionMap;
|
|
84
|
+
jsonSchema?: JsonSchemaWithExtensions;
|
|
85
|
+
[attribute: string]: any;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Definition for a model
|
|
89
|
+
*/
|
|
90
|
+
export declare class ModelDefinition {
|
|
91
|
+
readonly name: string;
|
|
92
|
+
properties: {
|
|
93
|
+
[name: string]: PropertyDefinition;
|
|
94
|
+
};
|
|
95
|
+
settings: ModelSettings;
|
|
96
|
+
relations: RelationDefinitionMap;
|
|
97
|
+
[attribute: string]: any;
|
|
98
|
+
constructor(nameOrDef: string | ModelDefinitionSyntax);
|
|
99
|
+
/**
|
|
100
|
+
* Add a property
|
|
101
|
+
* @param name - Property definition or name (string)
|
|
102
|
+
* @param definitionOrType - Definition or property type
|
|
103
|
+
*/
|
|
104
|
+
addProperty(name: string, definitionOrType: PropertyDefinition | PropertyType): this;
|
|
105
|
+
/**
|
|
106
|
+
* Add a setting
|
|
107
|
+
* @param name - Setting name
|
|
108
|
+
* @param value - Setting value
|
|
109
|
+
*/
|
|
110
|
+
addSetting(name: string, value: any): this;
|
|
111
|
+
/**
|
|
112
|
+
* Define a new relation.
|
|
113
|
+
* @param definition - The definition of the new relation.
|
|
114
|
+
*/
|
|
115
|
+
addRelation(definition: RelationMetadata): this;
|
|
116
|
+
/**
|
|
117
|
+
* Define a new belongsTo relation.
|
|
118
|
+
* @param name - The name of the belongsTo relation.
|
|
119
|
+
* @param definition - The definition of the belongsTo relation.
|
|
120
|
+
*/
|
|
121
|
+
belongsTo(name: string, definition: Omit<BelongsToDefinition, 'name' | 'type' | 'targetsMany'>): this;
|
|
122
|
+
/**
|
|
123
|
+
* Define a new hasOne relation.
|
|
124
|
+
* @param name - The name of the hasOne relation.
|
|
125
|
+
* @param definition - The definition of the hasOne relation.
|
|
126
|
+
*/
|
|
127
|
+
hasOne(name: string, definition: Omit<HasOneDefinition, 'name' | 'type' | 'targetsMany'>): this;
|
|
128
|
+
/**
|
|
129
|
+
* Define a new hasMany relation.
|
|
130
|
+
* @param name - The name of the hasMany relation.
|
|
131
|
+
* @param definition - The definition of the hasMany relation.
|
|
132
|
+
*/
|
|
133
|
+
hasMany(name: string, definition: Omit<HasManyDefinition, 'name' | 'type' | 'targetsMany'>): this;
|
|
134
|
+
/**
|
|
135
|
+
* Get an array of names of ID properties, which are specified in
|
|
136
|
+
* the model settings or properties with `id` attribute.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* {
|
|
141
|
+
* settings: {
|
|
142
|
+
* id: ['id']
|
|
143
|
+
* }
|
|
144
|
+
* properties: {
|
|
145
|
+
* id: {
|
|
146
|
+
* type: 'string',
|
|
147
|
+
* id: true
|
|
148
|
+
* }
|
|
149
|
+
* }
|
|
150
|
+
* }
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
idProperties(): string[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Base class for models
|
|
157
|
+
*/
|
|
158
|
+
export declare class Model {
|
|
159
|
+
static get modelName(): string;
|
|
160
|
+
static definition: ModelDefinition;
|
|
161
|
+
/**
|
|
162
|
+
* Serialize into a plain JSON object
|
|
163
|
+
*/
|
|
164
|
+
toJSON(): Object;
|
|
165
|
+
/**
|
|
166
|
+
* Convert to a plain object as DTO
|
|
167
|
+
*
|
|
168
|
+
* If `ignoreUnknownProperty` is set to false, convert all properties in the
|
|
169
|
+
* model instance, otherwise only convert the ones defined in the model
|
|
170
|
+
* definitions.
|
|
171
|
+
*
|
|
172
|
+
* See function `asObject` for each property's conversion rules.
|
|
173
|
+
*/
|
|
174
|
+
toObject(options?: Options): Object;
|
|
175
|
+
constructor(data?: DataObject<Model>);
|
|
176
|
+
}
|
|
177
|
+
export interface Persistable {
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Base class for value objects - An object that contains attributes but has no
|
|
181
|
+
* conceptual identity. They should be treated as immutable.
|
|
182
|
+
*/
|
|
183
|
+
export declare abstract class ValueObject extends Model implements Persistable {
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Base class for entities which have unique ids
|
|
187
|
+
*/
|
|
188
|
+
export declare class Entity extends Model implements Persistable {
|
|
189
|
+
/**
|
|
190
|
+
* Get the names of identity properties (primary keys).
|
|
191
|
+
*/
|
|
192
|
+
static getIdProperties(): string[];
|
|
193
|
+
/**
|
|
194
|
+
* Get the identity value for a given entity instance or entity data object.
|
|
195
|
+
*
|
|
196
|
+
* @param entityOrData - The data object for which to determine the identity
|
|
197
|
+
* value.
|
|
198
|
+
*/
|
|
199
|
+
static getIdOf(entityOrData: AnyObject): any;
|
|
200
|
+
/**
|
|
201
|
+
* Get the identity value. If the identity is a composite key, returns
|
|
202
|
+
* an object.
|
|
203
|
+
*/
|
|
204
|
+
getId(): any;
|
|
205
|
+
/**
|
|
206
|
+
* Get the identity as an object, such as `{id: 1}` or
|
|
207
|
+
* `{schoolId: 1, studentId: 2}`
|
|
208
|
+
*/
|
|
209
|
+
getIdObject(): Object;
|
|
210
|
+
/**
|
|
211
|
+
* Build the where object for the given id
|
|
212
|
+
* @param id - The id value
|
|
213
|
+
*/
|
|
214
|
+
static buildWhereForId(id: any): any;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Domain events
|
|
218
|
+
*/
|
|
219
|
+
export declare class Event {
|
|
220
|
+
source: any;
|
|
221
|
+
type: string;
|
|
222
|
+
}
|
|
223
|
+
export type EntityData = DataObject<Entity>;
|
|
224
|
+
export type EntityResolver<T extends Entity> = TypeResolver<T, typeof Entity>;
|
|
225
|
+
/**
|
|
226
|
+
* Check model data for navigational properties linking to related models.
|
|
227
|
+
* Throw a descriptive error if any such property is found.
|
|
228
|
+
*
|
|
229
|
+
* @param modelClass Model constructor, e.g. `Product`.
|
|
230
|
+
* @param entityData Model instance or a plain-data object,
|
|
231
|
+
* e.g. `{name: 'pen'}`.
|
|
232
|
+
*/
|
|
233
|
+
export declare function rejectNavigationalPropertiesInData<M extends typeof Entity>(modelClass: M, data: DataObject<PrototypeOf<M>>): void;
|