mirror of
https://github.com/complexcaresolutions/payload-contracts.git
synced 2026-03-17 12:53:47 +00:00
fix: remove tsx from optionalDependencies to fix Plesk deploys
tsx's esbuild postinstall fails in Plesk's nodenv sub-shell context because npm git dep preparation spawns `sh -c node install.js` which doesn't inherit the PATH set in deploy actions. Fix: Remove tsx entirely (only needed on sv-payload for `pnpm extract`, where it's available via npx). Also updates extracted types. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d4e1ef1035
commit
381bc291a0
3 changed files with 408 additions and 18 deletions
|
|
@ -34,7 +34,7 @@
|
|||
"build": "tsc",
|
||||
"dev": "tsc --watch",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"extract": "tsx scripts/extract-types.ts",
|
||||
"extract": "npx tsx scripts/extract-types.ts",
|
||||
"wo:create": "bash scripts/create-work-order.sh",
|
||||
"wo:execute": "bash scripts/execute-work-order.sh",
|
||||
"preinstall": "true",
|
||||
|
|
@ -52,9 +52,6 @@
|
|||
"@types/react": "^19.0.0",
|
||||
"typescript": "^5.7.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"tsx": "^4.19.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^19.0.0"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ import type {
|
|||
CookieConfiguration,
|
||||
CookieInventory,
|
||||
PrivacyPolicySetting,
|
||||
MonitoringSnapshot,
|
||||
MonitoringLog,
|
||||
MonitoringAlertRule,
|
||||
MonitoringAlertHistory,
|
||||
SiteSetting,
|
||||
Navigation,
|
||||
Form,
|
||||
|
|
@ -82,6 +86,10 @@ export type {
|
|||
CookieConfiguration,
|
||||
CookieInventory,
|
||||
PrivacyPolicySetting,
|
||||
MonitoringSnapshot,
|
||||
MonitoringLog,
|
||||
MonitoringAlertRule,
|
||||
MonitoringAlertHistory,
|
||||
SiteSetting,
|
||||
Navigation,
|
||||
Form,
|
||||
|
|
@ -127,6 +135,10 @@ export interface CollectionTypeMap {
|
|||
'cookie-configurations': CookieConfiguration;
|
||||
'cookie-inventory': CookieInventory;
|
||||
'privacy-policy-settings': PrivacyPolicySetting;
|
||||
'monitoring-snapshots': MonitoringSnapshot;
|
||||
'monitoring-logs': MonitoringLog;
|
||||
'monitoring-alert-rules': MonitoringAlertRule;
|
||||
'monitoring-alert-history': MonitoringAlertHistory;
|
||||
'site-settings': SiteSetting;
|
||||
'navigations': Navigation;
|
||||
'forms': Form;
|
||||
|
|
|
|||
|
|
@ -125,6 +125,10 @@ export interface Config {
|
|||
'privacy-policy-settings': PrivacyPolicySetting;
|
||||
'email-logs': EmailLog;
|
||||
'audit-logs': AuditLog;
|
||||
'monitoring-snapshots': MonitoringSnapshot;
|
||||
'monitoring-logs': MonitoringLog;
|
||||
'monitoring-alert-rules': MonitoringAlertRule;
|
||||
'monitoring-alert-history': MonitoringAlertHistory;
|
||||
'site-settings': SiteSetting;
|
||||
navigations: Navigation;
|
||||
forms: Form;
|
||||
|
|
@ -191,6 +195,10 @@ export interface Config {
|
|||
'privacy-policy-settings': PrivacyPolicySettingsSelect<false> | PrivacyPolicySettingsSelect<true>;
|
||||
'email-logs': EmailLogsSelect<false> | EmailLogsSelect<true>;
|
||||
'audit-logs': AuditLogsSelect<false> | AuditLogsSelect<true>;
|
||||
'monitoring-snapshots': MonitoringSnapshotsSelect<false> | MonitoringSnapshotsSelect<true>;
|
||||
'monitoring-logs': MonitoringLogsSelect<false> | MonitoringLogsSelect<true>;
|
||||
'monitoring-alert-rules': MonitoringAlertRulesSelect<false> | MonitoringAlertRulesSelect<true>;
|
||||
'monitoring-alert-history': MonitoringAlertHistorySelect<false> | MonitoringAlertHistorySelect<true>;
|
||||
'site-settings': SiteSettingsSelect<false> | SiteSettingsSelect<true>;
|
||||
navigations: NavigationsSelect<false> | NavigationsSelect<true>;
|
||||
forms: FormsSelect<false> | FormsSelect<true>;
|
||||
|
|
@ -310,6 +318,10 @@ export interface YoutubeChannel {
|
|||
language: 'de' | 'en';
|
||||
category: 'lifestyle' | 'corporate' | 'b2b';
|
||||
status: 'active' | 'planned' | 'paused' | 'archived';
|
||||
/**
|
||||
* Profil-Thumbnail URL von YouTube (automatisch befüllt)
|
||||
*/
|
||||
channelThumbnailUrl?: string | null;
|
||||
branding?: {
|
||||
/**
|
||||
* z.B. #1278B3
|
||||
|
|
@ -494,7 +506,7 @@ export interface Tenant {
|
|||
/**
|
||||
* Hostname ohne Protokoll (z.B. smtp.gmail.com)
|
||||
*/
|
||||
host: string;
|
||||
host?: string | null;
|
||||
/**
|
||||
* 587 (STARTTLS) oder 465 (SSL)
|
||||
*/
|
||||
|
|
@ -506,7 +518,7 @@ export interface Tenant {
|
|||
/**
|
||||
* Meist die E-Mail-Adresse
|
||||
*/
|
||||
user: string;
|
||||
user?: string | null;
|
||||
/**
|
||||
* Leer lassen um bestehendes Passwort zu behalten
|
||||
*/
|
||||
|
|
@ -528,11 +540,6 @@ export interface Page {
|
|||
* URL-Pfad (z.B. "ueber-uns" / "about-us")
|
||||
*/
|
||||
slug: string;
|
||||
hero?: {
|
||||
image?: (number | null) | Media;
|
||||
headline?: string | null;
|
||||
subline?: string | null;
|
||||
};
|
||||
layout?:
|
||||
| (
|
||||
| {
|
||||
|
|
@ -797,7 +804,13 @@ export interface Page {
|
|||
headline?: string | null;
|
||||
cards?:
|
||||
| {
|
||||
mediaType?: ('none' | 'image' | 'icon') | null;
|
||||
image?: (number | null) | Media;
|
||||
/**
|
||||
* Lucide Icon-Name (z.B. "heart", "star", "shield-check", "camera")
|
||||
*/
|
||||
icon?: string | null;
|
||||
iconPosition?: ('top' | 'left') | null;
|
||||
title: string;
|
||||
description?: string | null;
|
||||
link?: string | null;
|
||||
|
|
@ -6381,6 +6394,17 @@ export interface YoutubeContent {
|
|||
subscribersGained?: number | null;
|
||||
lastSyncedAt?: string | null;
|
||||
};
|
||||
/**
|
||||
* Für ROI-Berechnung (manuell pflegen)
|
||||
*/
|
||||
costs?: {
|
||||
estimatedProductionHours?: number | null;
|
||||
estimatedProductionCost?: number | null;
|
||||
/**
|
||||
* AdSense + Sponsoring + Affiliate
|
||||
*/
|
||||
estimatedRevenue?: number | null;
|
||||
};
|
||||
/**
|
||||
* Nur für das Team sichtbar
|
||||
*/
|
||||
|
|
@ -7422,6 +7446,232 @@ export interface AuditLog {
|
|||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Historische System-Metriken für Trend-Charts
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-snapshots".
|
||||
*/
|
||||
export interface MonitoringSnapshot {
|
||||
id: number;
|
||||
timestamp: string;
|
||||
/**
|
||||
* System-Ressourcen (CPU, RAM, Disk)
|
||||
*/
|
||||
system?: {
|
||||
cpuUsagePercent?: number | null;
|
||||
memoryUsedMB?: number | null;
|
||||
memoryTotalMB?: number | null;
|
||||
memoryUsagePercent?: number | null;
|
||||
diskUsedGB?: number | null;
|
||||
diskTotalGB?: number | null;
|
||||
diskUsagePercent?: number | null;
|
||||
loadAvg1?: number | null;
|
||||
loadAvg5?: number | null;
|
||||
/**
|
||||
* Uptime in Sekunden
|
||||
*/
|
||||
uptime?: number | null;
|
||||
};
|
||||
/**
|
||||
* Service-Status (PM2-Prozesse, Datenbank, Cache)
|
||||
*/
|
||||
services?: {
|
||||
payload?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
queueWorker?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
postgresql?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
pgbouncer?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
redis?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
};
|
||||
/**
|
||||
* Externe Services (SMTP, OAuth, Cron)
|
||||
*/
|
||||
external?: {
|
||||
smtp?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
metaOAuth?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
youtubeOAuth?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
cronJobs?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
};
|
||||
/**
|
||||
* Performance-Metriken
|
||||
*/
|
||||
performance?: {
|
||||
avgResponseTimeMs?: number | null;
|
||||
p95ResponseTimeMs?: number | null;
|
||||
p99ResponseTimeMs?: number | null;
|
||||
errorRate?: number | null;
|
||||
requestsPerMinute?: number | null;
|
||||
};
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Structured Logs für Business-Events
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-logs".
|
||||
*/
|
||||
export interface MonitoringLog {
|
||||
id: number;
|
||||
level: 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
||||
source: 'payload' | 'queue-worker' | 'cron' | 'email' | 'oauth' | 'sync';
|
||||
message: string;
|
||||
/**
|
||||
* Strukturierte Metadaten
|
||||
*/
|
||||
context?:
|
||||
| {
|
||||
[k: string]: unknown;
|
||||
}
|
||||
| unknown[]
|
||||
| string
|
||||
| number
|
||||
| boolean
|
||||
| null;
|
||||
/**
|
||||
* Korrelations-ID
|
||||
*/
|
||||
requestId?: string | null;
|
||||
userId?: (number | null) | User;
|
||||
tenant?: (number | null) | Tenant;
|
||||
/**
|
||||
* Dauer in ms
|
||||
*/
|
||||
duration?: number | null;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Konfigurierbare Alert-Regeln
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-alert-rules".
|
||||
*/
|
||||
export interface MonitoringAlertRule {
|
||||
id: number;
|
||||
name: string;
|
||||
/**
|
||||
* z.B. system.cpuUsagePercent, services.redis.memoryUsedMB
|
||||
*/
|
||||
metric: string;
|
||||
condition: 'gt' | 'lt' | 'eq' | 'gte' | 'lte';
|
||||
threshold: number;
|
||||
severity: 'warning' | 'error' | 'critical';
|
||||
channels: ('email' | 'slack' | 'discord')[];
|
||||
recipients?: {
|
||||
emails?:
|
||||
| {
|
||||
email: string;
|
||||
id?: string | null;
|
||||
}[]
|
||||
| null;
|
||||
slackWebhook?: string | null;
|
||||
discordWebhook?: string | null;
|
||||
};
|
||||
/**
|
||||
* Minimaler Abstand zwischen gleichen Alerts
|
||||
*/
|
||||
cooldownMinutes?: number | null;
|
||||
enabled?: boolean | null;
|
||||
/**
|
||||
* Optional: Tenant-spezifische Regel
|
||||
*/
|
||||
tenant?: (number | null) | Tenant;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Alert-Log (WORM - Write Once)
|
||||
*
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-alert-history".
|
||||
*/
|
||||
export interface MonitoringAlertHistory {
|
||||
id: number;
|
||||
rule?: (number | null) | MonitoringAlertRule;
|
||||
metric: string;
|
||||
value: number;
|
||||
threshold: number;
|
||||
severity: 'warning' | 'error' | 'critical';
|
||||
message: string;
|
||||
channelsSent?: ('email' | 'slack' | 'discord')[] | null;
|
||||
resolvedAt?: string | null;
|
||||
acknowledgedBy?: (number | null) | User;
|
||||
updatedAt: string;
|
||||
createdAt: string;
|
||||
}
|
||||
/**
|
||||
* Allgemeine Website-Einstellungen pro Tenant
|
||||
*
|
||||
|
|
@ -7804,6 +8054,22 @@ export interface PayloadLockedDocument {
|
|||
relationTo: 'audit-logs';
|
||||
value: number | AuditLog;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'monitoring-snapshots';
|
||||
value: number | MonitoringSnapshot;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'monitoring-logs';
|
||||
value: number | MonitoringLog;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'monitoring-alert-rules';
|
||||
value: number | MonitoringAlertRule;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'monitoring-alert-history';
|
||||
value: number | MonitoringAlertHistory;
|
||||
} | null)
|
||||
| ({
|
||||
relationTo: 'site-settings';
|
||||
value: number | SiteSetting;
|
||||
|
|
@ -8065,13 +8331,6 @@ export interface PagesSelect<T extends boolean = true> {
|
|||
tenant?: T;
|
||||
title?: T;
|
||||
slug?: T;
|
||||
hero?:
|
||||
| T
|
||||
| {
|
||||
image?: T;
|
||||
headline?: T;
|
||||
subline?: T;
|
||||
};
|
||||
layout?:
|
||||
| T
|
||||
| {
|
||||
|
|
@ -8297,7 +8556,10 @@ export interface PagesSelect<T extends boolean = true> {
|
|||
cards?:
|
||||
| T
|
||||
| {
|
||||
mediaType?: T;
|
||||
image?: T;
|
||||
icon?: T;
|
||||
iconPosition?: T;
|
||||
title?: T;
|
||||
description?: T;
|
||||
link?: T;
|
||||
|
|
@ -11464,6 +11726,7 @@ export interface YoutubeChannelsSelect<T extends boolean = true> {
|
|||
language?: T;
|
||||
category?: T;
|
||||
status?: T;
|
||||
channelThumbnailUrl?: T;
|
||||
branding?:
|
||||
| T
|
||||
| {
|
||||
|
|
@ -11631,6 +11894,13 @@ export interface YoutubeContentSelect<T extends boolean = true> {
|
|||
subscribersGained?: T;
|
||||
lastSyncedAt?: T;
|
||||
};
|
||||
costs?:
|
||||
| T
|
||||
| {
|
||||
estimatedProductionHours?: T;
|
||||
estimatedProductionCost?: T;
|
||||
estimatedRevenue?: T;
|
||||
};
|
||||
internalNotes?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
|
|
@ -12278,6 +12548,117 @@ export interface AuditLogsSelect<T extends boolean = true> {
|
|||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-snapshots_select".
|
||||
*/
|
||||
export interface MonitoringSnapshotsSelect<T extends boolean = true> {
|
||||
timestamp?: T;
|
||||
system?:
|
||||
| T
|
||||
| {
|
||||
cpuUsagePercent?: T;
|
||||
memoryUsedMB?: T;
|
||||
memoryTotalMB?: T;
|
||||
memoryUsagePercent?: T;
|
||||
diskUsedGB?: T;
|
||||
diskTotalGB?: T;
|
||||
diskUsagePercent?: T;
|
||||
loadAvg1?: T;
|
||||
loadAvg5?: T;
|
||||
uptime?: T;
|
||||
};
|
||||
services?:
|
||||
| T
|
||||
| {
|
||||
payload?: T;
|
||||
queueWorker?: T;
|
||||
postgresql?: T;
|
||||
pgbouncer?: T;
|
||||
redis?: T;
|
||||
};
|
||||
external?:
|
||||
| T
|
||||
| {
|
||||
smtp?: T;
|
||||
metaOAuth?: T;
|
||||
youtubeOAuth?: T;
|
||||
cronJobs?: T;
|
||||
};
|
||||
performance?:
|
||||
| T
|
||||
| {
|
||||
avgResponseTimeMs?: T;
|
||||
p95ResponseTimeMs?: T;
|
||||
p99ResponseTimeMs?: T;
|
||||
errorRate?: T;
|
||||
requestsPerMinute?: T;
|
||||
};
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-logs_select".
|
||||
*/
|
||||
export interface MonitoringLogsSelect<T extends boolean = true> {
|
||||
level?: T;
|
||||
source?: T;
|
||||
message?: T;
|
||||
context?: T;
|
||||
requestId?: T;
|
||||
userId?: T;
|
||||
tenant?: T;
|
||||
duration?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-alert-rules_select".
|
||||
*/
|
||||
export interface MonitoringAlertRulesSelect<T extends boolean = true> {
|
||||
name?: T;
|
||||
metric?: T;
|
||||
condition?: T;
|
||||
threshold?: T;
|
||||
severity?: T;
|
||||
channels?: T;
|
||||
recipients?:
|
||||
| T
|
||||
| {
|
||||
emails?:
|
||||
| T
|
||||
| {
|
||||
email?: T;
|
||||
id?: T;
|
||||
};
|
||||
slackWebhook?: T;
|
||||
discordWebhook?: T;
|
||||
};
|
||||
cooldownMinutes?: T;
|
||||
enabled?: T;
|
||||
tenant?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "monitoring-alert-history_select".
|
||||
*/
|
||||
export interface MonitoringAlertHistorySelect<T extends boolean = true> {
|
||||
rule?: T;
|
||||
metric?: T;
|
||||
value?: T;
|
||||
threshold?: T;
|
||||
severity?: T;
|
||||
message?: T;
|
||||
channelsSent?: T;
|
||||
resolvedAt?: T;
|
||||
acknowledgedBy?: T;
|
||||
updatedAt?: T;
|
||||
createdAt?: T;
|
||||
}
|
||||
/**
|
||||
* This interface was referenced by `Config`'s JSON-Schema
|
||||
* via the `definition` "site-settings_select".
|
||||
|
|
|
|||
Loading…
Reference in a new issue