@flusys/nestjs-shared 8.1.5 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -2
- package/classes/api-service.class.d.ts +3 -0
- package/constants/permissions.d.ts +46 -0
- package/exceptions/base-app.exception.d.ts +3 -2
- package/fesm/{509.js → 183.js} +43 -37
- package/fesm/470.js +228 -105
- package/fesm/667.js +28 -10
- package/fesm/{67.js → 681.js} +97 -19
- package/fesm/{720.js → 948.js} +60 -7
- package/fesm/chunks/123.js +9 -10
- package/fesm/chunks/37.js +7 -8
- package/fesm/classes/index.js +10 -4
- package/fesm/constants/index.js +53 -1
- package/fesm/decorators/index.js +4 -4
- package/fesm/dtos/index.js +2 -2
- package/fesm/guards/index.js +48 -426
- package/fesm/index.js +436 -341
- package/fesm/interceptors/index.js +62 -23
- package/fesm/interfaces/index.js +28 -3
- package/fesm/middlewares/index.js +5 -3
- package/fesm/modules/index.js +6 -414
- package/fesm/pipes/index.js +196 -0
- package/fesm/utils/index.js +125 -10
- package/index.d.ts +1 -0
- package/interfaces/company-access-resolver.interface.d.ts +18 -0
- package/interfaces/datasource.interface.d.ts +2 -0
- package/interfaces/email-adapter.interface.d.ts +27 -0
- package/interfaces/index.d.ts +5 -0
- package/interfaces/message-ref.interface.d.ts +4 -0
- package/interfaces/permission-action-registry.interface.d.ts +12 -0
- package/interfaces/permission-resolver.interface.d.ts +9 -0
- package/middlewares/logger.middleware.d.ts +4 -0
- package/modules/shared-permission-cache/shared-permission-cache.service.d.ts +5 -0
- package/package.json +8 -2
- package/pipes/dto-body-validation.pipe.d.ts +18 -0
- package/pipes/index.d.ts +1 -0
- package/utils/cache-tenant.util.d.ts +2 -0
- package/utils/index.d.ts +3 -0
- package/utils/message-ref.util.d.ts +2 -0
- package/utils/permission-match.util.d.ts +1 -0
- package/utils/query-helpers.util.d.ts +2 -1
package/fesm/667.js
CHANGED
|
@@ -64,8 +64,8 @@ CacheModule = _ts_decorate([
|
|
|
64
64
|
|
|
65
65
|
// EXTERNAL MODULE: external "@flusys/nestjs-core"
|
|
66
66
|
var nestjs_core_ = __webpack_require__(436);
|
|
67
|
-
// EXTERNAL MODULE: ./projects/nestjs-shared/src/
|
|
68
|
-
var
|
|
67
|
+
// EXTERNAL MODULE: ./projects/nestjs-shared/src/middlewares/logger.middleware.ts + 2 modules
|
|
68
|
+
var logger_middleware = __webpack_require__(591);
|
|
69
69
|
// EXTERNAL MODULE: external "@nestjs/core"
|
|
70
70
|
var core_ = __webpack_require__(75);
|
|
71
71
|
// EXTERNAL MODULE: external "typeorm"
|
|
@@ -102,6 +102,7 @@ function _ts_param(paramIndex, decorator) {
|
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
|
|
105
|
+
|
|
105
106
|
class MultiTenantDataSourceService {
|
|
106
107
|
options;
|
|
107
108
|
request;
|
|
@@ -138,14 +139,17 @@ class MultiTenantDataSourceService {
|
|
|
138
139
|
isMultiTenant() {
|
|
139
140
|
return this.getDatabaseMode() === 'multi-tenant';
|
|
140
141
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
/**
|
|
143
|
+
* The request's tenant header, else the tenant of the current request context - which is how
|
|
144
|
+
* work outside an HTTP request (event handlers, providers resolved through ModuleRef) finds
|
|
145
|
+
* its tenant: LoggerMiddleware and the event bus both run their work inside that context.
|
|
146
|
+
*/ getCurrentTenantId() {
|
|
147
|
+
const tenantId = this.request?.headers[this.tenantHeader] ?? (0,logger_middleware/* .getTenantId */.EO)();
|
|
144
148
|
if (!tenantId) return null;
|
|
145
149
|
if (!/^[a-zA-Z0-9_-]+$/.test(tenantId)) {
|
|
146
150
|
throw new common_.BadRequestException({
|
|
147
151
|
message: 'Invalid tenant ID format',
|
|
148
|
-
messageKey:
|
|
152
|
+
messageKey: constants/* .SYSTEM_MESSAGES.INVALID_TENANT_ID */.hg.INVALID_TENANT_ID
|
|
149
153
|
});
|
|
150
154
|
}
|
|
151
155
|
return tenantId;
|
|
@@ -187,7 +191,7 @@ class MultiTenantDataSourceService {
|
|
|
187
191
|
if (!config) {
|
|
188
192
|
throw new common_.InternalServerErrorException({
|
|
189
193
|
message: 'No database config available. Provide defaultDatabaseConfig or tenantDefaultDatabaseConfig.',
|
|
190
|
-
messageKey:
|
|
194
|
+
messageKey: constants/* .SYSTEM_MESSAGES.DATABASE_CONFIG_NOT_AVAILABLE */.hg.DATABASE_CONFIG_NOT_AVAILABLE
|
|
191
195
|
});
|
|
192
196
|
}
|
|
193
197
|
const connectionPromise = this.createDataSourceFromConfig(config);
|
|
@@ -205,7 +209,7 @@ class MultiTenantDataSourceService {
|
|
|
205
209
|
if (!tenant) {
|
|
206
210
|
throw new common_.BadRequestException({
|
|
207
211
|
message: `Tenant not found. Ensure '${this.tenantHeader}' header is set.`,
|
|
208
|
-
messageKey:
|
|
212
|
+
messageKey: constants/* .SYSTEM_MESSAGES.TENANT_HEADER_REQUIRED */.hg.TENANT_HEADER_REQUIRED,
|
|
209
213
|
messageVariables: {
|
|
210
214
|
header: this.tenantHeader
|
|
211
215
|
}
|
|
@@ -237,7 +241,7 @@ class MultiTenantDataSourceService {
|
|
|
237
241
|
if (!defaultConfig) {
|
|
238
242
|
throw new common_.InternalServerErrorException({
|
|
239
243
|
message: 'No default database config for multi-tenant mode.',
|
|
240
|
-
messageKey:
|
|
244
|
+
messageKey: constants/* .SYSTEM_MESSAGES.DATABASE_CONFIG_NOT_AVAILABLE */.hg.DATABASE_CONFIG_NOT_AVAILABLE
|
|
241
245
|
});
|
|
242
246
|
}
|
|
243
247
|
return {
|
|
@@ -283,6 +287,8 @@ MultiTenantDataSourceService = multi_tenant_datasource_service_ts_decorate([
|
|
|
283
287
|
;// CONCATENATED MODULE: ./projects/nestjs-shared/src/modules/datasource/index.ts
|
|
284
288
|
|
|
285
289
|
|
|
290
|
+
// EXTERNAL MODULE: external "crypto"
|
|
291
|
+
var external_crypto_ = __webpack_require__(823);
|
|
286
292
|
;// CONCATENATED MODULE: ./projects/nestjs-shared/src/modules/event-bus/event-bus.explorer.ts
|
|
287
293
|
function event_bus_explorer_ts_decorate(decorators, target, key, desc) {
|
|
288
294
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -310,6 +316,8 @@ function event_bus_explorer_ts_param(paramIndex, decorator) {
|
|
|
310
316
|
|
|
311
317
|
|
|
312
318
|
|
|
319
|
+
|
|
320
|
+
|
|
313
321
|
class EventBusExplorer {
|
|
314
322
|
eventBus;
|
|
315
323
|
discovery;
|
|
@@ -358,7 +366,7 @@ class EventBusExplorer {
|
|
|
358
366
|
if (!patterns.length) continue;
|
|
359
367
|
const handler = method;
|
|
360
368
|
for (const pattern of patterns){
|
|
361
|
-
await bus.subscribe(pattern, (event)=>handler.call(instance, event));
|
|
369
|
+
await bus.subscribe(pattern, (event)=>runInEventContext(event, ()=>handler.call(instance, event)));
|
|
362
370
|
bound++;
|
|
363
371
|
}
|
|
364
372
|
}
|
|
@@ -393,6 +401,16 @@ EventBusExplorer = event_bus_explorer_ts_decorate([
|
|
|
393
401
|
typeof core_.MetadataScanner === "undefined" ? Object : core_.MetadataScanner
|
|
394
402
|
])
|
|
395
403
|
], EventBusExplorer);
|
|
404
|
+
function runInEventContext(event, handle) {
|
|
405
|
+
const actor = event.actor ?? {};
|
|
406
|
+
return logger_middleware/* .requestContext.run */.V8.run({
|
|
407
|
+
requestId: actor.requestId ?? (0,external_crypto_.randomUUID)(),
|
|
408
|
+
tenantId: actor.tenantId ?? undefined,
|
|
409
|
+
userId: actor.userId ?? undefined,
|
|
410
|
+
companyId: actor.companyId ?? undefined,
|
|
411
|
+
startTime: Date.now()
|
|
412
|
+
}, handle);
|
|
413
|
+
}
|
|
396
414
|
|
|
397
415
|
// EXTERNAL MODULE: external "@flusys/nestjs-core/config"
|
|
398
416
|
var config_ = __webpack_require__(307);
|
package/fesm/{67.js → 681.js}
RENAMED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as __rspack_external__flusys_nestjs_core_ff4ca4e2 from "@flusys/nestjs-core";
|
|
2
2
|
import * as __rspack_external__nestjs_core_d7b00a1a from "@nestjs/core";
|
|
3
|
+
import * as __rspack_external_crypto from "crypto";
|
|
3
4
|
import * as __rspack_external_typeorm from "typeorm";
|
|
4
5
|
import * as __rspack_external__keyv_redis_139d03ca from "@keyv/redis";
|
|
5
6
|
import * as __rspack_external_cacheable from "cacheable";
|
|
6
7
|
import * as __rspack_external_keyv from "keyv";
|
|
7
8
|
import * as __rspack_external_events from "events";
|
|
8
|
-
export const __rspack_esm_id =
|
|
9
|
-
export const __rspack_esm_ids = [
|
|
9
|
+
export const __rspack_esm_id = 681;
|
|
10
|
+
export const __rspack_esm_ids = [681];
|
|
10
11
|
export const __webpack_modules__ = {
|
|
11
12
|
864(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
12
13
|
/**
|
|
@@ -482,12 +483,61 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
482
483
|
});
|
|
483
484
|
|
|
484
485
|
|
|
486
|
+
},
|
|
487
|
+
374(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
488
|
+
/* import */ var _nestjs_common__rspack_import_0 = __webpack_require__(157);
|
|
489
|
+
/* import */ var _constants_message_keys_js__rspack_import_1 = __webpack_require__(389);
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
class PermissionSystemUnavailableException extends _nestjs_common__rspack_import_0.InternalServerErrorException {
|
|
493
|
+
constructor(){
|
|
494
|
+
super({
|
|
495
|
+
success: false,
|
|
496
|
+
message: 'Permission system temporarily unavailable',
|
|
497
|
+
messageKey: _constants_message_keys_js__rspack_import_1/* .ERROR_MESSAGES.PERMISSION_SYSTEM_UNAVAILABLE */.UU.PERMISSION_SYSTEM_UNAVAILABLE
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
class InsufficientPermissionsException extends _nestjs_common__rspack_import_0.ForbiddenException {
|
|
502
|
+
constructor(missingPermissions, operator = 'AND'){
|
|
503
|
+
const messageKey = operator === 'OR' ? _constants_message_keys_js__rspack_import_1/* .ERROR_MESSAGES.INSUFFICIENT_PERMISSIONS_OR */.UU.INSUFFICIENT_PERMISSIONS_OR : _constants_message_keys_js__rspack_import_1/* .ERROR_MESSAGES.INSUFFICIENT_PERMISSIONS */.UU.INSUFFICIENT_PERMISSIONS;
|
|
504
|
+
super({
|
|
505
|
+
success: false,
|
|
506
|
+
message: 'Insufficient permissions',
|
|
507
|
+
messageKey,
|
|
508
|
+
messageVariables: {
|
|
509
|
+
permissions: missingPermissions.join(', ')
|
|
510
|
+
},
|
|
511
|
+
missingPermissions,
|
|
512
|
+
operator
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
class NoPermissionsFoundException extends _nestjs_common__rspack_import_0.ForbiddenException {
|
|
517
|
+
constructor(){
|
|
518
|
+
super({
|
|
519
|
+
success: false,
|
|
520
|
+
message: 'No permissions found',
|
|
521
|
+
messageKey: _constants_message_keys_js__rspack_import_1/* .ERROR_MESSAGES.NO_PERMISSIONS_FOUND */.UU.NO_PERMISSIONS_FOUND
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
527
|
+
GS: () => (PermissionSystemUnavailableException),
|
|
528
|
+
d$: () => (NoPermissionsFoundException),
|
|
529
|
+
z8: () => (InsufficientPermissionsException)
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
|
|
485
533
|
},
|
|
486
534
|
657(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
487
535
|
/* import */ var _nestjs_common__rspack_import_0 = __webpack_require__(157);
|
|
488
536
|
/* import */ var _classes_hybrid_cache_class_js__rspack_import_1 = __webpack_require__(375);
|
|
489
|
-
/* import */ var
|
|
490
|
-
/* import */ var
|
|
537
|
+
/* import */ var _constants_index_js__rspack_import_2 = __webpack_require__(43);
|
|
538
|
+
/* import */ var _exceptions_permission_exception_js__rspack_import_3 = __webpack_require__(374);
|
|
539
|
+
/* import */ var _utils_permission_cache_key_util_js__rspack_import_4 = __webpack_require__(199);
|
|
540
|
+
/* import */ var _utils_permission_match_util_js__rspack_import_5 = __webpack_require__(788);
|
|
491
541
|
function _ts_decorate(decorators, target, key, desc) {
|
|
492
542
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
493
543
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
@@ -515,6 +565,8 @@ function _ts_param(paramIndex, decorator) {
|
|
|
515
565
|
|
|
516
566
|
|
|
517
567
|
|
|
568
|
+
|
|
569
|
+
|
|
518
570
|
class SharedPermissionCacheService {
|
|
519
571
|
cache;
|
|
520
572
|
config;
|
|
@@ -522,52 +574,56 @@ class SharedPermissionCacheService {
|
|
|
522
574
|
this.cache = cache;
|
|
523
575
|
this.config = {
|
|
524
576
|
enableCompanyFeature: false,
|
|
525
|
-
userPermissionKeyFormat:
|
|
526
|
-
companyPermissionKeyFormat:
|
|
577
|
+
userPermissionKeyFormat: _utils_permission_cache_key_util_js__rspack_import_4/* .DEFAULT_USER_PERMISSION_KEY_FORMAT */.q6,
|
|
578
|
+
companyPermissionKeyFormat: _utils_permission_cache_key_util_js__rspack_import_4/* .DEFAULT_COMPANY_PERMISSION_KEY_FORMAT */.s8,
|
|
527
579
|
...config
|
|
528
580
|
};
|
|
529
581
|
}
|
|
530
582
|
/** Read the cached permission codes for a user; empty array when cache is unavailable or unset */ async getPermissions(options) {
|
|
531
583
|
if (!this.cache) return [];
|
|
532
|
-
const cacheKey = (0,
|
|
584
|
+
const cacheKey = (0,_utils_permission_cache_key_util_js__rspack_import_4/* .buildPermissionCacheKey */.nt)(options, this.config);
|
|
533
585
|
const cached = await this.cache.get(cacheKey);
|
|
534
586
|
if (!cached) return [];
|
|
535
587
|
return Array.isArray(cached) ? cached : cached.backendCodes || [];
|
|
536
588
|
}
|
|
537
589
|
/** Overwrite the cached permission codes for a user with a fixed list */ async setPermissions(options, permissions, ttl) {
|
|
538
590
|
if (!this.cache) return;
|
|
539
|
-
const cacheKey = (0,
|
|
591
|
+
const cacheKey = (0,_utils_permission_cache_key_util_js__rspack_import_4/* .buildPermissionCacheKey */.nt)(options, this.config);
|
|
540
592
|
await this.cache.set(cacheKey, permissions, ttl);
|
|
541
593
|
}
|
|
542
594
|
/** Clear the cached permission codes for a user */ async clearPermissions(options) {
|
|
543
595
|
if (!this.cache) return;
|
|
544
|
-
const cacheKey = (0,
|
|
596
|
+
const cacheKey = (0,_utils_permission_cache_key_util_js__rspack_import_4/* .buildPermissionCacheKey */.nt)(options, this.config);
|
|
545
597
|
await this.cache.del(cacheKey);
|
|
546
598
|
}
|
|
547
599
|
/** Check a single permission against the cached list, honoring `*` and `prefix.*` wildcards */ async hasPermission(options, requiredPermission) {
|
|
548
600
|
const permissions = await this.getPermissions(options);
|
|
549
601
|
return this.matchPermission(permissions, requiredPermission);
|
|
550
602
|
}
|
|
603
|
+
/** Throws 403 unless `user` holds `requiredPermission`; fails closed (500) when no cache is wired up. */ async assertPermission(user, requiredPermission) {
|
|
604
|
+
if (!this.isCacheConfigured()) throw new _exceptions_permission_exception_js__rspack_import_3/* .PermissionSystemUnavailableException */.GS();
|
|
605
|
+
const allowed = !!user?.id && await this.hasPermission({
|
|
606
|
+
userId: user.id,
|
|
607
|
+
companyId: user.companyId,
|
|
608
|
+
branchId: user.branchId
|
|
609
|
+
}, requiredPermission);
|
|
610
|
+
if (!allowed) throw new _exceptions_permission_exception_js__rspack_import_3/* .InsufficientPermissionsException */.z8([
|
|
611
|
+
requiredPermission
|
|
612
|
+
], 'AND');
|
|
613
|
+
}
|
|
551
614
|
/** Whether a cache instance is wired up; false means permission checks can't be served at all */ isCacheConfigured() {
|
|
552
615
|
return !!this.cache;
|
|
553
616
|
}
|
|
554
617
|
/** Match an already-fetched permission list against a required permission, honoring `*` and `prefix.*` wildcards */ matchPermission(userPermissions, requiredPermission) {
|
|
555
|
-
|
|
556
|
-
for (const permission of userPermissions){
|
|
557
|
-
if (permission === '*') return true;
|
|
558
|
-
if (permission.endsWith('.*') && requiredPermission.startsWith(permission.slice(0, -1))) {
|
|
559
|
-
return true;
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
return false;
|
|
618
|
+
return (0,_utils_permission_match_util_js__rspack_import_5/* .matchesPermission */.x)(userPermissions, requiredPermission);
|
|
563
619
|
}
|
|
564
620
|
}
|
|
565
621
|
SharedPermissionCacheService = _ts_decorate([
|
|
566
622
|
(0,_nestjs_common__rspack_import_0.Injectable)(),
|
|
567
623
|
_ts_param(0, (0,_nestjs_common__rspack_import_0.Optional)()),
|
|
568
|
-
_ts_param(0, (0,_nestjs_common__rspack_import_0.Inject)(
|
|
624
|
+
_ts_param(0, (0,_nestjs_common__rspack_import_0.Inject)(_constants_index_js__rspack_import_2/* .CACHE_INSTANCE */.zl)),
|
|
569
625
|
_ts_param(1, (0,_nestjs_common__rspack_import_0.Optional)()),
|
|
570
|
-
_ts_param(1, (0,_nestjs_common__rspack_import_0.Inject)(
|
|
626
|
+
_ts_param(1, (0,_nestjs_common__rspack_import_0.Inject)(_constants_index_js__rspack_import_2/* .PERMISSION_GUARD_CONFIG */.Lw)),
|
|
571
627
|
_ts_metadata("design:type", Function),
|
|
572
628
|
_ts_metadata("design:paramtypes", [
|
|
573
629
|
typeof _classes_hybrid_cache_class_js__rspack_import_1/* .HybridCache */.l === "undefined" ? Object : _classes_hybrid_cache_class_js__rspack_import_1/* .HybridCache */.l,
|
|
@@ -785,6 +841,22 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
785
841
|
});
|
|
786
842
|
|
|
787
843
|
|
|
844
|
+
},
|
|
845
|
+
788(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
846
|
+
/** Whether `granted` covers `required`, honoring `*` (everything) and `prefix.*` (everything under prefix) wildcards */ function matchesPermission(granted, required) {
|
|
847
|
+
if (granted.includes(required)) return true;
|
|
848
|
+
for (const permission of granted){
|
|
849
|
+
if (permission === '*') return true;
|
|
850
|
+
if (permission.endsWith('.*') && required.startsWith(permission.slice(0, -1))) return true;
|
|
851
|
+
}
|
|
852
|
+
return false;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
856
|
+
x: () => (matchesPermission)
|
|
857
|
+
});
|
|
858
|
+
|
|
859
|
+
|
|
788
860
|
},
|
|
789
861
|
436(module) {
|
|
790
862
|
|
|
@@ -797,6 +869,12 @@ module.exports = __rspack_external__flusys_nestjs_core_ff4ca4e2;
|
|
|
797
869
|
module.exports = __rspack_external__nestjs_core_d7b00a1a;
|
|
798
870
|
|
|
799
871
|
|
|
872
|
+
},
|
|
873
|
+
823(module) {
|
|
874
|
+
|
|
875
|
+
module.exports = __rspack_external_crypto;
|
|
876
|
+
|
|
877
|
+
|
|
800
878
|
},
|
|
801
879
|
158(module) {
|
|
802
880
|
|
package/fesm/{720.js → 948.js}
RENAMED
|
@@ -6,9 +6,9 @@ import * as __rspack_external_fs from "fs";
|
|
|
6
6
|
import * as __rspack_external_path from "path";
|
|
7
7
|
import * as __rspack_external_winston from "winston";
|
|
8
8
|
import * as __rspack_external_async_hooks from "async_hooks";
|
|
9
|
-
import * as
|
|
10
|
-
export const __rspack_esm_id =
|
|
11
|
-
export const __rspack_esm_ids = [
|
|
9
|
+
import * as __rspack_external_node_crypto_2e7c4b46 from "node:crypto";
|
|
10
|
+
export const __rspack_esm_id = 948;
|
|
11
|
+
export const __rspack_esm_ids = [948];
|
|
12
12
|
export const __webpack_modules__ = {
|
|
13
13
|
245(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
14
14
|
|
|
@@ -281,7 +281,10 @@ const DEFAULT_EVENT_SERVICE_NAME = 'flusys';
|
|
|
281
281
|
__webpack_require__.d(__webpack_exports__, {
|
|
282
282
|
BC: () => (/* reexport safe */ _permissions_js__rspack_import_0.BC),
|
|
283
283
|
Bz: () => (/* reexport safe */ _permissions_js__rspack_import_0.Bz),
|
|
284
|
+
DP: () => (/* reexport safe */ _permissions_js__rspack_import_0.DP),
|
|
284
285
|
Em: () => (/* reexport safe */ _permissions_js__rspack_import_0.Em),
|
|
286
|
+
G0: () => (/* reexport safe */ _permissions_js__rspack_import_0.G0),
|
|
287
|
+
GH: () => (/* reexport safe */ _permissions_js__rspack_import_0.GH),
|
|
285
288
|
GT: () => (/* reexport safe */ _permissions_js__rspack_import_0.GT),
|
|
286
289
|
Jj: () => (/* reexport safe */ _permissions_js__rspack_import_0.Jj),
|
|
287
290
|
N3: () => (/* reexport safe */ _permissions_js__rspack_import_0.N3),
|
|
@@ -300,8 +303,11 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
300
303
|
Y7: () => (/* reexport safe */ _permissions_js__rspack_import_0.Y7),
|
|
301
304
|
_X: () => (/* reexport safe */ _permissions_js__rspack_import_0._X),
|
|
302
305
|
aO: () => (/* reexport safe */ _permissions_js__rspack_import_0.aO),
|
|
306
|
+
aT: () => (/* reexport safe */ _permissions_js__rspack_import_0.aT),
|
|
303
307
|
fS: () => (/* reexport safe */ _permissions_js__rspack_import_0.fS),
|
|
304
308
|
hg: () => (/* reexport safe */ _message_keys_js__rspack_import_1.hg),
|
|
309
|
+
kA: () => (/* reexport safe */ _permissions_js__rspack_import_0.kA),
|
|
310
|
+
kd: () => (/* reexport safe */ _permissions_js__rspack_import_0.kd),
|
|
305
311
|
l3: () => (/* reexport safe */ _permissions_js__rspack_import_0.l3),
|
|
306
312
|
mK: () => (/* reexport safe */ _message_keys_js__rspack_import_1.mK),
|
|
307
313
|
mV: () => (/* reexport safe */ _permissions_js__rspack_import_0.mV),
|
|
@@ -496,6 +502,35 @@ const FORM_RESULT_PERMISSIONS = {
|
|
|
496
502
|
UPDATE: 'form-result.update',
|
|
497
503
|
DELETE: 'form-result.delete'
|
|
498
504
|
};
|
|
505
|
+
// ==================== ENTITY BUILDER MODULE ====================
|
|
506
|
+
// Static metadata permissions only. Per-dynamic-entity record permissions
|
|
507
|
+
// (`entity_builder.entity.<entityCode>.<action>`) are checked by flows running as the caller;
|
|
508
|
+
// ENTITY_BUILDER_ALL_DYNAMIC is the wildcard that grants all of them (and nothing else).
|
|
509
|
+
const ENTITY_DEFINITION_PERMISSIONS = {
|
|
510
|
+
CREATE: 'entity_builder.entity_definition.create',
|
|
511
|
+
READ: 'entity_builder.entity_definition.read',
|
|
512
|
+
UPDATE: 'entity_builder.entity_definition.update',
|
|
513
|
+
DELETE: 'entity_builder.entity_definition.delete'
|
|
514
|
+
};
|
|
515
|
+
const FIELD_DEFINITION_PERMISSIONS = {
|
|
516
|
+
READ: 'entity_builder.field_definition.read',
|
|
517
|
+
UPDATE: 'entity_builder.field_definition.update'
|
|
518
|
+
};
|
|
519
|
+
const FLOW_DEFINITION_PERMISSIONS = {
|
|
520
|
+
CREATE: 'entity_builder.flow_definition.create',
|
|
521
|
+
READ: 'entity_builder.flow_definition.read',
|
|
522
|
+
UPDATE: 'entity_builder.flow_definition.update',
|
|
523
|
+
DELETE: 'entity_builder.flow_definition.delete',
|
|
524
|
+
TEST: 'entity_builder.flow_definition.test',
|
|
525
|
+
/** Needed to save a flow that runs as the system (bypassing per-entity permissions). */ SYSTEM: 'entity_builder.flow_definition.system',
|
|
526
|
+
/** Needed to save a flow containing a code node (sandboxed JavaScript). */ CODE: 'entity_builder.flow_definition.code'
|
|
527
|
+
};
|
|
528
|
+
const ENTITY_BUILDER_DYNAMIC_PREFIX = 'entity_builder.entity';
|
|
529
|
+
const ENTITY_BUILDER_ALL_DYNAMIC = {
|
|
530
|
+
ALL: `${ENTITY_BUILDER_DYNAMIC_PREFIX}.*`
|
|
531
|
+
};
|
|
532
|
+
const dynamicEntityPermissionParent = (entityCode)=>`${ENTITY_BUILDER_DYNAMIC_PREFIX}.${entityCode}`;
|
|
533
|
+
const dynamicEntityPermission = (entityCode, action)=>`${dynamicEntityPermissionParent(entityCode)}.${action}`;
|
|
499
534
|
// ==================== EVENT MANAGER MODULE ====================
|
|
500
535
|
const EVENT_PERMISSIONS = {
|
|
501
536
|
CREATE: 'event.create',
|
|
@@ -590,6 +625,11 @@ const PERMISSIONS = {
|
|
|
590
625
|
// Form Builder
|
|
591
626
|
FORM: FORM_PERMISSIONS,
|
|
592
627
|
FORM_RESULT: FORM_RESULT_PERMISSIONS,
|
|
628
|
+
// Entity Builder
|
|
629
|
+
ENTITY_DEFINITION: ENTITY_DEFINITION_PERMISSIONS,
|
|
630
|
+
FIELD_DEFINITION: FIELD_DEFINITION_PERMISSIONS,
|
|
631
|
+
FLOW_DEFINITION: FLOW_DEFINITION_PERMISSIONS,
|
|
632
|
+
ENTITY_BUILDER_ALL_DYNAMIC: ENTITY_BUILDER_ALL_DYNAMIC,
|
|
593
633
|
// Event Manager
|
|
594
634
|
EVENT: EVENT_PERMISSIONS,
|
|
595
635
|
// Notification
|
|
@@ -612,7 +652,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
612
652
|
}, {
|
|
613
653
|
BC: USER_PERMISSIONS,
|
|
614
654
|
Bz: AI_ASSISTANT_PERMISSIONS,
|
|
655
|
+
DP: ENTITY_DEFINITION_PERMISSIONS,
|
|
615
656
|
Em: STORAGE_CONFIG_PERMISSIONS,
|
|
657
|
+
G0: ENTITY_BUILDER_ALL_DYNAMIC,
|
|
658
|
+
GH: dynamicEntityPermissionParent,
|
|
616
659
|
GT: FORM_RESULT_PERMISSIONS,
|
|
617
660
|
Jj: PERMISSIONS,
|
|
618
661
|
N3: TRANSLATION_KEY_PERMISSIONS,
|
|
@@ -630,7 +673,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
630
673
|
Y7: ACTION_PERMISSIONS,
|
|
631
674
|
_X: USER_ACTION_PERMISSIONS,
|
|
632
675
|
aO: COMPANY_ACTION_PERMISSIONS,
|
|
676
|
+
aT: dynamicEntityPermission,
|
|
633
677
|
fS: TRANSLATION_PERMISSIONS,
|
|
678
|
+
kA: FIELD_DEFINITION_PERMISSIONS,
|
|
679
|
+
kd: FLOW_DEFINITION_PERMISSIONS,
|
|
634
680
|
l3: SOCIAL_AUTH_CONFIG_PERMISSIONS,
|
|
635
681
|
mV: ROLE_PERMISSIONS,
|
|
636
682
|
rH: NOTIFICATION_PERMISSIONS,
|
|
@@ -644,7 +690,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
644
690
|
|
|
645
691
|
|
|
646
692
|
},
|
|
647
|
-
|
|
693
|
+
591(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
648
694
|
|
|
649
695
|
// EXPORTS
|
|
650
696
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -653,7 +699,8 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
653
699
|
RE: () => (/* binding */ getRequestId),
|
|
654
700
|
EO: () => (/* binding */ getTenantId),
|
|
655
701
|
F6: () => (/* binding */ getUserId),
|
|
656
|
-
V8: () => (/* binding */ requestContext)
|
|
702
|
+
V8: () => (/* binding */ requestContext),
|
|
703
|
+
ZV: () => (/* binding */ setRequestUser)
|
|
657
704
|
});
|
|
658
705
|
|
|
659
706
|
// EXTERNAL MODULE: external "@flusys/nestjs-core/config"
|
|
@@ -662,7 +709,7 @@ var config_ = __webpack_require__(307);
|
|
|
662
709
|
var common_ = __webpack_require__(157);
|
|
663
710
|
;// CONCATENATED MODULE: external "async_hooks"
|
|
664
711
|
|
|
665
|
-
;// CONCATENATED MODULE: external "
|
|
712
|
+
;// CONCATENATED MODULE: external "node:crypto"
|
|
666
713
|
|
|
667
714
|
// EXTERNAL MODULE: ./projects/nestjs-shared/src/classes/winston.logger.class.ts + 5 modules
|
|
668
715
|
var winston_logger_class = __webpack_require__(245);
|
|
@@ -705,6 +752,12 @@ const getRequestId = ()=>requestContext.getStore()?.requestId;
|
|
|
705
752
|
const getTenantId = ()=>requestContext.getStore()?.tenantId;
|
|
706
753
|
const getUserId = ()=>requestContext.getStore()?.userId;
|
|
707
754
|
const getCompanyId = ()=>requestContext.getStore()?.companyId;
|
|
755
|
+
function setRequestUser(user) {
|
|
756
|
+
const store = requestContext.getStore();
|
|
757
|
+
if (!store || !user) return;
|
|
758
|
+
store.userId = user.id;
|
|
759
|
+
store.companyId = user.companyId;
|
|
760
|
+
}
|
|
708
761
|
// Helper Functions
|
|
709
762
|
function summarizeRequestBody(body) {
|
|
710
763
|
if (!body) return undefined;
|
|
@@ -778,7 +831,7 @@ function getClientIp(req) {
|
|
|
778
831
|
class LoggerMiddleware {
|
|
779
832
|
logger = winston_logger_class/* .instance */.K;
|
|
780
833
|
use(req, res, next) {
|
|
781
|
-
const requestId = req.headers[constants/* .REQUEST_ID_HEADER */.kC] || (0,
|
|
834
|
+
const requestId = req.headers[constants/* .REQUEST_ID_HEADER */.kC] || (0,__rspack_external_node_crypto_2e7c4b46.randomUUID)();
|
|
782
835
|
const tenantId = req.headers[TENANT_ID_HEADER];
|
|
783
836
|
const startTime = Date.now();
|
|
784
837
|
res.setHeader(constants/* .REQUEST_ID_HEADER */.kC, requestId);
|
package/fesm/chunks/123.js
CHANGED
|
@@ -3,11 +3,10 @@ export const __rspack_esm_ids = [123];
|
|
|
3
3
|
export const __webpack_modules__ = {
|
|
4
4
|
46(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
5
5
|
/* import */ var _nestjs_common__rspack_import_0 = __webpack_require__(157);
|
|
6
|
-
/* import */ var
|
|
7
|
-
/* import */ var
|
|
8
|
-
/* import */ var
|
|
9
|
-
/* import */ var
|
|
10
|
-
/* import */ var _event_transport_registry_js__rspack_import_1 = __webpack_require__(149);
|
|
6
|
+
/* import */ var _constants_index_js__rspack_import_1 = __webpack_require__(43);
|
|
7
|
+
/* import */ var _utils_event_pattern_util_js__rspack_import_4 = __webpack_require__(456);
|
|
8
|
+
/* import */ var _utils_optional_module_util_js__rspack_import_3 = __webpack_require__(368);
|
|
9
|
+
/* import */ var _event_transport_registry_js__rspack_import_2 = __webpack_require__(149);
|
|
11
10
|
/**
|
|
12
11
|
* Optional RabbitMQ event transport
|
|
13
12
|
* Requires: npm install amqplib
|
|
@@ -35,11 +34,11 @@ class RabbitMqTransport {
|
|
|
35
34
|
async connect() {
|
|
36
35
|
let amqp;
|
|
37
36
|
try {
|
|
38
|
-
amqp = await (0,
|
|
37
|
+
amqp = await (0,_utils_optional_module_util_js__rspack_import_3/* .loadOptionalModule */.l)('amqplib');
|
|
39
38
|
} catch {
|
|
40
39
|
throw new _nestjs_common__rspack_import_0.InternalServerErrorException({
|
|
41
40
|
message: 'amqplib not found',
|
|
42
|
-
messageKey:
|
|
41
|
+
messageKey: _constants_index_js__rspack_import_1/* .SYSTEM_MESSAGES.SDK_NOT_INSTALLED */.hg.SDK_NOT_INSTALLED,
|
|
43
42
|
messageVariables: {
|
|
44
43
|
sdk: 'amqplib'
|
|
45
44
|
}
|
|
@@ -98,7 +97,7 @@ class RabbitMqTransport {
|
|
|
98
97
|
return Boolean(this.channel);
|
|
99
98
|
}
|
|
100
99
|
get exchange() {
|
|
101
|
-
return this.config.exchange ??
|
|
100
|
+
return this.config.exchange ?? _constants_index_js__rspack_import_1/* .DEFAULT_EVENT_EXCHANGE */.Hq;
|
|
102
101
|
}
|
|
103
102
|
get queue() {
|
|
104
103
|
return this.config.queue ?? `${(/* inlined export .DEFAULT_EVENT_SERVICE_NAME */"flusys")}.events`;
|
|
@@ -107,7 +106,7 @@ class RabbitMqTransport {
|
|
|
107
106
|
return this.config.durable ?? true;
|
|
108
107
|
}
|
|
109
108
|
/** `**` is the FLUSYS alias for the AMQP multi word wildcard */ toRoutingKey(pattern) {
|
|
110
|
-
return pattern.split('.').map((segment)=>(0,
|
|
109
|
+
return pattern.split('.').map((segment)=>(0,_utils_event_pattern_util_js__rspack_import_4/* .isMultiWildcard */._c)(segment) ? '#' : segment).join('.');
|
|
111
110
|
}
|
|
112
111
|
async startConsuming() {
|
|
113
112
|
// Captured, because a reconnect swaps `this.channel` while deliveries are in
|
|
@@ -162,7 +161,7 @@ class RabbitMqTransport {
|
|
|
162
161
|
await connection?.close().catch(()=>{});
|
|
163
162
|
}
|
|
164
163
|
}
|
|
165
|
-
|
|
164
|
+
_event_transport_registry_js__rspack_import_2/* .EventTransportRegistry.register */.P.register('rabbitmq', (config)=>new RabbitMqTransport(config));
|
|
166
165
|
|
|
167
166
|
__webpack_require__.d(__webpack_exports__, {
|
|
168
167
|
RabbitMqTransport: () => (RabbitMqTransport)
|
package/fesm/chunks/37.js
CHANGED
|
@@ -3,10 +3,9 @@ export const __rspack_esm_ids = [37];
|
|
|
3
3
|
export const __webpack_modules__ = {
|
|
4
4
|
20(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
5
5
|
/* import */ var _nestjs_common__rspack_import_0 = __webpack_require__(157);
|
|
6
|
-
/* import */ var
|
|
7
|
-
/* import */ var
|
|
8
|
-
/* import */ var
|
|
9
|
-
/* import */ var _event_transport_registry_js__rspack_import_1 = __webpack_require__(149);
|
|
6
|
+
/* import */ var _constants_index_js__rspack_import_1 = __webpack_require__(43);
|
|
7
|
+
/* import */ var _utils_optional_module_util_js__rspack_import_3 = __webpack_require__(368);
|
|
8
|
+
/* import */ var _event_transport_registry_js__rspack_import_2 = __webpack_require__(149);
|
|
10
9
|
/**
|
|
11
10
|
* Optional Kafka event transport
|
|
12
11
|
* Requires: npm install kafkajs
|
|
@@ -36,11 +35,11 @@ const DEFAULT_BROKERS = [
|
|
|
36
35
|
async connect() {
|
|
37
36
|
let kafkajs;
|
|
38
37
|
try {
|
|
39
|
-
kafkajs = await (0,
|
|
38
|
+
kafkajs = await (0,_utils_optional_module_util_js__rspack_import_3/* .loadOptionalModule */.l)('kafkajs');
|
|
40
39
|
} catch {
|
|
41
40
|
throw new _nestjs_common__rspack_import_0.InternalServerErrorException({
|
|
42
41
|
message: 'kafkajs not found',
|
|
43
|
-
messageKey:
|
|
42
|
+
messageKey: _constants_index_js__rspack_import_1/* .SYSTEM_MESSAGES.SDK_NOT_INSTALLED */.hg.SDK_NOT_INSTALLED,
|
|
44
43
|
messageVariables: {
|
|
45
44
|
sdk: 'kafkajs'
|
|
46
45
|
}
|
|
@@ -98,7 +97,7 @@ const DEFAULT_BROKERS = [
|
|
|
98
97
|
return Boolean(this.producer);
|
|
99
98
|
}
|
|
100
99
|
get topic() {
|
|
101
|
-
return this.config.topic ??
|
|
100
|
+
return this.config.topic ?? _constants_index_js__rspack_import_1/* .DEFAULT_EVENT_TOPIC */.nx;
|
|
102
101
|
}
|
|
103
102
|
async startConsuming() {
|
|
104
103
|
if (this.running || !this.client) return;
|
|
@@ -132,7 +131,7 @@ const DEFAULT_BROKERS = [
|
|
|
132
131
|
}
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
|
-
|
|
134
|
+
_event_transport_registry_js__rspack_import_2/* .EventTransportRegistry.register */.P.register('kafka', (config)=>new KafkaTransport(config));
|
|
136
135
|
|
|
137
136
|
__webpack_require__.d(__webpack_exports__, {
|
|
138
137
|
KafkaTransport: () => (KafkaTransport)
|
package/fesm/classes/index.js
CHANGED
|
@@ -3,11 +3,11 @@ export const __rspack_esm_ids = [29];
|
|
|
3
3
|
export const __webpack_modules__ = {};
|
|
4
4
|
import { __webpack_require__ } from '../runtime.js';
|
|
5
5
|
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
6
|
-
import * as __rspack_chunk_1 from '../
|
|
6
|
+
import * as __rspack_chunk_1 from '../948.js';
|
|
7
7
|
__webpack_require__.C(__rspack_chunk_1);
|
|
8
|
-
import * as __rspack_chunk_2 from '../
|
|
8
|
+
import * as __rspack_chunk_2 from '../183.js';
|
|
9
9
|
__webpack_require__.C(__rspack_chunk_2);
|
|
10
|
-
import * as __rspack_chunk_3 from '../
|
|
10
|
+
import * as __rspack_chunk_3 from '../681.js';
|
|
11
11
|
__webpack_require__.C(__rspack_chunk_3);
|
|
12
12
|
import * as __rspack_chunk_4 from '../470.js';
|
|
13
13
|
__webpack_require__.C(__rspack_chunk_4);
|
|
@@ -23,10 +23,14 @@ var __webpack_exports__DOMAIN_EVENT_VERSION = __webpack_exports__.xC;
|
|
|
23
23
|
var __webpack_exports__DisabledEventBus = __webpack_exports__.XI;
|
|
24
24
|
var __webpack_exports__EMAIL_CONFIG_PERMISSIONS = __webpack_exports__.V0;
|
|
25
25
|
var __webpack_exports__EMAIL_TEMPLATE_PERMISSIONS = __webpack_exports__.z$;
|
|
26
|
+
var __webpack_exports__ENTITY_BUILDER_ALL_DYNAMIC = __webpack_exports__.G0;
|
|
27
|
+
var __webpack_exports__ENTITY_DEFINITION_PERMISSIONS = __webpack_exports__.DP;
|
|
26
28
|
var __webpack_exports__EVENT_PERMISSIONS = __webpack_exports__.Ub;
|
|
27
29
|
var __webpack_exports__EventBusRegistry = __webpack_exports__.qS;
|
|
28
30
|
var __webpack_exports__EventTransportRegistry = __webpack_exports__.Pm;
|
|
31
|
+
var __webpack_exports__FIELD_DEFINITION_PERMISSIONS = __webpack_exports__.kA;
|
|
29
32
|
var __webpack_exports__FILE_PERMISSIONS = __webpack_exports__.S6;
|
|
33
|
+
var __webpack_exports__FLOW_DEFINITION_PERMISSIONS = __webpack_exports__.kd;
|
|
30
34
|
var __webpack_exports__FOLDER_PERMISSIONS = __webpack_exports__.wM;
|
|
31
35
|
var __webpack_exports__FORM_PERMISSIONS = __webpack_exports__.Wc;
|
|
32
36
|
var __webpack_exports__FORM_RESULT_PERMISSIONS = __webpack_exports__.GT;
|
|
@@ -55,8 +59,10 @@ var __webpack_exports__buildDomainEvent = __webpack_exports__.rv;
|
|
|
55
59
|
var __webpack_exports__buildQuery = __webpack_exports__.Zq;
|
|
56
60
|
var __webpack_exports__createApiController = __webpack_exports__.RD;
|
|
57
61
|
var __webpack_exports__createModuleLogger = __webpack_exports__.Xv;
|
|
62
|
+
var __webpack_exports__dynamicEntityPermission = __webpack_exports__.aT;
|
|
63
|
+
var __webpack_exports__dynamicEntityPermissionParent = __webpack_exports__.GH;
|
|
58
64
|
var __webpack_exports__getCastIntType = __webpack_exports__.Tj;
|
|
59
65
|
var __webpack_exports__getJsonColumnType = __webpack_exports__.pf;
|
|
60
66
|
var __webpack_exports__instance = __webpack_exports__.KJ;
|
|
61
67
|
var __webpack_exports__publishDomainEvent = __webpack_exports__.wT;
|
|
62
|
-
export { __webpack_exports__ACTION_PERMISSIONS as ACTION_PERMISSIONS, __webpack_exports__AI_ASSISTANT_PERMISSIONS as AI_ASSISTANT_PERMISSIONS, __webpack_exports__ApiService as ApiService, __webpack_exports__BRANCH_PERMISSIONS as BRANCH_PERMISSIONS, __webpack_exports__COMPANY_ACTION_PERMISSIONS as COMPANY_ACTION_PERMISSIONS, __webpack_exports__COMPANY_PERMISSIONS as COMPANY_PERMISSIONS, __webpack_exports__DOMAIN_EVENT_VERSION as DOMAIN_EVENT_VERSION, __webpack_exports__DisabledEventBus as DisabledEventBus, __webpack_exports__EMAIL_CONFIG_PERMISSIONS as EMAIL_CONFIG_PERMISSIONS, __webpack_exports__EMAIL_TEMPLATE_PERMISSIONS as EMAIL_TEMPLATE_PERMISSIONS, __webpack_exports__EVENT_PERMISSIONS as EVENT_PERMISSIONS, __webpack_exports__EventBusRegistry as EventBusRegistry, __webpack_exports__EventTransportRegistry as EventTransportRegistry, __webpack_exports__FILE_PERMISSIONS as FILE_PERMISSIONS, __webpack_exports__FOLDER_PERMISSIONS as FOLDER_PERMISSIONS, __webpack_exports__FORM_PERMISSIONS as FORM_PERMISSIONS, __webpack_exports__FORM_RESULT_PERMISSIONS as FORM_RESULT_PERMISSIONS, __webpack_exports__HybridCache as HybridCache, __webpack_exports__HybridEventBus as HybridEventBus, __webpack_exports__LANGUAGE_PERMISSIONS as LANGUAGE_PERMISSIONS, __webpack_exports__MemoryTransport as MemoryTransport, __webpack_exports__NOTIFICATION_PERMISSIONS as NOTIFICATION_PERMISSIONS, __webpack_exports__PERMISSIONS as PERMISSIONS, __webpack_exports__ROLE_ACTION_PERMISSIONS as ROLE_ACTION_PERMISSIONS, __webpack_exports__ROLE_PERMISSIONS as ROLE_PERMISSIONS, __webpack_exports__SOCIAL_AUTH_CONFIG_PERMISSIONS as SOCIAL_AUTH_CONFIG_PERMISSIONS, __webpack_exports__STORAGE_CONFIG_PERMISSIONS as STORAGE_CONFIG_PERMISSIONS, __webpack_exports__TASK_BOARD_PERMISSIONS as TASK_BOARD_PERMISSIONS, __webpack_exports__TASK_COMMENT_PERMISSIONS as TASK_COMMENT_PERMISSIONS, __webpack_exports__TASK_LABEL_PERMISSIONS as TASK_LABEL_PERMISSIONS, __webpack_exports__TASK_LIST_PERMISSIONS as TASK_LIST_PERMISSIONS, __webpack_exports__TASK_PERMISSIONS as TASK_PERMISSIONS, __webpack_exports__TRANSLATION_KEY_PERMISSIONS as TRANSLATION_KEY_PERMISSIONS, __webpack_exports__TRANSLATION_PERMISSIONS as TRANSLATION_PERMISSIONS, __webpack_exports__UPLOAD_CONFIG_PERMISSIONS as UPLOAD_CONFIG_PERMISSIONS, __webpack_exports__USER_ACTION_PERMISSIONS as USER_ACTION_PERMISSIONS, __webpack_exports__USER_PERMISSIONS as USER_PERMISSIONS, __webpack_exports__USER_ROLE_PERMISSIONS as USER_ROLE_PERMISSIONS, __webpack_exports__buildDomainEvent as buildDomainEvent, __webpack_exports__buildQuery as buildQuery, __webpack_exports__createApiController as createApiController, __webpack_exports__createModuleLogger as createModuleLogger, __webpack_exports__getCastIntType as getCastIntType, __webpack_exports__getJsonColumnType as getJsonColumnType, __webpack_exports__instance as instance, __webpack_exports__publishDomainEvent as publishDomainEvent };
|
|
68
|
+
export { __webpack_exports__ACTION_PERMISSIONS as ACTION_PERMISSIONS, __webpack_exports__AI_ASSISTANT_PERMISSIONS as AI_ASSISTANT_PERMISSIONS, __webpack_exports__ApiService as ApiService, __webpack_exports__BRANCH_PERMISSIONS as BRANCH_PERMISSIONS, __webpack_exports__COMPANY_ACTION_PERMISSIONS as COMPANY_ACTION_PERMISSIONS, __webpack_exports__COMPANY_PERMISSIONS as COMPANY_PERMISSIONS, __webpack_exports__DOMAIN_EVENT_VERSION as DOMAIN_EVENT_VERSION, __webpack_exports__DisabledEventBus as DisabledEventBus, __webpack_exports__EMAIL_CONFIG_PERMISSIONS as EMAIL_CONFIG_PERMISSIONS, __webpack_exports__EMAIL_TEMPLATE_PERMISSIONS as EMAIL_TEMPLATE_PERMISSIONS, __webpack_exports__ENTITY_BUILDER_ALL_DYNAMIC as ENTITY_BUILDER_ALL_DYNAMIC, __webpack_exports__ENTITY_DEFINITION_PERMISSIONS as ENTITY_DEFINITION_PERMISSIONS, __webpack_exports__EVENT_PERMISSIONS as EVENT_PERMISSIONS, __webpack_exports__EventBusRegistry as EventBusRegistry, __webpack_exports__EventTransportRegistry as EventTransportRegistry, __webpack_exports__FIELD_DEFINITION_PERMISSIONS as FIELD_DEFINITION_PERMISSIONS, __webpack_exports__FILE_PERMISSIONS as FILE_PERMISSIONS, __webpack_exports__FLOW_DEFINITION_PERMISSIONS as FLOW_DEFINITION_PERMISSIONS, __webpack_exports__FOLDER_PERMISSIONS as FOLDER_PERMISSIONS, __webpack_exports__FORM_PERMISSIONS as FORM_PERMISSIONS, __webpack_exports__FORM_RESULT_PERMISSIONS as FORM_RESULT_PERMISSIONS, __webpack_exports__HybridCache as HybridCache, __webpack_exports__HybridEventBus as HybridEventBus, __webpack_exports__LANGUAGE_PERMISSIONS as LANGUAGE_PERMISSIONS, __webpack_exports__MemoryTransport as MemoryTransport, __webpack_exports__NOTIFICATION_PERMISSIONS as NOTIFICATION_PERMISSIONS, __webpack_exports__PERMISSIONS as PERMISSIONS, __webpack_exports__ROLE_ACTION_PERMISSIONS as ROLE_ACTION_PERMISSIONS, __webpack_exports__ROLE_PERMISSIONS as ROLE_PERMISSIONS, __webpack_exports__SOCIAL_AUTH_CONFIG_PERMISSIONS as SOCIAL_AUTH_CONFIG_PERMISSIONS, __webpack_exports__STORAGE_CONFIG_PERMISSIONS as STORAGE_CONFIG_PERMISSIONS, __webpack_exports__TASK_BOARD_PERMISSIONS as TASK_BOARD_PERMISSIONS, __webpack_exports__TASK_COMMENT_PERMISSIONS as TASK_COMMENT_PERMISSIONS, __webpack_exports__TASK_LABEL_PERMISSIONS as TASK_LABEL_PERMISSIONS, __webpack_exports__TASK_LIST_PERMISSIONS as TASK_LIST_PERMISSIONS, __webpack_exports__TASK_PERMISSIONS as TASK_PERMISSIONS, __webpack_exports__TRANSLATION_KEY_PERMISSIONS as TRANSLATION_KEY_PERMISSIONS, __webpack_exports__TRANSLATION_PERMISSIONS as TRANSLATION_PERMISSIONS, __webpack_exports__UPLOAD_CONFIG_PERMISSIONS as UPLOAD_CONFIG_PERMISSIONS, __webpack_exports__USER_ACTION_PERMISSIONS as USER_ACTION_PERMISSIONS, __webpack_exports__USER_PERMISSIONS as USER_PERMISSIONS, __webpack_exports__USER_ROLE_PERMISSIONS as USER_ROLE_PERMISSIONS, __webpack_exports__buildDomainEvent as buildDomainEvent, __webpack_exports__buildQuery as buildQuery, __webpack_exports__createApiController as createApiController, __webpack_exports__createModuleLogger as createModuleLogger, __webpack_exports__dynamicEntityPermission as dynamicEntityPermission, __webpack_exports__dynamicEntityPermissionParent as dynamicEntityPermissionParent, __webpack_exports__getCastIntType as getCastIntType, __webpack_exports__getJsonColumnType as getJsonColumnType, __webpack_exports__instance as instance, __webpack_exports__publishDomainEvent as publishDomainEvent };
|