@minimaltech/node-infra 0.5.9-22 → 0.5.9-24
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/base/applications/base.application.js +40 -28
- package/dist/base/applications/default.application.js +8 -2
- package/dist/base/base.component.js +2 -2
- package/dist/base/base.helper.js +3 -4
- package/dist/base/base.provider.js +2 -2
- package/dist/base/base.sequence.js +26 -17
- package/dist/base/controllers/common.js +9 -8
- package/dist/base/controllers/crud.controller.js +67 -55
- package/dist/base/controllers/express-request-handler.js +0 -2
- package/dist/base/controllers/kv.controller.js +18 -7
- package/dist/base/controllers/relational.controller.d.ts +3 -1
- package/dist/base/controllers/relational.controller.js +57 -40
- package/dist/base/controllers/service-crud.controller.js +46 -46
- package/dist/base/datasources/base.datasource.js +0 -1
- package/dist/base/loopback/@lb/core/index.js +1 -0
- package/dist/base/loopback/@lb/repository/index.js +1 -0
- package/dist/base/loopback/authentication/index.js +2 -0
- package/dist/base/loopback/filter/index.js +2 -0
- package/dist/base/loopback/http-server/index.js +2 -0
- package/dist/base/models/base.model.d.ts +7 -0
- package/dist/base/models/base.model.js +23 -5
- package/dist/base/repositories/base.repository.d.ts +3 -0
- package/dist/base/repositories/base.repository.js +24 -5
- package/dist/base/repositories/relations/has-many-polymorphic/decorator.d.ts +8 -0
- package/dist/base/repositories/relations/has-many-polymorphic/decorator.js +10 -11
- package/dist/base/repositories/relations/has-many-polymorphic/factory.d.ts +9 -0
- package/dist/base/repositories/relations/has-many-polymorphic/factory.js +30 -12
- package/dist/base/repositories/searchable-tz-crud.repository.js +160 -129
- package/dist/base/repositories/tz-crud.repository.js +58 -23
- package/dist/base/services/base-crud.service.js +9 -6
- package/dist/base/services/base.service.js +2 -2
- package/dist/common/constants.js +89 -81
- package/dist/common/environments.js +25 -25
- package/dist/common/keys.js +2 -2
- package/dist/common/statuses.js +31 -28
- package/dist/common/types.d.ts +3 -0
- package/dist/components/authenticate/common/constants.js +13 -11
- package/dist/components/authenticate/common/keys.js +7 -7
- package/dist/components/authenticate/common/types.js +3 -11
- package/dist/components/authenticate/component.js +28 -20
- package/dist/components/authenticate/controllers/auth.controller.js +11 -13
- package/dist/components/authenticate/controllers/oauth2.controller.js +20 -18
- package/dist/components/authenticate/middleware.js +35 -25
- package/dist/components/authenticate/models/oauth2-client.model.js +3 -8
- package/dist/components/authenticate/models/oauth2-scope.model.js +0 -4
- package/dist/components/authenticate/models/oauth2-token.model.js +0 -7
- package/dist/components/authenticate/oauth2-handlers/authorization-code.handler.js +5 -4
- package/dist/components/authenticate/oauth2-handlers/base.js +110 -95
- package/dist/components/authenticate/oauth2-handlers/client-credential.handler.js +3 -2
- package/dist/components/authenticate/oauth2-handlers/oauth2.js +2 -3
- package/dist/components/authenticate/repositories/oauth2.repository.js +0 -2
- package/dist/components/authenticate/services/basic-token.service.js +29 -18
- package/dist/components/authenticate/services/basic.strategy.js +17 -7
- package/dist/components/authenticate/services/jwt-token.service.js +40 -27
- package/dist/components/authenticate/services/jwt.strategy.js +1 -2
- package/dist/components/authenticate/services/oauth2.service.js +110 -98
- package/dist/components/authenticate/services/oauth2.strategy.js +31 -19
- package/dist/components/authorize/adapters/adapter-builder.js +0 -1
- package/dist/components/authorize/adapters/base.adapter.js +9 -2
- package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.js +55 -37
- package/dist/components/authorize/adapters/casbin-redis-adapter.helper.js +1 -0
- package/dist/components/authorize/common/constants.js +12 -10
- package/dist/components/authorize/common/keys.js +15 -15
- package/dist/components/authorize/common/types.js +2 -2
- package/dist/components/authorize/component.js +59 -44
- package/dist/components/authorize/decorators/index.d.ts +11 -0
- package/dist/components/authorize/decorators/index.js +14 -1
- package/dist/components/authorize/interceptor.js +80 -76
- package/dist/components/authorize/migrations/0000-create-view-policy.js +14 -3
- package/dist/components/authorize/models/defs.js +5 -24
- package/dist/components/authorize/models/role.model.js +1 -1
- package/dist/components/authorize/models/user-role.model.js +1 -0
- package/dist/components/authorize/models/view-authorize-policy.model.js +1 -4
- package/dist/components/authorize/provider.js +96 -81
- package/dist/components/authorize/repositories/authorize.repository.js +6 -3
- package/dist/components/authorize/services/enforcer.service.js +27 -20
- package/dist/components/authorize/services/generator.service.d.ts +20 -0
- package/dist/components/authorize/services/generator.service.js +96 -62
- package/dist/components/crash-report/common/keys.js +10 -8
- package/dist/components/crash-report/component.js +44 -31
- package/dist/components/crash-report/providers/provider.js +0 -1
- package/dist/components/crash-report/providers/third-parties/base.js +2 -2
- package/dist/components/crash-report/services/mt-crash-report.service.js +5 -5
- package/dist/components/grpc/common/keys.js +4 -4
- package/dist/components/grpc/components/server.component.js +8 -8
- package/dist/components/grpc/controllers/base.js +0 -1
- package/dist/components/grpc/helpers/grpc-client.js +3 -9
- package/dist/components/grpc/helpers/grpc-server.js +17 -14
- package/dist/components/grpc/persistents/grpc.connector.js +2 -8
- package/dist/components/grpc/persistents/grpc.datasource.js +3 -2
- package/dist/components/grpc/persistents/grpc.repository.js +2 -3
- package/dist/components/health-check/component.js +0 -1
- package/dist/components/migration/common/keys.js +3 -3
- package/dist/components/migration/component.js +8 -5
- package/dist/components/migration/models/migration.model.js +0 -2
- package/dist/components/socket-io/common/constants.js +10 -10
- package/dist/components/socket-io/common/keys.js +6 -6
- package/dist/components/socket-io/component.js +8 -9
- package/dist/components/socket-io/helpers/socket-io-client.helper.js +11 -7
- package/dist/components/socket-io/helpers/socket-io-server.helper.js +41 -26
- package/dist/components/static-asset/common/keys.js +4 -4
- package/dist/components/static-asset/component.js +8 -9
- package/dist/components/static-asset/controllers/asset.controller.d.ts +8 -0
- package/dist/components/static-asset/controllers/asset.controller.js +93 -71
- package/dist/components/static-asset/controllers/resource.controller.js +9 -8
- package/dist/datasources/memory/datasource.js +3 -3
- package/dist/datasources/postgres/datasource.js +10 -10
- package/dist/datasources/redis/connector.js +7 -18
- package/dist/datasources/redis/datasource.js +7 -7
- package/dist/helpers/application-environment.helper.js +3 -3
- package/dist/helpers/cron.helper.js +14 -9
- package/dist/helpers/crypto/algorithms/aes.algorithm.js +7 -8
- package/dist/helpers/crypto/algorithms/base.algorithm.js +4 -3
- package/dist/helpers/crypto/algorithms/rsa.algorithm.js +5 -4
- package/dist/helpers/database/query-builder.helper.js +5 -2
- package/dist/helpers/logger/application-logger.js +17 -7
- package/dist/helpers/logger/common/types.js +22 -20
- package/dist/helpers/logger/default-logger.js +12 -2
- package/dist/helpers/logger/factory.js +1 -1
- package/dist/helpers/logger/transports/dgram.transport.js +25 -16
- package/dist/helpers/network/http-request/base-network-request.helper.js +34 -36
- package/dist/helpers/network/http-request/fetcher/axios-fetcher.js +22 -10
- package/dist/helpers/network/http-request/fetcher/base-fetcher.js +36 -13
- package/dist/helpers/network/http-request/fetcher/node-fetcher.js +59 -37
- package/dist/helpers/network/tcp-socket/base-tcp-client.helper.js +27 -30
- package/dist/helpers/network/tcp-socket/base-tcp-server.helper.js +19 -21
- package/dist/helpers/network/tcp-socket/network-tcp-client.helper.js +1 -5
- package/dist/helpers/network/tcp-socket/network-tcp-server.helper.js +1 -5
- package/dist/helpers/network/tcp-socket/network-tls-tcp-client.helper.js +1 -5
- package/dist/helpers/network/tcp-socket/network-tls-tcp-server.helper.js +1 -5
- package/dist/helpers/network/udp-socket/network-udp-client.helper.js +18 -21
- package/dist/helpers/queue/bullmq.helper.js +22 -21
- package/dist/helpers/queue/mqtt.helper.js +17 -15
- package/dist/helpers/queue/queue.helper.js +145 -74
- package/dist/helpers/redis/default.helper.js +162 -117
- package/dist/helpers/redis/redis-cluster.helper.js +2 -7
- package/dist/helpers/redis/redis.helper.js +5 -8
- package/dist/helpers/storage/di-container.helper.js +0 -2
- package/dist/helpers/storage/minio.helper.js +128 -88
- package/dist/helpers/testing/common.js +3 -3
- package/dist/helpers/testing/describe.js +21 -14
- package/dist/helpers/testing/test-case.js +0 -5
- package/dist/helpers/testing/test-handler.js +30 -23
- package/dist/helpers/testing/test-plan/base.js +6 -9
- package/dist/helpers/worker-thread/base.js +20 -10
- package/dist/helpers/worker-thread/worker-bus.js +12 -11
- package/dist/helpers/worker-thread/worker-pool.js +25 -17
- package/dist/interceptors/content-range.interceptor.js +132 -115
- package/dist/middlewares/request-body-parser.middleware.js +16 -4
- package/dist/middlewares/request-spy.middleware.js +5 -4
- package/dist/migrations/handler.js +22 -13
- package/dist/mixins/data-type.mixin.js +0 -5
- package/dist/mixins/deprecated/user-audit.mixin.d.ts +3 -0
- package/dist/mixins/deprecated/user-audit.mixin.js +5 -2
- package/dist/mixins/duplicatable.mixin.js +0 -1
- package/dist/mixins/object-search.mixin.js +0 -1
- package/dist/mixins/principal.mixin.js +0 -2
- package/dist/mixins/soft-delete.mixin.js +0 -1
- package/dist/mixins/soft-persistent.mixin.js +0 -1
- package/dist/mixins/text-search.mixin.js +0 -1
- package/dist/mixins/tz.mixin.js +0 -2
- package/dist/mixins/user-audit.mixin.js +3 -5
- package/dist/mixins/vector.mixin.js +6 -9
- package/dist/tsconfig.base.json +6 -5
- package/dist/utilities/date.utility.js +23 -5
- package/dist/utilities/error.utility.js +0 -2
- package/dist/utilities/model.utility.js +6 -2
- package/dist/utilities/parse.utility.d.ts +16 -0
- package/dist/utilities/parse.utility.js +41 -6
- package/dist/utilities/performance.utility.js +2 -1
- package/dist/utilities/promise.utility.d.ts +17 -0
- package/dist/utilities/promise.utility.js +31 -5
- package/dist/utilities/query.utility.js +16 -8
- package/dist/utilities/request.utility.js +8 -2
- package/package.json +2 -3
|
@@ -12,67 +12,83 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.BaseVectorEntity = exports.BaseBigIdTzEntity = exports.BaseBigIdEntity = exports.BaseDuplicatableTzEntity = exports.BaseSoftDeleteTzEntity = exports.BaseSearchableTzEntity = exports.BaseObjectSearchTzEntity = exports.BaseTextSearchTzEntity = exports.BaseDataTypeTzEntity = exports.BaseUserAuditTzEntity = exports.BaseTzEntity = exports.BaseKVEntity = exports.BaseStringIdEntity = exports.BaseNumberIdEntity = exports.BaseIdEntity = exports.BaseEntity = void 0;
|
|
13
13
|
const mixins_1 = require("../../mixins");
|
|
14
14
|
const repository_1 = require("@loopback/repository");
|
|
15
|
+
// ---------------------------------------------------------------------
|
|
15
16
|
class BaseEntity extends repository_1.Entity {
|
|
16
17
|
}
|
|
17
18
|
exports.BaseEntity = BaseEntity;
|
|
19
|
+
// ---------------------------------------------------------------------
|
|
18
20
|
class BaseIdEntity extends BaseEntity {
|
|
19
|
-
id;
|
|
20
21
|
}
|
|
21
22
|
exports.BaseIdEntity = BaseIdEntity;
|
|
22
23
|
__decorate([
|
|
23
24
|
(0, repository_1.property)({ type: 'number', id: true, generated: true }),
|
|
24
25
|
__metadata("design:type", Number)
|
|
25
26
|
], BaseIdEntity.prototype, "id", void 0);
|
|
27
|
+
// ---------------------------------------------------------------------
|
|
26
28
|
class BaseNumberIdEntity extends BaseEntity {
|
|
27
|
-
id;
|
|
28
29
|
}
|
|
29
30
|
exports.BaseNumberIdEntity = BaseNumberIdEntity;
|
|
30
31
|
__decorate([
|
|
31
32
|
(0, repository_1.property)({ type: 'number', id: true, generated: true }),
|
|
32
33
|
__metadata("design:type", Number)
|
|
33
34
|
], BaseNumberIdEntity.prototype, "id", void 0);
|
|
35
|
+
// ---------------------------------------------------------------------
|
|
34
36
|
class BaseStringIdEntity extends BaseEntity {
|
|
35
|
-
id;
|
|
36
37
|
}
|
|
37
38
|
exports.BaseStringIdEntity = BaseStringIdEntity;
|
|
38
39
|
__decorate([
|
|
39
40
|
(0, repository_1.property)({ type: 'string', id: true }),
|
|
40
41
|
__metadata("design:type", String)
|
|
41
42
|
], BaseStringIdEntity.prototype, "id", void 0);
|
|
43
|
+
// ---------------------------------------------------------------------
|
|
42
44
|
class BaseKVEntity extends BaseEntity {
|
|
43
|
-
payload;
|
|
44
45
|
}
|
|
45
46
|
exports.BaseKVEntity = BaseKVEntity;
|
|
46
47
|
__decorate([
|
|
47
48
|
(0, repository_1.property)({ type: 'object' }),
|
|
48
49
|
__metadata("design:type", Object)
|
|
49
50
|
], BaseKVEntity.prototype, "payload", void 0);
|
|
51
|
+
// ---------------------------------------------------------------------
|
|
50
52
|
class BaseTzEntity extends (0, mixins_1.TzMixin)(BaseIdEntity) {
|
|
51
53
|
}
|
|
52
54
|
exports.BaseTzEntity = BaseTzEntity;
|
|
55
|
+
// ---------------------------------------------------------------------
|
|
56
|
+
/**
|
|
57
|
+
* Basic UserAuditMixed class with createdBy and modifiedBy
|
|
58
|
+
*
|
|
59
|
+
* NOTICE: This method have no userResolver
|
|
60
|
+
*
|
|
61
|
+
* In case you need to include User, directly extends {@link UserAuditMixin}
|
|
62
|
+
*/
|
|
53
63
|
class BaseUserAuditTzEntity extends (0, mixins_1.UserAuditMixin)(BaseTzEntity) {
|
|
54
64
|
}
|
|
55
65
|
exports.BaseUserAuditTzEntity = BaseUserAuditTzEntity;
|
|
66
|
+
// ---------------------------------------------------------------------
|
|
56
67
|
class BaseDataTypeTzEntity extends (0, mixins_1.DataTypeMixin)(BaseTzEntity) {
|
|
57
68
|
}
|
|
58
69
|
exports.BaseDataTypeTzEntity = BaseDataTypeTzEntity;
|
|
70
|
+
// ---------------------------------------------------------------------
|
|
59
71
|
class BaseTextSearchTzEntity extends (0, mixins_1.TextSearchMixin)(BaseTzEntity) {
|
|
60
72
|
}
|
|
61
73
|
exports.BaseTextSearchTzEntity = BaseTextSearchTzEntity;
|
|
74
|
+
// ---------------------------------------------------------------------
|
|
62
75
|
class BaseObjectSearchTzEntity extends (0, mixins_1.ObjectSearchMixin)(BaseTzEntity) {
|
|
63
76
|
}
|
|
64
77
|
exports.BaseObjectSearchTzEntity = BaseObjectSearchTzEntity;
|
|
78
|
+
// ---------------------------------------------------------------------
|
|
65
79
|
class BaseSearchableTzEntity extends (0, mixins_1.ObjectSearchMixin)((0, mixins_1.TextSearchMixin)(BaseTzEntity)) {
|
|
66
80
|
}
|
|
67
81
|
exports.BaseSearchableTzEntity = BaseSearchableTzEntity;
|
|
82
|
+
// ---------------------------------------------------------------------
|
|
68
83
|
class BaseSoftDeleteTzEntity extends (0, mixins_1.SoftDeleteModelMixin)(BaseTzEntity) {
|
|
69
84
|
}
|
|
70
85
|
exports.BaseSoftDeleteTzEntity = BaseSoftDeleteTzEntity;
|
|
86
|
+
// ---------------------------------------------------------------------
|
|
71
87
|
class BaseDuplicatableTzEntity extends (0, mixins_1.DuplicatableMixin)(BaseTzEntity) {
|
|
72
88
|
}
|
|
73
89
|
exports.BaseDuplicatableTzEntity = BaseDuplicatableTzEntity;
|
|
90
|
+
// ---------------------------------------------------------------------
|
|
74
91
|
class BaseBigIdEntity extends BaseEntity {
|
|
75
|
-
id;
|
|
76
92
|
}
|
|
77
93
|
exports.BaseBigIdEntity = BaseBigIdEntity;
|
|
78
94
|
__decorate([
|
|
@@ -83,9 +99,11 @@ __decorate([
|
|
|
83
99
|
}),
|
|
84
100
|
__metadata("design:type", Number)
|
|
85
101
|
], BaseBigIdEntity.prototype, "id", void 0);
|
|
102
|
+
// ---------------------------------------------------------------------
|
|
86
103
|
class BaseBigIdTzEntity extends (0, mixins_1.TzMixin)(BaseBigIdEntity) {
|
|
87
104
|
}
|
|
88
105
|
exports.BaseBigIdTzEntity = BaseBigIdTzEntity;
|
|
106
|
+
// ---------------------------------------------------------------------
|
|
89
107
|
class BaseVectorEntity extends (0, mixins_1.VectorMixin)(BaseBigIdTzEntity, {
|
|
90
108
|
uuid: {
|
|
91
109
|
columnName: 'uuid',
|
|
@@ -8,6 +8,9 @@ export declare class WhereBuilder<E extends object = AnyObject> extends BaseWher
|
|
|
8
8
|
clone(): WhereBuilder;
|
|
9
9
|
}
|
|
10
10
|
export declare class DefaultCrudRepository<E extends BaseEntity, ID, Relations extends object = {}> extends _DefaultCrudRepository<E, ID, Relations> {
|
|
11
|
+
/**
|
|
12
|
+
* @experimental
|
|
13
|
+
*/
|
|
11
14
|
createHasManyPolymorphicRepositoryFactoryFor<Target extends BaseEntity, TargetId extends IdType, ForeignKeyType extends IdType>(opts: {
|
|
12
15
|
relationName: string;
|
|
13
16
|
principalType: string;
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
@@ -10,6 +21,7 @@ const repository_1 = require("@loopback/repository");
|
|
|
10
21
|
const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
|
|
11
22
|
const get_1 = __importDefault(require("lodash/get"));
|
|
12
23
|
const factory_1 = require("./relations/has-many-polymorphic/factory");
|
|
24
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
13
25
|
class WhereBuilder extends repository_1.WhereBuilder {
|
|
14
26
|
constructor(opts) {
|
|
15
27
|
super(opts);
|
|
@@ -22,7 +34,11 @@ class WhereBuilder extends repository_1.WhereBuilder {
|
|
|
22
34
|
}
|
|
23
35
|
}
|
|
24
36
|
exports.WhereBuilder = WhereBuilder;
|
|
37
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
25
38
|
class DefaultCrudRepository extends repository_1.DefaultCrudRepository {
|
|
39
|
+
/**
|
|
40
|
+
* @experimental
|
|
41
|
+
*/
|
|
26
42
|
createHasManyPolymorphicRepositoryFactoryFor(opts) {
|
|
27
43
|
const { relationName, principalType, targetRepositoryGetter } = opts;
|
|
28
44
|
const relationMetadata = this.entityClass.definition.relations[relationName];
|
|
@@ -39,16 +55,16 @@ class DefaultCrudRepository extends repository_1.DefaultCrudRepository {
|
|
|
39
55
|
}
|
|
40
56
|
}
|
|
41
57
|
exports.DefaultCrudRepository = DefaultCrudRepository;
|
|
58
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
42
59
|
class AbstractTzRepository extends DefaultCrudRepository {
|
|
43
|
-
logger;
|
|
44
60
|
constructor(entityClass, dataSource, scope) {
|
|
45
61
|
super(entityClass, dataSource);
|
|
46
|
-
this.logger = helpers_1.LoggerFactory.getLogger([scope
|
|
62
|
+
this.logger = helpers_1.LoggerFactory.getLogger([scope !== null && scope !== void 0 ? scope : '']);
|
|
47
63
|
}
|
|
48
64
|
beginTransaction(options) {
|
|
49
65
|
return new Promise((resolve, reject) => {
|
|
50
66
|
this.dataSource
|
|
51
|
-
.beginTransaction(options
|
|
67
|
+
.beginTransaction(options !== null && options !== void 0 ? options : {})
|
|
52
68
|
.then(rs => {
|
|
53
69
|
resolve(rs);
|
|
54
70
|
})
|
|
@@ -63,24 +79,27 @@ class AbstractTzRepository extends DefaultCrudRepository {
|
|
|
63
79
|
return (0, get_1.default)(this.modelClass, `_observers.${operation}`, []);
|
|
64
80
|
}
|
|
65
81
|
notifyObservers(opts) {
|
|
66
|
-
const { operation,
|
|
82
|
+
const { operation } = opts, rest = __rest(opts, ["operation"]);
|
|
67
83
|
const observers = this.getObservers({ operation });
|
|
68
|
-
observers.forEach(observer => observer({
|
|
84
|
+
observers.forEach(observer => observer(Object.assign(Object.assign({}, this.modelClass), rest)));
|
|
69
85
|
}
|
|
70
86
|
}
|
|
71
87
|
exports.AbstractTzRepository = AbstractTzRepository;
|
|
88
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
72
89
|
class AbstractKVRepository extends repository_1.DefaultKeyValueRepository {
|
|
73
90
|
constructor(entityClass, dataSource) {
|
|
74
91
|
super(entityClass, dataSource);
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
94
|
exports.AbstractKVRepository = AbstractKVRepository;
|
|
95
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
78
96
|
class KVRepository extends AbstractKVRepository {
|
|
79
97
|
constructor(entityClass, dataSource) {
|
|
80
98
|
super(entityClass, dataSource);
|
|
81
99
|
}
|
|
82
100
|
}
|
|
83
101
|
exports.KVRepository = KVRepository;
|
|
102
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
84
103
|
class ViewRepository extends DefaultCrudRepository {
|
|
85
104
|
constructor(entityClass, dataSource) {
|
|
86
105
|
super(entityClass, dataSource);
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { Entity } from '@loopback/repository';
|
|
2
2
|
import { IHasManyPolymorphicDefinition } from './types';
|
|
3
3
|
import { ValueOptionalExcept } from '../../../../common';
|
|
4
|
+
/**
|
|
5
|
+
* Custom decorator to define a polymorphic `@hasManyPolymorphic` relationship
|
|
6
|
+
*
|
|
7
|
+
* @param targetModelGetter - A function to return the target model constructor
|
|
8
|
+
* @param definition - Additional relation metadata
|
|
9
|
+
*
|
|
10
|
+
* @experimental
|
|
11
|
+
*/
|
|
4
12
|
export declare function hasManyPolymorphic(definition: ValueOptionalExcept<IHasManyPolymorphicDefinition, 'target'>): (decoratedTarget: Entity, key: string) => void;
|
|
@@ -2,20 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasManyPolymorphic = hasManyPolymorphic;
|
|
4
4
|
const repository_1 = require("@loopback/repository");
|
|
5
|
+
/**
|
|
6
|
+
* Custom decorator to define a polymorphic `@hasManyPolymorphic` relationship
|
|
7
|
+
*
|
|
8
|
+
* @param targetModelGetter - A function to return the target model constructor
|
|
9
|
+
* @param definition - Additional relation metadata
|
|
10
|
+
*
|
|
11
|
+
* @experimental
|
|
12
|
+
*/
|
|
5
13
|
function hasManyPolymorphic(definition) {
|
|
6
14
|
return (decoratedTarget, key) => {
|
|
7
|
-
const meta = {
|
|
8
|
-
name: key,
|
|
9
|
-
type: repository_1.RelationType.hasMany,
|
|
10
|
-
targetsMany: true,
|
|
11
|
-
source: decoratedTarget.constructor,
|
|
12
|
-
keyFrom: 'id',
|
|
13
|
-
keyTo: 'principalId',
|
|
14
|
-
polymorphic: {
|
|
15
|
+
const meta = Object.assign({ name: key, type: repository_1.RelationType.hasMany, targetsMany: true, source: decoratedTarget.constructor, keyFrom: 'id', keyTo: 'principalId', polymorphic: {
|
|
15
16
|
discriminator: 'principal',
|
|
16
|
-
},
|
|
17
|
-
...definition,
|
|
18
|
-
};
|
|
17
|
+
} }, definition);
|
|
19
18
|
(0, repository_1.relation)(meta)(decoratedTarget, key);
|
|
20
19
|
};
|
|
21
20
|
}
|
|
@@ -3,6 +3,9 @@ import { IdType } from '../../../../common';
|
|
|
3
3
|
import { Getter } from '@loopback/core';
|
|
4
4
|
import { DefaultHasManyRepository, Entity, EntityCrudRepository, HasManyRepositoryFactory, InclusionResolver } from '@loopback/repository';
|
|
5
5
|
import { IHasManyPolymorphicDefinition, TPolymorphic } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* @experimental
|
|
8
|
+
*/
|
|
6
9
|
export declare class DefaultHasManyPolymorphicRepository<Target extends BaseEntity, TargetId extends IdType, TargetRepository extends EntityCrudRepository<Target, TargetId>, SourceId> extends DefaultHasManyRepository<Target, TargetId, TargetRepository> {
|
|
7
10
|
constructor(opts: {
|
|
8
11
|
targetRepositoryGetter: Getter<TargetRepository>;
|
|
@@ -12,11 +15,17 @@ export declare class DefaultHasManyPolymorphicRepository<Target extends BaseEnti
|
|
|
12
15
|
};
|
|
13
16
|
});
|
|
14
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* @experimental
|
|
20
|
+
*/
|
|
15
21
|
export declare const createHasManyPolymorphicInclusionResolver: <Target extends BaseEntity, TargetId extends IdType, TargetRelations extends object>(opts: {
|
|
16
22
|
principalType: string;
|
|
17
23
|
relationMetadata: IHasManyPolymorphicDefinition;
|
|
18
24
|
targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetId, TargetRelations>>;
|
|
19
25
|
}) => InclusionResolver<Entity, Target>;
|
|
26
|
+
/**
|
|
27
|
+
* @experimental
|
|
28
|
+
*/
|
|
20
29
|
export declare const createHasManyPolymorphicRepositoryFactoryFor: <Target extends BaseEntity, TargetId extends IdType, SourceId extends IdType>(opts: {
|
|
21
30
|
principalType: string;
|
|
22
31
|
relationMetadata: IHasManyPolymorphicDefinition;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -8,6 +17,7 @@ const utilities_1 = require("../../../../utilities");
|
|
|
8
17
|
const repository_1 = require("@loopback/repository");
|
|
9
18
|
const get_1 = __importDefault(require("lodash/get"));
|
|
10
19
|
const base_repository_1 = require("../../base.repository");
|
|
20
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
11
21
|
const getPolymorphicFields = (opts) => {
|
|
12
22
|
const { discriminator } = opts;
|
|
13
23
|
let typeField = null;
|
|
@@ -32,6 +42,10 @@ const getPolymorphicFields = (opts) => {
|
|
|
32
42
|
}
|
|
33
43
|
return { typeField, idField };
|
|
34
44
|
};
|
|
45
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
46
|
+
/**
|
|
47
|
+
* @experimental
|
|
48
|
+
*/
|
|
35
49
|
class DefaultHasManyPolymorphicRepository extends repository_1.DefaultHasManyRepository {
|
|
36
50
|
constructor(opts) {
|
|
37
51
|
const { targetRepositoryGetter, polymorphic } = opts;
|
|
@@ -43,9 +57,14 @@ class DefaultHasManyPolymorphicRepository extends repository_1.DefaultHasManyRep
|
|
|
43
57
|
}
|
|
44
58
|
}
|
|
45
59
|
exports.DefaultHasManyPolymorphicRepository = DefaultHasManyPolymorphicRepository;
|
|
60
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
61
|
+
/**
|
|
62
|
+
* @experimental
|
|
63
|
+
*/
|
|
46
64
|
const createHasManyPolymorphicInclusionResolver = (opts) => {
|
|
47
65
|
const { principalType, relationMetadata, targetRepositoryGetter } = opts;
|
|
48
|
-
return
|
|
66
|
+
return (entities, inclusion, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
|
+
var _a;
|
|
49
68
|
if (!entities.length) {
|
|
50
69
|
return [];
|
|
51
70
|
}
|
|
@@ -59,27 +78,26 @@ const createHasManyPolymorphicInclusionResolver = (opts) => {
|
|
|
59
78
|
const sourceIds = entities.map(e => (0, get_1.default)(e, sourceKey));
|
|
60
79
|
const targetKey = polymorphicFields.idField;
|
|
61
80
|
const scope = typeof inclusion === 'string' ? {} : inclusion.scope;
|
|
62
|
-
const targetRepository =
|
|
63
|
-
const filter = {
|
|
64
|
-
...scope,
|
|
65
|
-
where: new base_repository_1.WhereBuilder({
|
|
66
|
-
...(scope?.where ?? {}),
|
|
67
|
-
})
|
|
81
|
+
const targetRepository = yield targetRepositoryGetter();
|
|
82
|
+
const filter = Object.assign(Object.assign({}, scope), { where: new base_repository_1.WhereBuilder(Object.assign({}, ((_a = scope === null || scope === void 0 ? void 0 : scope.where) !== null && _a !== void 0 ? _a : {})))
|
|
68
83
|
.inq(polymorphicFields.idField, sourceIds)
|
|
69
84
|
.eq(polymorphicFields.typeField, principalType)
|
|
70
|
-
.build()
|
|
71
|
-
|
|
72
|
-
const targets = await targetRepository.find(filter, options);
|
|
85
|
+
.build() });
|
|
86
|
+
const targets = yield targetRepository.find(filter, options);
|
|
73
87
|
return (0, repository_1.flattenTargetsOfOneToManyRelation)(sourceIds, targets, targetKey);
|
|
74
|
-
};
|
|
88
|
+
});
|
|
75
89
|
};
|
|
76
90
|
exports.createHasManyPolymorphicInclusionResolver = createHasManyPolymorphicInclusionResolver;
|
|
91
|
+
// ----------------------------------------------------------------------------------------------------------------------------------------
|
|
92
|
+
/**
|
|
93
|
+
* @experimental
|
|
94
|
+
*/
|
|
77
95
|
const createHasManyPolymorphicRepositoryFactoryFor = (opts) => {
|
|
78
96
|
const { principalType, relationMetadata, targetRepositoryGetter } = opts;
|
|
79
97
|
const rs = (sourceId) => {
|
|
80
98
|
return new DefaultHasManyPolymorphicRepository({
|
|
81
99
|
targetRepositoryGetter,
|
|
82
|
-
polymorphic: {
|
|
100
|
+
polymorphic: Object.assign(Object.assign({}, relationMetadata.polymorphic), { typeValue: principalType, idValue: sourceId }),
|
|
83
101
|
});
|
|
84
102
|
};
|
|
85
103
|
rs.inclusionResolver = (0, exports.createHasManyPolymorphicInclusionResolver)(opts);
|