@oktis-works/worker 0.1.4 → 0.1.7
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/dist/jobs/handlers.d.ts +27 -0
- package/dist/jobs/handlers.d.ts.map +1 -1
- package/dist/jobs/handlers.js +203 -39
- package/dist/jobs/handlers.js.map +1 -1
- package/dist/jobs/types.d.ts +1 -1
- package/dist/jobs/types.d.ts.map +1 -1
- package/package.json +7 -6
- package/dist/jobs/handlers.test.d.ts +0 -2
- package/dist/jobs/handlers.test.d.ts.map +0 -1
- package/dist/jobs/handlers.test.js +0 -91
- package/dist/jobs/handlers.test.js.map +0 -1
package/dist/jobs/handlers.d.ts
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
import type { JobHandler } from '../jobs/types.js';
|
|
2
|
+
export interface MediaVariantInfo {
|
|
3
|
+
width?: number;
|
|
4
|
+
height?: number;
|
|
5
|
+
bytes: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Publicação assíncrona (`POST /content/:id/publish?mode=async`).
|
|
9
|
+
* Delega ao contentPublisher do core — mesma paridade do caminho síncrono
|
|
10
|
+
* (versionamento + hooks + eventos + cache). Idempotente: conteúdo já
|
|
11
|
+
* publicado (ex.: caminho síncrono executou antes do job) → sucesso sem efeitos.
|
|
12
|
+
* `enqueue:false`: o job já está em processamento — não re-enfileira.
|
|
13
|
+
*/
|
|
2
14
|
export declare const contentPublishHandler: JobHandler;
|
|
15
|
+
/** Despublicação assíncrona (`?mode=async`) — mesmas regras do publish. */
|
|
3
16
|
export declare const contentUnpublishHandler: JobHandler;
|
|
17
|
+
/**
|
|
18
|
+
* C1 — processamento REAL de imagens com sharp:
|
|
19
|
+
* resize → redimensiona o original (op.options.width/height)
|
|
20
|
+
* thumbnail → variante `_thumb` (300px) ao lado do original
|
|
21
|
+
* compress → re-encode com qualidade (op.options.quality, default 80)
|
|
22
|
+
* metadata recebe as variantes com width/height/bytes reais.
|
|
23
|
+
*/
|
|
4
24
|
export declare const mediaProcessHandler: JobHandler;
|
|
25
|
+
/**
|
|
26
|
+
* C2 — build REAL da imagem Docker via spawnSync:
|
|
27
|
+
* docker build -f <dockerfile> -t okcms/{buildId}:latest <contexto>
|
|
28
|
+
* Falha de build → status FAILED + error real (stderr do docker).
|
|
29
|
+
* DOCKER_AVAILABLE=false (env) → pula o docker, marca docker_image como NULL
|
|
30
|
+
* e loga claramente (degradação para dev sem docker).
|
|
31
|
+
*/
|
|
5
32
|
export declare const buildCreateHandler: JobHandler;
|
|
6
33
|
export declare const deploymentCreateHandler: JobHandler;
|
|
7
34
|
export declare const webhookSendHandler: JobHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/jobs/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/jobs/handlers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAyBD;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,UAWnC,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,EAAE,UAWrC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAuFjC,CAAC;AA+BF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,UA0EhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,UAkErC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,UAoChC,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,UAK3C,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,UAWpC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACjC,MAAM,CAsCR;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,qEAAqE;AACrE,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5F"}
|
package/dist/jobs/handlers.js
CHANGED
|
@@ -1,44 +1,68 @@
|
|
|
1
1
|
// @oktis-works/worker - Job Handlers
|
|
2
2
|
import { createHash, randomUUID } from 'node:crypto';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { isAbsolute, join, resolve } from 'node:path';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import sharp from 'sharp';
|
|
3
8
|
import { getConnection } from '@oktis-works/database';
|
|
4
9
|
import { getCache } from '@oktis-works/core';
|
|
5
|
-
import { getEventBus, trackDeploymentProgress } from '@oktis-works/core';
|
|
10
|
+
import { getEventBus, trackDeploymentProgress, contentPublisher } from '@oktis-works/core';
|
|
11
|
+
/** Mesmo contrato do storage da API: UPLOAD_DIR (default "uploads" relativo ao cwd). */
|
|
12
|
+
function getUploadDir() {
|
|
13
|
+
const dir = process.env['UPLOAD_DIR'] ?? 'uploads';
|
|
14
|
+
return isAbsolute(dir) ? dir : resolve(process.cwd(), dir);
|
|
15
|
+
}
|
|
16
|
+
/** Mesmo saneamento do storage da API: <tenant>/<uuid>.<ext>. */
|
|
17
|
+
function isSafeStoredPath(relPath) {
|
|
18
|
+
const [tenant, filename, ...rest] = relPath.split('/');
|
|
19
|
+
return (rest.length === 0 &&
|
|
20
|
+
!!tenant &&
|
|
21
|
+
!!filename &&
|
|
22
|
+
/^[A-Za-z0-9_-]{1,64}$/.test(tenant) &&
|
|
23
|
+
/^[A-Za-z0-9_-]{1,64}\.[a-z0-9]{1,10}$/.test(filename));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Publicação assíncrona (`POST /content/:id/publish?mode=async`).
|
|
27
|
+
* Delega ao contentPublisher do core — mesma paridade do caminho síncrono
|
|
28
|
+
* (versionamento + hooks + eventos + cache). Idempotente: conteúdo já
|
|
29
|
+
* publicado (ex.: caminho síncrono executou antes do job) → sucesso sem efeitos.
|
|
30
|
+
* `enqueue:false`: o job já está em processamento — não re-enfileira.
|
|
31
|
+
*/
|
|
6
32
|
export const contentPublishHandler = async (job) => {
|
|
7
33
|
const { contentId } = job.payload;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
createdAt: new Date(),
|
|
19
|
-
});
|
|
20
|
-
const cache = getCache();
|
|
21
|
-
await cache.del(`content:${contentId}`);
|
|
22
|
-
return { success: true };
|
|
34
|
+
try {
|
|
35
|
+
await contentPublisher.publish(contentId, job.userId ?? 'system', { enqueue: false });
|
|
36
|
+
return { success: true };
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const message = error instanceof Error ? error.message : 'Publish failed';
|
|
40
|
+
if (message.includes('already published'))
|
|
41
|
+
return { success: true };
|
|
42
|
+
return { success: false, error: message };
|
|
43
|
+
}
|
|
23
44
|
};
|
|
45
|
+
/** Despublicação assíncrona (`?mode=async`) — mesmas regras do publish. */
|
|
24
46
|
export const contentUnpublishHandler = async (job) => {
|
|
25
47
|
const { contentId } = job.payload;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
createdAt: new Date(),
|
|
37
|
-
});
|
|
38
|
-
const cache = getCache();
|
|
39
|
-
await cache.del(`content:${contentId}`);
|
|
40
|
-
return { success: true };
|
|
48
|
+
try {
|
|
49
|
+
await contentPublisher.unpublish(contentId, job.userId ?? 'system', { enqueue: false });
|
|
50
|
+
return { success: true };
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const message = error instanceof Error ? error.message : 'Unpublish failed';
|
|
54
|
+
if (message.includes('is not published'))
|
|
55
|
+
return { success: true };
|
|
56
|
+
return { success: false, error: message };
|
|
57
|
+
}
|
|
41
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* C1 — processamento REAL de imagens com sharp:
|
|
61
|
+
* resize → redimensiona o original (op.options.width/height)
|
|
62
|
+
* thumbnail → variante `_thumb` (300px) ao lado do original
|
|
63
|
+
* compress → re-encode com qualidade (op.options.quality, default 80)
|
|
64
|
+
* metadata recebe as variantes com width/height/bytes reais.
|
|
65
|
+
*/
|
|
42
66
|
export const mediaProcessHandler = async (job) => {
|
|
43
67
|
const { mediaId, operations } = job.payload;
|
|
44
68
|
const sql = getConnection();
|
|
@@ -46,25 +70,157 @@ export const mediaProcessHandler = async (job) => {
|
|
|
46
70
|
if (mediaResult.length === 0) {
|
|
47
71
|
return { success: false, error: 'Media not found' };
|
|
48
72
|
}
|
|
49
|
-
|
|
50
|
-
|
|
73
|
+
const media = mediaResult[0];
|
|
74
|
+
const relPath = String(media['path'] ?? '');
|
|
75
|
+
if (!relPath || !isSafeStoredPath(relPath)) {
|
|
76
|
+
return { success: false, error: `Invalid media path: ${relPath}` };
|
|
77
|
+
}
|
|
78
|
+
const absPath = join(getUploadDir(), relPath);
|
|
79
|
+
let buffer;
|
|
80
|
+
try {
|
|
81
|
+
buffer = readFileSync(absPath);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return { success: false, error: `Media file not found on disk: ${relPath}` };
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const baseMetadata = await sharp(buffer).metadata();
|
|
88
|
+
const variants = {};
|
|
89
|
+
let currentBuffer = buffer;
|
|
90
|
+
let needsRewrite = false;
|
|
91
|
+
for (const op of (operations ?? [])) {
|
|
92
|
+
switch (op.type) {
|
|
93
|
+
case 'resize': {
|
|
94
|
+
const width = toPositiveInt(op.options['width']);
|
|
95
|
+
const height = toPositiveInt(op.options['height']);
|
|
96
|
+
if (!width && !height)
|
|
97
|
+
break;
|
|
98
|
+
currentBuffer = await sharp(currentBuffer)
|
|
99
|
+
.resize({ width: width ?? undefined, height: height ?? undefined, fit: 'inside', withoutEnlargement: true })
|
|
100
|
+
.toBuffer();
|
|
101
|
+
const meta = await sharp(currentBuffer).metadata();
|
|
102
|
+
variants['resized'] = { width: meta.width, height: meta.height, bytes: currentBuffer.byteLength };
|
|
103
|
+
needsRewrite = true;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
case 'thumbnail': {
|
|
107
|
+
const thumbWidth = toPositiveInt(op.options['width']) ?? 300;
|
|
108
|
+
const thumbBuffer = await sharp(currentBuffer)
|
|
109
|
+
.resize({ width: thumbWidth, withoutEnlargement: true })
|
|
110
|
+
.toBuffer();
|
|
111
|
+
const thumbMeta = await sharp(thumbBuffer).metadata();
|
|
112
|
+
writeFileSync(thumbFilename(absPath), thumbBuffer);
|
|
113
|
+
variants['thumb'] = { width: thumbMeta.width, height: thumbMeta.height, bytes: thumbBuffer.byteLength };
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case 'compress': {
|
|
117
|
+
const quality = toPositiveInt(op.options['quality']) ?? 80;
|
|
118
|
+
currentBuffer = await reencode(currentBuffer, quality);
|
|
119
|
+
const meta = await sharp(currentBuffer).metadata();
|
|
120
|
+
variants['compressed'] = { width: meta.width, height: meta.height, bytes: currentBuffer.byteLength };
|
|
121
|
+
needsRewrite = true;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
default:
|
|
125
|
+
console.warn(`[media.process] Operação desconhecida ignorada: ${op.type}`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (needsRewrite) {
|
|
129
|
+
writeFileSync(absPath, currentBuffer);
|
|
130
|
+
}
|
|
131
|
+
const metadata = {
|
|
132
|
+
...(media['metadata'] ?? {}),
|
|
133
|
+
processed: true,
|
|
134
|
+
processedAt: new Date().toISOString(),
|
|
135
|
+
width: baseMetadata.width,
|
|
136
|
+
height: baseMetadata.height,
|
|
137
|
+
variants,
|
|
138
|
+
};
|
|
139
|
+
await sql.unsafe('UPDATE media SET metadata = $1::jsonb WHERE id = $2', [metadata, mediaId]);
|
|
140
|
+
return { success: true, data: { variants } };
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const message = error instanceof Error ? error.message : 'Media processing failed';
|
|
144
|
+
console.error(`[media.process] Falha ao processar ${mediaId}:`, message);
|
|
145
|
+
return { success: false, error: message };
|
|
51
146
|
}
|
|
52
|
-
await sql.unsafe("UPDATE media SET metadata = metadata || $1::jsonb WHERE id = $2", [JSON.stringify({ processed: true, processedAt: new Date().toISOString() }), mediaId]);
|
|
53
|
-
return { success: true };
|
|
54
147
|
};
|
|
148
|
+
function toPositiveInt(value) {
|
|
149
|
+
const n = Number(value);
|
|
150
|
+
return Number.isFinite(n) && n > 0 ? Math.floor(n) : null;
|
|
151
|
+
}
|
|
152
|
+
/** Variante _thumb ao lado do original: <uuid>.<ext> → <uuid>_thumb.<ext>. */
|
|
153
|
+
function thumbFilename(absPath) {
|
|
154
|
+
const dot = absPath.lastIndexOf('.');
|
|
155
|
+
return dot === -1 ? `${absPath}_thumb` : `${absPath.slice(0, dot)}_thumb${absPath.slice(dot)}`;
|
|
156
|
+
}
|
|
157
|
+
/** Re-encode preservando o formato (jpeg/webp/avif usam quality; png usa palette). */
|
|
158
|
+
async function reencode(buffer, quality) {
|
|
159
|
+
const meta = await sharp(buffer).metadata();
|
|
160
|
+
const image = sharp(buffer);
|
|
161
|
+
switch (meta.format) {
|
|
162
|
+
case 'jpeg':
|
|
163
|
+
return image.jpeg({ quality, mozjpeg: true }).toBuffer();
|
|
164
|
+
case 'webp':
|
|
165
|
+
return image.webp({ quality }).toBuffer();
|
|
166
|
+
case 'avif':
|
|
167
|
+
return image.avif({ quality }).toBuffer();
|
|
168
|
+
case 'png':
|
|
169
|
+
return image.png({ compressionLevel: 9, palette: true }).toBuffer();
|
|
170
|
+
default:
|
|
171
|
+
return buffer;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* C2 — build REAL da imagem Docker via spawnSync:
|
|
176
|
+
* docker build -f <dockerfile> -t okcms/{buildId}:latest <contexto>
|
|
177
|
+
* Falha de build → status FAILED + error real (stderr do docker).
|
|
178
|
+
* DOCKER_AVAILABLE=false (env) → pula o docker, marca docker_image como NULL
|
|
179
|
+
* e loga claramente (degradação para dev sem docker).
|
|
180
|
+
*/
|
|
55
181
|
export const buildCreateHandler = async (job) => {
|
|
56
182
|
const { buildId, plugins, theme } = job.payload;
|
|
57
183
|
const sql = getConnection();
|
|
58
184
|
await sql.unsafe("UPDATE builds SET status = 'IN_PROGRESS', started_at = NOW() WHERE id = $1", [buildId]);
|
|
59
185
|
try {
|
|
60
|
-
const dockerfile = generateDockerfile(plugins, theme);
|
|
186
|
+
const dockerfile = generateDockerfile(plugins ?? {}, theme ?? {});
|
|
61
187
|
const checksum = computeBuildChecksum(dockerfile);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
188
|
+
// Degradacao: dev sem docker — build "conclui" sem imagem (docker_image NULL)
|
|
189
|
+
if (process.env['DOCKER_AVAILABLE'] === 'false') {
|
|
190
|
+
console.log(`[build.create] DOCKER_AVAILABLE=false — docker pulado para o build ${buildId} (docker_image=NULL, degradação para dev sem docker)`);
|
|
191
|
+
await sql.unsafe("UPDATE builds SET status = 'COMPLETED', completed_at = NOW(), docker_image = NULL, checksum = $1, build_log = $2 WHERE id = $3", [checksum, 'docker skipped: DOCKER_AVAILABLE=false', buildId]);
|
|
192
|
+
return { success: true, data: { skipped: true, reason: 'DOCKER_AVAILABLE=false' } };
|
|
193
|
+
}
|
|
194
|
+
// Dockerfile num dir temporário (-f absoluto); contexto = cwd do worker
|
|
195
|
+
// (raiz do projeto — os COPY referenciam packages/, plugins/, themes/).
|
|
196
|
+
const tmpDir = mkdtempSync(join(tmpdir(), 'okcms-build-'));
|
|
197
|
+
const dockerfilePath = join(tmpDir, 'Dockerfile');
|
|
198
|
+
writeFileSync(dockerfilePath, dockerfile);
|
|
199
|
+
try {
|
|
200
|
+
const imageTag = `okcms/${buildId}:latest`;
|
|
201
|
+
console.log(`[build.create] docker build -f ${dockerfilePath} -t ${imageTag} ${process.cwd()}`);
|
|
202
|
+
const result = spawnSync('docker', ['build', '-f', dockerfilePath, '-t', imageTag, process.cwd()], {
|
|
203
|
+
encoding: 'utf-8',
|
|
204
|
+
timeout: 10 * 60 * 1000,
|
|
205
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
206
|
+
});
|
|
207
|
+
const stdoutTail = (result.stdout ?? '').split('\n').slice(-40).join('\n');
|
|
208
|
+
const stderr = result.stderr ?? '';
|
|
209
|
+
if (result.error || result.status !== 0) {
|
|
210
|
+
const message = result.error?.message ??
|
|
211
|
+
(stderr.trim() || stdoutTail.trim() || `docker build exited with status ${result.status}`);
|
|
212
|
+
throw new Error(message);
|
|
213
|
+
}
|
|
214
|
+
await sql.unsafe("UPDATE builds SET status = 'COMPLETED', completed_at = NOW(), docker_image = $1, checksum = $2, build_log = $3 WHERE id = $4", [imageTag, checksum, stdoutTail, buildId]);
|
|
215
|
+
return { success: true, data: { image: imageTag, checksum } };
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
rmSync(tmpDir, { recursive: true, force: true });
|
|
219
|
+
}
|
|
65
220
|
}
|
|
66
221
|
catch (error) {
|
|
67
222
|
const message = error instanceof Error ? error.message : 'Build failed';
|
|
223
|
+
console.error(`[build.create] Falha no build ${buildId}:`, message);
|
|
68
224
|
await sql.unsafe("UPDATE builds SET status = 'FAILED', completed_at = NOW(), error = $1 WHERE id = $2", [message, buildId]);
|
|
69
225
|
return { success: false, error: message };
|
|
70
226
|
}
|
|
@@ -75,6 +231,14 @@ export const deploymentCreateHandler = async (job) => {
|
|
|
75
231
|
await sql.unsafe("UPDATE deployments SET status = 'DEPLOYING', started_at = NOW() WHERE id = $1", [deploymentId]);
|
|
76
232
|
trackDeploymentProgress(deploymentId, 'deploying');
|
|
77
233
|
try {
|
|
234
|
+
// Pipeline build → deployment: com o build EXISTENTE e ainda não COMPLETED,
|
|
235
|
+
// o deploy falha → retry do BullMQ (backoff exponencial) até o build concluir.
|
|
236
|
+
// Build inexistente segue o fluxo legado (sem gate).
|
|
237
|
+
const buildRows = await sql.unsafe('SELECT status FROM builds WHERE id = $1', [buildId]);
|
|
238
|
+
const buildStatus = buildRows[0]?.status;
|
|
239
|
+
if (buildRows.length > 0 && buildStatus !== 'COMPLETED') {
|
|
240
|
+
throw new Error(`Build ${buildId} ainda não está COMPLETED (status: ${buildStatus}) — retry agendado`);
|
|
241
|
+
}
|
|
78
242
|
console.log(`Deploying build ${buildId} as deployment ${deploymentId}`);
|
|
79
243
|
// RULE-health-check-protocol: readiness/liveness gate antes de ativar.
|
|
80
244
|
// Sem HEALTH_CHECK_URL configurada, ativa direto (deploy local/dev).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/jobs/handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/jobs/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/jobs/types.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export interface MediaProcessJob extends JobData {
|
|
|
30
30
|
payload: {
|
|
31
31
|
mediaId: string;
|
|
32
32
|
operations: Array<{
|
|
33
|
-
type: 'resize' | 'optimize' | 'convert';
|
|
33
|
+
type: 'resize' | 'thumbnail' | 'compress' | 'optimize' | 'convert';
|
|
34
34
|
options: Record<string, unknown>;
|
|
35
35
|
}>;
|
|
36
36
|
};
|
package/dist/jobs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAG9D,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,KAAK,CAAC;YAChB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jobs/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;AAG9D,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,IAAI,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,KAAK,CAAC;YAChB,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;YACnE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAClC,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,OAAO;IAClD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,OAAO;IAC7C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,yBAA0B,SAAQ,OAAO;IACxD,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,MAAM,MAAM,GACd,iBAAiB,GACjB,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,mBAAmB,GACnB,cAAc,GACd,yBAAyB,GACzB,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oktis-works/worker",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -18,12 +18,13 @@
|
|
|
18
18
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@oktis-works/core": "^0.1.
|
|
22
|
-
"@oktis-works/config": "^0.1.
|
|
23
|
-
"@oktis-works/database": "^0.1.
|
|
24
|
-
"@oktis-works/types": "^0.1.
|
|
21
|
+
"@oktis-works/core": "^0.1.14",
|
|
22
|
+
"@oktis-works/config": "^0.1.14",
|
|
23
|
+
"@oktis-works/database": "^0.1.14",
|
|
24
|
+
"@oktis-works/types": "^0.1.14",
|
|
25
25
|
"bullmq": "5.0.0",
|
|
26
|
-
"ioredis": "5.3.0"
|
|
26
|
+
"ioredis": "5.3.0",
|
|
27
|
+
"sharp": "^0.33.5"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"typescript": "5.7.3",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.test.d.ts","sourceRoot":"","sources":["../../src/jobs/handlers.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
const deploymentStore = { queries: [] };
|
|
2
|
-
vi.mock('@oktis-works/database', () => ({
|
|
3
|
-
getConnection: vi.fn(() => ({
|
|
4
|
-
unsafe: vi.fn(async (text, values) => {
|
|
5
|
-
deploymentStore.queries.push({ text, values });
|
|
6
|
-
if (text.includes('SELECT d.id FROM deployments'))
|
|
7
|
-
return [{ id: 'prev-uuid' }];
|
|
8
|
-
return [];
|
|
9
|
-
}),
|
|
10
|
-
})),
|
|
11
|
-
}));
|
|
12
|
-
// @oktis-works/worker - Build Pipeline Tests (RULE-docker-layer-optimization, RULE-build-immutability)
|
|
13
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
14
|
-
import { createHash } from 'node:crypto';
|
|
15
|
-
import { generateDockerfile, computeBuildChecksum, deploymentCreateHandler } from './handlers.js';
|
|
16
|
-
describe('generateDockerfile — RULE-docker-layer-optimization', () => {
|
|
17
|
-
const dockerfile = generateDockerfile({ seo: '1.0.0', analytics: '2.1.0' }, { 'theme-loja': '0.3.0' });
|
|
18
|
-
it('ordena camadas: runtime → core deps → core → plugin deps → plugins → theme deps → theme', () => {
|
|
19
|
-
const idx = (needle) => dockerfile.indexOf(needle);
|
|
20
|
-
expect(idx('# ── 1/5 core dependencies')).toBeGreaterThan(idx('FROM oven/bun:1-alpine'));
|
|
21
|
-
expect(idx('COPY packages/core/dist')).toBeGreaterThan(idx('# ── 1/5 core dependencies'));
|
|
22
|
-
expect(idx('# ── 2/5 plugin dependencies')).toBeGreaterThan(idx('COPY packages/core/dist'));
|
|
23
|
-
expect(idx('# ── 3/5 plugins ──')).toBeGreaterThan(idx('# ── 2/5 plugin dependencies'));
|
|
24
|
-
expect(idx('# ── 4/5 theme dependencies')).toBeGreaterThan(idx('# ── 3/5 plugins ──'));
|
|
25
|
-
expect(idx('# ── 5/5 theme')).toBeGreaterThan(idx('# ── 4/5 theme dependencies'));
|
|
26
|
-
});
|
|
27
|
-
it('copia plugins em ordem determinística (alfabética)', () => {
|
|
28
|
-
const analytics = dockerfile.indexOf('COPY plugins/analytics ./plugins/analytics');
|
|
29
|
-
const seo = dockerfile.indexOf('COPY plugins/seo ./plugins/seo');
|
|
30
|
-
expect(analytics).toBeGreaterThan(-1);
|
|
31
|
-
expect(seo).toBeGreaterThan(analytics);
|
|
32
|
-
});
|
|
33
|
-
it('sem plugins/theme, gera apenas runtime+core', () => {
|
|
34
|
-
const minimal = generateDockerfile({}, {});
|
|
35
|
-
expect(minimal).not.toContain('plugins/');
|
|
36
|
-
expect(minimal).not.toContain('themes/');
|
|
37
|
-
expect(minimal).toContain('EXPOSE 3000');
|
|
38
|
-
});
|
|
39
|
-
it('é determinística para a mesma entrada (base do cache)', () => {
|
|
40
|
-
expect(generateDockerfile({ a: '1' }, {})).toBe(generateDockerfile({ a: '1' }, {}));
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
describe('computeBuildChecksum — RULE-build-immutability', () => {
|
|
44
|
-
it('gera sha256 determinístico e sensível ao conteúdo', () => {
|
|
45
|
-
const df = generateDockerfile({ a: '1' }, {});
|
|
46
|
-
expect(computeBuildChecksum(df)).toBe(createHash('sha256').update(df).digest('hex'));
|
|
47
|
-
expect(computeBuildChecksum(df)).toHaveLength(64);
|
|
48
|
-
expect(computeBuildChecksum(df + '\n# x')).not.toBe(computeBuildChecksum(df));
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
describe('deploymentCreateHandler — RULE-health-check-protocol', () => {
|
|
52
|
-
beforeEach(() => {
|
|
53
|
-
deploymentStore.queries = [];
|
|
54
|
-
delete process.env['HEALTH_CHECK_URL'];
|
|
55
|
-
});
|
|
56
|
-
afterEach(() => {
|
|
57
|
-
vi.unstubAllGlobals();
|
|
58
|
-
vi.restoreAllMocks();
|
|
59
|
-
});
|
|
60
|
-
it('health OK → deployment ACTIVE/HEALTHY', async () => {
|
|
61
|
-
process.env['HEALTH_CHECK_URL'] = 'http://app:3000/ready';
|
|
62
|
-
vi.stubGlobal('fetch', vi.fn(async () => ({ ok: true })));
|
|
63
|
-
const result = await deploymentCreateHandler({
|
|
64
|
-
id: 'j1', type: 'deployment.create', payload: { deploymentId: 'd1', buildId: 'b1' },
|
|
65
|
-
tenantId: 't1', createdAt: new Date(),
|
|
66
|
-
});
|
|
67
|
-
expect(result.success).toBe(true);
|
|
68
|
-
const final = deploymentStore.queries.find(q => q.text.includes("status = 'ACTIVE'"));
|
|
69
|
-
expect(final?.values).toEqual(['d1']);
|
|
70
|
-
});
|
|
71
|
-
it('health falha após retries → FAILED + rollback automático do anterior', async () => {
|
|
72
|
-
process.env['HEALTH_CHECK_URL'] = 'http://app:3000/ready';
|
|
73
|
-
vi.stubGlobal('fetch', vi.fn(async () => { throw new Error('conn refused'); }));
|
|
74
|
-
vi.spyOn(globalThis, 'setTimeout').mockImplementation(((cb) => {
|
|
75
|
-
cb();
|
|
76
|
-
return 0;
|
|
77
|
-
}));
|
|
78
|
-
const result = await deploymentCreateHandler({
|
|
79
|
-
id: 'j2', type: 'deployment.create', payload: { deploymentId: 'd2', buildId: 'b2' },
|
|
80
|
-
tenantId: 't1', createdAt: new Date(),
|
|
81
|
-
});
|
|
82
|
-
expect(result.success).toBe(false);
|
|
83
|
-
expect(result.error).toContain('health check failed');
|
|
84
|
-
expect(fetch).toHaveBeenCalledTimes(3);
|
|
85
|
-
const failed = deploymentStore.queries.find(q => q.text.includes("'FAILED'") && q.text.includes("health_check_status = 'FAILED'"));
|
|
86
|
-
expect(failed?.values?.[0]).toContain('Health check failed');
|
|
87
|
-
const rollback = deploymentStore.queries.find(q => q.text.includes("SET status = 'ACTIVE' WHERE id = $1"));
|
|
88
|
-
expect(rollback?.values).toEqual(['prev-uuid']);
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
//# sourceMappingURL=handlers.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.test.js","sourceRoot":"","sources":["../../src/jobs/handlers.test.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAwD,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAE7F,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACtC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,MAAkB,EAAE,EAAE;YACvD,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC;gBAAE,OAAO,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAChF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;KACH,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,uGAAuG;AAEvG,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAElG,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;IACnE,MAAM,UAAU,GAAG,kBAAkB,CACnC,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EACpC,EAAE,YAAY,EAAE,OAAO,EAAE,CAC1B,CAAC;IAEF,EAAE,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACjG,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACzF,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACjE,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,UAAU,CAAC,GAAG,EAAE;QACd,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,uBAAuB,CAAC;QAC1D,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC;YAC3C,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;YACnF,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACtF,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,uBAAuB,CAAC;QAC1D,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAc,EAAE,EAAE;YACxE,EAAE,EAAE,CAAC;YAAC,OAAO,CAA6C,CAAC;QAC7D,CAAC,CAAU,CAAC,CAAC;QAEb,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC;YAC3C,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;YACnF,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;SACtC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACnI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC3G,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|