@dismissible/nestjs-dismissible 0.0.2-canary.8976e84.0 → 0.0.2-canary.a611bd3.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 +58 -74
- package/package.json +19 -17
- package/src/api/dismissible-item-response.dto.d.ts +9 -0
- package/src/api/dismissible-item-response.dto.js +40 -0
- package/src/api/dismissible-item-response.dto.js.map +1 -0
- package/src/api/dismissible-item.mapper.d.ts +12 -0
- package/src/api/dismissible-item.mapper.js +30 -0
- package/src/api/dismissible-item.mapper.js.map +1 -0
- package/src/api/dismissible-item.mapper.spec.d.ts +1 -0
- package/src/api/dismissible-item.mapper.spec.js +43 -0
- package/src/api/dismissible-item.mapper.spec.js.map +1 -0
- package/src/api/{index.ts → index.d.ts} +1 -4
- package/src/api/index.js +8 -0
- package/src/api/index.js.map +1 -0
- package/src/api/use-cases/{api-tags.constants.ts → api-tags.constants.d.ts} +1 -1
- package/src/api/use-cases/api-tags.constants.js +8 -0
- package/src/api/use-cases/api-tags.constants.js.map +1 -0
- package/src/api/use-cases/dismiss/dismiss.controller.d.ts +15 -0
- package/src/api/use-cases/dismiss/dismiss.controller.js +74 -0
- package/src/api/use-cases/dismiss/dismiss.controller.js.map +1 -0
- package/src/api/use-cases/dismiss/dismiss.controller.spec.d.ts +1 -0
- package/src/api/use-cases/dismiss/dismiss.controller.spec.js +37 -0
- package/src/api/use-cases/dismiss/dismiss.controller.spec.js.map +1 -0
- package/src/api/use-cases/dismiss/dismiss.response.dto.d.ts +12 -0
- package/src/api/use-cases/dismiss/dismiss.response.dto.js +12 -0
- package/src/api/use-cases/dismiss/dismiss.response.dto.js.map +1 -0
- package/src/api/use-cases/dismiss/index.js +6 -0
- package/src/api/use-cases/dismiss/index.js.map +1 -0
- package/src/api/use-cases/get-or-create/get-or-create.controller.d.ts +15 -0
- package/src/api/use-cases/get-or-create/get-or-create.controller.js +70 -0
- package/src/api/use-cases/get-or-create/get-or-create.controller.js.map +1 -0
- package/src/api/use-cases/get-or-create/get-or-create.controller.spec.d.ts +1 -0
- package/src/api/use-cases/get-or-create/get-or-create.controller.spec.js +32 -0
- package/src/api/use-cases/get-or-create/get-or-create.controller.spec.js.map +1 -0
- package/src/api/use-cases/get-or-create/get-or-create.response.dto.d.ts +12 -0
- package/src/api/use-cases/get-or-create/get-or-create.response.dto.js +12 -0
- package/src/api/use-cases/get-or-create/get-or-create.response.dto.js.map +1 -0
- package/src/api/use-cases/get-or-create/{index.ts → index.d.ts} +0 -1
- package/src/api/use-cases/get-or-create/index.js +6 -0
- package/src/api/use-cases/get-or-create/index.js.map +1 -0
- package/src/api/use-cases/index.js +7 -0
- package/src/api/use-cases/index.js.map +1 -0
- package/src/api/use-cases/restore/index.js +6 -0
- package/src/api/use-cases/restore/index.js.map +1 -0
- package/src/api/use-cases/restore/restore.controller.d.ts +15 -0
- package/src/api/use-cases/restore/restore.controller.js +74 -0
- package/src/api/use-cases/restore/restore.controller.js.map +1 -0
- package/src/api/use-cases/restore/restore.controller.spec.d.ts +1 -0
- package/src/api/use-cases/restore/restore.controller.spec.js +37 -0
- package/src/api/use-cases/restore/restore.controller.spec.js.map +1 -0
- package/src/api/use-cases/restore/restore.response.dto.d.ts +12 -0
- package/src/api/use-cases/restore/restore.response.dto.js +12 -0
- package/src/api/use-cases/restore/restore.response.dto.js.map +1 -0
- package/src/api/validation/index.d.ts +2 -0
- package/src/api/validation/index.js +6 -0
- package/src/api/validation/index.js.map +1 -0
- package/src/api/validation/param-validation.pipe.d.ts +11 -0
- package/src/api/validation/param-validation.pipe.js +36 -0
- package/src/api/validation/param-validation.pipe.js.map +1 -0
- package/src/api/validation/param-validation.pipe.spec.d.ts +1 -0
- package/src/api/validation/param-validation.pipe.spec.js +269 -0
- package/src/api/validation/param-validation.pipe.spec.js.map +1 -0
- package/src/api/validation/param.decorators.d.ts +28 -0
- package/src/api/validation/param.decorators.js +36 -0
- package/src/api/validation/param.decorators.js.map +1 -0
- package/src/core/dismissible-core.service.d.ts +56 -0
- package/src/core/dismissible-core.service.js +147 -0
- package/src/core/dismissible-core.service.js.map +1 -0
- package/src/core/dismissible-core.service.spec.d.ts +1 -0
- package/src/core/dismissible-core.service.spec.js +309 -0
- package/src/core/dismissible-core.service.spec.js.map +1 -0
- package/src/core/dismissible.service.d.ts +45 -0
- package/src/core/dismissible.service.js +127 -0
- package/src/core/dismissible.service.js.map +1 -0
- package/src/core/dismissible.service.spec.d.ts +1 -0
- package/src/core/dismissible.service.spec.js +159 -0
- package/src/core/dismissible.service.spec.js.map +1 -0
- package/src/core/hook-runner.service.d.ts +88 -0
- package/src/core/hook-runner.service.js +226 -0
- package/src/core/hook-runner.service.js.map +1 -0
- package/src/core/hook-runner.service.spec.d.ts +1 -0
- package/src/core/hook-runner.service.spec.js +538 -0
- package/src/core/hook-runner.service.spec.js.map +1 -0
- package/src/core/{index.ts → index.d.ts} +0 -1
- package/src/core/index.js +9 -0
- package/src/core/index.js.map +1 -0
- package/src/core/lifecycle-hook.interface.d.ts +1 -0
- package/src/core/lifecycle-hook.interface.js +7 -0
- package/src/core/lifecycle-hook.interface.js.map +1 -0
- package/src/core/service-responses.interface.d.ts +28 -0
- package/src/core/service-responses.interface.js +3 -0
- package/src/core/service-responses.interface.js.map +1 -0
- package/src/dismissible.module.d.ts +13 -0
- package/src/dismissible.module.integration.spec.d.ts +1 -0
- package/src/dismissible.module.integration.spec.js +529 -0
- package/src/dismissible.module.integration.spec.js.map +1 -0
- package/src/dismissible.module.js +77 -0
- package/src/dismissible.module.js.map +1 -0
- package/src/events/dismissible.events.d.ts +45 -0
- package/src/events/dismissible.events.js +53 -0
- package/src/events/dismissible.events.js.map +1 -0
- package/src/events/events.constants.d.ts +17 -0
- package/src/events/events.constants.js +17 -0
- package/src/events/events.constants.js.map +1 -0
- package/src/events/index.js +6 -0
- package/src/events/index.js.map +1 -0
- package/src/exceptions/dismissible.exceptions.d.ts +26 -0
- package/src/exceptions/dismissible.exceptions.js +49 -0
- package/src/exceptions/dismissible.exceptions.js.map +1 -0
- package/src/exceptions/dismissible.exceptions.spec.d.ts +1 -0
- package/src/exceptions/dismissible.exceptions.spec.js +40 -0
- package/src/exceptions/dismissible.exceptions.spec.js.map +1 -0
- package/src/exceptions/index.js +5 -0
- package/src/exceptions/index.js.map +1 -0
- package/src/{index.ts → index.d.ts} +1 -1
- package/src/index.js +12 -0
- package/src/index.js.map +1 -0
- package/src/response/dtos/base-response.dto.d.ts +6 -0
- package/src/response/dtos/base-response.dto.js +18 -0
- package/src/response/dtos/base-response.dto.js.map +1 -0
- package/src/response/dtos/error-response.dto.d.ts +19 -0
- package/src/response/dtos/error-response.dto.js +39 -0
- package/src/response/dtos/error-response.dto.js.map +1 -0
- package/src/response/dtos/index.js +7 -0
- package/src/response/dtos/index.js.map +1 -0
- package/src/response/dtos/{success-response.dto.ts → success-response.dto.d.ts} +6 -12
- package/src/response/dtos/success-response.dto.js +34 -0
- package/src/response/dtos/success-response.dto.js.map +1 -0
- package/src/response/http-exception-filter.d.ts +4 -0
- package/src/response/http-exception-filter.js +24 -0
- package/src/response/http-exception-filter.js.map +1 -0
- package/src/response/http-exception-filter.spec.d.ts +1 -0
- package/src/response/http-exception-filter.spec.js +137 -0
- package/src/response/http-exception-filter.spec.js.map +1 -0
- package/src/response/index.js +8 -0
- package/src/response/index.js.map +1 -0
- package/src/response/response.module.d.ts +2 -0
- package/src/response/response.module.js +17 -0
- package/src/response/response.module.js.map +1 -0
- package/src/response/response.service.d.ts +6 -0
- package/src/response/response.service.js +25 -0
- package/src/response/response.service.js.map +1 -0
- package/src/response/response.service.spec.d.ts +1 -0
- package/src/response/response.service.spec.js +58 -0
- package/src/response/response.service.spec.js.map +1 -0
- package/src/testing/factories.d.ts +14 -0
- package/src/testing/factories.js +58 -0
- package/src/testing/factories.js.map +1 -0
- package/src/testing/index.js +5 -0
- package/src/testing/index.js.map +1 -0
- package/src/utils/date/date.service.d.ts +8 -0
- package/src/utils/date/date.service.js +24 -0
- package/src/utils/date/date.service.js.map +1 -0
- package/src/utils/date/date.service.spec.d.ts +1 -0
- package/src/utils/date/date.service.spec.js +83 -0
- package/src/utils/date/date.service.spec.js.map +1 -0
- package/src/utils/date/index.js +5 -0
- package/src/utils/date/index.js.map +1 -0
- package/src/utils/dismissible.helper.d.ts +4 -0
- package/src/utils/dismissible.helper.js +15 -0
- package/src/utils/dismissible.helper.js.map +1 -0
- package/src/utils/index.js +7 -0
- package/src/utils/index.js.map +1 -0
- package/src/validation/dismissible-input.dto.d.ts +21 -0
- package/src/validation/dismissible-input.dto.js +54 -0
- package/src/validation/dismissible-input.dto.js.map +1 -0
- package/src/validation/index.d.ts +1 -0
- package/src/validation/index.js +5 -0
- package/src/validation/index.js.map +1 -0
- package/jest.config.ts +0 -29
- package/project.json +0 -42
- package/src/api/dismissible-item-response.dto.ts +0 -38
- package/src/api/dismissible-item.mapper.spec.ts +0 -63
- package/src/api/dismissible-item.mapper.ts +0 -33
- package/src/api/use-cases/dismiss/dismiss.controller.spec.ts +0 -42
- package/src/api/use-cases/dismiss/dismiss.controller.ts +0 -63
- package/src/api/use-cases/dismiss/dismiss.response.dto.ts +0 -7
- package/src/api/use-cases/get-or-create/get-or-create.controller.spec.ts +0 -76
- package/src/api/use-cases/get-or-create/get-or-create.controller.ts +0 -106
- package/src/api/use-cases/get-or-create/get-or-create.request.dto.ts +0 -17
- package/src/api/use-cases/get-or-create/get-or-create.response.dto.ts +0 -7
- package/src/api/use-cases/restore/restore.controller.spec.ts +0 -42
- package/src/api/use-cases/restore/restore.controller.ts +0 -63
- package/src/api/use-cases/restore/restore.response.dto.ts +0 -7
- package/src/core/create-options.ts +0 -9
- package/src/core/dismissible-core.service.spec.ts +0 -357
- package/src/core/dismissible-core.service.ts +0 -161
- package/src/core/dismissible.service.spec.ts +0 -144
- package/src/core/dismissible.service.ts +0 -188
- package/src/core/hook-runner.service.spec.ts +0 -304
- package/src/core/hook-runner.service.ts +0 -267
- package/src/core/lifecycle-hook.interface.ts +0 -122
- package/src/core/service-responses.interface.ts +0 -34
- package/src/dismissible.module.ts +0 -83
- package/src/events/dismissible.events.ts +0 -105
- package/src/events/events.constants.ts +0 -21
- package/src/exceptions/dismissible.exceptions.spec.ts +0 -50
- package/src/exceptions/dismissible.exceptions.ts +0 -69
- package/src/request/index.ts +0 -2
- package/src/request/request-context.decorator.ts +0 -14
- package/src/request/request-context.interface.ts +0 -6
- package/src/response/dtos/base-response.dto.ts +0 -11
- package/src/response/dtos/error-response.dto.ts +0 -36
- package/src/response/http-exception-filter.ts +0 -21
- package/src/response/response.module.ts +0 -9
- package/src/response/response.service.spec.ts +0 -86
- package/src/response/response.service.ts +0 -20
- package/src/testing/factories.ts +0 -45
- package/src/utils/date/date.service.spec.ts +0 -104
- package/src/utils/date/date.service.ts +0 -19
- package/src/utils/dismissible.helper.ts +0 -9
- package/tsconfig.json +0 -13
- package/tsconfig.lib.json +0 -14
- /package/src/api/use-cases/dismiss/{index.ts → index.d.ts} +0 -0
- /package/src/api/use-cases/{index.ts → index.d.ts} +0 -0
- /package/src/api/use-cases/restore/{index.ts → index.d.ts} +0 -0
- /package/src/events/{index.ts → index.d.ts} +0 -0
- /package/src/exceptions/{index.ts → index.d.ts} +0 -0
- /package/src/response/dtos/{index.ts → index.d.ts} +0 -0
- /package/src/response/{index.ts → index.d.ts} +0 -0
- /package/src/testing/{index.ts → index.d.ts} +0 -0
- /package/src/utils/date/{index.ts → index.d.ts} +0 -0
- /package/src/utils/{index.ts → index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dismiss.controller.spec.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/dismiss/dismiss.controller.spec.ts"],"names":[],"mappings":";;AAAA,mDAAsC;AACtC,6DAAyD;AACzD,2EAAuE;AACvE,2EAAsE;AACtE,0DAA+E;AAC/E,gDAAoD;AAEpD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,UAA6B,CAAC;IAClC,IAAI,WAA4C,CAAC;IACjD,IAAI,mBAAiD,CAAC;IACtD,IAAI,MAA6B,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,IAAA,qBAAI,EAAC,wCAAkB,CAAC,CAAC;QACvC,mBAAmB,GAAG,IAAA,qBAAI,EAAC,0BAAe,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,GAAG,IAAI,+CAAqB,EAAE,CAAC;QAErC,UAAU,GAAG,IAAI,sCAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,IAAI,GAAG,IAAA,0BAAc,EAAC;gBAC1B,EAAE,EAAE,WAAW;gBACf,WAAW,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,0BAAc,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,IAAA,6BAAiB,GAAE,CAAC;YAEpC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAE9E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YACvF,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DismissibleItemResponseDto } from '../../dismissible-item-response.dto';
|
|
2
|
+
declare const DismissResponseDto_base: {
|
|
3
|
+
new (): {
|
|
4
|
+
data: DismissibleItemResponseDto;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Response DTO for the dismiss operation.
|
|
9
|
+
*/
|
|
10
|
+
export declare class DismissResponseDto extends DismissResponseDto_base {
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DismissResponseDto = void 0;
|
|
4
|
+
const success_response_dto_1 = require("../../../response/dtos/success-response.dto");
|
|
5
|
+
const dismissible_item_response_dto_1 = require("../../dismissible-item-response.dto");
|
|
6
|
+
/**
|
|
7
|
+
* Response DTO for the dismiss operation.
|
|
8
|
+
*/
|
|
9
|
+
class DismissResponseDto extends (0, success_response_dto_1.SuccessResponseDto)(dismissible_item_response_dto_1.DismissibleItemResponseDto) {
|
|
10
|
+
}
|
|
11
|
+
exports.DismissResponseDto = DismissResponseDto;
|
|
12
|
+
//# sourceMappingURL=dismiss.response.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dismiss.response.dto.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/dismiss/dismiss.response.dto.ts"],"names":[],"mappings":";;;AAAA,sFAAiF;AACjF,uFAAiF;AAEjF;;GAEG;AACH,MAAa,kBAAmB,SAAQ,IAAA,yCAAkB,EAAC,0DAA0B,CAAC;CAAG;AAAzF,gDAAyF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./dismiss.response.dto"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./dismiss.controller"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/dismiss/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,+DAAqC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DismissibleService } from '../../../core/dismissible.service';
|
|
2
|
+
import { DismissibleItemMapper } from '../../dismissible-item.mapper';
|
|
3
|
+
import { IRequestContext } from '@dismissible/nestjs-dismissible-request';
|
|
4
|
+
import { GetOrCreateResponseDto } from './get-or-create.response.dto';
|
|
5
|
+
import { ResponseService } from '../../../response/response.service';
|
|
6
|
+
/**
|
|
7
|
+
* Controller for get-or-create dismissible item operations.
|
|
8
|
+
*/
|
|
9
|
+
export declare class GetOrCreateController {
|
|
10
|
+
private readonly dismissibleService;
|
|
11
|
+
private readonly mapper;
|
|
12
|
+
private readonly responseService;
|
|
13
|
+
constructor(dismissibleService: DismissibleService, mapper: DismissibleItemMapper, responseService: ResponseService);
|
|
14
|
+
getOrCreate(userId: string, itemId: string, context: IRequestContext): Promise<GetOrCreateResponseDto>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetOrCreateController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
7
|
+
const dismissible_service_1 = require("../../../core/dismissible.service");
|
|
8
|
+
const dismissible_item_mapper_1 = require("../../dismissible-item.mapper");
|
|
9
|
+
const nestjs_dismissible_request_1 = require("@dismissible/nestjs-dismissible-request");
|
|
10
|
+
const get_or_create_response_dto_1 = require("./get-or-create.response.dto");
|
|
11
|
+
const response_service_1 = require("../../../response/response.service");
|
|
12
|
+
const http_exception_filter_1 = require("../../../response/http-exception-filter");
|
|
13
|
+
const api_tags_constants_1 = require("../api-tags.constants");
|
|
14
|
+
const validation_1 = require("../../validation");
|
|
15
|
+
/**
|
|
16
|
+
* Controller for get-or-create dismissible item operations.
|
|
17
|
+
*/
|
|
18
|
+
let GetOrCreateController = class GetOrCreateController {
|
|
19
|
+
constructor(dismissibleService, mapper, responseService) {
|
|
20
|
+
this.dismissibleService = dismissibleService;
|
|
21
|
+
this.mapper = mapper;
|
|
22
|
+
this.responseService = responseService;
|
|
23
|
+
}
|
|
24
|
+
async getOrCreate(userId, itemId, context) {
|
|
25
|
+
const result = await this.dismissibleService.getOrCreate(itemId, userId, context);
|
|
26
|
+
return this.responseService.success(this.mapper.toResponseDto(result.item));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
exports.GetOrCreateController = GetOrCreateController;
|
|
30
|
+
tslib_1.__decorate([
|
|
31
|
+
(0, common_1.Get)(':itemId'),
|
|
32
|
+
(0, swagger_1.ApiOperation)({
|
|
33
|
+
summary: 'Get or create a dismissible item',
|
|
34
|
+
description: 'Retrieves an existing dismissible item by ID, or creates a new one if it does not exist.',
|
|
35
|
+
}),
|
|
36
|
+
(0, swagger_1.ApiParam)({
|
|
37
|
+
name: 'userId',
|
|
38
|
+
description: 'User identifier (max length: 32 characters)',
|
|
39
|
+
example: 'user-123',
|
|
40
|
+
}),
|
|
41
|
+
(0, swagger_1.ApiParam)({
|
|
42
|
+
name: 'itemId',
|
|
43
|
+
description: 'Unique identifier for the dismissible item (max length: 32 characters)',
|
|
44
|
+
example: 'welcome-banner-v2',
|
|
45
|
+
}),
|
|
46
|
+
(0, swagger_1.ApiResponse)({
|
|
47
|
+
status: 200,
|
|
48
|
+
description: 'The dismissible item (retrieved or created)',
|
|
49
|
+
type: get_or_create_response_dto_1.GetOrCreateResponseDto,
|
|
50
|
+
}),
|
|
51
|
+
(0, swagger_1.ApiResponse)({
|
|
52
|
+
status: 403,
|
|
53
|
+
description: 'Operation blocked by lifecycle hook',
|
|
54
|
+
}),
|
|
55
|
+
(0, common_1.UseFilters)(http_exception_filter_1.HttpExceptionFilter),
|
|
56
|
+
tslib_1.__param(0, (0, validation_1.UserId)()),
|
|
57
|
+
tslib_1.__param(1, (0, validation_1.ItemId)()),
|
|
58
|
+
tslib_1.__param(2, (0, nestjs_dismissible_request_1.RequestContext)()),
|
|
59
|
+
tslib_1.__metadata("design:type", Function),
|
|
60
|
+
tslib_1.__metadata("design:paramtypes", [String, String, Object]),
|
|
61
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
62
|
+
], GetOrCreateController.prototype, "getOrCreate", null);
|
|
63
|
+
exports.GetOrCreateController = GetOrCreateController = tslib_1.__decorate([
|
|
64
|
+
(0, swagger_1.ApiTags)(api_tags_constants_1.API_TAG_DISMISSIBLE),
|
|
65
|
+
(0, common_1.Controller)('v1/users/:userId/items'),
|
|
66
|
+
tslib_1.__metadata("design:paramtypes", [dismissible_service_1.DismissibleService,
|
|
67
|
+
dismissible_item_mapper_1.DismissibleItemMapper,
|
|
68
|
+
response_service_1.ResponseService])
|
|
69
|
+
], GetOrCreateController);
|
|
70
|
+
//# sourceMappingURL=get-or-create.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-or-create.controller.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/get-or-create/get-or-create.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAA6D;AAC7D,6CAA+E;AAC/E,2EAAuE;AACvE,2EAAsE;AACtE,wFAA0F;AAC1F,6EAAsE;AACtE,yEAAqE;AACrE,mFAA8E;AAC9E,8DAA4D;AAC5D,iDAAkD;AAElD;;GAEG;AAGI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YACmB,kBAAsC,EACtC,MAA6B,EAC7B,eAAgC;QAFhC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAuB;QAC7B,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IA4BE,AAAN,KAAK,CAAC,WAAW,CACL,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AA1CY,sDAAqB;AAiC1B;IA1BL,IAAA,YAAG,EAAC,SAAS,CAAC;IACd,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,kCAAkC;QAC3C,WAAW,EACT,0FAA0F;KAC7F,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,mDAAsB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,mBAAU,EAAC,2CAAmB,CAAC;IAE7B,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,2CAAc,GAAE,CAAA;;;;wDAKlB;gCAzCU,qBAAqB;IAFjC,IAAA,iBAAO,EAAC,wCAAmB,CAAC;IAC5B,IAAA,mBAAU,EAAC,wBAAwB,CAAC;6CAGI,wCAAkB;QAC9B,+CAAqB;QACZ,kCAAe;GAJxC,qBAAqB,CA0CjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ts_jest_mocker_1 = require("ts-jest-mocker");
|
|
4
|
+
const get_or_create_controller_1 = require("./get-or-create.controller");
|
|
5
|
+
const dismissible_service_1 = require("../../../core/dismissible.service");
|
|
6
|
+
const dismissible_item_mapper_1 = require("../../dismissible-item.mapper");
|
|
7
|
+
const factories_1 = require("../../../testing/factories");
|
|
8
|
+
const response_1 = require("../../../response");
|
|
9
|
+
describe('GetOrCreateController', () => {
|
|
10
|
+
let controller;
|
|
11
|
+
let mockService;
|
|
12
|
+
let mockResponseService;
|
|
13
|
+
let mapper;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
mockService = (0, ts_jest_mocker_1.mock)(dismissible_service_1.DismissibleService);
|
|
16
|
+
mockResponseService = (0, ts_jest_mocker_1.mock)(response_1.ResponseService, { failIfMockNotProvided: false });
|
|
17
|
+
mockResponseService.success.mockImplementation((data) => ({ data }));
|
|
18
|
+
mapper = new dismissible_item_mapper_1.DismissibleItemMapper();
|
|
19
|
+
controller = new get_or_create_controller_1.GetOrCreateController(mockService, mapper, mockResponseService);
|
|
20
|
+
});
|
|
21
|
+
describe('getOrCreate', () => {
|
|
22
|
+
it('should return item with created flag wrapped in data', async () => {
|
|
23
|
+
const item = (0, factories_1.createTestItem)({ id: 'test-item' });
|
|
24
|
+
const context = (0, factories_1.createTestContext)();
|
|
25
|
+
mockService.getOrCreate.mockResolvedValue({ item, created: true });
|
|
26
|
+
const result = await controller.getOrCreate('test-user-id', 'test-item', context);
|
|
27
|
+
expect(result.data.itemId).toBe('test-item');
|
|
28
|
+
expect(mockResponseService.success).toHaveBeenCalled();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=get-or-create.controller.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-or-create.controller.spec.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/get-or-create/get-or-create.controller.spec.ts"],"names":[],"mappings":";;AAAA,mDAAsC;AACtC,yEAAmE;AACnE,2EAAuE;AACvE,2EAAsE;AACtE,0DAA+E;AAC/E,gDAAoD;AAEpD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,UAAiC,CAAC;IACtC,IAAI,WAA4C,CAAC;IACjD,IAAI,mBAAiD,CAAC;IACtD,IAAI,MAA6B,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,IAAA,qBAAI,EAAC,wCAAkB,CAAC,CAAC;QACvC,mBAAmB,GAAG,IAAA,qBAAI,EAAC,0BAAe,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,GAAG,IAAI,+CAAqB,EAAE,CAAC;QAErC,UAAU,GAAG,IAAI,gDAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,IAAI,GAAG,IAAA,0BAAc,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,IAAA,6BAAiB,GAAE,CAAC;YAEpC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAElF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DismissibleItemResponseDto } from '../../dismissible-item-response.dto';
|
|
2
|
+
declare const GetOrCreateResponseDto_base: {
|
|
3
|
+
new (): {
|
|
4
|
+
data: DismissibleItemResponseDto;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Response DTO for the getOrCreate operation.
|
|
9
|
+
*/
|
|
10
|
+
export declare class GetOrCreateResponseDto extends GetOrCreateResponseDto_base {
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetOrCreateResponseDto = void 0;
|
|
4
|
+
const success_response_dto_1 = require("../../../response/dtos/success-response.dto");
|
|
5
|
+
const dismissible_item_response_dto_1 = require("../../dismissible-item-response.dto");
|
|
6
|
+
/**
|
|
7
|
+
* Response DTO for the getOrCreate operation.
|
|
8
|
+
*/
|
|
9
|
+
class GetOrCreateResponseDto extends (0, success_response_dto_1.SuccessResponseDto)(dismissible_item_response_dto_1.DismissibleItemResponseDto) {
|
|
10
|
+
}
|
|
11
|
+
exports.GetOrCreateResponseDto = GetOrCreateResponseDto;
|
|
12
|
+
//# sourceMappingURL=get-or-create.response.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-or-create.response.dto.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/get-or-create/get-or-create.response.dto.ts"],"names":[],"mappings":";;;AAAA,sFAAiF;AACjF,uFAAiF;AAEjF;;GAEG;AACH,MAAa,sBAAuB,SAAQ,IAAA,yCAAkB,EAAC,0DAA0B,CAAC;CAAG;AAA7F,wDAA6F"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./get-or-create.response.dto"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./get-or-create.controller"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/get-or-create/index.ts"],"names":[],"mappings":";;;AAAA,uEAA6C;AAC7C,qEAA2C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./get-or-create"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./dismiss"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./restore"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/dismissible/src/api/use-cases/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,oDAA0B;AAC1B,oDAA0B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./restore.response.dto"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./restore.controller"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/restore/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,+DAAqC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DismissibleService } from '../../../core/dismissible.service';
|
|
2
|
+
import { DismissibleItemMapper } from '../../dismissible-item.mapper';
|
|
3
|
+
import { IRequestContext } from '@dismissible/nestjs-dismissible-request';
|
|
4
|
+
import { RestoreResponseDto } from './restore.response.dto';
|
|
5
|
+
import { ResponseService } from '../../../response/response.service';
|
|
6
|
+
/**
|
|
7
|
+
* Controller for restore dismissible item operations.
|
|
8
|
+
*/
|
|
9
|
+
export declare class RestoreController {
|
|
10
|
+
private readonly dismissibleService;
|
|
11
|
+
private readonly mapper;
|
|
12
|
+
private readonly responseService;
|
|
13
|
+
constructor(dismissibleService: DismissibleService, mapper: DismissibleItemMapper, responseService: ResponseService);
|
|
14
|
+
restore(userId: string, itemId: string, context: IRequestContext): Promise<RestoreResponseDto>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestoreController = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
7
|
+
const dismissible_service_1 = require("../../../core/dismissible.service");
|
|
8
|
+
const dismissible_item_mapper_1 = require("../../dismissible-item.mapper");
|
|
9
|
+
const nestjs_dismissible_request_1 = require("@dismissible/nestjs-dismissible-request");
|
|
10
|
+
const restore_response_dto_1 = require("./restore.response.dto");
|
|
11
|
+
const response_service_1 = require("../../../response/response.service");
|
|
12
|
+
const http_exception_filter_1 = require("../../../response/http-exception-filter");
|
|
13
|
+
const api_tags_constants_1 = require("../api-tags.constants");
|
|
14
|
+
const validation_1 = require("../../validation");
|
|
15
|
+
/**
|
|
16
|
+
* Controller for restore dismissible item operations.
|
|
17
|
+
*/
|
|
18
|
+
let RestoreController = class RestoreController {
|
|
19
|
+
constructor(dismissibleService, mapper, responseService) {
|
|
20
|
+
this.dismissibleService = dismissibleService;
|
|
21
|
+
this.mapper = mapper;
|
|
22
|
+
this.responseService = responseService;
|
|
23
|
+
}
|
|
24
|
+
async restore(userId, itemId, context) {
|
|
25
|
+
const result = await this.dismissibleService.restore(itemId, userId, context);
|
|
26
|
+
return this.responseService.success(this.mapper.toResponseDto(result.item));
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
exports.RestoreController = RestoreController;
|
|
30
|
+
tslib_1.__decorate([
|
|
31
|
+
(0, common_1.Post)(':itemId'),
|
|
32
|
+
(0, swagger_1.ApiOperation)({
|
|
33
|
+
summary: 'Restore a dismissed item',
|
|
34
|
+
description: 'Restores a previously dismissed item.',
|
|
35
|
+
}),
|
|
36
|
+
(0, swagger_1.ApiParam)({
|
|
37
|
+
name: 'userId',
|
|
38
|
+
description: 'User identifier (max length: 32 characters)',
|
|
39
|
+
example: 'user-123',
|
|
40
|
+
}),
|
|
41
|
+
(0, swagger_1.ApiParam)({
|
|
42
|
+
name: 'itemId',
|
|
43
|
+
description: 'Unique identifier for the dismissible item (max length: 32 characters)',
|
|
44
|
+
example: 'welcome-banner-v2',
|
|
45
|
+
}),
|
|
46
|
+
(0, swagger_1.ApiResponse)({
|
|
47
|
+
status: 200,
|
|
48
|
+
description: 'The restored item',
|
|
49
|
+
type: restore_response_dto_1.RestoreResponseDto,
|
|
50
|
+
}),
|
|
51
|
+
(0, swagger_1.ApiResponse)({
|
|
52
|
+
status: 400,
|
|
53
|
+
description: 'Item not found or not dismissed',
|
|
54
|
+
}),
|
|
55
|
+
(0, swagger_1.ApiResponse)({
|
|
56
|
+
status: 403,
|
|
57
|
+
description: 'Operation blocked by lifecycle hook',
|
|
58
|
+
}),
|
|
59
|
+
(0, common_1.UseFilters)(http_exception_filter_1.HttpExceptionFilter),
|
|
60
|
+
tslib_1.__param(0, (0, validation_1.UserId)()),
|
|
61
|
+
tslib_1.__param(1, (0, validation_1.ItemId)()),
|
|
62
|
+
tslib_1.__param(2, (0, nestjs_dismissible_request_1.RequestContext)()),
|
|
63
|
+
tslib_1.__metadata("design:type", Function),
|
|
64
|
+
tslib_1.__metadata("design:paramtypes", [String, String, Object]),
|
|
65
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
66
|
+
], RestoreController.prototype, "restore", null);
|
|
67
|
+
exports.RestoreController = RestoreController = tslib_1.__decorate([
|
|
68
|
+
(0, swagger_1.ApiTags)(api_tags_constants_1.API_TAG_DISMISSIBLE),
|
|
69
|
+
(0, common_1.Controller)('v1/users/:userId/items'),
|
|
70
|
+
tslib_1.__metadata("design:paramtypes", [dismissible_service_1.DismissibleService,
|
|
71
|
+
dismissible_item_mapper_1.DismissibleItemMapper,
|
|
72
|
+
response_service_1.ResponseService])
|
|
73
|
+
], RestoreController);
|
|
74
|
+
//# sourceMappingURL=restore.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.controller.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/restore/restore.controller.ts"],"names":[],"mappings":";;;;AAAA,2CAA8D;AAC9D,6CAA+E;AAC/E,2EAAuE;AACvE,2EAAsE;AACtE,wFAA0F;AAC1F,iEAA4D;AAC5D,yEAAqE;AACrE,mFAA8E;AAC9E,8DAA4D;AAC5D,iDAAkD;AAElD;;GAEG;AAGI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YACmB,kBAAsC,EACtC,MAA6B,EAC7B,eAAgC;QAFhC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,WAAM,GAAN,MAAM,CAAuB;QAC7B,oBAAe,GAAf,eAAe,CAAiB;IAChD,CAAC;IA+BE,AAAN,KAAK,CAAC,OAAO,CACD,MAAc,EACd,MAAc,EACN,OAAwB;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AA7CY,8CAAiB;AAoCtB;IA7BL,IAAA,aAAI,EAAC,SAAS,CAAC;IACf,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,uCAAuC;KACrD,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,UAAU;KACpB,CAAC;IACD,IAAA,kBAAQ,EAAC;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,yCAAkB;KACzB,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,iCAAiC;KAC/C,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qCAAqC;KACnD,CAAC;IACD,IAAA,mBAAU,EAAC,2CAAmB,CAAC;IAE7B,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,mBAAM,GAAE,CAAA;IACR,mBAAA,IAAA,2CAAc,GAAE,CAAA;;;;gDAKlB;4BA5CU,iBAAiB;IAF7B,IAAA,iBAAO,EAAC,wCAAmB,CAAC;IAC5B,IAAA,mBAAU,EAAC,wBAAwB,CAAC;6CAGI,wCAAkB;QAC9B,+CAAqB;QACZ,kCAAe;GAJxC,iBAAiB,CA6C7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ts_jest_mocker_1 = require("ts-jest-mocker");
|
|
4
|
+
const restore_controller_1 = require("./restore.controller");
|
|
5
|
+
const dismissible_service_1 = require("../../../core/dismissible.service");
|
|
6
|
+
const dismissible_item_mapper_1 = require("../../dismissible-item.mapper");
|
|
7
|
+
const factories_1 = require("../../../testing/factories");
|
|
8
|
+
const response_1 = require("../../../response");
|
|
9
|
+
describe('RestoreController', () => {
|
|
10
|
+
let controller;
|
|
11
|
+
let mockService;
|
|
12
|
+
let mockResponseService;
|
|
13
|
+
let mapper;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
mockService = (0, ts_jest_mocker_1.mock)(dismissible_service_1.DismissibleService);
|
|
16
|
+
mockResponseService = (0, ts_jest_mocker_1.mock)(response_1.ResponseService, { failIfMockNotProvided: false });
|
|
17
|
+
mockResponseService.success.mockImplementation((data) => ({ data }));
|
|
18
|
+
mapper = new dismissible_item_mapper_1.DismissibleItemMapper();
|
|
19
|
+
controller = new restore_controller_1.RestoreController(mockService, mapper, mockResponseService);
|
|
20
|
+
});
|
|
21
|
+
describe('restore', () => {
|
|
22
|
+
it('should return restored item wrapped in data', async () => {
|
|
23
|
+
const item = (0, factories_1.createTestItem)({ id: 'test-item' });
|
|
24
|
+
const previousItem = (0, factories_1.createTestItem)({
|
|
25
|
+
id: 'test-item',
|
|
26
|
+
dismissedAt: new Date(),
|
|
27
|
+
});
|
|
28
|
+
const context = (0, factories_1.createTestContext)();
|
|
29
|
+
mockService.restore.mockResolvedValue({ item, previousItem });
|
|
30
|
+
const result = await controller.restore('test-user-id', 'test-item', context);
|
|
31
|
+
expect(result.data.itemId).toBe('test-item');
|
|
32
|
+
expect(mockService.restore).toHaveBeenCalledWith('test-item', 'test-user-id', context);
|
|
33
|
+
expect(mockResponseService.success).toHaveBeenCalled();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=restore.controller.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.controller.spec.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/restore/restore.controller.spec.ts"],"names":[],"mappings":";;AAAA,mDAAsC;AACtC,6DAAyD;AACzD,2EAAuE;AACvE,2EAAsE;AACtE,0DAA+E;AAC/E,gDAAoD;AAEpD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,UAA6B,CAAC;IAClC,IAAI,WAA4C,CAAC;IACjD,IAAI,mBAAiD,CAAC;IACtD,IAAI,MAA6B,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,IAAA,qBAAI,EAAC,wCAAkB,CAAC,CAAC;QACvC,mBAAmB,GAAG,IAAA,qBAAI,EAAC,0BAAe,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,mBAAmB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,GAAG,IAAI,+CAAqB,EAAE,CAAC;QAErC,UAAU,GAAG,IAAI,sCAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,IAAI,GAAG,IAAA,0BAAc,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,IAAA,0BAAc,EAAC;gBAClC,EAAE,EAAE,WAAW;gBACf,WAAW,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,6BAAiB,GAAE,CAAC;YAEpC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YAE9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAE9E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YACvF,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DismissibleItemResponseDto } from '../../dismissible-item-response.dto';
|
|
2
|
+
declare const RestoreResponseDto_base: {
|
|
3
|
+
new (): {
|
|
4
|
+
data: DismissibleItemResponseDto;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Response DTO for the restore operation.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RestoreResponseDto extends RestoreResponseDto_base {
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RestoreResponseDto = void 0;
|
|
4
|
+
const success_response_dto_1 = require("../../../response/dtos/success-response.dto");
|
|
5
|
+
const dismissible_item_response_dto_1 = require("../../dismissible-item-response.dto");
|
|
6
|
+
/**
|
|
7
|
+
* Response DTO for the restore operation.
|
|
8
|
+
*/
|
|
9
|
+
class RestoreResponseDto extends (0, success_response_dto_1.SuccessResponseDto)(dismissible_item_response_dto_1.DismissibleItemResponseDto) {
|
|
10
|
+
}
|
|
11
|
+
exports.RestoreResponseDto = RestoreResponseDto;
|
|
12
|
+
//# sourceMappingURL=restore.response.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.response.dto.js","sourceRoot":"","sources":["../../../../../../../libs/dismissible/src/api/use-cases/restore/restore.response.dto.ts"],"names":[],"mappings":";;;AAAA,sFAAiF;AACjF,uFAAiF;AAEjF;;GAEG;AACH,MAAa,kBAAmB,SAAQ,IAAA,yCAAkB,EAAC,0DAA0B,CAAC;CAAG;AAAzF,gDAAyF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./param-validation.pipe"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./param.decorators"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/dismissible/src/api/validation/index.ts"],"names":[],"mappings":";;;AAAA,kEAAwC;AACxC,6DAAmC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PipeTransform, ArgumentMetadata } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Validation pipe for userId and itemId route parameters.
|
|
4
|
+
* Validates:
|
|
5
|
+
* - Required (non-empty)
|
|
6
|
+
* - Length between 1-64 characters
|
|
7
|
+
* - Contains only alphanumeric characters, dashes, and underscores
|
|
8
|
+
*/
|
|
9
|
+
export declare class ParamValidationPipe implements PipeTransform<string, string> {
|
|
10
|
+
transform(value: string, metadata: ArgumentMetadata): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParamValidationPipe = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const dismissible_input_dto_1 = require("../../validation/dismissible-input.dto");
|
|
7
|
+
/**
|
|
8
|
+
* Validation pipe for userId and itemId route parameters.
|
|
9
|
+
* Validates:
|
|
10
|
+
* - Required (non-empty)
|
|
11
|
+
* - Length between 1-64 characters
|
|
12
|
+
* - Contains only alphanumeric characters, dashes, and underscores
|
|
13
|
+
*/
|
|
14
|
+
let ParamValidationPipe = class ParamValidationPipe {
|
|
15
|
+
transform(value, metadata) {
|
|
16
|
+
const paramName = metadata.data || 'parameter';
|
|
17
|
+
if (!value || value.trim() === '') {
|
|
18
|
+
throw new common_1.BadRequestException(`${paramName} is required`);
|
|
19
|
+
}
|
|
20
|
+
if (value.length < dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MIN_LENGTH) {
|
|
21
|
+
throw new common_1.BadRequestException(`${paramName} must be at least ${dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MIN_LENGTH} character`);
|
|
22
|
+
}
|
|
23
|
+
if (value.length > dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MAX_LENGTH) {
|
|
24
|
+
throw new common_1.BadRequestException(`${paramName} must be at most ${dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_MAX_LENGTH} characters`);
|
|
25
|
+
}
|
|
26
|
+
if (!dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_PATTERN.test(value)) {
|
|
27
|
+
throw new common_1.BadRequestException(`${paramName} ${dismissible_input_dto_1.VALIDATION_CONSTANTS.ID_PATTERN_MESSAGE}`);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.ParamValidationPipe = ParamValidationPipe;
|
|
33
|
+
exports.ParamValidationPipe = ParamValidationPipe = tslib_1.__decorate([
|
|
34
|
+
(0, common_1.Injectable)()
|
|
35
|
+
], ParamValidationPipe);
|
|
36
|
+
//# sourceMappingURL=param-validation.pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"param-validation.pipe.js","sourceRoot":"","sources":["../../../../../../libs/dismissible/src/api/validation/param-validation.pipe.ts"],"names":[],"mappings":";;;;AAAA,2CAAkG;AAClG,kFAA8E;AAE9E;;;;;;GAMG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,SAAS,CAAC,KAAa,EAAE,QAA0B;QACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,CAAC;QAE/C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,4BAAmB,CAAC,GAAG,SAAS,cAAc,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,4CAAoB,CAAC,aAAa,EAAE,CAAC;YACtD,MAAM,IAAI,4BAAmB,CAC3B,GAAG,SAAS,qBAAqB,4CAAoB,CAAC,aAAa,YAAY,CAChF,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,GAAG,4CAAoB,CAAC,aAAa,EAAE,CAAC;YACtD,MAAM,IAAI,4BAAmB,CAC3B,GAAG,SAAS,oBAAoB,4CAAoB,CAAC,aAAa,aAAa,CAChF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,4CAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,4BAAmB,CAAC,GAAG,SAAS,IAAI,4CAAoB,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AA1BY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CA0B/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|