@ninedeploy/schemas 0.10.6 → 0.16.1

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.
Files changed (113) hide show
  1. package/LICENSE +21 -21
  2. package/dist/accessGrants.d.ts +156 -0
  3. package/dist/accessGrants.d.ts.map +1 -0
  4. package/dist/accessGrants.js +100 -0
  5. package/dist/accessGrants.js.map +1 -0
  6. package/dist/agentCommand.d.ts.map +1 -1
  7. package/dist/agentCommand.js +11 -1
  8. package/dist/agentCommand.js.map +1 -1
  9. package/dist/auth.d.ts +53 -0
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +26 -0
  12. package/dist/auth.js.map +1 -1
  13. package/dist/backupPolicy.d.ts +37 -0
  14. package/dist/backupPolicy.d.ts.map +1 -0
  15. package/dist/backupPolicy.js +50 -0
  16. package/dist/backupPolicy.js.map +1 -0
  17. package/dist/common.d.ts +21 -5
  18. package/dist/common.d.ts.map +1 -1
  19. package/dist/common.js +35 -6
  20. package/dist/common.js.map +1 -1
  21. package/dist/databaseImport.d.ts +145 -0
  22. package/dist/databaseImport.d.ts.map +1 -0
  23. package/dist/databaseImport.js +115 -0
  24. package/dist/databaseImport.js.map +1 -0
  25. package/dist/doctor.d.ts +16 -0
  26. package/dist/doctor.d.ts.map +1 -1
  27. package/dist/doctor.js +25 -0
  28. package/dist/doctor.js.map +1 -1
  29. package/dist/githubApp.d.ts +236 -0
  30. package/dist/githubApp.d.ts.map +1 -0
  31. package/dist/githubApp.js +223 -0
  32. package/dist/githubApp.js.map +1 -0
  33. package/dist/index.d.ts +11 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +11 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/kernel.d.ts +5 -2
  38. package/dist/kernel.d.ts.map +1 -1
  39. package/dist/kernel.js +11 -2
  40. package/dist/kernel.js.map +1 -1
  41. package/dist/management.d.ts +46 -2
  42. package/dist/management.d.ts.map +1 -1
  43. package/dist/management.js +68 -15
  44. package/dist/management.js.map +1 -1
  45. package/dist/multiNode.d.ts +326 -0
  46. package/dist/multiNode.d.ts.map +1 -0
  47. package/dist/multiNode.js +296 -0
  48. package/dist/multiNode.js.map +1 -0
  49. package/dist/ninedeployManifest.d.ts.map +1 -1
  50. package/dist/ninedeployManifest.js +6 -3
  51. package/dist/ninedeployManifest.js.map +1 -1
  52. package/dist/panelBackup.d.ts +73 -0
  53. package/dist/panelBackup.d.ts.map +1 -0
  54. package/dist/panelBackup.js +45 -0
  55. package/dist/panelBackup.js.map +1 -0
  56. package/dist/proxyConfig.d.ts +132 -0
  57. package/dist/proxyConfig.d.ts.map +1 -0
  58. package/dist/proxyConfig.js +105 -0
  59. package/dist/proxyConfig.js.map +1 -0
  60. package/dist/publicAccess.d.ts +64 -0
  61. package/dist/publicAccess.d.ts.map +1 -0
  62. package/dist/publicAccess.js +63 -0
  63. package/dist/publicAccess.js.map +1 -0
  64. package/dist/secretProviders.d.ts +119 -0
  65. package/dist/secretProviders.d.ts.map +1 -0
  66. package/dist/secretProviders.js +130 -0
  67. package/dist/secretProviders.js.map +1 -0
  68. package/dist/secretScan.js +1 -1
  69. package/dist/service.d.ts +235 -17
  70. package/dist/service.d.ts.map +1 -1
  71. package/dist/service.js +331 -26
  72. package/dist/service.js.map +1 -1
  73. package/dist/terminals.d.ts +284 -0
  74. package/dist/terminals.d.ts.map +1 -0
  75. package/dist/terminals.js +177 -0
  76. package/dist/terminals.js.map +1 -0
  77. package/dist/traffic.d.ts +276 -0
  78. package/dist/traffic.d.ts.map +1 -0
  79. package/dist/traffic.js +103 -0
  80. package/dist/traffic.js.map +1 -0
  81. package/dist/workspaces.d.ts +19 -1
  82. package/dist/workspaces.d.ts.map +1 -1
  83. package/dist/workspaces.js +26 -0
  84. package/dist/workspaces.js.map +1 -1
  85. package/package.json +5 -4
  86. package/src/accessGrants.ts +117 -0
  87. package/src/agentCommand.ts +67 -0
  88. package/src/ai.ts +32 -0
  89. package/src/auth.ts +323 -0
  90. package/src/backupPolicy.ts +55 -0
  91. package/src/common.ts +179 -0
  92. package/src/databaseImport.ts +138 -0
  93. package/src/doctor.ts +161 -0
  94. package/src/environments.ts +23 -0
  95. package/src/githubApp.ts +268 -0
  96. package/src/index.ts +30 -0
  97. package/src/insights.ts +78 -0
  98. package/src/kernel.ts +180 -0
  99. package/src/labels.ts +86 -0
  100. package/src/management.ts +620 -0
  101. package/src/multiNode.ts +356 -0
  102. package/src/ninedeployManifest.ts +363 -0
  103. package/src/panelBackup.ts +90 -0
  104. package/src/project.ts +42 -0
  105. package/src/proxyConfig.ts +139 -0
  106. package/src/publicAccess.ts +80 -0
  107. package/src/runtimeVersions.ts +232 -0
  108. package/src/secretProviders.ts +159 -0
  109. package/src/secretScan.ts +169 -0
  110. package/src/service.ts +1310 -0
  111. package/src/terminals.ts +212 -0
  112. package/src/traffic.ts +130 -0
  113. package/src/workspaces.ts +215 -0
@@ -0,0 +1,177 @@
1
+ import { z } from 'zod';
2
+ import { id } from './common.js';
3
+ // ── Terminals (0.15) ────────────────────────────────────────────────────────
4
+ // Request and response shapes for `/v1/terminals`: interactive shells into a
5
+ // service replica, a managed database, any managed container, or (off by
6
+ // default, owner decision O1) the host of a server. A session is created over
7
+ // HTTP and attached over a WebSocket with a single-use ticket. Metadata only:
8
+ // no transcript is ever recorded (O2). These are SHAPE checks; the server
9
+ // resolves and authorises every target. Design: DESIGN.md §1.
10
+ export const TERMINAL_COLS_MIN = 10;
11
+ export const TERMINAL_COLS_MAX = 500;
12
+ export const TERMINAL_ROWS_MIN = 5;
13
+ export const TERMINAL_ROWS_MAX = 200;
14
+ /** Per-frame cap of the attach socket (protocol v1); a larger frame closes 1009. */
15
+ export const TERMINAL_FRAME_MAX_BYTES = 64 * 1024;
16
+ export const TERMINAL_HISTORY_LIMIT_MAX = 200;
17
+ /** Mirrors `terminalTargetKind` in `@ninedeploy/db`. */
18
+ export const terminalTargetKind = z.enum(['service', 'database', 'container', 'host']);
19
+ /** Mirrors `terminalSessionStatus` in `@ninedeploy/db`. */
20
+ export const terminalSessionStatus = z.enum(['pending', 'active', 'ended', 'failed', 'expired']);
21
+ /** A managed container name (`isManagedContainer` is checked server side). */
22
+ export const terminalContainerName = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_.-]{1,127}$/, 'must be a container name');
23
+ export const terminalTarget = z.discriminatedUnion('kind', [
24
+ z
25
+ .object({
26
+ kind: z.literal('service'),
27
+ serviceId: id,
28
+ /** 1-based replica index; omitted = the primary container. */
29
+ replica: z.number().int().min(1).max(50).optional(),
30
+ /** A node the service runs on (primary or fan-out target); omitted = its primary. */
31
+ serverId: id.optional(),
32
+ })
33
+ .strict(),
34
+ z
35
+ .object({
36
+ kind: z.literal('database'),
37
+ databaseId: id,
38
+ /** `client` runs the engine CLI with the stored credentials. */
39
+ mode: z.enum(['shell', 'client']).default('shell'),
40
+ })
41
+ .strict(),
42
+ z.object({ kind: z.literal('container'), name: terminalContainerName }).strict(),
43
+ z
44
+ .object({
45
+ kind: z.literal('host'),
46
+ /** null = the panel host. */
47
+ serverId: id.nullable(),
48
+ })
49
+ .strict(),
50
+ ]);
51
+ export const terminalCols = z.number().int().min(TERMINAL_COLS_MIN).max(TERMINAL_COLS_MAX);
52
+ export const terminalRows = z.number().int().min(TERMINAL_ROWS_MIN).max(TERMINAL_ROWS_MAX);
53
+ /** POST /v1/terminals (operator). `password` is the step-up for host shells. */
54
+ export const createTerminalSession = z
55
+ .object({
56
+ target: terminalTarget,
57
+ cols: terminalCols.default(120),
58
+ rows: terminalRows.default(32),
59
+ password: z.string().min(1).max(1024).optional(),
60
+ })
61
+ .strict();
62
+ /** One session row as the API returns it (history, detail, create). */
63
+ export const terminalSession = z.object({
64
+ id,
65
+ status: terminalSessionStatus,
66
+ targetKind: terminalTargetKind,
67
+ targetLabel: z.string(),
68
+ /** null = the panel host. */
69
+ serverId: id.nullable(),
70
+ userId: id.nullable(),
71
+ userEmail: z.string().nullable(),
72
+ createdAt: z.string(),
73
+ startedAt: z.string().nullable(),
74
+ endedAt: z.string().nullable(),
75
+ durationMs: z.number().int().nonnegative().nullable(),
76
+ bytesIn: z.number().int().nonnegative(),
77
+ bytesOut: z.number().int().nonnegative(),
78
+ endReason: z.string().nullable(),
79
+ exitCode: z.number().int().nullable(),
80
+ clientIp: z.string().nullable(),
81
+ });
82
+ /** 201 answer of POST /v1/terminals. The ticket is single use and valid for 30s. */
83
+ export const terminalSessionCreated = z.object({
84
+ session: terminalSession,
85
+ ticket: z.string().min(1),
86
+ ticketExpiresAt: z.string(),
87
+ /** `/v1/terminals/:id/attach`. */
88
+ attachPath: z.string().regex(/^\/v1\/terminals\/\d+\/attach$/),
89
+ });
90
+ /** GET /v1/terminals answer: newest first; `nextBefore` pages further back (null = no more). */
91
+ export const terminalSessionList = z.object({
92
+ items: z.array(terminalSession),
93
+ nextBefore: id.nullable(),
94
+ });
95
+ /** DELETE /v1/terminals/:id answer. `wasLive`: a running shell was closed (otherwise a pending ticket was revoked). */
96
+ export const terminalTerminateResult = z.object({
97
+ ok: z.literal(true),
98
+ wasLive: z.boolean(),
99
+ });
100
+ /** GET /v1/terminals query (history). Query strings arrive as text. */
101
+ export const terminalSessionListQuery = z
102
+ .object({
103
+ status: terminalSessionStatus.optional(),
104
+ userId: z.coerce.number().int().positive().optional(),
105
+ targetKind: terminalTargetKind.optional(),
106
+ limit: z.coerce.number().int().min(1).max(TERMINAL_HISTORY_LIMIT_MAX).default(50),
107
+ /** Page backwards from this session id. */
108
+ before: z.coerce.number().int().positive().optional(),
109
+ })
110
+ .strict();
111
+ /**
112
+ * PUT /v1/terminals/settings (operator). Partial: only the named keys change.
113
+ * Turning `hostTerminalEnabled` on needs step-up (`password`, or a sign-in
114
+ * less than 10 minutes old) and an interactive session.
115
+ */
116
+ export const terminalSettings = z
117
+ .object({
118
+ hostTerminalEnabled: z.boolean(),
119
+ idleTimeoutMinutes: z.number().int().min(1).max(240),
120
+ maxSessionMinutes: z.number().int().min(5).max(1440),
121
+ maxConcurrent: z.number().int().min(1).max(50),
122
+ retentionDays: z.number().int().min(30).max(3650),
123
+ password: z.string().max(1024).optional(),
124
+ })
125
+ .partial()
126
+ .strict();
127
+ /** GET /v1/terminals/settings: the stored values (defaults when unset). */
128
+ export const terminalSettingsView = z.object({
129
+ hostTerminalEnabled: z.boolean(),
130
+ /** `NINEDEPLOY_HOST_TERMINAL=off` forbids host shells whatever the setting says. */
131
+ hostTerminalForbiddenByEnv: z.boolean(),
132
+ idleTimeoutMinutes: z.number().int(),
133
+ maxSessionMinutes: z.number().int(),
134
+ maxConcurrent: z.number().int(),
135
+ retentionDays: z.number().int(),
136
+ });
137
+ /** Defaults applied when a settings key is absent (fresh and upgraded installs alike). */
138
+ export const TERMINAL_SETTINGS_DEFAULTS = {
139
+ hostTerminalEnabled: false,
140
+ idleTimeoutMinutes: 15,
141
+ maxSessionMinutes: 240,
142
+ maxConcurrent: 10,
143
+ retentionDays: 180,
144
+ };
145
+ // ── attach protocol v1 (`ninedeploy.terminal.v1`) ──────────────────────────
146
+ // Binary frames carry stdin / output. Text frames carry these JSON messages.
147
+ /** Client → server text frames. */
148
+ export const terminalClientMessage = z.discriminatedUnion('t', [
149
+ z.object({ t: z.literal('resize'), cols: terminalCols, rows: terminalRows }).strict(),
150
+ z.object({ t: z.literal('ping') }).strict(),
151
+ ]);
152
+ /** Server → client text frames. */
153
+ export const terminalServerMessage = z.discriminatedUnion('t', [
154
+ z.object({
155
+ t: z.literal('ready'),
156
+ sessionId: id,
157
+ target: z.object({ kind: terminalTargetKind, label: z.string(), serverId: id.nullable() }),
158
+ }),
159
+ z.object({ t: z.literal('notice'), message: z.string() }),
160
+ z.object({ t: z.literal('exit'), code: z.number().int().nullable(), reason: z.string() }),
161
+ ]);
162
+ /** WebSocket close codes of the attach socket. */
163
+ export const TERMINAL_CLOSE = {
164
+ shellExited: 1000,
165
+ frameTooLarge: 1009,
166
+ badTicket: 4401,
167
+ forbidden: 4403,
168
+ idle: 4408,
169
+ maxDuration: 4409,
170
+ terminated: 4410,
171
+ tooManySessions: 4429,
172
+ targetUnreachable: 4502,
173
+ };
174
+ /** Subprotocols of the attach socket: the protocol name, then the ticket. */
175
+ export const TERMINAL_PROTOCOL = 'ninedeploy.terminal.v1';
176
+ export const TERMINAL_TICKET_PROTOCOL_PREFIX = 'ninedeploy.ticket.';
177
+ //# sourceMappingURL=terminals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminals.js","sourceRoot":"","sources":["../src/terminals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ import { z } from 'zod';
2
+ export declare const TRAFFIC_RETENTION_DAYS_MIN = 1;
3
+ export declare const TRAFFIC_RETENTION_DAYS_MAX = 400;
4
+ export declare const TRAFFIC_RETENTION_DAYS_DEFAULT = 30;
5
+ export declare const TRAFFIC_TOP_MAX = 50;
6
+ /** Bucket widths in seconds: minute rows and hour rows. */
7
+ export declare const TRAFFIC_GRANULARITIES: readonly [60, 3600];
8
+ export declare const trafficGranularity: z.ZodUnion<readonly [z.ZodLiteral<60>, z.ZodLiteral<3600>]>;
9
+ export type TrafficGranularity = z.infer<typeof trafficGranularity>;
10
+ /** Upper edges (ms) of the latency histogram; one overflow bucket follows. */
11
+ export declare const TRAFFIC_LATENCY_EDGES_MS: readonly [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000];
12
+ /** Buckets in `latencyHist`: one per edge plus the overflow. */
13
+ export declare const TRAFFIC_LATENCY_BUCKETS: number;
14
+ export declare const trafficRange: z.ZodEnum<{
15
+ "1h": "1h";
16
+ "24h": "24h";
17
+ "30d": "30d";
18
+ "7d": "7d";
19
+ }>;
20
+ export type TrafficRange = z.infer<typeof trafficRange>;
21
+ /** Minute buckets for 1h/24h, hour buckets for 7d/30d. */
22
+ export declare function trafficRangeGranularity(range: TrafficRange): TrafficGranularity;
23
+ export declare const trafficStatus: z.ZodEnum<{
24
+ error: "error";
25
+ off: "off";
26
+ running: "running";
27
+ starting: "starting";
28
+ }>;
29
+ export type TrafficStatus = z.infer<typeof trafficStatus>;
30
+ /** PUT /v1/traffic/settings (operator). Enabling or disabling recreates Traefik once. */
31
+ export declare const trafficSettingsUpdate: z.ZodObject<{
32
+ enabled: z.ZodOptional<z.ZodBoolean>;
33
+ retentionDays: z.ZodOptional<z.ZodNumber>;
34
+ }, z.core.$strict>;
35
+ export type TrafficSettingsUpdate = z.infer<typeof trafficSettingsUpdate>;
36
+ /** GET /v1/traffic/settings, and the PUT answer. */
37
+ export declare const trafficSettingsView: z.ZodObject<{
38
+ enabled: z.ZodBoolean;
39
+ retentionDays: z.ZodNumber;
40
+ status: z.ZodEnum<{
41
+ error: "error";
42
+ off: "off";
43
+ running: "running";
44
+ starting: "starting";
45
+ }>;
46
+ lastError: z.ZodNullable<z.ZodString>;
47
+ lastIngestAt: z.ZodNullable<z.ZodString>;
48
+ logBytes: z.ZodNumber;
49
+ malformedLines: z.ZodNumber;
50
+ dockerLogDriver: z.ZodNullable<z.ZodString>;
51
+ }, z.core.$strip>;
52
+ export type TrafficSettingsView = z.infer<typeof trafficSettingsView>;
53
+ /** GET /v1/traffic/summary and /v1/services/:id/traffic query. */
54
+ export declare const trafficSummaryQuery: z.ZodObject<{
55
+ range: z.ZodDefault<z.ZodEnum<{
56
+ "1h": "1h";
57
+ "24h": "24h";
58
+ "30d": "30d";
59
+ "7d": "7d";
60
+ }>>;
61
+ top: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
62
+ }, z.core.$strict>;
63
+ export type TrafficSummaryQuery = z.infer<typeof trafficSummaryQuery>;
64
+ /** Counters shared by a bucket, a domain row and the totals. */
65
+ export declare const trafficCounters: z.ZodObject<{
66
+ requests: z.ZodNumber;
67
+ status1xx: z.ZodNumber;
68
+ status2xx: z.ZodNumber;
69
+ status3xx: z.ZodNumber;
70
+ status4xx: z.ZodNumber;
71
+ status5xx: z.ZodNumber;
72
+ statusOther: z.ZodNumber;
73
+ bytesOut: z.ZodNumber;
74
+ durationSumMs: z.ZodNumber;
75
+ durationMaxMs: z.ZodNumber;
76
+ }, z.core.$strip>;
77
+ export type TrafficCounters = z.infer<typeof trafficCounters>;
78
+ /** Percentiles estimated from the histogram; null when there were no requests. */
79
+ export declare const trafficPercentiles: z.ZodObject<{
80
+ p50Ms: z.ZodNullable<z.ZodNumber>;
81
+ p95Ms: z.ZodNullable<z.ZodNumber>;
82
+ p99Ms: z.ZodNullable<z.ZodNumber>;
83
+ }, z.core.$strip>;
84
+ export type TrafficPercentiles = z.infer<typeof trafficPercentiles>;
85
+ export declare const trafficBucket: z.ZodObject<{
86
+ requests: z.ZodNumber;
87
+ status1xx: z.ZodNumber;
88
+ status2xx: z.ZodNumber;
89
+ status3xx: z.ZodNumber;
90
+ status4xx: z.ZodNumber;
91
+ status5xx: z.ZodNumber;
92
+ statusOther: z.ZodNumber;
93
+ bytesOut: z.ZodNumber;
94
+ durationSumMs: z.ZodNumber;
95
+ durationMaxMs: z.ZodNumber;
96
+ t: z.ZodString;
97
+ }, z.core.$strip>;
98
+ export type TrafficBucket = z.infer<typeof trafficBucket>;
99
+ /** One domain (or the panel / custom / other bucket) over the range. */
100
+ export declare const trafficScopeTotal: z.ZodObject<{
101
+ requests: z.ZodNumber;
102
+ status1xx: z.ZodNumber;
103
+ status2xx: z.ZodNumber;
104
+ status3xx: z.ZodNumber;
105
+ status4xx: z.ZodNumber;
106
+ status5xx: z.ZodNumber;
107
+ statusOther: z.ZodNumber;
108
+ bytesOut: z.ZodNumber;
109
+ durationSumMs: z.ZodNumber;
110
+ durationMaxMs: z.ZodNumber;
111
+ p50Ms: z.ZodNullable<z.ZodNumber>;
112
+ p95Ms: z.ZodNullable<z.ZodNumber>;
113
+ p99Ms: z.ZodNullable<z.ZodNumber>;
114
+ scopeKey: z.ZodString;
115
+ domainId: z.ZodNullable<z.ZodNumber>;
116
+ serviceId: z.ZodNullable<z.ZodNumber>;
117
+ host: z.ZodNullable<z.ZodString>;
118
+ }, z.core.$strip>;
119
+ export type TrafficScopeTotal = z.infer<typeof trafficScopeTotal>;
120
+ /** GET /v1/traffic/summary (operator): the whole instance. */
121
+ export declare const trafficSummary: z.ZodObject<{
122
+ enabled: z.ZodBoolean;
123
+ range: z.ZodEnum<{
124
+ "1h": "1h";
125
+ "24h": "24h";
126
+ "30d": "30d";
127
+ "7d": "7d";
128
+ }>;
129
+ granularity: z.ZodUnion<readonly [z.ZodLiteral<60>, z.ZodLiteral<3600>]>;
130
+ totals: z.ZodObject<{
131
+ requests: z.ZodNumber;
132
+ status1xx: z.ZodNumber;
133
+ status2xx: z.ZodNumber;
134
+ status3xx: z.ZodNumber;
135
+ status4xx: z.ZodNumber;
136
+ status5xx: z.ZodNumber;
137
+ statusOther: z.ZodNumber;
138
+ bytesOut: z.ZodNumber;
139
+ durationSumMs: z.ZodNumber;
140
+ durationMaxMs: z.ZodNumber;
141
+ p50Ms: z.ZodNullable<z.ZodNumber>;
142
+ p95Ms: z.ZodNullable<z.ZodNumber>;
143
+ p99Ms: z.ZodNullable<z.ZodNumber>;
144
+ }, z.core.$strip>;
145
+ series: z.ZodArray<z.ZodObject<{
146
+ requests: z.ZodNumber;
147
+ status1xx: z.ZodNumber;
148
+ status2xx: z.ZodNumber;
149
+ status3xx: z.ZodNumber;
150
+ status4xx: z.ZodNumber;
151
+ status5xx: z.ZodNumber;
152
+ statusOther: z.ZodNumber;
153
+ bytesOut: z.ZodNumber;
154
+ durationSumMs: z.ZodNumber;
155
+ durationMaxMs: z.ZodNumber;
156
+ t: z.ZodString;
157
+ }, z.core.$strip>>;
158
+ topDomains: z.ZodArray<z.ZodObject<{
159
+ requests: z.ZodNumber;
160
+ status1xx: z.ZodNumber;
161
+ status2xx: z.ZodNumber;
162
+ status3xx: z.ZodNumber;
163
+ status4xx: z.ZodNumber;
164
+ status5xx: z.ZodNumber;
165
+ statusOther: z.ZodNumber;
166
+ bytesOut: z.ZodNumber;
167
+ durationSumMs: z.ZodNumber;
168
+ durationMaxMs: z.ZodNumber;
169
+ p50Ms: z.ZodNullable<z.ZodNumber>;
170
+ p95Ms: z.ZodNullable<z.ZodNumber>;
171
+ p99Ms: z.ZodNullable<z.ZodNumber>;
172
+ scopeKey: z.ZodString;
173
+ domainId: z.ZodNullable<z.ZodNumber>;
174
+ serviceId: z.ZodNullable<z.ZodNumber>;
175
+ host: z.ZodNullable<z.ZodString>;
176
+ }, z.core.$strip>>;
177
+ panel: z.ZodNullable<z.ZodObject<{
178
+ requests: z.ZodNumber;
179
+ status1xx: z.ZodNumber;
180
+ status2xx: z.ZodNumber;
181
+ status3xx: z.ZodNumber;
182
+ status4xx: z.ZodNumber;
183
+ status5xx: z.ZodNumber;
184
+ statusOther: z.ZodNumber;
185
+ bytesOut: z.ZodNumber;
186
+ durationSumMs: z.ZodNumber;
187
+ durationMaxMs: z.ZodNumber;
188
+ p50Ms: z.ZodNullable<z.ZodNumber>;
189
+ p95Ms: z.ZodNullable<z.ZodNumber>;
190
+ p99Ms: z.ZodNullable<z.ZodNumber>;
191
+ scopeKey: z.ZodString;
192
+ domainId: z.ZodNullable<z.ZodNumber>;
193
+ serviceId: z.ZodNullable<z.ZodNumber>;
194
+ host: z.ZodNullable<z.ZodString>;
195
+ }, z.core.$strip>>;
196
+ custom: z.ZodNullable<z.ZodObject<{
197
+ requests: z.ZodNumber;
198
+ status1xx: z.ZodNumber;
199
+ status2xx: z.ZodNumber;
200
+ status3xx: z.ZodNumber;
201
+ status4xx: z.ZodNumber;
202
+ status5xx: z.ZodNumber;
203
+ statusOther: z.ZodNumber;
204
+ bytesOut: z.ZodNumber;
205
+ durationSumMs: z.ZodNumber;
206
+ durationMaxMs: z.ZodNumber;
207
+ p50Ms: z.ZodNullable<z.ZodNumber>;
208
+ p95Ms: z.ZodNullable<z.ZodNumber>;
209
+ p99Ms: z.ZodNullable<z.ZodNumber>;
210
+ scopeKey: z.ZodString;
211
+ domainId: z.ZodNullable<z.ZodNumber>;
212
+ serviceId: z.ZodNullable<z.ZodNumber>;
213
+ host: z.ZodNullable<z.ZodString>;
214
+ }, z.core.$strip>>;
215
+ }, z.core.$strip>;
216
+ export type TrafficSummary = z.infer<typeof trafficSummary>;
217
+ /** GET /v1/services/:id/traffic (any seat on the service). Empty series, never 404, without data. */
218
+ export declare const serviceTrafficSummary: z.ZodObject<{
219
+ enabled: z.ZodBoolean;
220
+ range: z.ZodEnum<{
221
+ "1h": "1h";
222
+ "24h": "24h";
223
+ "30d": "30d";
224
+ "7d": "7d";
225
+ }>;
226
+ granularity: z.ZodUnion<readonly [z.ZodLiteral<60>, z.ZodLiteral<3600>]>;
227
+ totals: z.ZodObject<{
228
+ requests: z.ZodNumber;
229
+ status1xx: z.ZodNumber;
230
+ status2xx: z.ZodNumber;
231
+ status3xx: z.ZodNumber;
232
+ status4xx: z.ZodNumber;
233
+ status5xx: z.ZodNumber;
234
+ statusOther: z.ZodNumber;
235
+ bytesOut: z.ZodNumber;
236
+ durationSumMs: z.ZodNumber;
237
+ durationMaxMs: z.ZodNumber;
238
+ p50Ms: z.ZodNullable<z.ZodNumber>;
239
+ p95Ms: z.ZodNullable<z.ZodNumber>;
240
+ p99Ms: z.ZodNullable<z.ZodNumber>;
241
+ }, z.core.$strip>;
242
+ series: z.ZodArray<z.ZodObject<{
243
+ requests: z.ZodNumber;
244
+ status1xx: z.ZodNumber;
245
+ status2xx: z.ZodNumber;
246
+ status3xx: z.ZodNumber;
247
+ status4xx: z.ZodNumber;
248
+ status5xx: z.ZodNumber;
249
+ statusOther: z.ZodNumber;
250
+ bytesOut: z.ZodNumber;
251
+ durationSumMs: z.ZodNumber;
252
+ durationMaxMs: z.ZodNumber;
253
+ t: z.ZodString;
254
+ }, z.core.$strip>>;
255
+ domains: z.ZodArray<z.ZodObject<{
256
+ requests: z.ZodNumber;
257
+ status1xx: z.ZodNumber;
258
+ status2xx: z.ZodNumber;
259
+ status3xx: z.ZodNumber;
260
+ status4xx: z.ZodNumber;
261
+ status5xx: z.ZodNumber;
262
+ statusOther: z.ZodNumber;
263
+ bytesOut: z.ZodNumber;
264
+ durationSumMs: z.ZodNumber;
265
+ durationMaxMs: z.ZodNumber;
266
+ p50Ms: z.ZodNullable<z.ZodNumber>;
267
+ p95Ms: z.ZodNullable<z.ZodNumber>;
268
+ p99Ms: z.ZodNullable<z.ZodNumber>;
269
+ scopeKey: z.ZodString;
270
+ domainId: z.ZodNullable<z.ZodNumber>;
271
+ serviceId: z.ZodNullable<z.ZodNumber>;
272
+ host: z.ZodNullable<z.ZodString>;
273
+ }, z.core.$strip>>;
274
+ }, z.core.$strip>;
275
+ export type ServiceTrafficSummary = z.infer<typeof serviceTrafficSummary>;
276
+ //# sourceMappingURL=traffic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic.d.ts","sourceRoot":"","sources":["../src/traffic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,YAAI,EAAE,EAAE,IAAI,CAAU,CAAC;AACzD,eAAO,MAAM,kBAAkB,6DAA4C,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,YAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AACzG,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,QAAsC,CAAC;AAE3E,eAAO,MAAM,YAAY;;;;;EAAqC,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,0DAA0D;AAC1D,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAE/E;AAED,eAAO,MAAM,aAAa;;;;;EAAkD,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,yFAAyF;AACzF,eAAO,MAAM,qBAAqB;;;kBAKvB,CAAC;AACZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE1E,oDAAoD;AACpD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAU9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,kEAAkE;AAClE,eAAO,MAAM,mBAAmB;;;;;;;;kBAKrB,CAAC;AACZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,gEAAgE;AAChE,eAAO,MAAM,eAAe;;;;;;;;;;;iBAW1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,kFAAkF;AAClF,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,aAAa;;;;;;;;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wEAAwE;AACxE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;iBAO5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,8DAA8D;AAC9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASzB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,qGAAqG;AACrG,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOhC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { z } from 'zod';
2
+ // ── Traffic analytics (0.15) ────────────────────────────────────────────────
3
+ // Request and response shapes for `/v1/traffic` and
4
+ // `/v1/services/:id/traffic`. Analytics is opt-in everywhere (owner decision
5
+ // O3): with it off, Traefik's static config is byte-identical to 0.14. Only
6
+ // aggregate counters are kept — no client IP, path, query string or header.
7
+ // Design: DESIGN.md §2.
8
+ export const TRAFFIC_RETENTION_DAYS_MIN = 1;
9
+ export const TRAFFIC_RETENTION_DAYS_MAX = 400;
10
+ export const TRAFFIC_RETENTION_DAYS_DEFAULT = 30;
11
+ export const TRAFFIC_TOP_MAX = 50;
12
+ /** Bucket widths in seconds: minute rows and hour rows. */
13
+ export const TRAFFIC_GRANULARITIES = [60, 3600];
14
+ export const trafficGranularity = z.union([z.literal(60), z.literal(3600)]);
15
+ /** Upper edges (ms) of the latency histogram; one overflow bucket follows. */
16
+ export const TRAFFIC_LATENCY_EDGES_MS = [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000];
17
+ /** Buckets in `latencyHist`: one per edge plus the overflow. */
18
+ export const TRAFFIC_LATENCY_BUCKETS = TRAFFIC_LATENCY_EDGES_MS.length + 1;
19
+ export const trafficRange = z.enum(['1h', '24h', '7d', '30d']);
20
+ /** Minute buckets for 1h/24h, hour buckets for 7d/30d. */
21
+ export function trafficRangeGranularity(range) {
22
+ return range === '1h' || range === '24h' ? 60 : 3600;
23
+ }
24
+ export const trafficStatus = z.enum(['off', 'starting', 'running', 'error']);
25
+ /** PUT /v1/traffic/settings (operator). Enabling or disabling recreates Traefik once. */
26
+ export const trafficSettingsUpdate = z
27
+ .object({
28
+ enabled: z.boolean().optional(),
29
+ retentionDays: z.number().int().min(TRAFFIC_RETENTION_DAYS_MIN).max(TRAFFIC_RETENTION_DAYS_MAX).optional(),
30
+ })
31
+ .strict();
32
+ /** GET /v1/traffic/settings, and the PUT answer. */
33
+ export const trafficSettingsView = z.object({
34
+ enabled: z.boolean(),
35
+ retentionDays: z.number().int(),
36
+ status: trafficStatus,
37
+ lastError: z.string().nullable(),
38
+ lastIngestAt: z.string().nullable(),
39
+ logBytes: z.number().int().nonnegative(),
40
+ malformedLines: z.number().int().nonnegative(),
41
+ /** `docker info` LoggingDriver; null when Docker did not answer. */
42
+ dockerLogDriver: z.string().nullable(),
43
+ });
44
+ /** GET /v1/traffic/summary and /v1/services/:id/traffic query. */
45
+ export const trafficSummaryQuery = z
46
+ .object({
47
+ range: trafficRange.default('24h'),
48
+ top: z.coerce.number().int().min(1).max(TRAFFIC_TOP_MAX).default(10),
49
+ })
50
+ .strict();
51
+ /** Counters shared by a bucket, a domain row and the totals. */
52
+ export const trafficCounters = z.object({
53
+ requests: z.number().int().nonnegative(),
54
+ status1xx: z.number().int().nonnegative(),
55
+ status2xx: z.number().int().nonnegative(),
56
+ status3xx: z.number().int().nonnegative(),
57
+ status4xx: z.number().int().nonnegative(),
58
+ status5xx: z.number().int().nonnegative(),
59
+ statusOther: z.number().int().nonnegative(),
60
+ bytesOut: z.number().int().nonnegative(),
61
+ durationSumMs: z.number().int().nonnegative(),
62
+ durationMaxMs: z.number().int().nonnegative(),
63
+ });
64
+ /** Percentiles estimated from the histogram; null when there were no requests. */
65
+ export const trafficPercentiles = z.object({
66
+ p50Ms: z.number().nonnegative().nullable(),
67
+ p95Ms: z.number().nonnegative().nullable(),
68
+ p99Ms: z.number().nonnegative().nullable(),
69
+ });
70
+ export const trafficBucket = trafficCounters.extend({
71
+ /** Bucket start, ISO 8601. */
72
+ t: z.string(),
73
+ });
74
+ /** One domain (or the panel / custom / other bucket) over the range. */
75
+ export const trafficScopeTotal = trafficCounters.extend(trafficPercentiles.shape).extend({
76
+ /** `d:<domainId>` | `panel` | `custom` | `other`. */
77
+ scopeKey: z.string(),
78
+ domainId: z.number().int().positive().nullable(),
79
+ serviceId: z.number().int().positive().nullable(),
80
+ /** The host as recorded, kept after the domain is deleted. */
81
+ host: z.string().nullable(),
82
+ });
83
+ /** GET /v1/traffic/summary (operator): the whole instance. */
84
+ export const trafficSummary = z.object({
85
+ enabled: z.boolean(),
86
+ range: trafficRange,
87
+ granularity: trafficGranularity,
88
+ totals: trafficCounters.extend(trafficPercentiles.shape),
89
+ series: z.array(trafficBucket),
90
+ topDomains: z.array(trafficScopeTotal),
91
+ panel: trafficScopeTotal.nullable(),
92
+ custom: trafficScopeTotal.nullable(),
93
+ });
94
+ /** GET /v1/services/:id/traffic (any seat on the service). Empty series, never 404, without data. */
95
+ export const serviceTrafficSummary = z.object({
96
+ enabled: z.boolean(),
97
+ range: trafficRange,
98
+ granularity: trafficGranularity,
99
+ totals: trafficCounters.extend(trafficPercentiles.shape),
100
+ series: z.array(trafficBucket),
101
+ domains: z.array(trafficScopeTotal),
102
+ });
103
+ //# sourceMappingURL=traffic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic.js","sourceRoot":"","sources":["../src/traffic.ts"],"names":[],"mappings":"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"}
@@ -123,6 +123,11 @@ export interface WorkspaceInvitationPublic {
123
123
  invitedByName: string | null;
124
124
  expiresAt: string;
125
125
  }
126
+ /**
127
+ * r507: one allowed email domain for an SSO provider (`corp.com`; a leading
128
+ * `@` is tolerated and dropped). Matching is exact — list subdomains you mean.
129
+ */
130
+ export declare const oidcAllowedDomain: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
126
131
  export declare const oidcProviderCreate: z.ZodObject<{
127
132
  name: z.ZodString;
128
133
  slug: z.ZodString;
@@ -136,9 +141,15 @@ export declare const oidcProviderCreate: z.ZodObject<{
136
141
  admin: "admin";
137
142
  member: "member";
138
143
  }>>;
144
+ allowedDomains: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>>>;
139
145
  }, z.core.$strip>;
140
146
  export type OidcProviderCreate = z.infer<typeof oidcProviderCreate>;
141
- export type OidcProviderCreateInput = OidcProviderCreate;
147
+ /**
148
+ * What a client sends: fields with a server-side default are optional (F1014:
149
+ * so a caller never has to send the deprecated `defaultRole`). Same shape as
150
+ * the other `*Input` aliases (`z.input`).
151
+ */
152
+ export type OidcProviderCreateInput = z.input<typeof oidcProviderCreate>;
142
153
  export declare const oidcProviderUpdate: z.ZodObject<{
143
154
  name: z.ZodOptional<z.ZodString>;
144
155
  issuerUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -151,6 +162,7 @@ export declare const oidcProviderUpdate: z.ZodObject<{
151
162
  admin: "admin";
152
163
  member: "member";
153
164
  }>>;
165
+ allowedDomains: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>>>;
154
166
  }, z.core.$strip>;
155
167
  export type OidcProviderUpdate = z.infer<typeof oidcProviderUpdate>;
156
168
  export type OidcProviderUpdateInput = OidcProviderUpdate;
@@ -163,7 +175,13 @@ export interface OidcProviderEntry {
163
175
  scopes: string;
164
176
  enabled: boolean;
165
177
  autoEnroll: boolean;
178
+ /**
179
+ * @deprecated F1014: the stored value, echoed for compatibility. It has no
180
+ * effect on OIDC sign-ins; see oidcProviderCreate.defaultRole.
181
+ */
166
182
  defaultRole: 'admin' | 'member';
183
+ /** r507: email domains allowed to sign in / enroll; empty = unrestricted. */
184
+ allowedDomains: string[];
167
185
  createdAt: string;
168
186
  updatedAt: string;
169
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../src/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;EAAiD,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE9D;;;;8EAI8E;AAC9E,eAAO,MAAM,2BAA2B;;;;EAAwC,CAAC;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAElF,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEnD,eAAO,MAAM,eAAe;;;iBAKiD,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEnD,eAAO,MAAM,kBAAkB;;;;;;;iBAG7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEzD,eAAO,MAAM,yBAAyB;;;;;;;iBAEpC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAClF,MAAM,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,MAAM,SAAS,GAAG,cAAc,CAAC;AAEvC,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAOD,eAAO,MAAM,yBAAyB;;;;;;;iBAGpC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAClF,MAAM,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;AAEvE,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iFAAiF;AACjF,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,gFAW3B,CAAC;AAGJ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBAmB7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEzE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAa8C,CAAC;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,6EAA6E;IAC7E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB"}