@taico/taico 0.8.6 → 0.9.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 +1 -1
- package/dist/access-requests/access-request.entity.d.ts +16 -0
- package/dist/access-requests/access-request.entity.js +87 -0
- package/dist/access-requests/access-request.entity.js.map +1 -0
- package/dist/access-requests/access-request.limits.d.ts +3 -0
- package/dist/access-requests/access-request.limits.js +7 -0
- package/dist/access-requests/access-request.limits.js.map +1 -0
- package/dist/access-requests/access-requests.controller.d.ts +16 -0
- package/dist/access-requests/access-requests.controller.js +129 -0
- package/dist/access-requests/access-requests.controller.js.map +1 -0
- package/dist/access-requests/access-requests.module.d.ts +2 -0
- package/dist/access-requests/access-requests.module.js +26 -0
- package/dist/access-requests/access-requests.module.js.map +1 -0
- package/dist/access-requests/access-requests.service.d.ts +14 -0
- package/dist/access-requests/access-requests.service.js +106 -0
- package/dist/access-requests/access-requests.service.js.map +1 -0
- package/dist/access-requests/dto/http/access-request-admin.dto.d.ts +26 -0
- package/dist/access-requests/dto/http/access-request-admin.dto.js +130 -0
- package/dist/access-requests/dto/http/access-request-admin.dto.js.map +1 -0
- package/dist/access-requests/dto/http/create-access-request.dto.d.ts +11 -0
- package/dist/access-requests/dto/http/create-access-request.dto.js +78 -0
- package/dist/access-requests/dto/http/create-access-request.dto.js.map +1 -0
- package/dist/access-requests/dto/service/access-requests.service.types.d.ts +29 -0
- package/dist/access-requests/dto/service/access-requests.service.types.js +3 -0
- package/dist/access-requests/dto/service/access-requests.service.types.js.map +1 -0
- package/dist/access-requests/enums/access-request-heard-from.enum.d.ts +7 -0
- package/dist/access-requests/enums/access-request-heard-from.enum.js +12 -0
- package/dist/access-requests/enums/access-request-heard-from.enum.js.map +1 -0
- package/dist/access-requests/enums/access-request-status.enum.d.ts +4 -0
- package/dist/access-requests/enums/access-request-status.enum.js +9 -0
- package/dist/access-requests/enums/access-request-status.enum.js.map +1 -0
- package/dist/access-requests/enums/index.d.ts +2 -0
- package/dist/access-requests/enums/index.js +8 -0
- package/dist/access-requests/enums/index.js.map +1 -0
- package/dist/access-requests/errors/access-requests.errors.d.ts +8 -0
- package/dist/access-requests/errors/access-requests.errors.js +21 -0
- package/dist/access-requests/errors/access-requests.errors.js.map +1 -0
- package/dist/access-requests/submission-ceiling.d.ts +7 -0
- package/dist/access-requests/submission-ceiling.js +21 -0
- package/dist/access-requests/submission-ceiling.js.map +1 -0
- package/dist/access-requests/submission-ceiling.spec.d.ts +1 -0
- package/dist/access-requests/submission-ceiling.spec.js +18 -0
- package/dist/access-requests/submission-ceiling.spec.js.map +1 -0
- package/dist/app.module.js +10 -0
- package/dist/app.module.js.map +1 -1
- package/dist/common/postgres-io.adapter.js +2 -1
- package/dist/common/postgres-io.adapter.js.map +1 -1
- package/dist/errors/http/error-catalog.js +18 -0
- package/dist/errors/http/error-catalog.js.map +1 -1
- package/dist/executions/events/execution-traces-changed.event.d.ts +5 -0
- package/dist/executions/events/execution-traces-changed.event.js +12 -0
- package/dist/executions/events/execution-traces-changed.event.js.map +1 -0
- package/dist/executions/executions-worker.gateway.d.ts +17 -2
- package/dist/executions/executions-worker.gateway.js +29 -1
- package/dist/executions/executions-worker.gateway.js.map +1 -1
- package/dist/executions/executions.gateway.d.ts +12 -0
- package/dist/executions/executions.gateway.js +39 -0
- package/dist/executions/executions.gateway.js.map +1 -1
- package/dist/executions/executions.module.js +6 -0
- package/dist/executions/executions.module.js.map +1 -1
- package/dist/executions/staleness/stale-active-task-execution-pruner.service.js +3 -0
- package/dist/executions/staleness/stale-active-task-execution-pruner.service.js.map +1 -1
- package/dist/executions/staleness/stale-active-task-execution-pruner.service.spec.js +3 -0
- package/dist/executions/staleness/stale-active-task-execution-pruner.service.spec.js.map +1 -1
- package/dist/executions/traces/dto/http/execution-traces-response.dto.d.ts +17 -0
- package/dist/executions/traces/dto/http/execution-traces-response.dto.js +86 -0
- package/dist/executions/traces/dto/http/execution-traces-response.dto.js.map +1 -0
- package/dist/executions/traces/dto/http/list-execution-traces-query.dto.d.ts +6 -0
- package/dist/executions/traces/dto/http/list-execution-traces-query.dto.js +63 -0
- package/dist/executions/traces/dto/http/list-execution-traces-query.dto.js.map +1 -0
- package/dist/executions/traces/execution-trace.entity.d.ts +9 -0
- package/dist/executions/traces/execution-trace.entity.js +55 -0
- package/dist/executions/traces/execution-trace.entity.js.map +1 -0
- package/dist/executions/traces/execution-traces.controller.d.ts +8 -0
- package/dist/executions/traces/execution-traces.controller.js +68 -0
- package/dist/executions/traces/execution-traces.controller.js.map +1 -0
- package/dist/executions/traces/execution-traces.errors.d.ts +9 -0
- package/dist/executions/traces/execution-traces.errors.js +20 -0
- package/dist/executions/traces/execution-traces.errors.js.map +1 -0
- package/dist/executions/traces/execution-traces.service.d.ts +20 -0
- package/dist/executions/traces/execution-traces.service.js +133 -0
- package/dist/executions/traces/execution-traces.service.js.map +1 -0
- package/dist/executions/traces/execution-traces.service.spec.d.ts +1 -0
- package/dist/executions/traces/execution-traces.service.spec.js +131 -0
- package/dist/executions/traces/execution-traces.service.spec.js.map +1 -0
- package/dist/migrations/1762300000000-AccessRequests.d.ts +6 -0
- package/dist/migrations/1762300000000-AccessRequests.js +29 -0
- package/dist/migrations/1762300000000-AccessRequests.js.map +1 -0
- package/dist/migrations/1762400000000-AccessRequestHeardFrom.d.ts +6 -0
- package/dist/migrations/1762400000000-AccessRequestHeardFrom.js +23 -0
- package/dist/migrations/1762400000000-AccessRequestHeardFrom.js.map +1 -0
- package/dist/migrations/1762500000000-ExecutionTraces.d.ts +6 -0
- package/dist/migrations/1762500000000-ExecutionTraces.js +24 -0
- package/dist/migrations/1762500000000-ExecutionTraces.js.map +1 -0
- package/dist/migrations/1762500000001-ExecutionTraceJson.d.ts +6 -0
- package/dist/migrations/1762500000001-ExecutionTraceJson.js +14 -0
- package/dist/migrations/1762500000001-ExecutionTraceJson.js.map +1 -0
- package/dist/threads/agent/thread-agent-tools.factory.d.ts +3 -1
- package/dist/threads/agent/thread-agent-tools.factory.js +17 -2
- package/dist/threads/agent/thread-agent-tools.factory.js.map +1 -1
- package/dist/threads/agent/thread-agent.prompts.d.ts +1 -0
- package/dist/threads/agent/thread-agent.prompts.js +2 -1
- package/dist/threads/agent/thread-agent.prompts.js.map +1 -1
- package/dist/threads/dto/update-thread.dto.js +3 -0
- package/dist/threads/dto/update-thread.dto.js.map +1 -1
- package/dist/threads/errors/threads.errors.d.ts +4 -0
- package/dist/threads/errors/threads.errors.js +10 -1
- package/dist/threads/errors/threads.errors.js.map +1 -1
- package/dist/threads/thread-rename.service.d.ts +12 -0
- package/dist/threads/thread-rename.service.js +70 -0
- package/dist/threads/thread-rename.service.js.map +1 -0
- package/dist/threads/thread-rename.service.spec.d.ts +1 -0
- package/dist/threads/thread-rename.service.spec.js +47 -0
- package/dist/threads/thread-rename.service.spec.js.map +1 -0
- package/dist/threads/threads.module.js +2 -0
- package/dist/threads/threads.module.js.map +1 -1
- package/dist/threads/threads.service.d.ts +3 -1
- package/dist/threads/threads.service.js +6 -3
- package/dist/threads/threads.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Backend
|
|
2
2
|
|
|
3
|
-
[](https://badge.socket.dev/npm/package/@taico/taico/0.9.0)
|
|
4
4
|
|
|
5
5
|
NestJS backend for Taico.
|
|
6
6
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AccessRequestHeardFrom, AccessRequestStatus } from './enums';
|
|
2
|
+
export declare class AccessRequestEntity {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
emailNormalized: string;
|
|
6
|
+
building: string | null;
|
|
7
|
+
heardFrom: AccessRequestHeardFrom | null;
|
|
8
|
+
heardFromOther: string | null;
|
|
9
|
+
status: AccessRequestStatus;
|
|
10
|
+
submissionCount: number;
|
|
11
|
+
reviewedAt: Date | null;
|
|
12
|
+
reviewedByActorId: string | null;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
lastSubmittedAt: Date;
|
|
15
|
+
updatedAt: Date;
|
|
16
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AccessRequestEntity = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const enums_1 = require("./enums");
|
|
15
|
+
let AccessRequestEntity = class AccessRequestEntity {
|
|
16
|
+
id;
|
|
17
|
+
email;
|
|
18
|
+
emailNormalized;
|
|
19
|
+
building;
|
|
20
|
+
heardFrom;
|
|
21
|
+
heardFromOther;
|
|
22
|
+
status;
|
|
23
|
+
submissionCount;
|
|
24
|
+
reviewedAt;
|
|
25
|
+
reviewedByActorId;
|
|
26
|
+
createdAt;
|
|
27
|
+
lastSubmittedAt;
|
|
28
|
+
updatedAt;
|
|
29
|
+
};
|
|
30
|
+
exports.AccessRequestEntity = AccessRequestEntity;
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], AccessRequestEntity.prototype, "id", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 320 }),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], AccessRequestEntity.prototype, "email", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, typeorm_1.Index)('IDX_access_requests_email_normalized', { unique: true }),
|
|
41
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 320, name: 'email_normalized' }),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], AccessRequestEntity.prototype, "emailNormalized", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 280, nullable: true }),
|
|
46
|
+
__metadata("design:type", Object)
|
|
47
|
+
], AccessRequestEntity.prototype, "building", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 32, nullable: true, name: 'heard_from' }),
|
|
50
|
+
__metadata("design:type", Object)
|
|
51
|
+
], AccessRequestEntity.prototype, "heardFrom", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 120, nullable: true, name: 'heard_from_other' }),
|
|
54
|
+
__metadata("design:type", Object)
|
|
55
|
+
], AccessRequestEntity.prototype, "heardFromOther", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, typeorm_1.Column)({ type: 'varchar', length: 16, default: enums_1.AccessRequestStatus.NEW }),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], AccessRequestEntity.prototype, "status", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, typeorm_1.Column)({ type: 'int', default: 1, name: 'submission_count' }),
|
|
62
|
+
__metadata("design:type", Number)
|
|
63
|
+
], AccessRequestEntity.prototype, "submissionCount", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, typeorm_1.Column)({ type: 'timestamptz', nullable: true, name: 'reviewed_at' }),
|
|
66
|
+
__metadata("design:type", Object)
|
|
67
|
+
], AccessRequestEntity.prototype, "reviewedAt", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, typeorm_1.Column)({ type: 'uuid', nullable: true, name: 'reviewed_by_actor_id' }),
|
|
70
|
+
__metadata("design:type", Object)
|
|
71
|
+
], AccessRequestEntity.prototype, "reviewedByActorId", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, typeorm_1.CreateDateColumn)({ type: 'timestamptz', name: 'created_at' }),
|
|
74
|
+
__metadata("design:type", Date)
|
|
75
|
+
], AccessRequestEntity.prototype, "createdAt", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, typeorm_1.Column)({ type: 'timestamptz', name: 'last_submitted_at', default: () => 'now()' }),
|
|
78
|
+
__metadata("design:type", Date)
|
|
79
|
+
], AccessRequestEntity.prototype, "lastSubmittedAt", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, typeorm_1.UpdateDateColumn)({ type: 'timestamptz', name: 'updated_at' }),
|
|
82
|
+
__metadata("design:type", Date)
|
|
83
|
+
], AccessRequestEntity.prototype, "updatedAt", void 0);
|
|
84
|
+
exports.AccessRequestEntity = AccessRequestEntity = __decorate([
|
|
85
|
+
(0, typeorm_1.Entity)('access_requests')
|
|
86
|
+
], AccessRequestEntity);
|
|
87
|
+
//# sourceMappingURL=access-request.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-request.entity.js","sourceRoot":"","sources":["../../src/access-requests/access-request.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAOiB;AACjB,mCAAsE;AAO/D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAE9B,EAAE,CAAU;IAIZ,KAAK,CAAU;IAKf,eAAe,CAAU;IAIzB,QAAQ,CAAiB;IAIzB,SAAS,CAAiC;IAI1C,cAAc,CAAiB;IAG/B,MAAM,CAAuB;IAI7B,eAAe,CAAU;IAGzB,UAAU,CAAe;IAGzB,iBAAiB,CAAiB;IAGlC,SAAS,CAAQ;IAGjB,eAAe,CAAQ;IAGvB,SAAS,CAAQ;CAClB,CAAA;AA9CY,kDAAmB;AAE9B;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;+CACnB;AAIZ;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;kDAC1B;AAKf;IAFC,IAAA,eAAK,EAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/D,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;4DAC1C;AAIzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDAChC;AAIzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;sDAClC;AAI1C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;2DACpD;AAG/B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,2BAAmB,CAAC,GAAG,EAAE,CAAC;;mDAC7C;AAI7B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;;4DACrC;AAGzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;uDAC5C;AAGzB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;;8DACrC;AAGlC;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAClD,IAAI;sDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;8BACjE,IAAI;4DAAC;AAGvB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAClD,IAAI;sDAAC;8BA7CN,mBAAmB;IAD/B,IAAA,gBAAM,EAAC,iBAAiB,CAAC;GACb,mBAAmB,CA8C/B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACCESS_REQUEST_HEARD_FROM_OTHER_MAX = exports.ACCESS_REQUEST_BUILDING_MAX = exports.ACCESS_REQUEST_EMAIL_MAX = void 0;
|
|
4
|
+
exports.ACCESS_REQUEST_EMAIL_MAX = 254;
|
|
5
|
+
exports.ACCESS_REQUEST_BUILDING_MAX = 280;
|
|
6
|
+
exports.ACCESS_REQUEST_HEARD_FROM_OTHER_MAX = 120;
|
|
7
|
+
//# sourceMappingURL=access-request.limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-request.limits.js","sourceRoot":"","sources":["../../src/access-requests/access-request.limits.ts"],"names":[],"mappings":";;;AACa,QAAA,wBAAwB,GAAG,GAAG,CAAC;AAC/B,QAAA,2BAA2B,GAAG,GAAG,CAAC;AAElC,QAAA,mCAAmC,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { UserContext } from '../auth/guards/context/auth-context.types';
|
|
2
|
+
import { AccessRequestsService } from './access-requests.service';
|
|
3
|
+
import { CreateAccessRequestDto, CreateAccessRequestResponseDto } from './dto/http/create-access-request.dto';
|
|
4
|
+
import { AccessRequestListResponseDto, AccessRequestResponseDto, ListAccessRequestsQueryDto, UpdateAccessRequestDto } from './dto/http/access-request-admin.dto';
|
|
5
|
+
export declare class AccessRequestsController {
|
|
6
|
+
private readonly service;
|
|
7
|
+
constructor(service: AccessRequestsService);
|
|
8
|
+
create(dto: CreateAccessRequestDto): Promise<CreateAccessRequestResponseDto>;
|
|
9
|
+
}
|
|
10
|
+
export declare class AccessRequestsAdminController {
|
|
11
|
+
private readonly service;
|
|
12
|
+
constructor(service: AccessRequestsService);
|
|
13
|
+
list(query: ListAccessRequestsQueryDto): Promise<AccessRequestListResponseDto>;
|
|
14
|
+
update(user: UserContext, id: string, dto: UpdateAccessRequestDto): Promise<AccessRequestResponseDto>;
|
|
15
|
+
remove(id: string): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AccessRequestsAdminController = exports.AccessRequestsController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const access_token_guard_1 = require("../auth/guards/guards/access-token.guard");
|
|
19
|
+
const scopes_guard_1 = require("../auth/guards/guards/scopes.guard");
|
|
20
|
+
const require_scopes_decorator_1 = require("../auth/guards/decorators/require-scopes.decorator");
|
|
21
|
+
const current_user_decorator_1 = require("../auth/guards/decorators/current-user.decorator");
|
|
22
|
+
const user_scopes_1 = require("../auth/core/scopes/user.scopes");
|
|
23
|
+
const access_requests_service_1 = require("./access-requests.service");
|
|
24
|
+
const create_access_request_dto_1 = require("./dto/http/create-access-request.dto");
|
|
25
|
+
const access_request_admin_dto_1 = require("./dto/http/access-request-admin.dto");
|
|
26
|
+
let AccessRequestsController = class AccessRequestsController {
|
|
27
|
+
service;
|
|
28
|
+
constructor(service) {
|
|
29
|
+
this.service = service;
|
|
30
|
+
}
|
|
31
|
+
async create(dto) {
|
|
32
|
+
if (dto.website && dto.website.trim() !== '')
|
|
33
|
+
return { received: true };
|
|
34
|
+
await this.service.submit({
|
|
35
|
+
email: dto.email,
|
|
36
|
+
building: dto.building,
|
|
37
|
+
heardFrom: dto.heardFrom,
|
|
38
|
+
heardFromOther: dto.heardFromOther,
|
|
39
|
+
});
|
|
40
|
+
return { received: true };
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.AccessRequestsController = AccessRequestsController;
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, common_1.Post)(),
|
|
46
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.CREATED),
|
|
47
|
+
(0, swagger_1.ApiOperation)({ summary: 'Public: express interest in Taico access (write-only)' }),
|
|
48
|
+
(0, swagger_1.ApiCreatedResponse)({ type: create_access_request_dto_1.CreateAccessRequestResponseDto }),
|
|
49
|
+
(0, swagger_1.ApiTooManyRequestsResponse)({ description: 'Submission ceiling reached; try again later' }),
|
|
50
|
+
__param(0, (0, common_1.Body)()),
|
|
51
|
+
__metadata("design:type", Function),
|
|
52
|
+
__metadata("design:paramtypes", [create_access_request_dto_1.CreateAccessRequestDto]),
|
|
53
|
+
__metadata("design:returntype", Promise)
|
|
54
|
+
], AccessRequestsController.prototype, "create", null);
|
|
55
|
+
exports.AccessRequestsController = AccessRequestsController = __decorate([
|
|
56
|
+
(0, swagger_1.ApiTags)('Access Requests'),
|
|
57
|
+
(0, common_1.Controller)('access-requests'),
|
|
58
|
+
__metadata("design:paramtypes", [access_requests_service_1.AccessRequestsService])
|
|
59
|
+
], AccessRequestsController);
|
|
60
|
+
let AccessRequestsAdminController = class AccessRequestsAdminController {
|
|
61
|
+
service;
|
|
62
|
+
constructor(service) {
|
|
63
|
+
this.service = service;
|
|
64
|
+
}
|
|
65
|
+
async list(query) {
|
|
66
|
+
const { items, total } = await this.service.list(query);
|
|
67
|
+
return { items: items.map(toDto), total };
|
|
68
|
+
}
|
|
69
|
+
async update(user, id, dto) {
|
|
70
|
+
return toDto(await this.service.setStatus(id, dto.status, user.actorId));
|
|
71
|
+
}
|
|
72
|
+
async remove(id) {
|
|
73
|
+
await this.service.remove(id);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.AccessRequestsAdminController = AccessRequestsAdminController;
|
|
77
|
+
__decorate([
|
|
78
|
+
(0, common_1.Get)(),
|
|
79
|
+
(0, swagger_1.ApiOperation)({ summary: 'Admin: list access requests, most recently submitted first' }),
|
|
80
|
+
(0, swagger_1.ApiOkResponse)({ type: access_request_admin_dto_1.AccessRequestListResponseDto }),
|
|
81
|
+
__param(0, (0, common_1.Query)()),
|
|
82
|
+
__metadata("design:type", Function),
|
|
83
|
+
__metadata("design:paramtypes", [access_request_admin_dto_1.ListAccessRequestsQueryDto]),
|
|
84
|
+
__metadata("design:returntype", Promise)
|
|
85
|
+
], AccessRequestsAdminController.prototype, "list", null);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, common_1.Patch)(':id'),
|
|
88
|
+
(0, swagger_1.ApiOperation)({ summary: 'Admin: mark an access request new or reviewed' }),
|
|
89
|
+
(0, swagger_1.ApiOkResponse)({ type: access_request_admin_dto_1.AccessRequestResponseDto }),
|
|
90
|
+
__param(0, (0, current_user_decorator_1.CurrentUser)()),
|
|
91
|
+
__param(1, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
92
|
+
__param(2, (0, common_1.Body)()),
|
|
93
|
+
__metadata("design:type", Function),
|
|
94
|
+
__metadata("design:paramtypes", [Object, String, access_request_admin_dto_1.UpdateAccessRequestDto]),
|
|
95
|
+
__metadata("design:returntype", Promise)
|
|
96
|
+
], AccessRequestsAdminController.prototype, "update", null);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, common_1.Delete)(':id'),
|
|
99
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT),
|
|
100
|
+
(0, swagger_1.ApiOperation)({ summary: 'Admin: delete an access request' }),
|
|
101
|
+
(0, swagger_1.ApiNoContentResponse)(),
|
|
102
|
+
__param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)),
|
|
103
|
+
__metadata("design:type", Function),
|
|
104
|
+
__metadata("design:paramtypes", [String]),
|
|
105
|
+
__metadata("design:returntype", Promise)
|
|
106
|
+
], AccessRequestsAdminController.prototype, "remove", null);
|
|
107
|
+
exports.AccessRequestsAdminController = AccessRequestsAdminController = __decorate([
|
|
108
|
+
(0, swagger_1.ApiTags)('Access Requests Admin'),
|
|
109
|
+
(0, swagger_1.ApiCookieAuth)('JWT-Cookie'),
|
|
110
|
+
(0, common_1.Controller)('admin/access-requests'),
|
|
111
|
+
(0, common_1.UseGuards)(access_token_guard_1.AccessTokenGuard, scopes_guard_1.ScopesGuard),
|
|
112
|
+
(0, require_scopes_decorator_1.RequireScopes)(user_scopes_1.UserScopes.ADMIN.id),
|
|
113
|
+
__metadata("design:paramtypes", [access_requests_service_1.AccessRequestsService])
|
|
114
|
+
], AccessRequestsAdminController);
|
|
115
|
+
function toDto(r) {
|
|
116
|
+
return {
|
|
117
|
+
id: r.id,
|
|
118
|
+
email: r.email,
|
|
119
|
+
building: r.building,
|
|
120
|
+
heardFrom: r.heardFrom,
|
|
121
|
+
heardFromOther: r.heardFromOther,
|
|
122
|
+
status: r.status,
|
|
123
|
+
submissionCount: r.submissionCount,
|
|
124
|
+
createdAt: r.createdAt.toISOString(),
|
|
125
|
+
lastSubmittedAt: r.lastSubmittedAt.toISOString(),
|
|
126
|
+
reviewedAt: r.reviewedAt ? r.reviewedAt.toISOString() : null,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=access-requests.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-requests.controller.js","sourceRoot":"","sources":["../../src/access-requests/access-requests.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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.AccessRequestsModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const auth_guards_module_1 = require("../auth/guards/auth-guards.module");
|
|
13
|
+
const access_request_entity_1 = require("./access-request.entity");
|
|
14
|
+
const access_requests_controller_1 = require("./access-requests.controller");
|
|
15
|
+
const access_requests_service_1 = require("./access-requests.service");
|
|
16
|
+
let AccessRequestsModule = class AccessRequestsModule {
|
|
17
|
+
};
|
|
18
|
+
exports.AccessRequestsModule = AccessRequestsModule;
|
|
19
|
+
exports.AccessRequestsModule = AccessRequestsModule = __decorate([
|
|
20
|
+
(0, common_1.Module)({
|
|
21
|
+
imports: [typeorm_1.TypeOrmModule.forFeature([access_request_entity_1.AccessRequestEntity]), auth_guards_module_1.AuthGuardsModule],
|
|
22
|
+
controllers: [access_requests_controller_1.AccessRequestsController, access_requests_controller_1.AccessRequestsAdminController],
|
|
23
|
+
providers: [access_requests_service_1.AccessRequestsService],
|
|
24
|
+
})
|
|
25
|
+
], AccessRequestsModule);
|
|
26
|
+
//# sourceMappingURL=access-requests.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-requests.module.js","sourceRoot":"","sources":["../../src/access-requests/access-requests.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,0EAAqE;AACrE,mEAA8D;AAC9D,6EAAuG;AACvG,uEAAkE;AAO3D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oDAAoB;+BAApB,oBAAoB;IALhC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,2CAAmB,CAAC,CAAC,EAAE,qCAAgB,CAAC;QAC5E,WAAW,EAAE,CAAC,qDAAwB,EAAE,0DAA6B,CAAC;QACtE,SAAS,EAAE,CAAC,+CAAqB,CAAC;KACnC,CAAC;GACW,oBAAoB,CAAG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { AccessRequestEntity } from './access-request.entity';
|
|
3
|
+
import { AccessRequestStatus } from './enums';
|
|
4
|
+
import { AccessRequestListResult, AccessRequestResult, ListAccessRequestsInput, SubmitAccessRequestInput } from './dto/service/access-requests.service.types';
|
|
5
|
+
export declare const ACCESS_REQUEST_HOURLY_CEILING = 300;
|
|
6
|
+
export declare class AccessRequestsService {
|
|
7
|
+
private readonly repo;
|
|
8
|
+
private readonly ceiling;
|
|
9
|
+
constructor(repo: Repository<AccessRequestEntity>);
|
|
10
|
+
submit(input: SubmitAccessRequestInput): Promise<void>;
|
|
11
|
+
list(input: ListAccessRequestsInput): Promise<AccessRequestListResult>;
|
|
12
|
+
setStatus(id: string, status: AccessRequestStatus, actorId: string): Promise<AccessRequestResult>;
|
|
13
|
+
remove(id: string): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AccessRequestsService = exports.ACCESS_REQUEST_HOURLY_CEILING = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const access_request_entity_1 = require("./access-request.entity");
|
|
20
|
+
const enums_1 = require("./enums");
|
|
21
|
+
const access_requests_errors_1 = require("./errors/access-requests.errors");
|
|
22
|
+
const submission_ceiling_1 = require("./submission-ceiling");
|
|
23
|
+
exports.ACCESS_REQUEST_HOURLY_CEILING = 300;
|
|
24
|
+
let AccessRequestsService = class AccessRequestsService {
|
|
25
|
+
repo;
|
|
26
|
+
ceiling = new submission_ceiling_1.SubmissionCeiling(exports.ACCESS_REQUEST_HOURLY_CEILING, 60 * 60 * 1000);
|
|
27
|
+
constructor(repo) {
|
|
28
|
+
this.repo = repo;
|
|
29
|
+
}
|
|
30
|
+
async submit(input) {
|
|
31
|
+
if (!this.ceiling.tryHit())
|
|
32
|
+
throw new access_requests_errors_1.AccessRequestsBusyError();
|
|
33
|
+
const email = input.email.trim();
|
|
34
|
+
const building = input.building?.trim() ? input.building.trim() : null;
|
|
35
|
+
const { heardFrom, heardFromOther } = normalizeHeardFrom(input);
|
|
36
|
+
await this.repo.query(`INSERT INTO "access_requests" ("email", "email_normalized", "building", "heard_from", "heard_from_other")
|
|
37
|
+
VALUES ($1, $2, $3, $4, $5)
|
|
38
|
+
ON CONFLICT ("email_normalized") DO UPDATE SET
|
|
39
|
+
"submission_count" = "access_requests"."submission_count" + 1,
|
|
40
|
+
"last_submitted_at" = now(),
|
|
41
|
+
"updated_at" = now(),
|
|
42
|
+
"building" = COALESCE(EXCLUDED."building", "access_requests"."building"),
|
|
43
|
+
"heard_from" = COALESCE(EXCLUDED."heard_from", "access_requests"."heard_from"),
|
|
44
|
+
"heard_from_other" = CASE WHEN EXCLUDED."heard_from" IS NULL
|
|
45
|
+
THEN "access_requests"."heard_from_other" ELSE EXCLUDED."heard_from_other" END`, [email, email.toLowerCase(), building, heardFrom, heardFromOther]);
|
|
46
|
+
}
|
|
47
|
+
async list(input) {
|
|
48
|
+
const qb = this.repo
|
|
49
|
+
.createQueryBuilder('r')
|
|
50
|
+
.orderBy('r.lastSubmittedAt', 'DESC')
|
|
51
|
+
.addOrderBy('r.createdAt', 'DESC');
|
|
52
|
+
if (input.status)
|
|
53
|
+
qb.andWhere('r.status = :status', { status: input.status });
|
|
54
|
+
if (input.search) {
|
|
55
|
+
const term = `%${input.search.replace(/[\\%_]/g, (c) => `\\${c}`)}%`;
|
|
56
|
+
qb.andWhere('(r.email ILIKE :term OR r.building ILIKE :term OR r.heardFromOther ILIKE :term)', { term });
|
|
57
|
+
}
|
|
58
|
+
qb.take(input.limit ?? 50).skip(input.offset ?? 0);
|
|
59
|
+
const [rows, total] = await qb.getManyAndCount();
|
|
60
|
+
return { items: rows.map(toResult), total };
|
|
61
|
+
}
|
|
62
|
+
async setStatus(id, status, actorId) {
|
|
63
|
+
const row = await this.repo.findOne({ where: { id } });
|
|
64
|
+
if (!row)
|
|
65
|
+
throw new access_requests_errors_1.AccessRequestNotFoundError(id);
|
|
66
|
+
const reviewed = status === enums_1.AccessRequestStatus.REVIEWED;
|
|
67
|
+
row.status = status;
|
|
68
|
+
row.reviewedAt = reviewed ? new Date() : null;
|
|
69
|
+
row.reviewedByActorId = reviewed ? actorId : null;
|
|
70
|
+
return toResult(await this.repo.save(row));
|
|
71
|
+
}
|
|
72
|
+
async remove(id) {
|
|
73
|
+
const res = await this.repo.delete({ id });
|
|
74
|
+
if (!res.affected)
|
|
75
|
+
throw new access_requests_errors_1.AccessRequestNotFoundError(id);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
exports.AccessRequestsService = AccessRequestsService;
|
|
79
|
+
exports.AccessRequestsService = AccessRequestsService = __decorate([
|
|
80
|
+
(0, common_1.Injectable)(),
|
|
81
|
+
__param(0, (0, typeorm_1.InjectRepository)(access_request_entity_1.AccessRequestEntity)),
|
|
82
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
83
|
+
], AccessRequestsService);
|
|
84
|
+
function toResult(r) {
|
|
85
|
+
return {
|
|
86
|
+
id: r.id,
|
|
87
|
+
email: r.email,
|
|
88
|
+
building: r.building,
|
|
89
|
+
heardFrom: r.heardFrom,
|
|
90
|
+
heardFromOther: r.heardFromOther,
|
|
91
|
+
status: r.status,
|
|
92
|
+
submissionCount: r.submissionCount,
|
|
93
|
+
createdAt: r.createdAt,
|
|
94
|
+
lastSubmittedAt: r.lastSubmittedAt,
|
|
95
|
+
reviewedAt: r.reviewedAt,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function normalizeHeardFrom(input) {
|
|
99
|
+
const heardFrom = input.heardFrom ?? null;
|
|
100
|
+
const other = input.heardFromOther?.trim();
|
|
101
|
+
return {
|
|
102
|
+
heardFrom,
|
|
103
|
+
heardFromOther: heardFrom === enums_1.AccessRequestHeardFrom.OTHER && other ? other : null,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=access-requests.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-requests.service.js","sourceRoot":"","sources":["../../src/access-requests/access-requests.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AccessRequestHeardFrom, AccessRequestStatus } from '../../enums';
|
|
2
|
+
export declare class ListAccessRequestsQueryDto {
|
|
3
|
+
status?: AccessRequestStatus;
|
|
4
|
+
search?: string;
|
|
5
|
+
limit?: number;
|
|
6
|
+
offset?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class UpdateAccessRequestDto {
|
|
9
|
+
status: AccessRequestStatus;
|
|
10
|
+
}
|
|
11
|
+
export declare class AccessRequestResponseDto {
|
|
12
|
+
id: string;
|
|
13
|
+
email: string;
|
|
14
|
+
building: string | null;
|
|
15
|
+
heardFrom: AccessRequestHeardFrom | null;
|
|
16
|
+
heardFromOther: string | null;
|
|
17
|
+
status: AccessRequestStatus;
|
|
18
|
+
submissionCount: number;
|
|
19
|
+
createdAt: string;
|
|
20
|
+
lastSubmittedAt: string;
|
|
21
|
+
reviewedAt: string | null;
|
|
22
|
+
}
|
|
23
|
+
export declare class AccessRequestListResponseDto {
|
|
24
|
+
items: AccessRequestResponseDto[];
|
|
25
|
+
total: number;
|
|
26
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AccessRequestListResponseDto = exports.AccessRequestResponseDto = exports.UpdateAccessRequestDto = exports.ListAccessRequestsQueryDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
const enums_1 = require("../../enums");
|
|
17
|
+
class ListAccessRequestsQueryDto {
|
|
18
|
+
status;
|
|
19
|
+
search;
|
|
20
|
+
limit;
|
|
21
|
+
offset;
|
|
22
|
+
}
|
|
23
|
+
exports.ListAccessRequestsQueryDto = ListAccessRequestsQueryDto;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, swagger_1.ApiPropertyOptional)({ enum: enums_1.AccessRequestStatus, enumName: 'AccessRequestStatus' }),
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
27
|
+
(0, class_validator_1.IsEnum)(enums_1.AccessRequestStatus),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], ListAccessRequestsQueryDto.prototype, "status", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, swagger_1.ApiPropertyOptional)({ description: 'Matches email, answer or "other" source text (case-insensitive)', maxLength: 100 }),
|
|
32
|
+
(0, class_validator_1.IsOptional)(),
|
|
33
|
+
(0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? value.trim() : value)),
|
|
34
|
+
(0, class_validator_1.IsString)(),
|
|
35
|
+
(0, class_validator_1.MaxLength)(100),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], ListAccessRequestsQueryDto.prototype, "search", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, swagger_1.ApiPropertyOptional)({ default: 50, minimum: 1, maximum: 200 }),
|
|
40
|
+
(0, class_validator_1.IsOptional)(),
|
|
41
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
42
|
+
(0, class_validator_1.IsInt)(),
|
|
43
|
+
(0, class_validator_1.Min)(1),
|
|
44
|
+
(0, class_validator_1.Max)(200),
|
|
45
|
+
__metadata("design:type", Number)
|
|
46
|
+
], ListAccessRequestsQueryDto.prototype, "limit", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, swagger_1.ApiPropertyOptional)({ default: 0, minimum: 0 }),
|
|
49
|
+
(0, class_validator_1.IsOptional)(),
|
|
50
|
+
(0, class_transformer_1.Type)(() => Number),
|
|
51
|
+
(0, class_validator_1.IsInt)(),
|
|
52
|
+
(0, class_validator_1.Min)(0),
|
|
53
|
+
__metadata("design:type", Number)
|
|
54
|
+
], ListAccessRequestsQueryDto.prototype, "offset", void 0);
|
|
55
|
+
class UpdateAccessRequestDto {
|
|
56
|
+
status;
|
|
57
|
+
}
|
|
58
|
+
exports.UpdateAccessRequestDto = UpdateAccessRequestDto;
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, swagger_1.ApiProperty)({ enum: enums_1.AccessRequestStatus, enumName: 'AccessRequestStatus' }),
|
|
61
|
+
(0, class_validator_1.IsEnum)(enums_1.AccessRequestStatus),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], UpdateAccessRequestDto.prototype, "status", void 0);
|
|
64
|
+
class AccessRequestResponseDto {
|
|
65
|
+
id;
|
|
66
|
+
email;
|
|
67
|
+
building;
|
|
68
|
+
heardFrom;
|
|
69
|
+
heardFromOther;
|
|
70
|
+
status;
|
|
71
|
+
submissionCount;
|
|
72
|
+
createdAt;
|
|
73
|
+
lastSubmittedAt;
|
|
74
|
+
reviewedAt;
|
|
75
|
+
}
|
|
76
|
+
exports.AccessRequestResponseDto = AccessRequestResponseDto;
|
|
77
|
+
__decorate([
|
|
78
|
+
(0, swagger_1.ApiProperty)(),
|
|
79
|
+
__metadata("design:type", String)
|
|
80
|
+
], AccessRequestResponseDto.prototype, "id", void 0);
|
|
81
|
+
__decorate([
|
|
82
|
+
(0, swagger_1.ApiProperty)(),
|
|
83
|
+
__metadata("design:type", String)
|
|
84
|
+
], AccessRequestResponseDto.prototype, "email", void 0);
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, swagger_1.ApiProperty)({ nullable: true, type: String }),
|
|
87
|
+
__metadata("design:type", Object)
|
|
88
|
+
], AccessRequestResponseDto.prototype, "building", void 0);
|
|
89
|
+
__decorate([
|
|
90
|
+
(0, swagger_1.ApiProperty)({ nullable: true, enum: enums_1.AccessRequestHeardFrom, enumName: 'AccessRequestHeardFrom' }),
|
|
91
|
+
__metadata("design:type", Object)
|
|
92
|
+
], AccessRequestResponseDto.prototype, "heardFrom", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, swagger_1.ApiProperty)({ nullable: true, type: String }),
|
|
95
|
+
__metadata("design:type", Object)
|
|
96
|
+
], AccessRequestResponseDto.prototype, "heardFromOther", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, swagger_1.ApiProperty)({ enum: enums_1.AccessRequestStatus, enumName: 'AccessRequestStatus' }),
|
|
99
|
+
__metadata("design:type", String)
|
|
100
|
+
], AccessRequestResponseDto.prototype, "status", void 0);
|
|
101
|
+
__decorate([
|
|
102
|
+
(0, swagger_1.ApiProperty)(),
|
|
103
|
+
__metadata("design:type", Number)
|
|
104
|
+
], AccessRequestResponseDto.prototype, "submissionCount", void 0);
|
|
105
|
+
__decorate([
|
|
106
|
+
(0, swagger_1.ApiProperty)({ format: 'date-time' }),
|
|
107
|
+
__metadata("design:type", String)
|
|
108
|
+
], AccessRequestResponseDto.prototype, "createdAt", void 0);
|
|
109
|
+
__decorate([
|
|
110
|
+
(0, swagger_1.ApiProperty)({ format: 'date-time' }),
|
|
111
|
+
__metadata("design:type", String)
|
|
112
|
+
], AccessRequestResponseDto.prototype, "lastSubmittedAt", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
(0, swagger_1.ApiProperty)({ nullable: true, type: String, format: 'date-time' }),
|
|
115
|
+
__metadata("design:type", Object)
|
|
116
|
+
], AccessRequestResponseDto.prototype, "reviewedAt", void 0);
|
|
117
|
+
class AccessRequestListResponseDto {
|
|
118
|
+
items;
|
|
119
|
+
total;
|
|
120
|
+
}
|
|
121
|
+
exports.AccessRequestListResponseDto = AccessRequestListResponseDto;
|
|
122
|
+
__decorate([
|
|
123
|
+
(0, swagger_1.ApiProperty)({ type: [AccessRequestResponseDto] }),
|
|
124
|
+
__metadata("design:type", Array)
|
|
125
|
+
], AccessRequestListResponseDto.prototype, "items", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
(0, swagger_1.ApiProperty)(),
|
|
128
|
+
__metadata("design:type", Number)
|
|
129
|
+
], AccessRequestListResponseDto.prototype, "total", void 0);
|
|
130
|
+
//# sourceMappingURL=access-request-admin.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-request-admin.dto.js","sourceRoot":"","sources":["../../../../src/access-requests/dto/http/access-request-admin.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AccessRequestHeardFrom } from '../../enums';
|
|
2
|
+
export declare class CreateAccessRequestDto {
|
|
3
|
+
email: string;
|
|
4
|
+
building?: string;
|
|
5
|
+
heardFrom?: AccessRequestHeardFrom;
|
|
6
|
+
heardFromOther?: string;
|
|
7
|
+
website?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class CreateAccessRequestResponseDto {
|
|
10
|
+
received: boolean;
|
|
11
|
+
}
|