mongodb-dynamic-api 3.2.1 → 4.1.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/CHANGELOG.md +69 -0
- package/README.md +36 -3
- package/package.json +5 -2
- package/src/adapters/socket-adapter.d.ts +4 -3
- package/src/adapters/socket-adapter.js +8 -1
- package/src/adapters/socket-adapter.js.map +1 -1
- package/src/builders/route-decorators/auth-decorators.builder.d.ts +1 -1
- package/src/builders/route-decorators/route-decorators.builder.d.ts +1 -1
- package/src/builders/route-decorators/route-decorators.builder.js.map +1 -1
- package/src/decorators/validator-pipe.decorator.js.map +1 -1
- package/src/dynamic-api.module.js +13 -8
- package/src/dynamic-api.module.js.map +1 -1
- package/src/gateways/base.gateway.js +10 -2
- package/src/gateways/base.gateway.js.map +1 -1
- package/src/gateways/dynamic-api-broadcast.gateway.d.ts +13 -1
- package/src/gateways/dynamic-api-broadcast.gateway.js +32 -0
- package/src/gateways/dynamic-api-broadcast.gateway.js.map +1 -1
- package/src/guards/jwt-socket.guard.js +1 -1
- package/src/guards/jwt-socket.guard.js.map +1 -1
- package/src/helpers/index.d.ts +1 -0
- package/src/helpers/index.js +1 -0
- package/src/helpers/index.js.map +1 -1
- package/src/helpers/resolve-rooms.helper.d.ts +3 -0
- package/src/helpers/resolve-rooms.helper.js +18 -0
- package/src/helpers/resolve-rooms.helper.js.map +1 -0
- package/src/helpers/swagger-config.helper.js.map +1 -1
- package/src/interceptors/dynamic-api-cache.interceptor.d.ts +3 -2
- package/src/interceptors/dynamic-api-cache.interceptor.js +4 -0
- package/src/interceptors/dynamic-api-cache.interceptor.js.map +1 -1
- package/src/interfaces/dynamic-api-ability.interface.d.ts +2 -1
- package/src/interfaces/dynamic-api-broadcast-config.interface.d.ts +2 -1
- package/src/interfaces/dynamic-api-decorator-builder.interface.d.ts +1 -1
- package/src/interfaces/dynamic-api-global-state.interface.d.ts +3 -0
- package/src/interfaces/dynamic-api-swagger-options.type.d.ts +1 -1
- package/src/modules/auth/auth-broadcast.helper.d.ts +3 -0
- package/src/modules/auth/auth-broadcast.helper.js +11 -0
- package/src/modules/auth/auth-broadcast.helper.js.map +1 -0
- package/src/modules/auth/auth-events.constants.d.ts +13 -0
- package/src/modules/auth/auth-events.constants.js +28 -0
- package/src/modules/auth/auth-events.constants.js.map +1 -0
- package/src/modules/auth/auth.helper.d.ts +20 -6
- package/src/modules/auth/auth.helper.js +34 -10
- package/src/modules/auth/auth.helper.js.map +1 -1
- package/src/modules/auth/auth.module.d.ts +5 -2
- package/src/modules/auth/auth.module.js +46 -7
- package/src/modules/auth/auth.module.js.map +1 -1
- package/src/modules/auth/guards/index.d.ts +2 -0
- package/src/modules/auth/guards/index.js +2 -0
- package/src/modules/auth/guards/index.js.map +1 -1
- package/src/modules/auth/guards/jwt-refresh/jwt-refresh.guard.d.ts +4 -0
- package/src/modules/auth/guards/jwt-refresh/jwt-refresh.guard.js +18 -0
- package/src/modules/auth/guards/jwt-refresh/jwt-refresh.guard.js.map +1 -0
- package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js +1 -1
- package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js.map +1 -1
- package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.d.ts +8 -0
- package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.js +62 -0
- package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.js.map +1 -0
- package/src/modules/auth/index.d.ts +2 -0
- package/src/modules/auth/index.js +2 -0
- package/src/modules/auth/index.js.map +1 -1
- package/src/modules/auth/interfaces/auth-controller.interface.d.ts +19 -4
- package/src/modules/auth/interfaces/auth-gateway.interface.d.ts +2 -0
- package/src/modules/auth/interfaces/auth-options.interface.d.ts +23 -2
- package/src/modules/auth/interfaces/auth-service.interface.d.ts +3 -0
- package/src/modules/auth/mixins/auth-controller.mixin.d.ts +2 -2
- package/src/modules/auth/mixins/auth-controller.mixin.js +114 -18
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/modules/auth/mixins/auth-gateway.mixin.d.ts +2 -2
- package/src/modules/auth/mixins/auth-gateway.mixin.js +65 -31
- package/src/modules/auth/mixins/auth-gateway.mixin.js.map +1 -1
- package/src/modules/auth/services/base-auth.service.d.ts +9 -0
- package/src/modules/auth/services/base-auth.service.js +74 -15
- package/src/modules/auth/services/base-auth.service.js.map +1 -1
- package/src/modules/auth/strategies/index.d.ts +1 -0
- package/src/modules/auth/strategies/index.js +1 -0
- package/src/modules/auth/strategies/index.js.map +1 -1
- package/src/modules/auth/strategies/jwt-refresh.strategy.d.ts +14 -0
- package/src/modules/auth/strategies/jwt-refresh.strategy.js +45 -0
- package/src/modules/auth/strategies/jwt-refresh.strategy.js.map +1 -0
- package/src/modules/auth/strategies/jwt.strategy.d.ts +3 -1
- package/src/modules/auth/strategies/jwt.strategy.js.map +1 -1
- package/src/routes/aggregate/base-aggregate.service.js.map +1 -1
- package/src/routes/create-many/base-create-many.service.js.map +1 -1
- package/src/routes/create-one/base-create-one.service.js.map +1 -1
- package/src/routes/delete-many/base-delete-many.service.js.map +1 -1
- package/src/routes/delete-one/base-delete-one.service.js.map +1 -1
- package/src/routes/duplicate-many/base-duplicate-many.service.js +4 -3
- package/src/routes/duplicate-many/base-duplicate-many.service.js.map +1 -1
- package/src/routes/duplicate-one/base-duplicate-one.service.js +3 -2
- package/src/routes/duplicate-one/base-duplicate-one.service.js.map +1 -1
- package/src/routes/get-many/base-get-many.service.js.map +1 -1
- package/src/routes/get-one/base-get-one.service.js.map +1 -1
- package/src/routes/replace-one/base-replace-one.service.js +3 -2
- package/src/routes/replace-one/base-replace-one.service.js.map +1 -1
- package/src/routes/update-many/base-update-many.service.js.map +1 -1
- package/src/routes/update-one/base-update-one.service.js.map +1 -1
- package/src/services/base/base.service.d.ts +3 -3
- package/src/services/base/base.service.js +26 -8
- package/src/services/base/base.service.js.map +1 -1
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js +10 -2
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js.map +1 -1
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js +3 -0
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
- package/src/version.json +1 -1
- package/test/e2e.setup.d.ts +25 -2
- package/test/e2e.setup.js +150 -4
- package/test/e2e.setup.js.map +1 -1
- package/test/for-feature/base-entity.e2e-spec.js +316 -0
- package/test/for-feature/base-entity.e2e-spec.js.map +1 -0
- package/test/for-feature/http-broadcast.e2e-spec.js +187 -0
- package/test/for-feature/http-broadcast.e2e-spec.js.map +1 -0
- package/test/for-feature/room-broadcast.e2e-spec.d.ts +1 -0
- package/test/for-feature/room-broadcast.e2e-spec.js +192 -0
- package/test/for-feature/room-broadcast.e2e-spec.js.map +1 -0
- package/test/for-feature/soft-deletable-entity.e2e-spec.d.ts +1 -0
- package/test/for-feature/soft-deletable-entity.e2e-spec.js +335 -0
- package/test/for-feature/soft-deletable-entity.e2e-spec.js.map +1 -0
- package/test/for-feature/websockets.e2e-spec.d.ts +1 -0
- package/test/for-feature/websockets.e2e-spec.js +324 -0
- package/test/for-feature/websockets.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-basic.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-basic.e2e-spec.js +338 -0
- package/test/for-root/auth-api-basic.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-broadcast.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-broadcast.e2e-spec.js +82 -0
- package/test/for-root/auth-api-broadcast.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-login.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-login.e2e-spec.js +103 -0
- package/test/for-root/auth-api-login.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-logout.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-logout.e2e-spec.js +74 -0
- package/test/for-root/auth-api-logout.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-refresh-token-cookie.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-refresh-token-cookie.e2e-spec.js +110 -0
- package/test/for-root/auth-api-refresh-token-cookie.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-refresh-token.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-refresh-token.e2e-spec.js +153 -0
- package/test/for-root/auth-api-refresh-token.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-register.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-register.e2e-spec.js +116 -0
- package/test/for-root/auth-api-register.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-reset-password.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-reset-password.e2e-spec.js +168 -0
- package/test/for-root/auth-api-reset-password.e2e-spec.js.map +1 -0
- package/test/for-root/initialization.e2e-spec.d.ts +1 -0
- package/test/for-root/initialization.e2e-spec.js +84 -0
- package/test/for-root/initialization.e2e-spec.js.map +1 -0
- package/test/for-root/websockets-auth-basic.e2e-spec.d.ts +1 -0
- package/test/for-root/websockets-auth-basic.e2e-spec.js +313 -0
- package/test/for-root/websockets-auth-basic.e2e-spec.js.map +1 -0
- package/test/for-root/websockets-auth-broadcast.e2e-spec.d.ts +1 -0
- package/test/for-root/websockets-auth-broadcast.e2e-spec.js +86 -0
- package/test/for-root/websockets-auth-broadcast.e2e-spec.js.map +1 -0
- package/test/for-root/websockets-auth-login.e2e-spec.d.ts +1 -0
- package/test/for-root/websockets-auth-login.e2e-spec.js +107 -0
- package/test/for-root/websockets-auth-login.e2e-spec.js.map +1 -0
- package/test/for-root/websockets-auth-refresh-token.e2e-spec.d.ts +1 -0
- package/test/for-root/websockets-auth-refresh-token.e2e-spec.js +104 -0
- package/test/for-root/websockets-auth-refresh-token.e2e-spec.js.map +1 -0
- package/test/for-root/websockets-auth-register.e2e-spec.d.ts +1 -0
- package/test/for-root/websockets-auth-register.e2e-spec.js +131 -0
- package/test/for-root/websockets-auth-register.e2e-spec.js.map +1 -0
- package/test/for-root/websockets-auth-reset-password.e2e-spec.d.ts +1 -0
- package/test/for-root/websockets-auth-reset-password.e2e-spec.js +164 -0
- package/test/for-root/websockets-auth-reset-password.e2e-spec.js.map +1 -0
- package/test/shared/entities/basic-user.factory.d.ts +12 -0
- package/test/shared/entities/basic-user.factory.js +31 -0
- package/test/shared/entities/basic-user.factory.js.map +1 -0
- package/test/shared/entities/broadcast-user.factory.d.ts +13 -0
- package/test/shared/entities/broadcast-user.factory.js +35 -0
- package/test/shared/entities/broadcast-user.factory.js.map +1 -0
- package/test/shared/entities/index.d.ts +7 -0
- package/test/shared/entities/index.js +24 -0
- package/test/shared/entities/index.js.map +1 -0
- package/test/shared/entities/login-user.factory.d.ts +14 -0
- package/test/shared/entities/login-user.factory.js +39 -0
- package/test/shared/entities/login-user.factory.js.map +1 -0
- package/test/shared/entities/refresh-token-user.factory.d.ts +13 -0
- package/test/shared/entities/refresh-token-user.factory.js +35 -0
- package/test/shared/entities/refresh-token-user.factory.js.map +1 -0
- package/test/shared/entities/register-user.factory.d.ts +14 -0
- package/test/shared/entities/register-user.factory.js +39 -0
- package/test/shared/entities/register-user.factory.js.map +1 -0
- package/test/shared/entities/reset-password-user.factory.d.ts +14 -0
- package/test/shared/entities/reset-password-user.factory.js +39 -0
- package/test/shared/entities/reset-password-user.factory.js.map +1 -0
- package/test/shared/entities/validated-user.factory.d.ts +12 -0
- package/test/shared/entities/validated-user.factory.js +40 -0
- package/test/shared/entities/validated-user.factory.js.map +1 -0
- package/test/shared/fixtures/index.d.ts +2 -0
- package/test/shared/fixtures/index.js +19 -0
- package/test/shared/fixtures/index.js.map +1 -0
- package/test/shared/fixtures/login.fixtures.d.ts +16 -0
- package/test/shared/fixtures/login.fixtures.js +20 -0
- package/test/shared/fixtures/login.fixtures.js.map +1 -0
- package/test/shared/fixtures/register.fixtures.d.ts +10 -0
- package/test/shared/fixtures/register.fixtures.js +14 -0
- package/test/shared/fixtures/register.fixtures.js.map +1 -0
- package/test/shared/index.d.ts +4 -0
- package/test/shared/index.js +24 -0
- package/test/shared/index.js.map +1 -0
- package/test/shared/init-app.d.ts +3 -0
- package/test/shared/init-app.js +19 -0
- package/test/shared/init-app.js.map +1 -0
- package/test/shared/init-module.d.ts +4 -0
- package/test/shared/init-module.js +16 -0
- package/test/shared/init-module.js.map +1 -0
- package/test/test-socket-adapter.d.ts +1 -0
- package/test/test-socket-adapter.js +11 -4
- package/test/test-socket-adapter.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/test/dynamic-api-for-feature.e2e-spec.js +0 -1100
- package/test/dynamic-api-for-feature.e2e-spec.js.map +0 -1
- package/test/dynamic-api-for-root.e2e-spec.js +0 -1573
- package/test/dynamic-api-for-root.e2e-spec.js.map +0 -1
- /package/test/{dynamic-api-for-feature.e2e-spec.d.ts → for-feature/base-entity.e2e-spec.d.ts} +0 -0
- /package/test/{dynamic-api-for-root.e2e-spec.d.ts → for-feature/http-broadcast.e2e-spec.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api-cache.interceptor.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/dynamic-api-cache.interceptor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dynamic-api-cache.interceptor.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/dynamic-api-cache.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAwE;AACxE,2CAAmF;AACnF,uCAAyC;AACzC,8EAAyE;AAMlE,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,gCAAgB;IAM9D,YACyB,YAAsC,EAC1C,SAAoB,EACpB,eAAgC,EAClC,KAA4B;QAE7C,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QALW,iBAAY,GAAZ,YAAY,CAAO;QAC1C,cAAS,GAAT,SAAS,CAAW;QACpB,oBAAe,GAAf,eAAe,CAAiB;QAClC,UAAK,GAAL,KAAK,CAAuB;QAT9B,iBAAY,GAAG;YAC9B,GAAG;YACH,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB;SACjC,CAAC;QASA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAC3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,OAAyB;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAChD,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,oBAAoB;YAC/B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YACxC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CACrC,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;IAQR,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;6CACQ,gBAAS;QACH,mCAAe;GAT1C,0BAA0B,CAgCtC"}
|
|
@@ -3,8 +3,9 @@ import { RouteType } from './dynamic-api-route-type.type';
|
|
|
3
3
|
type AbilityPredicate<Entity extends BaseEntity, User = any> = (entity: Entity, user: User) => boolean;
|
|
4
4
|
type AuthAbilityPredicate<User = any, Body = unknown> = (user: User, body?: Body) => boolean;
|
|
5
5
|
type BroadcastAbilityPredicate<ResponseData extends object, User = any> = (data: ResponseData, user: User) => boolean;
|
|
6
|
+
type BroadcastRooms<T extends object> = string | string[] | ((data: T) => string | string[]);
|
|
6
7
|
type ControllerAbilityPredicate<Entity extends BaseEntity> = {
|
|
7
8
|
targets: RouteType[];
|
|
8
9
|
predicate: AbilityPredicate<Entity>;
|
|
9
10
|
};
|
|
10
|
-
export { ControllerAbilityPredicate, AuthAbilityPredicate, AbilityPredicate, BroadcastAbilityPredicate, };
|
|
11
|
+
export { ControllerAbilityPredicate, AuthAbilityPredicate, AbilityPredicate, BroadcastAbilityPredicate, BroadcastRooms, };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { BroadcastAbilityPredicate } from './dynamic-api-ability.interface';
|
|
1
|
+
import { BroadcastAbilityPredicate, BroadcastRooms } from './dynamic-api-ability.interface';
|
|
2
2
|
interface DynamicApiBroadcastConfig<ResponseData extends object> {
|
|
3
3
|
enabled: boolean | BroadcastAbilityPredicate<ResponseData>;
|
|
4
4
|
eventName?: string;
|
|
5
|
+
rooms?: BroadcastRooms<ResponseData>;
|
|
5
6
|
}
|
|
6
7
|
export { DynamicApiBroadcastConfig };
|
|
@@ -22,6 +22,9 @@ interface DynamicApiGlobalState {
|
|
|
22
22
|
credentials: Credentials;
|
|
23
23
|
jwtSecret: string | undefined;
|
|
24
24
|
jwtExpirationTime: string | number | undefined;
|
|
25
|
+
jwtRefreshTokenExpiresIn: string | number | undefined;
|
|
26
|
+
jwtRefreshSecret: string | undefined;
|
|
27
|
+
jwtRefreshUseCookie: boolean | undefined;
|
|
25
28
|
routesConfig: RoutesConfig;
|
|
26
29
|
gatewayOptions: GatewayMetadata | undefined;
|
|
27
30
|
broadcastGatewayOptions: GatewayMetadata | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildAuthBroadcastData = buildAuthBroadcastData;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
function buildAuthBroadcastData(user, fields) {
|
|
6
|
+
if (!fields?.length) {
|
|
7
|
+
return { ...user };
|
|
8
|
+
}
|
|
9
|
+
return (0, lodash_1.pick)(user, fields);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=auth-broadcast.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-broadcast.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth-broadcast.helper.ts"],"names":[],"mappings":";;AAcS,wDAAsB;AAd/B,mCAA8B;AAG9B,SAAS,sBAAsB,CAC7B,IAAqB,EACrB,MAAyB;IAEzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,IAAA,aAAI,EAAC,IAAI,EAAE,MAAkB,CAAoB,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare const AUTH_LOGIN_EVENT = "auth-login";
|
|
2
|
+
declare const AUTH_REGISTER_EVENT = "auth-register";
|
|
3
|
+
declare const AUTH_GET_ACCOUNT_EVENT = "auth-get-account";
|
|
4
|
+
declare const AUTH_UPDATE_ACCOUNT_EVENT = "auth-update-account";
|
|
5
|
+
declare const AUTH_RESET_PASSWORD_EVENT = "auth-reset-password";
|
|
6
|
+
declare const AUTH_CHANGE_PASSWORD_EVENT = "auth-change-password";
|
|
7
|
+
declare const AUTH_REFRESH_TOKEN_EVENT = "auth-refresh-token";
|
|
8
|
+
declare const AUTH_LOGOUT_EVENT = "auth-logout";
|
|
9
|
+
declare const AUTH_LOGIN_BROADCAST_EVENT = "auth-login-broadcast";
|
|
10
|
+
declare const AUTH_REGISTER_BROADCAST_EVENT = "auth-register-broadcast";
|
|
11
|
+
declare const AUTH_GET_ACCOUNT_BROADCAST_EVENT = "auth-get-account-broadcast";
|
|
12
|
+
declare const AUTH_UPDATE_ACCOUNT_BROADCAST_EVENT = "auth-update-account-broadcast";
|
|
13
|
+
export { AUTH_LOGIN_EVENT, AUTH_REGISTER_EVENT, AUTH_GET_ACCOUNT_EVENT, AUTH_UPDATE_ACCOUNT_EVENT, AUTH_RESET_PASSWORD_EVENT, AUTH_CHANGE_PASSWORD_EVENT, AUTH_REFRESH_TOKEN_EVENT, AUTH_LOGOUT_EVENT, AUTH_LOGIN_BROADCAST_EVENT, AUTH_REGISTER_BROADCAST_EVENT, AUTH_GET_ACCOUNT_BROADCAST_EVENT, AUTH_UPDATE_ACCOUNT_BROADCAST_EVENT, };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUTH_UPDATE_ACCOUNT_BROADCAST_EVENT = exports.AUTH_GET_ACCOUNT_BROADCAST_EVENT = exports.AUTH_REGISTER_BROADCAST_EVENT = exports.AUTH_LOGIN_BROADCAST_EVENT = exports.AUTH_LOGOUT_EVENT = exports.AUTH_REFRESH_TOKEN_EVENT = exports.AUTH_CHANGE_PASSWORD_EVENT = exports.AUTH_RESET_PASSWORD_EVENT = exports.AUTH_UPDATE_ACCOUNT_EVENT = exports.AUTH_GET_ACCOUNT_EVENT = exports.AUTH_REGISTER_EVENT = exports.AUTH_LOGIN_EVENT = void 0;
|
|
4
|
+
const AUTH_LOGIN_EVENT = 'auth-login';
|
|
5
|
+
exports.AUTH_LOGIN_EVENT = AUTH_LOGIN_EVENT;
|
|
6
|
+
const AUTH_REGISTER_EVENT = 'auth-register';
|
|
7
|
+
exports.AUTH_REGISTER_EVENT = AUTH_REGISTER_EVENT;
|
|
8
|
+
const AUTH_GET_ACCOUNT_EVENT = 'auth-get-account';
|
|
9
|
+
exports.AUTH_GET_ACCOUNT_EVENT = AUTH_GET_ACCOUNT_EVENT;
|
|
10
|
+
const AUTH_UPDATE_ACCOUNT_EVENT = 'auth-update-account';
|
|
11
|
+
exports.AUTH_UPDATE_ACCOUNT_EVENT = AUTH_UPDATE_ACCOUNT_EVENT;
|
|
12
|
+
const AUTH_RESET_PASSWORD_EVENT = 'auth-reset-password';
|
|
13
|
+
exports.AUTH_RESET_PASSWORD_EVENT = AUTH_RESET_PASSWORD_EVENT;
|
|
14
|
+
const AUTH_CHANGE_PASSWORD_EVENT = 'auth-change-password';
|
|
15
|
+
exports.AUTH_CHANGE_PASSWORD_EVENT = AUTH_CHANGE_PASSWORD_EVENT;
|
|
16
|
+
const AUTH_REFRESH_TOKEN_EVENT = 'auth-refresh-token';
|
|
17
|
+
exports.AUTH_REFRESH_TOKEN_EVENT = AUTH_REFRESH_TOKEN_EVENT;
|
|
18
|
+
const AUTH_LOGOUT_EVENT = 'auth-logout';
|
|
19
|
+
exports.AUTH_LOGOUT_EVENT = AUTH_LOGOUT_EVENT;
|
|
20
|
+
const AUTH_LOGIN_BROADCAST_EVENT = 'auth-login-broadcast';
|
|
21
|
+
exports.AUTH_LOGIN_BROADCAST_EVENT = AUTH_LOGIN_BROADCAST_EVENT;
|
|
22
|
+
const AUTH_REGISTER_BROADCAST_EVENT = 'auth-register-broadcast';
|
|
23
|
+
exports.AUTH_REGISTER_BROADCAST_EVENT = AUTH_REGISTER_BROADCAST_EVENT;
|
|
24
|
+
const AUTH_GET_ACCOUNT_BROADCAST_EVENT = 'auth-get-account-broadcast';
|
|
25
|
+
exports.AUTH_GET_ACCOUNT_BROADCAST_EVENT = AUTH_GET_ACCOUNT_BROADCAST_EVENT;
|
|
26
|
+
const AUTH_UPDATE_ACCOUNT_BROADCAST_EVENT = 'auth-update-account-broadcast';
|
|
27
|
+
exports.AUTH_UPDATE_ACCOUNT_BROADCAST_EVENT = AUTH_UPDATE_ACCOUNT_BROADCAST_EVENT;
|
|
28
|
+
//# sourceMappingURL=auth-events.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-events.constants.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth-events.constants.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAepC,4CAAgB;AAdlB,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAe1C,kDAAmB;AAdrB,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAehD,wDAAsB;AAdxB,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAetD,8DAAyB;AAd3B,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAetD,8DAAyB;AAd3B,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAexD,gEAA0B;AAd5B,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAepD,4DAAwB;AAd1B,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAetC,8CAAiB;AAbnB,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAcxD,gEAA0B;AAb5B,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAc9D,sEAA6B;AAb/B,MAAM,gCAAgC,GAAG,4BAA4B,CAAC;AAcpE,4EAAgC;AAblC,MAAM,mCAAmC,GAAG,+BAA+B,CAAC;AAc1E,kFAAmC"}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
import { Type, ValidationPipeOptions } from '@nestjs/common';
|
|
2
2
|
import { AuthAbilityPredicate, DynamicApiServiceCallback, DynamicAPIServiceProvider, GatewayOptions } from '../../interfaces';
|
|
3
3
|
import { BaseEntity } from '../../models';
|
|
4
|
-
import { AuthControllerConstructor, AuthGatewayConstructor, DynamicApiGetAccountOptions, DynamicApiLoginOptions, DynamicApiRegisterOptions, DynamicApiResetPasswordOptions, DynamicApiUpdateAccountOptions } from './interfaces';
|
|
4
|
+
import { AuthControllerConstructor, AuthGatewayConstructor, DynamicApiGetAccountOptions, DynamicApiLoginOptions, DynamicApiRefreshTokenOptions, DynamicApiRegisterOptions, DynamicApiResetPasswordOptions, DynamicApiUpdateAccountOptions } from './interfaces';
|
|
5
5
|
declare const authServiceProviderName = "DynamicApiAuthService";
|
|
6
6
|
declare const authGatewayProviderName = "DynamicApiAuthGateway";
|
|
7
7
|
declare const localStrategyProviderName = "DynamicApiLocalStrategy";
|
|
8
|
-
declare function createLocalStrategyProvider<Entity extends BaseEntity>(loginField: keyof Entity, passwordField: keyof Entity, abilityPredicate: AuthAbilityPredicate | undefined): DynamicAPIServiceProvider;
|
|
9
|
-
declare function createAuthServiceProvider<Entity extends BaseEntity>(userEntity: Type<Entity>, { loginField, passwordField, additionalFields, callback: loginCallback }: DynamicApiLoginOptions<Entity>, getAccountCallback: DynamicApiServiceCallback<Entity> | undefined, register: DynamicApiRegisterOptions<Entity> | undefined, resetPasswordOptions: DynamicApiResetPasswordOptions<Entity> | undefined, updateAccount: DynamicApiUpdateAccountOptions<Entity> | undefined): DynamicAPIServiceProvider;
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
declare function createLocalStrategyProvider<Entity extends BaseEntity>(loginField: keyof Entity, passwordField: keyof Entity, abilityPredicate: AuthAbilityPredicate | undefined, customValidate?: (req: any) => Promise<Entity | null>, useStrategy?: Type<any>): DynamicAPIServiceProvider;
|
|
9
|
+
declare function createAuthServiceProvider<Entity extends BaseEntity>(userEntity: Type<Entity>, { loginField, passwordField, additionalFields, callback: loginCallback }: DynamicApiLoginOptions<Entity>, getAccountCallback: DynamicApiServiceCallback<Entity> | undefined, register: DynamicApiRegisterOptions<Entity> | undefined, resetPasswordOptions: DynamicApiResetPasswordOptions<Entity> | undefined, updateAccount: DynamicApiUpdateAccountOptions<Entity> | undefined, refreshToken?: DynamicApiRefreshTokenOptions<Entity>): DynamicAPIServiceProvider;
|
|
10
|
+
type CreateAuthControllerOptions<Entity extends BaseEntity> = {
|
|
11
|
+
getAccountOptions?: DynamicApiGetAccountOptions<Entity>;
|
|
12
|
+
registerOptions?: DynamicApiRegisterOptions<Entity>;
|
|
12
13
|
validationPipeOptions?: ValidationPipeOptions;
|
|
13
|
-
|
|
14
|
+
resetPasswordOptions?: DynamicApiResetPasswordOptions<Entity>;
|
|
15
|
+
updateAccountOptions?: DynamicApiUpdateAccountOptions<Entity>;
|
|
16
|
+
refreshTokenOptions?: DynamicApiRefreshTokenOptions<Entity>;
|
|
17
|
+
};
|
|
18
|
+
type CreateAuthGatewayOptions<Entity extends BaseEntity> = GatewayOptions & {
|
|
19
|
+
validationPipeOptions?: ValidationPipeOptions;
|
|
20
|
+
getAccountOptions?: DynamicApiGetAccountOptions<Entity>;
|
|
21
|
+
registerOptions?: DynamicApiRegisterOptions<Entity>;
|
|
22
|
+
resetPasswordOptions?: DynamicApiResetPasswordOptions<Entity>;
|
|
23
|
+
updateAccountOptions?: DynamicApiUpdateAccountOptions<Entity>;
|
|
24
|
+
refreshTokenOptions?: DynamicApiRefreshTokenOptions<Entity>;
|
|
25
|
+
};
|
|
26
|
+
declare function createAuthController<Entity extends BaseEntity>(userEntity: Type<Entity>, loginOptions: DynamicApiLoginOptions<Entity>, { getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, }?: CreateAuthControllerOptions<Entity>): AuthControllerConstructor<Entity>;
|
|
27
|
+
declare function createAuthGateway<Entity extends BaseEntity>(userEntity: Type<Entity>, loginOptions: DynamicApiLoginOptions<Entity>, { getAccountOptions, registerOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, validationPipeOptions, ...gatewayOptions }: CreateAuthGatewayOptions<Entity>): AuthGatewayConstructor<Entity>;
|
|
14
28
|
export { authServiceProviderName, authGatewayProviderName, createAuthController, createAuthServiceProvider, createAuthGateway, createLocalStrategyProvider, localStrategyProviderName, };
|
|
@@ -37,17 +37,34 @@ const authGatewayProviderName = 'DynamicApiAuthGateway';
|
|
|
37
37
|
exports.authGatewayProviderName = authGatewayProviderName;
|
|
38
38
|
const localStrategyProviderName = 'DynamicApiLocalStrategy';
|
|
39
39
|
exports.localStrategyProviderName = localStrategyProviderName;
|
|
40
|
-
function createLocalStrategyProvider(loginField, passwordField, abilityPredicate) {
|
|
40
|
+
function createLocalStrategyProvider(loginField, passwordField, abilityPredicate, customValidate, useStrategy) {
|
|
41
|
+
if (useStrategy) {
|
|
42
|
+
return {
|
|
43
|
+
provide: localStrategyProviderName,
|
|
44
|
+
useClass: useStrategy,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
41
47
|
let LocalStrategy = class LocalStrategy extends (0, passport_1.PassportStrategy)(passport_local_1.Strategy) {
|
|
42
48
|
constructor(authService) {
|
|
43
49
|
super({
|
|
44
50
|
usernameField: loginField,
|
|
45
51
|
passwordField: passwordField,
|
|
52
|
+
passReqToCallback: true,
|
|
46
53
|
});
|
|
47
54
|
this.authService = authService;
|
|
48
55
|
this.abilityPredicate = abilityPredicate;
|
|
56
|
+
this.customValidate = customValidate;
|
|
49
57
|
}
|
|
50
|
-
async validate(login, pass) {
|
|
58
|
+
async validate(req, login, pass) {
|
|
59
|
+
if (this.customValidate) {
|
|
60
|
+
const user = await this.customValidate(req);
|
|
61
|
+
if (user) {
|
|
62
|
+
if (this.abilityPredicate && !this.abilityPredicate(user)) {
|
|
63
|
+
throw new common_1.ForbiddenException('Access denied');
|
|
64
|
+
}
|
|
65
|
+
return user;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
51
68
|
const user = await this.authService.validateUser(login, pass);
|
|
52
69
|
if (!user) {
|
|
53
70
|
throw new common_1.UnauthorizedException('Invalid credentials');
|
|
@@ -68,7 +85,7 @@ function createLocalStrategyProvider(loginField, passwordField, abilityPredicate
|
|
|
68
85
|
useClass: LocalStrategy,
|
|
69
86
|
};
|
|
70
87
|
}
|
|
71
|
-
function createAuthServiceProvider(userEntity, { loginField, passwordField, additionalFields = [], callback: loginCallback }, getAccountCallback, register, resetPasswordOptions, updateAccount) {
|
|
88
|
+
function createAuthServiceProvider(userEntity, { loginField, passwordField, additionalFields = [], callback: loginCallback }, getAccountCallback, register, resetPasswordOptions, updateAccount, refreshToken) {
|
|
72
89
|
let AuthService = class AuthService extends services_2.BaseAuthService {
|
|
73
90
|
constructor(model, jwtService, bcryptService) {
|
|
74
91
|
super(model, jwtService, bcryptService);
|
|
@@ -79,6 +96,7 @@ function createAuthServiceProvider(userEntity, { loginField, passwordField, addi
|
|
|
79
96
|
this.additionalRequestFields = additionalFields;
|
|
80
97
|
this.loginField = loginField;
|
|
81
98
|
this.passwordField = passwordField;
|
|
99
|
+
this.refreshTokenField = refreshToken?.refreshTokenField;
|
|
82
100
|
this.beforeRegisterCallback = register?.beforeSaveCallback;
|
|
83
101
|
this.registerCallback = register?.callback;
|
|
84
102
|
this.beforeUpdateAccountCallback = updateAccount?.beforeSaveCallback;
|
|
@@ -99,11 +117,13 @@ function createAuthServiceProvider(userEntity, { loginField, passwordField, addi
|
|
|
99
117
|
useClass: AuthService,
|
|
100
118
|
};
|
|
101
119
|
}
|
|
102
|
-
function createAuthController(userEntity, loginOptions, getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions) {
|
|
103
|
-
let AuthController = class AuthController extends (0, mixins_1.AuthControllerMixin)(userEntity, loginOptions, registerOptions, resetPasswordOptions, updateAccountOptions, getAccountOptions) {
|
|
104
|
-
constructor(service) {
|
|
105
|
-
super(service);
|
|
120
|
+
function createAuthController(userEntity, loginOptions, { getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, } = {}) {
|
|
121
|
+
let AuthController = class AuthController extends (0, mixins_1.AuthControllerMixin)(userEntity, loginOptions, registerOptions, resetPasswordOptions, updateAccountOptions, getAccountOptions, refreshTokenOptions) {
|
|
122
|
+
constructor(service, broadcastService, jwtService) {
|
|
123
|
+
super(service, broadcastService, jwtService);
|
|
106
124
|
this.service = service;
|
|
125
|
+
this.broadcastService = broadcastService;
|
|
126
|
+
this.jwtService = jwtService;
|
|
107
127
|
}
|
|
108
128
|
};
|
|
109
129
|
AuthController = __decorate([
|
|
@@ -111,12 +131,16 @@ function createAuthController(userEntity, loginOptions, getAccountOptions, regis
|
|
|
111
131
|
(0, swagger_1.ApiTags)('Auth'),
|
|
112
132
|
(0, decorators_1.ValidatorPipe)(validationPipeOptions),
|
|
113
133
|
__param(0, (0, common_1.Inject)(authServiceProviderName)),
|
|
114
|
-
|
|
134
|
+
__param(1, (0, common_1.Optional)()),
|
|
135
|
+
__param(1, (0, common_1.Inject)(services_1.DynamicApiBroadcastService)),
|
|
136
|
+
__param(2, (0, common_1.Inject)(jwt_1.JwtService)),
|
|
137
|
+
__metadata("design:paramtypes", [Object, services_1.DynamicApiBroadcastService,
|
|
138
|
+
jwt_1.JwtService])
|
|
115
139
|
], AuthController);
|
|
116
140
|
return AuthController;
|
|
117
141
|
}
|
|
118
|
-
function createAuthGateway(userEntity, loginOptions, getAccountOptions, registerOptions, resetPasswordOptions, updateAccountOptions,
|
|
119
|
-
let AuthGateway = class AuthGateway extends (0, mixins_1.AuthGatewayMixin)(userEntity, loginOptions, registerOptions ?? {}, resetPasswordOptions, updateAccountOptions, getAccountOptions) {
|
|
142
|
+
function createAuthGateway(userEntity, loginOptions, { getAccountOptions, registerOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, validationPipeOptions, ...gatewayOptions }) {
|
|
143
|
+
let AuthGateway = class AuthGateway extends (0, mixins_1.AuthGatewayMixin)(userEntity, loginOptions, registerOptions ?? {}, resetPasswordOptions, updateAccountOptions, getAccountOptions, refreshTokenOptions) {
|
|
120
144
|
constructor(service, jwtService) {
|
|
121
145
|
super(service, jwtService);
|
|
122
146
|
this.service = service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { MiddlewareConsumer, NestModule } from '@nestjs/common';
|
|
1
2
|
import { BaseEntity } from '../../models';
|
|
2
3
|
import { DynamicApiAuthOptions } from './interfaces';
|
|
3
|
-
export declare class AuthModule {
|
|
4
|
+
export declare class AuthModule implements NestModule {
|
|
5
|
+
private static useCookie;
|
|
6
|
+
configure(consumer: MiddlewareConsumer): void;
|
|
4
7
|
static forRoot<Entity extends BaseEntity>(options: DynamicApiAuthOptions<Entity>): {
|
|
5
8
|
module: typeof AuthModule;
|
|
6
9
|
imports: (import("@nestjs/common").Type<any> | import("@nestjs/common").ForwardReference<any> | import("@nestjs/common").DynamicModule | Promise<import("@nestjs/common").DynamicModule>)[];
|
|
7
|
-
providers: (import("
|
|
10
|
+
providers: (import("../../interfaces").DynamicAPIServiceProvider | import("@nestjs/common").Provider)[];
|
|
8
11
|
controllers: import("@nestjs/common").Type<any>[];
|
|
9
12
|
};
|
|
10
13
|
private static initializeAuthOptions;
|
|
@@ -8,28 +8,48 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var AuthModule_1;
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.AuthModule = void 0;
|
|
11
|
+
const cookieParser = require("cookie-parser");
|
|
11
12
|
const common_1 = require("@nestjs/common");
|
|
12
13
|
const jwt_1 = require("@nestjs/jwt");
|
|
13
14
|
const mongoose_1 = require("@nestjs/mongoose");
|
|
14
15
|
const passport_1 = require("@nestjs/passport");
|
|
15
16
|
const dynamic_api_module_1 = require("../../dynamic-api.module");
|
|
17
|
+
const gateways_1 = require("../../gateways");
|
|
16
18
|
const helpers_1 = require("../../helpers");
|
|
17
19
|
const services_1 = require("../../services");
|
|
18
20
|
const auth_helper_1 = require("./auth.helper");
|
|
19
21
|
const strategies_1 = require("./strategies");
|
|
20
22
|
let AuthModule = AuthModule_1 = class AuthModule {
|
|
23
|
+
configure(consumer) {
|
|
24
|
+
if (AuthModule_1.useCookie) {
|
|
25
|
+
consumer.apply(cookieParser()).forRoutes('*');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
21
28
|
static forRoot(options) {
|
|
22
|
-
const { userEntity, login: { loginField, passwordField, ...login }, getAccount, register, updateAccount, resetPassword, jwt: { secret, expiresIn }, validationPipeOptions, webSocket, extraImports, extraProviders, extraControllers, } = this.initializeAuthOptions(options);
|
|
29
|
+
const { userEntity, login: { loginField, passwordField, ...login }, getAccount, register, updateAccount, resetPassword, refreshToken, jwt: { secret, expiresIn }, validationPipeOptions, webSocket, extraImports, extraProviders, extraControllers, } = this.initializeAuthOptions(options);
|
|
30
|
+
AuthModule_1.useCookie = refreshToken?.useCookie ?? false;
|
|
23
31
|
const { resetPasswordCallback, ...resetPasswordOptionsRest } = resetPassword;
|
|
24
32
|
const resetPasswordOptions = resetPasswordCallback
|
|
25
33
|
? { resetPasswordCallback, ...resetPasswordOptionsRest }
|
|
26
34
|
: undefined;
|
|
27
|
-
const AuthController = (0, auth_helper_1.createAuthController)(userEntity, { loginField, passwordField, ...login },
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
const AuthController = (0, auth_helper_1.createAuthController)(userEntity, { loginField, passwordField, ...login }, {
|
|
36
|
+
getAccountOptions: getAccount,
|
|
37
|
+
registerOptions: register,
|
|
38
|
+
validationPipeOptions,
|
|
39
|
+
resetPasswordOptions,
|
|
40
|
+
updateAccountOptions: updateAccount,
|
|
41
|
+
refreshTokenOptions: refreshToken,
|
|
42
|
+
});
|
|
43
|
+
const AuthServiceProvider = (0, auth_helper_1.createAuthServiceProvider)(userEntity, { loginField, passwordField, ...login }, getAccount?.callback, register, resetPasswordOptions, updateAccount, refreshToken);
|
|
44
|
+
const LocalStrategyProvider = (0, auth_helper_1.createLocalStrategyProvider)(loginField, passwordField, login.abilityPredicate, login.customValidate, login.useStrategy);
|
|
30
45
|
const schema = (0, helpers_1.buildSchemaFromEntity)(userEntity);
|
|
31
46
|
services_1.DynamicApiGlobalStateService.addEntitySchema(userEntity, schema);
|
|
32
47
|
const gatewayOptions = (0, helpers_1.initializeConfigFromOptions)(webSocket ?? dynamic_api_module_1.DynamicApiModule.state.get('gatewayOptions'));
|
|
48
|
+
const hasBroadcast = !!(login?.broadcast || register?.broadcast || getAccount?.broadcast || updateAccount?.broadcast);
|
|
49
|
+
const broadcastProviders = hasBroadcast ? [
|
|
50
|
+
services_1.DynamicApiBroadcastService,
|
|
51
|
+
(0, gateways_1.createDynamicApiBroadcastGateway)(dynamic_api_module_1.DynamicApiModule.state.get('broadcastGatewayOptions') ?? {}),
|
|
52
|
+
] : [];
|
|
33
53
|
const webSocketsProviders = !gatewayOptions ? [] : [
|
|
34
54
|
{
|
|
35
55
|
provide: auth_helper_1.authGatewayProviderName,
|
|
@@ -37,7 +57,15 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
37
57
|
loginField,
|
|
38
58
|
passwordField,
|
|
39
59
|
...login,
|
|
40
|
-
},
|
|
60
|
+
}, {
|
|
61
|
+
...gatewayOptions,
|
|
62
|
+
validationPipeOptions,
|
|
63
|
+
getAccountOptions: getAccount,
|
|
64
|
+
registerOptions: register,
|
|
65
|
+
resetPasswordOptions,
|
|
66
|
+
updateAccountOptions: updateAccount,
|
|
67
|
+
refreshTokenOptions: refreshToken,
|
|
68
|
+
}),
|
|
41
69
|
},
|
|
42
70
|
];
|
|
43
71
|
return {
|
|
@@ -61,19 +89,23 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
61
89
|
AuthServiceProvider,
|
|
62
90
|
LocalStrategyProvider,
|
|
63
91
|
strategies_1.JwtStrategy,
|
|
92
|
+
strategies_1.JwtRefreshStrategy,
|
|
64
93
|
services_1.BcryptService,
|
|
94
|
+
...broadcastProviders,
|
|
65
95
|
...webSocketsProviders,
|
|
66
96
|
...extraProviders,
|
|
67
97
|
],
|
|
68
98
|
controllers: [AuthController, ...extraControllers],
|
|
69
99
|
};
|
|
70
100
|
}
|
|
71
|
-
static initializeAuthOptions({ userEntity, jwt, login, register, updateAccount, getAccount, resetPassword, validationPipeOptions, webSocket, extraImports = [], extraProviders = [], extraControllers = [], }) {
|
|
101
|
+
static initializeAuthOptions({ userEntity, jwt, login, register, updateAccount, getAccount, resetPassword, refreshToken, validationPipeOptions, webSocket, extraImports = [], extraProviders = [], extraControllers = [], }) {
|
|
72
102
|
return {
|
|
73
103
|
userEntity: userEntity,
|
|
74
104
|
jwt: {
|
|
75
105
|
secret: jwt?.secret ?? 'dynamic-api-jwt-secret',
|
|
76
|
-
expiresIn: jwt?.expiresIn ?? '
|
|
106
|
+
expiresIn: jwt?.expiresIn ?? '15m',
|
|
107
|
+
refreshTokenExpiresIn: jwt?.refreshTokenExpiresIn ?? '7d',
|
|
108
|
+
refreshSecret: jwt?.refreshSecret,
|
|
77
109
|
},
|
|
78
110
|
login: {
|
|
79
111
|
...login,
|
|
@@ -99,6 +131,12 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
99
131
|
emailField: (!resetPassword?.emailField ? 'email' : String(resetPassword.emailField)),
|
|
100
132
|
expirationInMinutes: resetPassword?.expirationInMinutes ?? 10,
|
|
101
133
|
},
|
|
134
|
+
refreshToken: {
|
|
135
|
+
...refreshToken,
|
|
136
|
+
useInterceptors: refreshToken?.useInterceptors ?? [],
|
|
137
|
+
refreshTokenField: refreshToken?.refreshTokenField,
|
|
138
|
+
useCookie: refreshToken?.useCookie ?? false,
|
|
139
|
+
},
|
|
102
140
|
validationPipeOptions: validationPipeOptions,
|
|
103
141
|
webSocket,
|
|
104
142
|
extraImports,
|
|
@@ -108,6 +146,7 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
108
146
|
}
|
|
109
147
|
};
|
|
110
148
|
exports.AuthModule = AuthModule;
|
|
149
|
+
AuthModule.useCookie = false;
|
|
111
150
|
exports.AuthModule = AuthModule = AuthModule_1 = __decorate([
|
|
112
151
|
(0, common_1.Module)({})
|
|
113
152
|
], AuthModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './jwt-auth/jwt-auth.guard';
|
|
2
|
+
export * from './jwt-refresh/jwt-refresh.guard';
|
|
2
3
|
export * from './jwt-socket-auth/jwt-socket-auth.guard';
|
|
4
|
+
export * from './jwt-socket-refresh/jwt-socket-refresh.guard';
|
|
3
5
|
export * from './local-auth/local-auth.guard';
|
|
4
6
|
export * from './reset-password/reset-password.guard';
|
|
@@ -15,7 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./jwt-auth/jwt-auth.guard"), exports);
|
|
18
|
+
__exportStar(require("./jwt-refresh/jwt-refresh.guard"), exports);
|
|
18
19
|
__exportStar(require("./jwt-socket-auth/jwt-socket-auth.guard"), exports);
|
|
20
|
+
__exportStar(require("./jwt-socket-refresh/jwt-socket-refresh.guard"), exports);
|
|
19
21
|
__exportStar(require("./local-auth/local-auth.guard"), exports);
|
|
20
22
|
__exportStar(require("./reset-password/reset-password.guard"), exports);
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/dynamic-api/src/modules/auth/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,0EAAwD;AACxD,gEAA8C;AAC9C,wEAAsD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/dynamic-api/src/modules/auth/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,kEAAgD;AAChD,0EAAwD;AACxD,gFAA8D;AAC9D,gEAA8C;AAC9C,wEAAsD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.JwtRefreshGuard = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const passport_1 = require("@nestjs/passport");
|
|
12
|
+
let JwtRefreshGuard = class JwtRefreshGuard extends (0, passport_1.AuthGuard)('jwt-refresh') {
|
|
13
|
+
};
|
|
14
|
+
exports.JwtRefreshGuard = JwtRefreshGuard;
|
|
15
|
+
exports.JwtRefreshGuard = JwtRefreshGuard = __decorate([
|
|
16
|
+
(0, common_1.Injectable)()
|
|
17
|
+
], JwtRefreshGuard);
|
|
18
|
+
//# sourceMappingURL=jwt-refresh.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-refresh.guard.js","sourceRoot":"","sources":["../../../../../../libs/dynamic-api/src/modules/auth/guards/jwt-refresh/jwt-refresh.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA6C;AAGtC,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,IAAA,oBAAS,EAAC,aAAa,CAAC;CAAG,CAAA;AAAnD,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;GACA,eAAe,CAAoC"}
|
|
@@ -52,7 +52,7 @@ let JwtSocketAuthGuard = JwtSocketAuthGuard_1 = class JwtSocketAuthGuard {
|
|
|
52
52
|
}
|
|
53
53
|
catch (e) {
|
|
54
54
|
this.logger.warn('extractUserFromToken jwtService.verify error');
|
|
55
|
-
this.logger.warn(e.message);
|
|
55
|
+
this.logger.warn(e instanceof Error ? e.message : JSON.stringify(e));
|
|
56
56
|
throw new websockets_1.WsException('Unauthorized');
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-socket-auth.guard.js","sourceRoot":"","sources":["../../../../../../libs/dynamic-api/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2E;AAC3E,qCAAyC;AACzC,mDAAiD;AACjD,mCAAiC;AACjC,uEAAkE;AAElE,+CAA6D;AAGtD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAAxB;QACY,WAAM,GAAG,IAAI,gCAAuB,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAkDjF,CAAC;IAhDQ,KAAK,CAAC,WAAW,CAAC,OAAyB;QAChD,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjC,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,6BAA6B,CAAC,MAAsB;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAqB,CAAC;QAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QACtD,MAAM,UAAU,GAAG,IAAI,gBAAU,CAAC;YAChC,MAAM,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/C,WAAW,EAAE;gBACX,SAAS,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;aAC3D;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE;gBACtE,MAAM,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"jwt-socket-auth.guard.js","sourceRoot":"","sources":["../../../../../../libs/dynamic-api/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2E;AAC3E,qCAAyC;AACzC,mDAAiD;AACjD,mCAAiC;AACjC,uEAAkE;AAElE,+CAA6D;AAGtD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAAxB;QACY,WAAM,GAAG,IAAI,gCAAuB,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAkDjF,CAAC;IAhDQ,KAAK,CAAC,WAAW,CAAC,OAAyB;QAChD,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjC,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,6BAA6B,CAAC,MAAsB;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAqB,CAAC;QAEjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QACtD,MAAM,UAAU,GAAG,IAAI,gBAAU,CAAC;YAChC,MAAM,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/C,WAAW,EAAE;gBACX,SAAS,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;aAC3D;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE;gBACtE,MAAM,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAErE,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF,CAAA;AAnDY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;GACA,kBAAkB,CAmD9B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
|
+
import { ExtendedSocket } from '../../../../interfaces';
|
|
3
|
+
export declare class JwtSocketRefreshGuard implements CanActivate {
|
|
4
|
+
private readonly logger;
|
|
5
|
+
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
6
|
+
protected getRefreshTokenFromSocket(socket: ExtendedSocket): string;
|
|
7
|
+
protected extractUserFromToken(refreshToken: string): Promise<unknown>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var JwtSocketRefreshGuard_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.JwtSocketRefreshGuard = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const jwt_1 = require("@nestjs/jwt");
|
|
13
|
+
const websockets_1 = require("@nestjs/websockets");
|
|
14
|
+
const lodash_1 = require("lodash");
|
|
15
|
+
const dynamic_api_module_1 = require("../../../../dynamic-api.module");
|
|
16
|
+
const logger_1 = require("../../../../logger");
|
|
17
|
+
let JwtSocketRefreshGuard = JwtSocketRefreshGuard_1 = class JwtSocketRefreshGuard {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.logger = new logger_1.MongoDBDynamicApiLogger(JwtSocketRefreshGuard_1.name);
|
|
20
|
+
}
|
|
21
|
+
async canActivate(context) {
|
|
22
|
+
const [socket] = context.getArgs();
|
|
23
|
+
const refreshToken = this.getRefreshTokenFromSocket(socket);
|
|
24
|
+
const user = await this.extractUserFromToken(refreshToken);
|
|
25
|
+
if ((0, lodash_1.isEmpty)(user)) {
|
|
26
|
+
this.logger.warn('No user data from refresh token');
|
|
27
|
+
throw new websockets_1.WsException('Unauthorized');
|
|
28
|
+
}
|
|
29
|
+
socket.user = user;
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
getRefreshTokenFromSocket(socket) {
|
|
33
|
+
const refreshToken = socket.handshake.query.refreshToken;
|
|
34
|
+
if (!refreshToken) {
|
|
35
|
+
throw new websockets_1.WsException('Unauthorized');
|
|
36
|
+
}
|
|
37
|
+
return refreshToken;
|
|
38
|
+
}
|
|
39
|
+
async extractUserFromToken(refreshToken) {
|
|
40
|
+
const refreshSecret = dynamic_api_module_1.DynamicApiModule.state.get('jwtRefreshSecret');
|
|
41
|
+
const jwtSecret = dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret');
|
|
42
|
+
const secret = refreshSecret ?? jwtSecret;
|
|
43
|
+
const jwtService = new jwt_1.JwtService({ secret });
|
|
44
|
+
try {
|
|
45
|
+
const { iat, exp, jti, ...user } = await jwtService.verifyAsync(refreshToken, {
|
|
46
|
+
secret,
|
|
47
|
+
ignoreExpiration: false,
|
|
48
|
+
});
|
|
49
|
+
return user;
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
this.logger.warn('extractUserFromToken (refresh) jwtService.verify error');
|
|
53
|
+
this.logger.warn(e instanceof Error ? e.message : JSON.stringify(e));
|
|
54
|
+
throw new websockets_1.WsException('Unauthorized');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.JwtSocketRefreshGuard = JwtSocketRefreshGuard;
|
|
59
|
+
exports.JwtSocketRefreshGuard = JwtSocketRefreshGuard = JwtSocketRefreshGuard_1 = __decorate([
|
|
60
|
+
(0, common_1.Injectable)()
|
|
61
|
+
], JwtSocketRefreshGuard);
|
|
62
|
+
//# sourceMappingURL=jwt-socket-refresh.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-socket-refresh.guard.js","sourceRoot":"","sources":["../../../../../../libs/dynamic-api/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA2E;AAC3E,qCAAyC;AACzC,mDAAiD;AACjD,mCAAiC;AACjC,uEAAkE;AAElE,+CAA6D;AAGtD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAA3B;QACY,WAAM,GAAG,IAAI,gCAAuB,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IA+CpF,CAAC;IA7CQ,KAAK,CAAC,WAAW,CAAC,OAAyB;QAChD,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAE3D,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACpD,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,yBAAyB,CAAC,MAAsB;QACxD,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,YAAsB,CAAC;QAEnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,YAAoB;QACvD,MAAM,aAAa,GAAG,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAqB,kBAAkB,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAS,WAAW,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,aAAa,IAAI,SAAS,CAAC;QAE1C,MAAM,UAAU,GAAG,IAAI,gBAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE;gBAC5E,MAAM;gBACN,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAErE,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF,CAAA;AAhDY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAgDjC"}
|