@neohm/nestend 3.3.8 → 3.3.9
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 +85 -69
- package/dist/admin/dtos/add.admin.user.dto.d.ts +2 -2
- package/dist/admin/dtos/add.admin.user.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.admin.user.dto.js +2 -2
- package/dist/admin/dtos/add.admin.user.dto.js.map +1 -1
- package/dist/admin/dtos/add.scheduled.task.dto.d.ts +2 -2
- package/dist/admin/dtos/add.scheduled.task.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.scheduled.task.dto.js +2 -2
- package/dist/admin/dtos/add.scheduled.task.dto.js.map +1 -1
- package/dist/admin/dtos/add.scope.dto.d.ts +2 -2
- package/dist/admin/dtos/add.scope.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.scope.dto.js +2 -2
- package/dist/admin/dtos/add.scope.dto.js.map +1 -1
- package/dist/admin/dtos/add.system.role.dto.d.ts +2 -2
- package/dist/admin/dtos/add.system.role.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.system.role.dto.js +2 -2
- package/dist/admin/dtos/add.system.role.dto.js.map +1 -1
- package/dist/admin/dtos/add.tenant.dto.d.ts +2 -2
- package/dist/admin/dtos/add.tenant.dto.d.ts.map +1 -1
- package/dist/admin/dtos/add.tenant.dto.js +2 -2
- package/dist/admin/dtos/add.tenant.dto.js.map +1 -1
- package/dist/admin/dtos/base.user.dto.d.ts +2 -2
- package/dist/admin/dtos/base.user.dto.d.ts.map +1 -1
- package/dist/admin/dtos/base.user.dto.js +2 -2
- package/dist/admin/dtos/base.user.dto.js.map +1 -1
- package/dist/admin/libraries/admin.user.data.processor.js +1 -1
- package/dist/admin/libraries/admin.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/admin.user.delete.processor.js +2 -2
- package/dist/admin/libraries/admin.user.delete.processor.js.map +1 -1
- package/dist/admin/libraries/api.key.data.processor.js +1 -1
- package/dist/admin/libraries/api.key.data.processor.js.map +1 -1
- package/dist/admin/libraries/bulk.user.data.processor.js +1 -1
- package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/client.user.data.processor.js +1 -1
- package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/client.user.delete.processor.js +1 -1
- package/dist/admin/libraries/client.user.delete.processor.js.map +1 -1
- package/dist/admin/libraries/scheduled.task.data.processor.js +1 -1
- package/dist/admin/libraries/scheduled.task.data.processor.js.map +1 -1
- package/dist/admin/libraries/scheduled.task.delete.processor.js +1 -1
- package/dist/admin/libraries/scheduled.task.delete.processor.js.map +1 -1
- package/dist/admin/libraries/scope.data.processor.js +1 -1
- package/dist/admin/libraries/scope.data.processor.js.map +1 -1
- package/dist/admin/libraries/system.role.data.processor.js +1 -1
- package/dist/admin/libraries/system.role.data.processor.js.map +1 -1
- package/dist/admin/libraries/system.user.data.processor.js +1 -1
- package/dist/admin/libraries/system.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/tenant.data.processor.js +1 -1
- package/dist/admin/libraries/tenant.data.processor.js.map +1 -1
- package/dist/admin/libraries/tenant.delete.processor.js +1 -1
- package/dist/admin/libraries/tenant.delete.processor.js.map +1 -1
- package/dist/auth/processors/change.password.data.processor.js +2 -2
- package/dist/auth/processors/change.password.data.processor.js.map +1 -1
- package/dist/auth/processors/register.user.data.processor.js +1 -1
- package/dist/auth/processors/register.user.data.processor.js.map +1 -1
- package/dist/auth/services/impersonation.service.d.ts.map +1 -1
- package/dist/auth/services/impersonation.service.js +4 -3
- package/dist/auth/services/impersonation.service.js.map +1 -1
- package/dist/common/dtos/common.data.dto.d.ts +4 -0
- package/dist/common/dtos/common.data.dto.d.ts.map +1 -0
- package/dist/common/dtos/{common.payload.dto.js → common.data.dto.js} +5 -5
- package/dist/common/dtos/common.data.dto.js.map +1 -0
- package/dist/common/dtos/common.list.filter.dto.d.ts.map +1 -1
- package/dist/common/dtos/common.list.filter.dto.js +22 -0
- package/dist/common/dtos/common.list.filter.dto.js.map +1 -1
- package/dist/common/dtos/common.params.dto.d.ts +1 -0
- package/dist/common/dtos/common.params.dto.d.ts.map +1 -1
- package/dist/common/dtos/common.params.dto.js +6 -0
- package/dist/common/dtos/common.params.dto.js.map +1 -1
- package/dist/common/dtos/filter.dto.d.ts.map +1 -1
- package/dist/common/dtos/filter.dto.js +15 -0
- package/dist/common/dtos/filter.dto.js.map +1 -1
- package/dist/common/dtos/sort.dto.d.ts.map +1 -1
- package/dist/common/dtos/sort.dto.js +8 -0
- package/dist/common/dtos/sort.dto.js.map +1 -1
- package/dist/common/entities/system.audit.log.entity.d.ts +3 -3
- package/dist/common/entities/system.audit.log.entity.d.ts.map +1 -1
- package/dist/common/entities/system.audit.log.entity.js +6 -6
- package/dist/common/entities/system.audit.log.entity.js.map +1 -1
- package/dist/common/es6.classes.d.ts +2 -2
- package/dist/common/es6.classes.d.ts.map +1 -1
- package/dist/common/es6.classes.js +2 -2
- package/dist/common/es6.classes.js.map +1 -1
- package/dist/common/libraries/common.data.processor.d.ts +1 -1
- package/dist/common/libraries/common.data.processor.d.ts.map +1 -1
- package/dist/common/libraries/common.data.processor.js +1 -1
- package/dist/common/libraries/common.data.processor.js.map +1 -1
- package/dist/common/services/audit.service.d.ts +4 -4
- package/dist/common/services/audit.service.js +15 -15
- package/dist/common/services/audit.service.js.map +1 -1
- package/dist/common/services/queue.service.d.ts +3 -2
- package/dist/common/services/queue.service.d.ts.map +1 -1
- package/dist/common/services/queue.service.js +15 -1
- package/dist/common/services/queue.service.js.map +1 -1
- package/dist/common/subscribers/common.subscriber.d.ts.map +1 -1
- package/dist/common/subscribers/common.subscriber.js.map +1 -1
- package/dist/common/types/audit.types.d.ts +4 -4
- package/dist/common/types/audit.types.d.ts.map +1 -1
- package/dist/common/types/queue.types.d.ts +10 -0
- package/dist/common/types/queue.types.d.ts.map +1 -1
- package/dist/constants/job.constants.d.ts +1 -0
- package/dist/constants/job.constants.d.ts.map +1 -1
- package/dist/constants/job.constants.js +1 -0
- package/dist/constants/job.constants.js.map +1 -1
- package/dist/document/controllers/document.controller.js +1 -1
- package/dist/document/controllers/document.controller.js.map +1 -1
- package/dist/document/document.module.d.ts.map +1 -1
- package/dist/document/document.module.js +15 -1
- package/dist/document/document.module.js.map +1 -1
- package/dist/document/enums/document.default.enum.d.ts +3 -1
- package/dist/document/enums/document.default.enum.d.ts.map +1 -1
- package/dist/document/enums/document.default.enum.js +2 -0
- package/dist/document/enums/document.default.enum.js.map +1 -1
- package/dist/document/es6.classes.d.ts +2 -1
- package/dist/document/es6.classes.d.ts.map +1 -1
- package/dist/document/es6.classes.js +2 -1
- package/dist/document/es6.classes.js.map +1 -1
- package/dist/document/jobs/clean.orphan.documents.job.d.ts +16 -0
- package/dist/document/jobs/clean.orphan.documents.job.d.ts.map +1 -0
- package/dist/document/jobs/clean.orphan.documents.job.js +63 -0
- package/dist/document/jobs/clean.orphan.documents.job.js.map +1 -0
- package/dist/document/services/document.service.d.ts +1 -0
- package/dist/document/services/document.service.d.ts.map +1 -1
- package/dist/document/services/document.service.js +9 -0
- package/dist/document/services/document.service.js.map +1 -1
- package/dist/document/subscribers/document.subscriber.d.ts +2 -0
- package/dist/document/subscribers/document.subscriber.d.ts.map +1 -1
- package/dist/document/subscribers/document.subscriber.js +13 -0
- package/dist/document/subscribers/document.subscriber.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/migrations/1749600000012.CreateSysAuditLogsTable.d.ts.map +1 -1
- package/dist/migrations/1749600000012.CreateSysAuditLogsTable.js +4 -4
- package/dist/migrations/1749600000012.CreateSysAuditLogsTable.js.map +1 -1
- package/package.json +1 -1
- package/dist/common/dtos/common.payload.dto.d.ts +0 -4
- package/dist/common/dtos/common.payload.dto.d.ts.map +0 -1
- package/dist/common/dtos/common.payload.dto.js.map +0 -1
package/README.md
CHANGED
|
@@ -101,33 +101,33 @@ these are free to change without a breaking release.
|
|
|
101
101
|
|
|
102
102
|
## Feature Map
|
|
103
103
|
|
|
104
|
-
| Area | Key exports | Notes
|
|
105
|
-
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
106
|
-
| Entities | `RootEntity`, `CommonEntity`, `CommonAdminEntity`, `UserEntity`, `AdminUserEntity`, `SystemRoleEntity`, `SystemAdminRoleEntity`, ... | uuid PK, soft deletes, `created_by`/`updated_by` (+ `creator`/`updater` relations), jsonb `attributes`; entity-level `findOneOrNew`, `hardDelete`, `restore`, `paginate` statics plus a row-wise `softDelete()`
|
|
107
|
-
| Migrations | `MigrationUtility`, `SeederUtility` (the 28 table migrations ship in `dist/migrations` — glob them, they are not barrel exports) | fluent `this.string()`, `this.numeric()`, `addRecord()` seeding
|
|
108
|
-
| Queue | `QueueModule`, `QueueModule.withConnection()`, `QueueService`, `CommonJob`
|
|
109
|
-
| Scheduled events | `SystemScheduledTaskEntity`, `ScheduledEventEntity`, `ScheduleKind`, `ScheduleSpec`, `IsCronExpression` | schedule definitions in `sys_scheduled_tasks` → events in `sys_scheduled_events`; interval / cron / once specs with timezones, drift-free slots, horizon materialisation, catch-up + overlap policies, fire-once dispatch with backoff, cadence via `SCHEDULED_EVENT_MIN`
|
|
110
|
-
| Auth | `AuthModule`, `AuthService.validateRole()`, `RoleTier`, `TenantRole`, `Auth`, `JwtMiddleware`
|
|
111
|
-
| Admin auth | `AdminAuthService.validateRole()`, `AdminAuth`, `AdminJwtMiddleware` (endpoints at `/admin/auth`) | fully separate stack for back-office admins — own users table (`sys_admin_users`), own roles (`sys_admin_roles`/`sys_auser_roles`), own sessions/refresh tokens (shared tables, `is_admin` flag)
|
|
112
|
-
| API keys | `ApiKeyService`, `ApiKeyGuard` / `ApiKeyMiddleware`, `@ApiKeyScopes()`, `ApiKeyContext`
|
|
113
|
-
| Scopes | `ScopeService`, `AuthService.validateAccess()`, `ScopeEntity`, `TenantScopeEntity`, `ApiScopeEntity`
|
|
114
|
-
| Multi-tenancy | `TenantModule`, `TenantEntity`, `CommonTenantEntity`, `TenantContextService`, `TenantContextMiddleware` | AsyncLocalStorage tenant context; resolve by header, slug, or domain; tenants are onboarded by admins (`TenantEntity.creator` → `AdminUserEntity`)
|
|
115
|
-
| Admin | `AdminModule` (its controllers, DTOs and processors are internal — import the module and hit the endpoints), `GlobalAdminRoles` | back-office APIs: tenant onboarding, client/admin/system user registration (single + bulk), the `has_global_access` grant that enables impersonation, tenant + scheduled-task listing; 4-tier `GlobalAdminRoles` gate over `sys_admin_roles`; Swagger at `/docs` (hidden in production)
|
|
116
|
-
| Notifications | `NotificationModule`, `NotificationService`, `FcmPushNotificationService` | in-app rows + FCM push (optional `firebase-admin`); device token registry
|
|
117
|
-
| Email (SES) | `EmailNotificationService`, `ProcessEmailNotification`, `EmailTemplateEntity`, `EmailNotificationLogEntity` | templates in `sys_email_templates` rendered by a remote service, dispatched via SES per recipient (to/cc/bcc); logged to `sys_email_notification_logs` outside production; dispatch skipped when `AWS_SES_FROM_ADDRESS` unset
|
|
118
|
-
| Audit | `AuditService` | `saveAuditLog(old, new)` with changed-value diffing into `sys_audit_logs`
|
|
119
|
-
| Cache | `CacheService` | Redis, TTL objects (`{days, hours, min}`), transparent encryption
|
|
120
|
-
| Encryption | `EncryptionService` | AES-256-GCM, scrypt-derived keys
|
|
121
|
-
| System properties | `SystemPropertyModule`, `SystemPropertyService` | cached + optionally encrypted key/value settings in `sys_properties`
|
|
122
|
-
| Documents | `DocumentModule`, `DocumentService`, `S3BucketDocumentService`, `MinioBucketDocumentService` | `POST /api/documents/upload` (multipart) or `uploadDocument(multerFiles) → links[]`; driver chosen via `DOCUMENT_STORAGE_DRIVER`
|
|
123
|
-
| PDF generation | `PdfService`, `PdfRenderOptions` | `renderHtmlToPdf(html) → Buffer` via headless Chromium; honours the document's own `@page` rules and paginates to any length; optional peer dep `puppeteer`
|
|
124
|
-
| HTTP | `CommonController`, `GlobalExceptionFilter`, common DTOs | health endpoint base controller, uniform error envelope
|
|
125
|
-
| Raw SQL | `SqlService`, `SqlTarget` | named `:key` placeholders always bound as driver params, `:...key` array expansion; runs on the read replica (`DB_READ_*`) with transparent primary fallback; `fetchOne`/`fetchScalar`/`exists`/`count`/`paginate` helpers
|
|
126
|
-
| List endpoints | `CommonListProcessor`, `CommonListFilterDto`, `FilterDto`, `CommonListFilterConfig` | allowlisted columns, parameterised operators (`eq`…`isNull`), typed value casting (`str`/`num`/`date`/`bool`/`null`), multi-sort + paginated on the read replica
|
|
127
|
-
| Outbound HTTP | `RemoteRequestService`, `ApiRequestTypeEnum`, `ApiContentTypeEnum` | injectable `fetch` wrapper (global via `CommonModule`); `getApiResponse<T>()` parses JSON/text and throws `OperationException` on non-2xx, `getApiRawResponse()` returns the raw `Response`; JSON + form-urlencoded body serialisation
|
|
128
|
-
| Observability | `LoggingInterceptor`, `MonitoringInterceptor`, `MonitoringService` | Sentry auto-registers when `@sentry/node` + `SENTRY_DSN` present; pluggable `MonitoringAdapter`
|
|
129
|
-
| Jobs/Events | `CommonJob`, `CommonSubscriber`, `CommonDataProcessor` | dispatch/handle separation, discovery-based registration, worker-event lifecycle, column-change detection, `created_by`/`updated_by` stamped from the `Auth` context in `beforeInsert`/`beforeUpdate`, field error collection
|
|
130
|
-
| Constants & maps | `baseEntityConstants`, `baseJobConstants`, `baseEntityMaps`, `baseJobMaps` | centralised dotted identifiers (`as const`) plus identifier → class maps of every concrete entity and job (abstract bases excluded); map keys are computed from the constants, so renames propagate at compile time
|
|
104
|
+
| Area | Key exports | Notes |
|
|
105
|
+
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
106
|
+
| Entities | `RootEntity`, `CommonEntity`, `CommonAdminEntity`, `UserEntity`, `AdminUserEntity`, `SystemRoleEntity`, `SystemAdminRoleEntity`, ... | uuid PK, soft deletes, `created_by`/`updated_by` (+ `creator`/`updater` relations), jsonb `attributes`; entity-level `findOneOrNew`, `hardDelete`, `restore`, `paginate` statics plus a row-wise `softDelete()` |
|
|
107
|
+
| Migrations | `MigrationUtility`, `SeederUtility` (the 28 table migrations ship in `dist/migrations` — glob them, they are not barrel exports) | fluent `this.string()`, `this.numeric()`, `addRecord()` seeding |
|
|
108
|
+
| Queue | `QueueModule`, `QueueModule.withConnection()`, `QueueService`, `CommonJob` | BullMQ `@Processor`/`WorkerHost` consumer; auto-discovered jobs, duplicate prevention, recurring schedulers, completed jobs cleared from Redis on success (1-day TTL on failures), `clearQueue()`, retries, failures persisted to `sys_failed_jobs`; connection from `BULL_REDIS_*` or supplied by the app — never register `BullModule.forRoot()` yourself, two roots race over the worker's connection |
|
|
109
|
+
| Scheduled events | `SystemScheduledTaskEntity`, `ScheduledEventEntity`, `ScheduleKind`, `ScheduleSpec`, `IsCronExpression` | schedule definitions in `sys_scheduled_tasks` → events in `sys_scheduled_events`; interval / cron / once specs with timezones, drift-free slots, horizon materialisation, catch-up + overlap policies, fire-once dispatch with backoff, cadence via `SCHEDULED_EVENT_MIN` |
|
|
110
|
+
| Auth | `AuthModule`, `AuthService.validateRole()`, `RoleTier`, `TenantRole`, `Auth`, `JwtMiddleware` | imperative auth (open by default); `<module>.<tier>` role hierarchy (manager > writer > viewer), with `global.admin` overriding every role check; JwtMiddleware resolves the user into `Auth`'s AsyncLocalStorage context per request; access + rotating refresh tokens; session-based logout invalidation (`sys_auth_sessions`); Google SSO via ID token at `POST /auth/google`; impersonation — a tenantless `has_global_access` user signs into one organization at `POST /auth/impersonation/login` |
|
|
111
|
+
| Admin auth | `AdminAuthService.validateRole()`, `AdminAuth`, `AdminJwtMiddleware` (endpoints at `/admin/auth`) | fully separate stack for back-office admins — own users table (`sys_admin_users`), own roles (`sys_admin_roles`/`sys_auser_roles`), own sessions/refresh tokens (shared tables, `is_admin` flag) |
|
|
112
|
+
| API keys | `ApiKeyService`, `ApiKeyGuard` / `ApiKeyMiddleware`, `@ApiKeyScopes()`, `ApiKeyContext` | hashed keys in `sys_api_keys` (admin-owned), one tenant per key, expiry/revocation, `x-api-key` header; `validateAccess(scope)` returns the tenant the key acts for |
|
|
113
|
+
| Scopes | `ScopeService`, `AuthService.validateAccess()`, `ScopeEntity`, `TenantScopeEntity`, `ApiScopeEntity` | one feature named once in `sys_scopes`, then granted per organization (`sys_tenant_scopes`) or per API key (`sys_api_scopes`) — never an array on the principal |
|
|
114
|
+
| Multi-tenancy | `TenantModule`, `TenantEntity`, `CommonTenantEntity`, `TenantContextService`, `TenantContextMiddleware` | AsyncLocalStorage tenant context; resolve by header, slug, or domain; tenants are onboarded by admins (`TenantEntity.creator` → `AdminUserEntity`) |
|
|
115
|
+
| Admin | `AdminModule` (its controllers, DTOs and processors are internal — import the module and hit the endpoints), `GlobalAdminRoles` | back-office APIs: tenant onboarding, client/admin/system user registration (single + bulk), the `has_global_access` grant that enables impersonation, tenant + scheduled-task listing; 4-tier `GlobalAdminRoles` gate over `sys_admin_roles`; Swagger at `/docs` (hidden in production) |
|
|
116
|
+
| Notifications | `NotificationModule`, `NotificationService`, `FcmPushNotificationService` | in-app rows + FCM push (optional `firebase-admin`); device token registry |
|
|
117
|
+
| Email (SES) | `EmailNotificationService`, `ProcessEmailNotification`, `EmailTemplateEntity`, `EmailNotificationLogEntity` | templates in `sys_email_templates` rendered by a remote service, dispatched via SES per recipient (to/cc/bcc); logged to `sys_email_notification_logs` outside production; dispatch skipped when `AWS_SES_FROM_ADDRESS` unset |
|
|
118
|
+
| Audit | `AuditService` | `saveAuditLog(old, new)` with changed-value diffing into `sys_audit_logs` |
|
|
119
|
+
| Cache | `CacheService` | Redis, TTL objects (`{days, hours, min}`), transparent encryption |
|
|
120
|
+
| Encryption | `EncryptionService` | AES-256-GCM, scrypt-derived keys |
|
|
121
|
+
| System properties | `SystemPropertyModule`, `SystemPropertyService` | cached + optionally encrypted key/value settings in `sys_properties` |
|
|
122
|
+
| Documents | `DocumentModule`, `DocumentService`, `S3BucketDocumentService`, `MinioBucketDocumentService` | `POST /api/documents/upload` (multipart) or `uploadDocument(multerFiles) → links[]`; driver chosen via `DOCUMENT_STORAGE_DRIVER` |
|
|
123
|
+
| PDF generation | `PdfService`, `PdfRenderOptions` | `renderHtmlToPdf(html) → Buffer` via headless Chromium; honours the document's own `@page` rules and paginates to any length; optional peer dep `puppeteer` |
|
|
124
|
+
| HTTP | `CommonController`, `GlobalExceptionFilter`, common DTOs | health endpoint base controller, uniform error envelope |
|
|
125
|
+
| Raw SQL | `SqlService`, `SqlTarget` | named `:key` placeholders always bound as driver params, `:...key` array expansion; runs on the read replica (`DB_READ_*`) with transparent primary fallback; `fetchOne`/`fetchScalar`/`exists`/`count`/`paginate` helpers |
|
|
126
|
+
| List endpoints | `CommonListProcessor`, `CommonListFilterDto`, `FilterDto`, `CommonListFilterConfig` | allowlisted columns, parameterised operators (`eq`…`isNull`), typed value casting (`str`/`num`/`date`/`bool`/`null`), multi-sort + paginated on the read replica |
|
|
127
|
+
| Outbound HTTP | `RemoteRequestService`, `ApiRequestTypeEnum`, `ApiContentTypeEnum` | injectable `fetch` wrapper (global via `CommonModule`); `getApiResponse<T>()` parses JSON/text and throws `OperationException` on non-2xx, `getApiRawResponse()` returns the raw `Response`; JSON + form-urlencoded body serialisation |
|
|
128
|
+
| Observability | `LoggingInterceptor`, `MonitoringInterceptor`, `MonitoringService` | Sentry auto-registers when `@sentry/node` + `SENTRY_DSN` present; pluggable `MonitoringAdapter` |
|
|
129
|
+
| Jobs/Events | `CommonJob`, `CommonSubscriber`, `CommonDataProcessor` | dispatch/handle separation, discovery-based registration, worker-event lifecycle, column-change detection, `created_by`/`updated_by` stamped from the `Auth` context in `beforeInsert`/`beforeUpdate`, field error collection |
|
|
130
|
+
| Constants & maps | `baseEntityConstants`, `baseJobConstants`, `baseEntityMaps`, `baseJobMaps` | centralised dotted identifiers (`as const`) plus identifier → class maps of every concrete entity and job (abstract bases excluded); map keys are computed from the constants, so renames propagate at compile time |
|
|
131
131
|
|
|
132
132
|
## Environment Variables
|
|
133
133
|
|
|
@@ -209,7 +209,10 @@ sold to them?" and "is this person allowed to use it?" in that order.
|
|
|
209
209
|
|
|
210
210
|
```ts
|
|
211
211
|
const { user } = await this.authService.validateAccess('billing.invoices');
|
|
212
|
-
const { user } = await this.authService.validateAccess(
|
|
212
|
+
const { user } = await this.authService.validateAccess(
|
|
213
|
+
'billing.invoices',
|
|
214
|
+
'invoice.writer',
|
|
215
|
+
);
|
|
213
216
|
```
|
|
214
217
|
|
|
215
218
|
`AuthController` (mounted at `/auth`) exposes the ready-made flows: `POST
|
|
@@ -308,8 +311,8 @@ admin with the `admin` role can grant `sys_admin_roles` to other admins via
|
|
|
308
311
|
|
|
309
312
|
### Encryption
|
|
310
313
|
|
|
311
|
-
| Variable | Default | Description
|
|
312
|
-
| ------------------- | ------- |
|
|
314
|
+
| Variable | Default | Description |
|
|
315
|
+
| ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
313
316
|
| `ENCRYPTION_SECRET` | — | **Required** when `EncryptionService` is used — which now includes issuing API keys (`key_encrypted`). AES-256-GCM key material. Min 32 chars |
|
|
314
317
|
|
|
315
318
|
### Cache (Redis)
|
|
@@ -323,21 +326,21 @@ admin with the `admin` role can grant `sys_admin_roles` to other admins via
|
|
|
323
326
|
|
|
324
327
|
### Queue (BullMQ / Redis)
|
|
325
328
|
|
|
326
|
-
| Variable | Default | Description
|
|
327
|
-
| ----------------------------------- | ------------- |
|
|
328
|
-
| `BULL_REDIS_HOST` | `localhost` | Redis host for BullMQ
|
|
329
|
-
| `BULL_REDIS_PORT` | `6379` | Redis port
|
|
330
|
-
| `BULL_REDIS_PASSWORD` | _(empty)_ | Redis password
|
|
331
|
-
| `BULL_REDIS_DB` | `0` | Redis DB index
|
|
332
|
-
| `BULL_QUEUE_NAME` | `myapp-queue` | Name of the BullMQ queue
|
|
333
|
-
| `BULL_WORKERS` | `2` | Concurrent worker threads per process
|
|
334
|
-
| `BULL_QUEUE_WORKER` | `false` | Set `true` on consumer instances only — API servers should leave this `false`
|
|
329
|
+
| Variable | Default | Description |
|
|
330
|
+
| ----------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
331
|
+
| `BULL_REDIS_HOST` | `localhost` | Redis host for BullMQ |
|
|
332
|
+
| `BULL_REDIS_PORT` | `6379` | Redis port |
|
|
333
|
+
| `BULL_REDIS_PASSWORD` | _(empty)_ | Redis password |
|
|
334
|
+
| `BULL_REDIS_DB` | `0` | Redis DB index |
|
|
335
|
+
| `BULL_QUEUE_NAME` | `myapp-queue` | Name of the BullMQ queue |
|
|
336
|
+
| `BULL_WORKERS` | `2` | Concurrent worker threads per process |
|
|
337
|
+
| `BULL_QUEUE_WORKER` | `false` | Set `true` on consumer instances only — API servers should leave this `false` |
|
|
335
338
|
| `BULL_JOB_TTL_SECONDS` | `86400` | Retention (seconds) for **failed** jobs before removal from the queue + Redis (default 1 day); completed jobs are removed immediately |
|
|
336
|
-
| `MAX_JOB_RETRIES` | `3` | Max attempts per job (BullMQ `attempts` default) and the scheduled-event retry ceiling
|
|
337
|
-
| `SCHEDULED_EVENT_MIN` | `0` | `SetScheduledEventJob` cadence in minutes (every N minutes); `0`/unset disables self-scheduling
|
|
338
|
-
| `SCHEDULED_EVENT_HORIZON_MIN` | _(derived)_ | How far ahead occurrences are materialised; defaults to 2× the cadence, floored at one minute
|
|
339
|
-
| `SCHEDULED_EVENT_BATCH` | `500` | Occurrences dispatched per pass
|
|
340
|
-
| `ENABLE_SCHEDULED_EVENTS_EXECUTION` | _unset_ | Must be exactly `true` to arm scheduled-event materialisation and dispatch
|
|
339
|
+
| `MAX_JOB_RETRIES` | `3` | Max attempts per job (BullMQ `attempts` default) and the scheduled-event retry ceiling |
|
|
340
|
+
| `SCHEDULED_EVENT_MIN` | `0` | `SetScheduledEventJob` cadence in minutes (every N minutes); `0`/unset disables self-scheduling |
|
|
341
|
+
| `SCHEDULED_EVENT_HORIZON_MIN` | _(derived)_ | How far ahead occurrences are materialised; defaults to 2× the cadence, floored at one minute |
|
|
342
|
+
| `SCHEDULED_EVENT_BATCH` | `500` | Occurrences dispatched per pass |
|
|
343
|
+
| `ENABLE_SCHEDULED_EVENTS_EXECUTION` | _unset_ | Must be exactly `true` to arm scheduled-event materialisation and dispatch |
|
|
341
344
|
|
|
342
345
|
#### Jobs
|
|
343
346
|
|
|
@@ -493,7 +496,7 @@ jitter lands on the occurrence, never on the cursor, so it cannot accumulate.
|
|
|
493
496
|
##### Creating and editing a task
|
|
494
497
|
|
|
495
498
|
`POST /api/admin/scheduled-tasks` is an upsert. `AddScheduledTaskDto` extends
|
|
496
|
-
`
|
|
499
|
+
`CommonDataDto`, so it carries an optional `id`: send one to edit that task, omit
|
|
497
500
|
it to create. `identifier`, `name` and `schedule` are required by the DTO either way;
|
|
498
501
|
`identifier` uniqueness is checked in the processor, excluding the row being edited.
|
|
499
502
|
|
|
@@ -571,12 +574,12 @@ a subscriber only starts firing once something constructs it.
|
|
|
571
574
|
|
|
572
575
|
### Document Storage
|
|
573
576
|
|
|
574
|
-
| Variable | Default | Description
|
|
575
|
-
| --------------------------------------- | ------- |
|
|
576
|
-
| `DOCUMENT_STORAGE_DRIVER` | `minio` | Active driver: `s3` or `minio`
|
|
577
|
-
| `DOCUMENT_PRESIGNED_URL_EXPIRY_SECONDS` | `3600` | Presigned download URL validity in seconds
|
|
577
|
+
| Variable | Default | Description |
|
|
578
|
+
| --------------------------------------- | ------- | ---------------------------------------------- |
|
|
579
|
+
| `DOCUMENT_STORAGE_DRIVER` | `minio` | Active driver: `s3` or `minio` |
|
|
580
|
+
| `DOCUMENT_PRESIGNED_URL_EXPIRY_SECONDS` | `3600` | Presigned download URL validity in seconds |
|
|
578
581
|
| `DOCUMENT_MAX_UPLOAD_FILES` | `10` | Files per `POST /api/documents/upload` request |
|
|
579
|
-
| `DOCUMENT_MAX_UPLOAD_SIZE_MB` | `25` | Per-file size ceiling on that endpoint
|
|
582
|
+
| `DOCUMENT_MAX_UPLOAD_SIZE_MB` | `25` | Per-file size ceiling on that endpoint |
|
|
580
583
|
|
|
581
584
|
**S3 driver** (`DOCUMENT_STORAGE_DRIVER=s3`):
|
|
582
585
|
|
|
@@ -606,8 +609,8 @@ a subscriber only starts firing once something constructs it.
|
|
|
606
609
|
|
|
607
610
|
Requires the optional peer dependency `puppeteer`.
|
|
608
611
|
|
|
609
|
-
| Variable | Default | Description
|
|
610
|
-
| ------------------------- | --------- |
|
|
612
|
+
| Variable | Default | Description |
|
|
613
|
+
| ------------------------- | --------- | ----------------------------------------------------------------------------------- |
|
|
611
614
|
| `PDF_CHROMIUM_PATH` | _(empty)_ | Path to an existing Chromium/Chrome binary; falls back to puppeteer's bundled one |
|
|
612
615
|
| `PDF_CHROMIUM_NO_SANDBOX` | `false` | `true` passes `--no-sandbox`. Needed in most containers; only use with trusted HTML |
|
|
613
616
|
| `PDF_RENDER_TIMEOUT_MS` | `30000` | Per-render page load timeout in milliseconds |
|
|
@@ -634,10 +637,10 @@ Requires the optional peer dependency `puppeteer`.
|
|
|
634
637
|
|
|
635
638
|
### API Keys
|
|
636
639
|
|
|
637
|
-
| Variable | Default | Description
|
|
638
|
-
| --------------------- | ----------- |
|
|
639
|
-
| `API_KEY_HEADER_NAME` | `x-api-key` | Request header carrying the API key
|
|
640
|
-
| `ENCRYPTION_SECRET` | — | **Required to issue keys** — `key_encrypted` is AES-256-GCM
|
|
640
|
+
| Variable | Default | Description |
|
|
641
|
+
| --------------------- | ----------- | ----------------------------------------------------------- |
|
|
642
|
+
| `API_KEY_HEADER_NAME` | `x-api-key` | Request header carrying the API key |
|
|
643
|
+
| `ENCRYPTION_SECRET` | — | **Required to issue keys** — `key_encrypted` is AES-256-GCM |
|
|
641
644
|
|
|
642
645
|
A key is stored three ways: its sha256 hash in `key_hash` (what lookups match), a
|
|
643
646
|
short visible prefix in `key_prefix`, and the key itself encrypted in
|
|
@@ -700,8 +703,10 @@ takes the files in a `files` field, uploads them through the active driver and r
|
|
|
700
703
|
the saved `sys_document_uploads` row of each. `POST /api/documents/set` then attaches
|
|
701
704
|
one of those uploads to a record of yours — `{ upload_id, source_type, source_id }` —
|
|
702
705
|
and returns the `sys_documents` link row, re-sending an existing link rather than
|
|
703
|
-
duplicating it.
|
|
704
|
-
|
|
706
|
+
duplicating it. `documentService.deleteDocument(id)` soft deletes such a link —
|
|
707
|
+
no endpoint, since detaching belongs to the flow that owns the record — and leaves the
|
|
708
|
+
upload and its object alone. `DocumentSubscriber` records who did it under
|
|
709
|
+
`attributes.deleted_by`, as `sys_documents` has no such column.
|
|
705
710
|
|
|
706
711
|
Callers do not choose the folder. They send a `path_identifier` (`invoice`,
|
|
707
712
|
`avatar`, ...) which resolves through the `document.path.<path_identifier>` system
|
|
@@ -739,6 +744,14 @@ async upload(@UploadedFiles() files: Express.Multer.File[], @CurrentUser() user:
|
|
|
739
744
|
Set `DOCUMENT_STORAGE_DRIVER=minio` for a local MinIO bucket (auto-created) or
|
|
740
745
|
`DOCUMENT_STORAGE_DRIVER=s3` for Amazon S3. Switching drivers requires no code change.
|
|
741
746
|
|
|
747
|
+
Because uploading and attaching are separate steps, a file can end up claimed by
|
|
748
|
+
nothing. `CleanOrphanDocumentsJob` (`clean.orphan.documents.job`) sweeps those. Run
|
|
749
|
+
with no payload it collects every upload that has no `sys_documents` row and is more
|
|
750
|
+
than a day old, then re-dispatches itself as `{ id }` per row; each of those deletes
|
|
751
|
+
that object from the bucket and soft deletes its row, so one unreachable file retries
|
|
752
|
+
alone instead of stalling the sweep. Schedule it with a `sys_scheduled_tasks` row under
|
|
753
|
+
that identifier — the module registers the handler but never dispatches it.
|
|
754
|
+
|
|
742
755
|
## PDF Generation (PdfService)
|
|
743
756
|
|
|
744
757
|
`PdfService` (exported by `DocumentModule`) turns an HTML document into PDF
|
|
@@ -764,13 +777,16 @@ const html = await this.remoteRequestService.getApiResponse<string>({
|
|
|
764
777
|
const pdf: Buffer = await this.pdfService.renderHtmlToPdf(html);
|
|
765
778
|
|
|
766
779
|
// …or go straight to bucket storage.
|
|
767
|
-
const file = await this.pdfService.renderHtmlToUploadableFile(
|
|
780
|
+
const file = await this.pdfService.renderHtmlToUploadableFile(
|
|
781
|
+
html,
|
|
782
|
+
'summary-report.pdf',
|
|
783
|
+
);
|
|
768
784
|
const [link] = await this.documentService.uploadDocument([file], {
|
|
769
785
|
pathPrefix: 'reports',
|
|
770
786
|
});
|
|
771
787
|
```
|
|
772
788
|
|
|
773
|
-
**Install puppeteer.** It is an
|
|
789
|
+
**Install puppeteer.** It is an _optional_ peer dependency — nothing imports it
|
|
774
790
|
until a PDF is actually requested, so apps that never generate one skip the
|
|
775
791
|
~170MB Chromium download entirely:
|
|
776
792
|
|
|
@@ -784,7 +800,7 @@ yarn add puppeteer
|
|
|
784
800
|
|
|
785
801
|
- **The template owns the page setup.** `preferCssPageSize` defaults to `true`,
|
|
786
802
|
so an `@page { size: A4; margin: … }` rule in the HTML wins over the `format`
|
|
787
|
-
option. Page
|
|
803
|
+
option. Page _count_ is never specified by anyone — Chromium paginates and
|
|
788
804
|
emits as many pages as the content needs, which is what lets an A4-width
|
|
789
805
|
template grow to any length.
|
|
790
806
|
- **Print media is emulated**, so `@media screen` blocks (the sheet shadow a
|
|
@@ -799,11 +815,11 @@ yarn add puppeteer
|
|
|
799
815
|
|
|
800
816
|
### Configuration
|
|
801
817
|
|
|
802
|
-
| Variable | Default | Description
|
|
803
|
-
| ------------------------- | --------- |
|
|
804
|
-
| `PDF_CHROMIUM_PATH` | _(empty)_ | Path to an existing Chromium/Chrome binary; falls back to puppeteer's bundled one
|
|
805
|
-
| `PDF_CHROMIUM_NO_SANDBOX` | `false` | `true` passes `--no-sandbox`. Needed in most containers; only use with trusted HTML
|
|
806
|
-
| `PDF_RENDER_TIMEOUT_MS` | `30000` | Per-render page load timeout
|
|
818
|
+
| Variable | Default | Description |
|
|
819
|
+
| ------------------------- | --------- | ----------------------------------------------------------------------------------- |
|
|
820
|
+
| `PDF_CHROMIUM_PATH` | _(empty)_ | Path to an existing Chromium/Chrome binary; falls back to puppeteer's bundled one |
|
|
821
|
+
| `PDF_CHROMIUM_NO_SANDBOX` | `false` | `true` passes `--no-sandbox`. Needed in most containers; only use with trusted HTML |
|
|
822
|
+
| `PDF_RENDER_TIMEOUT_MS` | `30000` | Per-render page load timeout |
|
|
807
823
|
|
|
808
824
|
## Raw SQL (SqlService)
|
|
809
825
|
|
|
@@ -991,8 +1007,8 @@ pass the actor to a processor.
|
|
|
991
1007
|
| `POST /admin/api-keys` | admin | `ApiKeyDataProcessor` — returns `{ raw_key, api_key }` |
|
|
992
1008
|
| `POST /admin/api-keys/list` | content reader | `ApiKeyListProcessor` |
|
|
993
1009
|
| `GET /admin/api-keys/:id` | content reader | the row, its `scopes`, and `key` from admin up |
|
|
994
|
-
| `POST /admin/api-keys/:id/disable` | admin | `ApiKeyService.disableApiKey` (reversible)
|
|
995
|
-
| `POST /admin/api-keys/:id/delete` | admin | `ApiKeyService.deleteApiKey` (soft, and revokes)
|
|
1010
|
+
| `POST /admin/api-keys/:id/disable` | admin | `ApiKeyService.disableApiKey` (reversible) |
|
|
1011
|
+
| `POST /admin/api-keys/:id/delete` | admin | `ApiKeyService.deleteApiKey` (soft, and revokes) |
|
|
996
1012
|
|
|
997
1013
|
List endpoints are `POST .../list` with the filter payload in the body (a
|
|
998
1014
|
`CommonListFilterDto`) — see [List Endpoints & Filtering](#list-endpoints--filtering).
|
|
@@ -1035,7 +1051,7 @@ registration deliberately sends nothing.
|
|
|
1035
1051
|
|
|
1036
1052
|
##### Create vs. update
|
|
1037
1053
|
|
|
1038
|
-
Creation DTOs extend `
|
|
1054
|
+
Creation DTOs extend `CommonDataDto`, which carries an optional UUID `id`. Where a
|
|
1039
1055
|
processor supports it, sending an `id` turns the same `POST` into an update.
|
|
1040
1056
|
|
|
1041
1057
|
The processor loads the row when an `id` is present, falls back to `Entity.create()`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class AddAdminUserDto extends
|
|
1
|
+
import { CommonDataDto } from '../../common/dtos/common.data.dto';
|
|
2
|
+
export declare class AddAdminUserDto extends CommonDataDto {
|
|
3
3
|
name: string;
|
|
4
4
|
email: string;
|
|
5
5
|
username: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.admin.user.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.admin.user.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.admin.user.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.admin.user.dto.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE,qBAAa,eAAgB,SAAQ,aAAa;IAIhD,IAAI,EAAE,MAAM,CAAC;IAKb,KAAK,EAAE,MAAM,CAAC;IAKd,QAAQ,EAAE,MAAM,CAAC;IAOjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAUlB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AddAdminUserDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const
|
|
16
|
-
class AddAdminUserDto extends
|
|
15
|
+
const common_data_dto_1 = require("../../common/dtos/common.data.dto");
|
|
16
|
+
class AddAdminUserDto extends common_data_dto_1.CommonDataDto {
|
|
17
17
|
}
|
|
18
18
|
exports.AddAdminUserDto = AddAdminUserDto;
|
|
19
19
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.admin.user.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.admin.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAUyB;AACzB,6CAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"add.admin.user.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.admin.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAUyB;AACzB,6CAA8C;AAC9C,uEAAkE;AAGlE,MAAa,eAAgB,SAAQ,+BAAa;CAgCjD;AAhCD,0CAgCC;AA5BC;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACpC,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;6CACF;AAKb;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC5C,IAAA,yBAAO,GAAE;IACT,IAAA,2BAAS,EAAC,GAAG,CAAC;;8CACD;AAKd;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACpC,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;iDACE;AAOjB;IALC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACrD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,2BAAS,EAAC,EAAE,CAAC;;iDACI;AAUlB;IARC,IAAA,qBAAW,EAAC;QACX,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,gDAAgD;KAC9D,CAAC;IACD,IAAA,yBAAO,GAAE;IACT,IAAA,8BAAY,EAAC,CAAC,CAAC;IACf,IAAA,wBAAM,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;iDACX"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CommonDataDto } from '../../common/dtos/common.data.dto';
|
|
2
2
|
import { CatchUpPolicy, OverlapPolicy, ScheduleKind } from '../../common/enums/schedule.enum';
|
|
3
3
|
export declare class ScheduleDto {
|
|
4
4
|
kind: ScheduleKind;
|
|
@@ -8,7 +8,7 @@ export declare class ScheduleDto {
|
|
|
8
8
|
sec?: number;
|
|
9
9
|
expression?: string;
|
|
10
10
|
}
|
|
11
|
-
export declare class AddScheduledTaskDto extends
|
|
11
|
+
export declare class AddScheduledTaskDto extends CommonDataDto {
|
|
12
12
|
identifier: string;
|
|
13
13
|
name: string;
|
|
14
14
|
start_from?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.scheduled.task.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.scheduled.task.dto.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.scheduled.task.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.scheduled.task.dto.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EACL,aAAa,EACb,aAAa,EAEb,YAAY,EACb,MAAM,kCAAkC,CAAC;AAW1C,qBAAa,WAAW;IAGtB,IAAI,EAAE,YAAY,CAAC;IAOnB,GAAG,CAAC,EAAE,MAAM,CAAC;IAOb,IAAI,CAAC,EAAE,MAAM,CAAC;IAOd,GAAG,CAAC,EAAE,MAAM,CAAC;IAOb,GAAG,CAAC,EAAE,MAAM,CAAC;IASb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,qBAAa,mBAAoB,SAAQ,aAAa;IAQpD,UAAU,EAAE,MAAM,CAAC;IAMnB,IAAI,EAAE,MAAM,CAAC;IASb,UAAU,CAAC,EAAE,MAAM,CAAC;IAUpB,QAAQ,EAAE,WAAW,CAAC;IAStB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAQlB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAUlC,eAAe,CAAC,EAAE,aAAa,CAAC;IAUhC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,cAAc,CAAC,EAAE,aAAa,CAAC;IAU/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAKpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -13,7 +13,7 @@ exports.AddScheduledTaskDto = exports.ScheduleDto = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
-
const
|
|
16
|
+
const common_data_dto_1 = require("../../common/dtos/common.data.dto");
|
|
17
17
|
const schedule_enum_1 = require("../../common/enums/schedule.enum");
|
|
18
18
|
const schedule_validator_1 = require("../../common/validators/schedule.validator");
|
|
19
19
|
class ScheduleDto {
|
|
@@ -66,7 +66,7 @@ __decorate([
|
|
|
66
66
|
(0, schedule_validator_1.IsCronExpression)(),
|
|
67
67
|
__metadata("design:type", String)
|
|
68
68
|
], ScheduleDto.prototype, "expression", void 0);
|
|
69
|
-
class AddScheduledTaskDto extends
|
|
69
|
+
class AddScheduledTaskDto extends common_data_dto_1.CommonDataDto {
|
|
70
70
|
}
|
|
71
71
|
exports.AddScheduledTaskDto = AddScheduledTaskDto;
|
|
72
72
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.scheduled.task.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.scheduled.task.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAyC;AACzC,qDAayB;AACzB,6CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"add.scheduled.task.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.scheduled.task.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class AddScopeDto extends
|
|
1
|
+
import { CommonDataDto } from '../../common/dtos/common.data.dto';
|
|
2
|
+
export declare class AddScopeDto extends CommonDataDto {
|
|
3
3
|
identifier: string;
|
|
4
4
|
name: string;
|
|
5
5
|
description?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.scope.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.scope.dto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.scope.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.scope.dto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOlE,qBAAa,WAAY,SAAQ,aAAa;IAa5C,UAAU,EAAE,MAAM,CAAC;IAMnB,IAAI,EAAE,MAAM,CAAC;IAOb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AddScopeDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const
|
|
16
|
-
class AddScopeDto extends
|
|
15
|
+
const common_data_dto_1 = require("../../common/dtos/common.data.dto");
|
|
16
|
+
class AddScopeDto extends common_data_dto_1.CommonDataDto {
|
|
17
17
|
}
|
|
18
18
|
exports.AddScopeDto = AddScopeDto;
|
|
19
19
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.scope.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.scope.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAMyB;AACzB,6CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"add.scope.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.scope.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAMyB;AACzB,6CAAmE;AACnE,uEAAkE;AAOlE,MAAa,WAAY,SAAQ,+BAAa;CA2B7C;AA3BD,kCA2BC;AAdC;IAZC,IAAA,qBAAW,EAAC;QACX,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EACT,iHAAiH;KACpH,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;IACd,IAAA,yBAAO,EAAC,kBAAkB,EAAE;QAC3B,OAAO,EACL,iGAAiG;KACpG,CAAC;;+CACiB;AAMnB;IAJC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC9C,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;;yCACF;AAOb;IALC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,+CAA+C;KACzD,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gDACU"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class AddSystemRoleDto extends
|
|
1
|
+
import { CommonDataDto } from '../../common/dtos/common.data.dto';
|
|
2
|
+
export declare class AddSystemRoleDto extends CommonDataDto {
|
|
3
3
|
identifier: string;
|
|
4
4
|
name: string;
|
|
5
5
|
description?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.system.role.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.system.role.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.system.role.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.system.role.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOlE,qBAAa,gBAAiB,SAAQ,aAAa;IAajD,UAAU,EAAE,MAAM,CAAC;IAMnB,IAAI,EAAE,MAAM,CAAC;IAOb,WAAW,CAAC,EAAE,MAAM,CAAC;IASrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AddSystemRoleDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const
|
|
16
|
-
class AddSystemRoleDto extends
|
|
15
|
+
const common_data_dto_1 = require("../../common/dtos/common.data.dto");
|
|
16
|
+
class AddSystemRoleDto extends common_data_dto_1.CommonDataDto {
|
|
17
17
|
}
|
|
18
18
|
exports.AddSystemRoleDto = AddSystemRoleDto;
|
|
19
19
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.system.role.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.system.role.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"add.system.role.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.system.role.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAmE;AACnE,uEAAkE;AAOlE,MAAa,gBAAiB,SAAQ,+BAAa;CAoClD;AApCD,4CAoCC;AAvBC;IAZC,IAAA,qBAAW,EAAC;QACX,OAAO,EAAE,WAAW;QACpB,WAAW,EACT,+GAA+G;KAClH,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;IACd,IAAA,yBAAO,EAAC,iBAAiB,EAAE;QAC1B,OAAO,EACL,8FAA8F;KACjG,CAAC;;oDACiB;AAMnB;IAJC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC9C,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;;8CACF;AAOb;IALC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,sDAAsD;KAChE,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACU;AASrB;IAPC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,IAAI;QACb,WAAW,EACT,gGAAgG;KACnG,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;mDACQ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class AddTenantDto extends
|
|
1
|
+
import { CommonDataDto } from '../../common/dtos/common.data.dto';
|
|
2
|
+
export declare class AddTenantDto extends CommonDataDto {
|
|
3
3
|
name: string;
|
|
4
4
|
slug: string;
|
|
5
5
|
domain?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.tenant.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"add.tenant.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOlE,qBAAa,YAAa,SAAQ,aAAa;IAK7C,IAAI,EAAE,MAAM,CAAC;IAab,IAAI,EAAE,MAAM,CAAC;IAMb,MAAM,CAAC,EAAE,MAAM,CAAC;IAMhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAMd,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAQjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAK7B,SAAS,CAAC,EAAE,OAAO,CAAC;IAKpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYrC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AddTenantDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const
|
|
16
|
-
class AddTenantDto extends
|
|
15
|
+
const common_data_dto_1 = require("../../common/dtos/common.data.dto");
|
|
16
|
+
class AddTenantDto extends common_data_dto_1.CommonDataDto {
|
|
17
17
|
}
|
|
18
18
|
exports.AddTenantDto = AddTenantDto;
|
|
19
19
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.tenant.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAayB;AACzB,6CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"add.tenant.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class BaseUserDto extends
|
|
1
|
+
import { CommonDataDto } from '../../common/dtos/common.data.dto';
|
|
2
|
+
export declare class BaseUserDto extends CommonDataDto {
|
|
3
3
|
full_name: string;
|
|
4
4
|
email: string;
|
|
5
5
|
password?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.user.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base.user.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AASlE,qBAAa,WAAY,SAAQ,aAAa;IAI5C,SAAS,EAAE,MAAM,CAAC;IAKlB,KAAK,EAAE,MAAM,CAAC;IAiBd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.BaseUserDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
-
const
|
|
16
|
-
class BaseUserDto extends
|
|
15
|
+
const common_data_dto_1 = require("../../common/dtos/common.data.dto");
|
|
16
|
+
class BaseUserDto extends common_data_dto_1.CommonDataDto {
|
|
17
17
|
}
|
|
18
18
|
exports.BaseUserDto = BaseUserDto;
|
|
19
19
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.user.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"base.user.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAmE;AACnE,uEAAkE;AASlE,MAAa,WAAY,SAAQ,+BAAa;CAkD7C;AAlDD,kCAkDC;AA9CC;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACpC,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;8CACG;AAKlB;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACzC,IAAA,yBAAO,GAAE;IACT,IAAA,2BAAS,EAAC,GAAG,CAAC;;0CACD;AAiBd;IATC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,aAAa;QACtB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,sCAAsC;KACpD,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,2BAAS,EAAC,EAAE,CAAC;;6CACI;AAMlB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;4CACE;AAMjB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACxC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;;iDACQ;AAMtB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC9C,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;;4CACG;AAKjB;IAHC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;2CACK"}
|
|
@@ -21,7 +21,7 @@ class AdminUserDataProcessor extends common_data_processor_1.CommonDataProcessor
|
|
|
21
21
|
await this.assertEmailAvailable(this.payload.email);
|
|
22
22
|
await this.assertUsernameAvailable(this.payload.username);
|
|
23
23
|
await this.resolveAdminRoles(this.payload.role_ids, 'role_ids');
|
|
24
|
-
this.
|
|
24
|
+
this.raiseExceptionOnValidationFailure();
|
|
25
25
|
}
|
|
26
26
|
async save() {
|
|
27
27
|
if (this.payload?.id)
|