@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,12 @@
|
|
|
1
|
+
export interface KeysMetadata {
|
|
2
|
+
keyName: string;
|
|
3
|
+
nestableKey: string;
|
|
4
|
+
relation?: string;
|
|
5
|
+
parentRelation?: string;
|
|
6
|
+
level?: number;
|
|
7
|
+
cardinality?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface KeysMetadataResponse {
|
|
10
|
+
[key: string]: KeysMetadata;
|
|
11
|
+
}
|
|
12
|
+
export declare const extractMetadataFromKeys: (keys: string[]) => KeysMetadataResponse;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractMetadataFromKeys = void 0;
|
|
4
|
+
const extractMetadataFromKeys = (keys) => {
|
|
5
|
+
// Example of a key
|
|
6
|
+
// Level 0:
|
|
7
|
+
// users__id
|
|
8
|
+
// Level 2:
|
|
9
|
+
// users___XXOneToManyXX___cars___XXManyToOneXX___user__id
|
|
10
|
+
const keyToNestedKeyMap = {};
|
|
11
|
+
for (const key of keys) {
|
|
12
|
+
// All keys have an _ before the actual attribute name
|
|
13
|
+
const preAttributeIndex = key.lastIndexOf('_');
|
|
14
|
+
const fullTableAlias = key.slice(0, preAttributeIndex).replace('_', '');
|
|
15
|
+
const keyName = key.slice(preAttributeIndex + 1, key.length);
|
|
16
|
+
const flattened = fullTableAlias
|
|
17
|
+
.replace(/___XXManyToOneXX/g, '')
|
|
18
|
+
.replace(/___XXOneToManyXX/g, '')
|
|
19
|
+
.replace(/___/g, '.')
|
|
20
|
+
.replace('__', '.')
|
|
21
|
+
.replace('.XXOneToManyXX', '');
|
|
22
|
+
const possibleCurrentTableKey = key.lastIndexOf('___');
|
|
23
|
+
const relation = possibleCurrentTableKey <= 0
|
|
24
|
+
? undefined
|
|
25
|
+
: key.slice(possibleCurrentTableKey + 3, preAttributeIndex);
|
|
26
|
+
const possibleParentTableKeyInit = key.lastIndexOf('___XX');
|
|
27
|
+
const possibleParentTableKeyEnd = key.lastIndexOf('XX__');
|
|
28
|
+
const cardinality = key.slice(possibleParentTableKeyInit, possibleParentTableKeyEnd) ||
|
|
29
|
+
undefined;
|
|
30
|
+
const parentRelationKey = key
|
|
31
|
+
.substring(0, possibleParentTableKeyInit)
|
|
32
|
+
.lastIndexOf('___');
|
|
33
|
+
const parentRelation = key
|
|
34
|
+
.substring(parentRelationKey, possibleParentTableKeyInit)
|
|
35
|
+
.replace(/___/g, '') || undefined;
|
|
36
|
+
var level = (key.match(/XX___/g) || []).length;
|
|
37
|
+
keyToNestedKeyMap[key] = {
|
|
38
|
+
keyName,
|
|
39
|
+
nestableKey: `${flattened}.${keyName}`,
|
|
40
|
+
relation,
|
|
41
|
+
parentRelation,
|
|
42
|
+
level,
|
|
43
|
+
cardinality: cardinality && cardinality.replace(/XX/g, '').replace(/___/g, '')
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return keyToNestedKeyMap;
|
|
47
|
+
};
|
|
48
|
+
exports.extractMetadataFromKeys = extractMetadataFromKeys;
|
|
49
|
+
//# sourceMappingURL=extractMetadataFromKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractMetadataFromKeys.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/extractMetadataFromKeys.ts"],"names":[],"mappings":";;;AAcO,MAAM,uBAAuB,GAAG,CAAC,IAAc,EAAwB,EAAE;IAC9E,mBAAmB;IACnB,WAAW;IACX,eAAe;IACf,WAAW;IACX,6DAA6D;IAC7D,MAAM,iBAAiB,GAAG,EAAE,CAAA;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,sDAAsD;QACtD,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAE5D,MAAM,SAAS,GAAG,cAAc;aAC7B,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;aAChC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;aAChC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;QAEhC,MAAM,uBAAuB,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAEtD,MAAM,QAAQ,GACZ,uBAAuB,IAAI,CAAC;YAC1B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAE/D,MAAM,0BAA0B,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAC3D,MAAM,yBAAyB,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEzD,MAAM,WAAW,GACf,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,yBAAyB,CAAC;YAChE,SAAS,CAAA;QAEX,MAAM,iBAAiB,GAAG,GAAG;aAC1B,SAAS,CAAC,CAAC,EAAE,0BAA0B,CAAC;aACxC,WAAW,CAAC,KAAK,CAAC,CAAA;QAErB,MAAM,cAAc,GAClB,GAAG;aACA,SAAS,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;aACxD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAA;QAErC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAA;QAE9C,iBAAiB,CAAC,GAAG,CAAC,GAAG;YACvB,OAAO;YACP,WAAW,EAAE,GAAG,SAAS,IAAI,OAAO,EAAE;YACtC,QAAQ;YACR,cAAc;YACd,KAAK;YACL,WAAW,EACT,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACpE,CAAA;IACH,CAAC;IAED,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA;AA1DY,QAAA,uBAAuB,2BA0DnC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractOrderBy = void 0;
|
|
4
|
+
const js_utils_1 = require("@goatlab/js-utils");
|
|
5
|
+
const extractOrderBy = (orderBy) => {
|
|
6
|
+
if (!orderBy) {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
// Handle both array and object formats
|
|
10
|
+
const orderByArray = Array.isArray(orderBy) ? orderBy : [orderBy];
|
|
11
|
+
if (orderByArray.length === 0) {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
const order = {};
|
|
15
|
+
for (const orderElement of orderByArray) {
|
|
16
|
+
const flattenOrder = js_utils_1.Objects.flatten(orderElement);
|
|
17
|
+
for (const k of Object.keys(flattenOrder)) {
|
|
18
|
+
order[k] = flattenOrder[k];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return js_utils_1.Objects.nest(order);
|
|
22
|
+
};
|
|
23
|
+
exports.extractOrderBy = extractOrderBy;
|
|
24
|
+
//# sourceMappingURL=extractOrderBy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractOrderBy.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/extractOrderBy.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAGpC,MAAM,cAAc,GAAG,CAAI,OAAmC,EAAE,EAAE;IACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAA;IACX,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAEjE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAA;IAEhB,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,kBAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAElD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,kBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC,CAAA;AAvBY,QAAA,cAAc,kBAuB1B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
export interface GeneratedModelRelations {
|
|
3
|
+
relations: {
|
|
4
|
+
[key: string]: {
|
|
5
|
+
isOneToMany: boolean;
|
|
6
|
+
isManyToOne: boolean;
|
|
7
|
+
isManyToMany: boolean;
|
|
8
|
+
inverseSidePropertyRelationPath?: string;
|
|
9
|
+
inverseSidePropertyPath?: string;
|
|
10
|
+
propertyName: string;
|
|
11
|
+
entityName: string;
|
|
12
|
+
tableName: string;
|
|
13
|
+
targetClass: string;
|
|
14
|
+
joinColumns: any[];
|
|
15
|
+
inverseJoinColumns: any[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export declare const getRelationsFromModelGenerator: (typeOrmRepo: Repository<any>) => GeneratedModelRelations;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRelationsFromModelGenerator = void 0;
|
|
4
|
+
const getRelationsFromModelGenerator = (typeOrmRepo) => {
|
|
5
|
+
const relations = {};
|
|
6
|
+
for (const relation of typeOrmRepo.metadata.relations) {
|
|
7
|
+
const pPath = relation.inverseRelation?.joinColumns[0];
|
|
8
|
+
relations[relation.propertyName] = {
|
|
9
|
+
isOneToMany: relation.isOneToMany,
|
|
10
|
+
isManyToOne: relation.isManyToOne,
|
|
11
|
+
isManyToMany: relation.isManyToMany,
|
|
12
|
+
inverseSidePropertyRelationPath: relation.inverseSidePropertyPath,
|
|
13
|
+
inverseSidePropertyPath: pPath?.propertyPath,
|
|
14
|
+
propertyName: relation.propertyName,
|
|
15
|
+
entityName: relation.inverseEntityMetadata.name,
|
|
16
|
+
tableName: relation.inverseEntityMetadata.tableName,
|
|
17
|
+
targetClass: relation.inverseEntityMetadata.target,
|
|
18
|
+
joinColumns: relation.joinColumns,
|
|
19
|
+
inverseJoinColumns: relation.inverseJoinColumns
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
relations
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.getRelationsFromModelGenerator = getRelationsFromModelGenerator;
|
|
27
|
+
//# sourceMappingURL=getRelationsFromModelGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRelationsFromModelGenerator.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/getRelationsFromModelGenerator.ts"],"names":[],"mappings":";;;AAoBO,MAAM,8BAA8B,GAAG,CAC5C,WAA4B,EACH,EAAE;IAC3B,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;QACtD,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,+BAA+B,EAAE,QAAQ,CAAC,uBAAuB;YACjE,uBAAuB,EAAE,KAAK,EAAE,YAAY;YAC5C,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,UAAU,EAAE,QAAQ,CAAC,qBAAqB,CAAC,IAAI;YAC/C,SAAS,EAAE,QAAQ,CAAC,qBAAqB,CAAC,SAAS;YACnD,WAAW,EAAE,QAAQ,CAAC,qBAAqB,CAAC,MAAM;YAClD,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;SAChD,CAAA;IACH,CAAC;IACD,OAAO;QACL,SAAS;KACV,CAAA;AACH,CAAC,CAAA;AAvBY,QAAA,8BAA8B,kCAuB1C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSelectedKeysFromRawSql = void 0;
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param sql
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
const getSelectedKeysFromRawSql = (sql) => {
|
|
10
|
+
const possibleKeys = sql.split('AS');
|
|
11
|
+
const keys = new Set([]);
|
|
12
|
+
for (const stringKey of possibleKeys) {
|
|
13
|
+
if (stringKey.includes('SELECT')) {
|
|
14
|
+
const key = stringKey.split('"')[1];
|
|
15
|
+
if (!key || key.includes('___') || !key.includes('_')) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
keys.add(key.replace('_id', 'id').replace('_', '.'));
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const key = stringKey.split('"')[1];
|
|
22
|
+
if (key) {
|
|
23
|
+
keys.add(key.replace('_id', 'id').replace('_', '.'));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return Array.from(keys);
|
|
27
|
+
};
|
|
28
|
+
exports.getSelectedKeysFromRawSql = getSelectedKeysFromRawSql;
|
|
29
|
+
//# sourceMappingURL=getSelectedKeysFromRawSql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSelectedKeysFromRawSql.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/getSelectedKeysFromRawSql.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACI,MAAM,yBAAyB,GAAG,CAAC,GAAW,EAAY,EAAE;IACjE,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAgB,IAAI,GAAG,CAAC,EAAE,CAAC,CAAA;IAErC,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtD,SAAQ;YACV,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YAEpD,SAAQ;QACV,CAAC;QAED,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAA;AAvBY,QAAA,yBAAyB,6BAuBrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isAnyObject: (val: any) => boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAnyObject = void 0;
|
|
4
|
+
const isAnyObject = (val) => {
|
|
5
|
+
return typeof val === 'object' && !Array.isArray(val) && val !== null;
|
|
6
|
+
};
|
|
7
|
+
exports.isAnyObject = isAnyObject;
|
|
8
|
+
//# sourceMappingURL=isAnyObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isAnyObject.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/isAnyObject.ts"],"names":[],"mappings":";;;AAAO,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAW,EAAE;IAC/C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,CAAA;AACvE,CAAC,CAAA;AAFY,QAAA,WAAW,eAEvB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nestQueryResults = void 0;
|
|
4
|
+
const js_utils_1 = require("@goatlab/js-utils");
|
|
5
|
+
const nestQueryResults = (results, keyToNestedKeyMap) => {
|
|
6
|
+
let nestableObject = {};
|
|
7
|
+
let currentLevel = 0;
|
|
8
|
+
// For each of the keys that we need to map
|
|
9
|
+
for (const key of Object.keys(keyToNestedKeyMap)) {
|
|
10
|
+
if (!key.endsWith('_id')) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const currentLevelMetadata = keyToNestedKeyMap[key];
|
|
14
|
+
currentLevel = currentLevelMetadata.level;
|
|
15
|
+
// We only group by Ids of the current level
|
|
16
|
+
const grouped = js_utils_1.Arrays.groupBy(results, r => r[key]);
|
|
17
|
+
const resultCount = Object.keys(grouped)?.length || 0;
|
|
18
|
+
// ForEach Id of the grouped results
|
|
19
|
+
for (const [index, k] of Object.keys(grouped).entries()) {
|
|
20
|
+
const prefixindex = currentLevelMetadata.nestableKey.lastIndexOf('.');
|
|
21
|
+
const prefix = currentLevelMetadata.nestableKey.substring(0, prefixindex);
|
|
22
|
+
const currentIndex = `${prefix}.${index}.${currentLevelMetadata.keyName}`;
|
|
23
|
+
const results = grouped[k];
|
|
24
|
+
console.log(currentLevelMetadata);
|
|
25
|
+
// Get current level values
|
|
26
|
+
if (currentLevelMetadata.level === currentLevel) {
|
|
27
|
+
// Get value of the id
|
|
28
|
+
nestableObject[`${currentIndex}`] = k;
|
|
29
|
+
}
|
|
30
|
+
for (const result of results) {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// currentLevel = currentLevelMetadata.level
|
|
34
|
+
}
|
|
35
|
+
return results;
|
|
36
|
+
};
|
|
37
|
+
exports.nestQueryResults = nestQueryResults;
|
|
38
|
+
//# sourceMappingURL=nestQueryResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nestQueryResults.js","sourceRoot":"","sources":["../../../src/TypeOrmConnector/util/nestQueryResults.ts"],"names":[],"mappings":";;;AAAA,gDAA0C;AAGnC,MAAM,gBAAgB,GAAG,CAC9B,OAAoB,EACpB,iBAA4B,EACf,EAAE;IACf,IAAI,cAAc,GAAG,EAAE,CAAA;IACvB,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,2CAA2C;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAQ;QACV,CAAC;QAED,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACnD,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAA;QAEzC,4CAA4C;QAC5C,MAAM,OAAO,GAAc,iBAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAE/D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;QAErD,oCAAoC;QACpC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACrE,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;YACzE,MAAM,YAAY,GAAG,GAAG,MAAM,IAAI,KAAK,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAA;YACzE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAE1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;YACjC,2BAA2B;YAC3B,IAAI,oBAAoB,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;gBAChD,sBAAsB;gBACtB,cAAc,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,4CAA4C;IAC9C,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAzCY,QAAA,gBAAgB,oBAyC5B"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { MetadataAccessor } from '@loopback/metadata';
|
|
2
|
+
import { SchemaObject as JsonSchema } from 'openapi3-ts/oas30';
|
|
3
|
+
export interface SchemaObject extends JsonSchema {
|
|
4
|
+
definitions?: {
|
|
5
|
+
[key: string]: SchemaObject;
|
|
6
|
+
};
|
|
7
|
+
$ref?: string;
|
|
8
|
+
}
|
|
9
|
+
import { RelationMetadata } from './relation.types';
|
|
10
|
+
import { PropertyDefinition, PropertyType } from './model';
|
|
11
|
+
export declare const JSON_SCHEMA_KEY: MetadataAccessor<{
|
|
12
|
+
[key: string]: SchemaObject;
|
|
13
|
+
}, ClassDecorator>;
|
|
14
|
+
export interface JsonSchemaOptions<T extends object> {
|
|
15
|
+
/**
|
|
16
|
+
* The title to use in the generated schema.
|
|
17
|
+
*
|
|
18
|
+
* When using options like `exclude`, the auto-generated title can be
|
|
19
|
+
* difficult to read for humans. Use this option to change the title to
|
|
20
|
+
* a more meaningful value.
|
|
21
|
+
*/
|
|
22
|
+
title?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Set this flag if you want the schema to define navigational properties
|
|
25
|
+
* for model relations.
|
|
26
|
+
*/
|
|
27
|
+
includeRelations?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Set this flag to mark all model properties as optional. This is typically
|
|
30
|
+
* used to describe request body of PATCH endpoints. This option will be
|
|
31
|
+
* overridden by the "optional" option if it is set and non-empty.
|
|
32
|
+
*
|
|
33
|
+
* The flag also applies to nested model instances if its value is set to
|
|
34
|
+
* 'deep', such as:
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* @model()
|
|
39
|
+
* class Address {
|
|
40
|
+
* @property()
|
|
41
|
+
* street: string;
|
|
42
|
+
* @property()
|
|
43
|
+
* city: string;
|
|
44
|
+
* @property()
|
|
45
|
+
* state: string;
|
|
46
|
+
* @property()
|
|
47
|
+
* zipCode: string;
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* @model()
|
|
51
|
+
* class Customer {
|
|
52
|
+
* @property()
|
|
53
|
+
* address: Address;
|
|
54
|
+
* }
|
|
55
|
+
*
|
|
56
|
+
* // The following schema allows properties of `customer` optional, but not
|
|
57
|
+
* // `customer.address`
|
|
58
|
+
* const schemaRef1 = getModelSchemaRef(Customer, {partial: true});
|
|
59
|
+
*
|
|
60
|
+
* // The following schema allows properties of `customer` and
|
|
61
|
+
* // `customer.address` optional
|
|
62
|
+
* const schemaRef2 = getModelSchemaRef(Customer, {partial: 'deep'});
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
partial?: boolean | 'deep';
|
|
66
|
+
/**
|
|
67
|
+
* List of model properties to exclude from the schema.
|
|
68
|
+
*/
|
|
69
|
+
exclude?: (keyof T)[];
|
|
70
|
+
/**
|
|
71
|
+
* List of model properties to mark as optional. Overrides the "partial"
|
|
72
|
+
* option if it is not empty.
|
|
73
|
+
*/
|
|
74
|
+
optional?: (keyof T)[];
|
|
75
|
+
/**
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
visited?: {
|
|
79
|
+
[key: string]: SchemaObject;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
export declare function buildModelCacheKey<T extends object>(options?: JsonSchemaOptions<T>): string;
|
|
86
|
+
/**
|
|
87
|
+
* Gets the JSON Schema of a TypeScript model/class by seeing if one exists
|
|
88
|
+
* in a cache. If not, one is generated and then cached.
|
|
89
|
+
* @param ctor - Constructor of class to get JSON Schema from
|
|
90
|
+
*/
|
|
91
|
+
export declare function getJsonSchema<T extends object>(ctor: Function & {
|
|
92
|
+
prototype: T;
|
|
93
|
+
}, options?: JsonSchemaOptions<T>): SchemaObject;
|
|
94
|
+
/**
|
|
95
|
+
* Describe the provided Model as a reference to a definition shared by multiple
|
|
96
|
+
* endpoints. The definition is included in the returned schema.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
*
|
|
100
|
+
* ```ts
|
|
101
|
+
* const schema = {
|
|
102
|
+
* $ref: '/definitions/Product',
|
|
103
|
+
* definitions: {
|
|
104
|
+
* Product: {
|
|
105
|
+
* title: 'Product',
|
|
106
|
+
* properties: {
|
|
107
|
+
* // etc.
|
|
108
|
+
* }
|
|
109
|
+
* }
|
|
110
|
+
* }
|
|
111
|
+
* }
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @param modelCtor - The model constructor (e.g. `Product`)
|
|
115
|
+
* @param options - Additional options
|
|
116
|
+
*/
|
|
117
|
+
export declare function getJsonSchemaRef<T extends object>(modelCtor: Function & {
|
|
118
|
+
prototype: T;
|
|
119
|
+
}, options?: JsonSchemaOptions<T>): SchemaObject;
|
|
120
|
+
/**
|
|
121
|
+
* Gets the wrapper function of primitives string, number, and boolean
|
|
122
|
+
* @param type - Name of type
|
|
123
|
+
*/
|
|
124
|
+
export declare function stringTypeToWrapper(type: string | Function): Function;
|
|
125
|
+
/**
|
|
126
|
+
* Determines whether a given string or constructor is array type or not
|
|
127
|
+
* @param type - Type as string or wrapper
|
|
128
|
+
*/
|
|
129
|
+
export declare function isArrayType(type: string | Function | PropertyType): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Converts property metadata into a JSON property definition
|
|
132
|
+
* @param meta
|
|
133
|
+
*/
|
|
134
|
+
export declare function metaToJsonProperty(meta: PropertyDefinition): SchemaObject;
|
|
135
|
+
/**
|
|
136
|
+
* Checks and return navigational property definition for the relation
|
|
137
|
+
* @param relMeta Relation metadata object
|
|
138
|
+
* @param targetRef Schema definition for the target model
|
|
139
|
+
*/
|
|
140
|
+
export declare function getNavigationalPropertyForRelation(relMeta: RelationMetadata, targetRef: SchemaObject): SchemaObject;
|
|
141
|
+
/**
|
|
142
|
+
* Converts a TypeScript class into a JSON Schema using TypeScript's
|
|
143
|
+
* reflection API
|
|
144
|
+
* @param ctor - Constructor of class to convert from
|
|
145
|
+
*/
|
|
146
|
+
export declare function modelToJsonSchema<T extends object>(ctor: Function & {
|
|
147
|
+
prototype: T;
|
|
148
|
+
}, jsonSchemaOptions?: JsonSchemaOptions<T>): SchemaObject;
|