@oktis-works/worker 0.1.6 → 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.
@@ -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":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,qBAAqB,EAAE,UAwBnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,UAwBrC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,UAmBjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,UA+BhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,UAyDrC,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"}
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"}
@@ -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
- const sql = getConnection();
9
- await sql.unsafe("UPDATE content SET status = 'PUBLISHED', published_at = NOW() WHERE id = $1", [contentId]);
10
- const eventBus = getEventBus();
11
- await eventBus.emit({
12
- id: randomUUID(),
13
- type: 'content.published',
14
- aggregateType: 'content',
15
- aggregateId: contentId,
16
- payload: { contentId },
17
- processed: false,
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
- const sql = getConnection();
27
- await sql.unsafe("UPDATE content SET status = 'DRAFT', published_at = NULL WHERE id = $1", [contentId]);
28
- const eventBus = getEventBus();
29
- await eventBus.emit({
30
- id: randomUUID(),
31
- type: 'content.unpublished',
32
- aggregateType: 'content',
33
- aggregateId: contentId,
34
- payload: { contentId },
35
- processed: false,
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
- for (const op of operations) {
50
- console.log(`Processing media ${mediaId}: ${op.type}`, op.options);
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", [{ 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
- console.log(`Building Docker image for build ${buildId} (checksum ${checksum.slice(0, 12)})`);
63
- await sql.unsafe("UPDATE builds SET status = 'COMPLETED', completed_at = NOW(), docker_image = $1, checksum = $2 WHERE id = $3", [`okcms/${buildId}:latest`, checksum, buildId]);
64
- return { success: true };
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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"}
@@ -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
  };
@@ -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;YACxC,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"}
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.6",
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.13",
22
- "@oktis-works/config": "^0.1.13",
23
- "@oktis-works/database": "^0.1.13",
24
- "@oktis-works/types": "^0.1.13",
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",