@oktis-works/core 0.11.4 → 0.14.0

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.
@@ -36,9 +36,29 @@ export declare class ThemeService {
36
36
  deactivate(id: string): Promise<Theme | null>;
37
37
  /** Tema ativo atual (fonte única lida pelo app web na renderização). */
38
38
  getActive(): Promise<Theme | null>;
39
- /** Atualiza o config (customizador) do tema — validado como objeto simples. */
40
- updateConfig(id: string, config: unknown): Promise<Theme | null>;
39
+ /** Atualiza o config (customizador) do tema — validado contra manifest.settings. */
40
+ updateConfig(id: string, config: unknown, userId?: string, allowExtraKeys?: boolean): Promise<Theme | null>;
41
41
  uninstall(id: string): Promise<boolean>;
42
+ /** Export theme config as JSON. */
43
+ exportConfig(id: string): Promise<{
44
+ config: Record<string, unknown>;
45
+ manifest: Record<string, unknown>;
46
+ exportedAt: string;
47
+ } | null>;
48
+ /** Import theme config from JSON, validating against manifest. */
49
+ importConfig(id: string, config: Record<string, unknown>, options?: {
50
+ mode?: 'merge' | 'replace';
51
+ }): Promise<Theme | null>;
52
+ /** Get config version history for a theme. */
53
+ getConfigHistory(id: string, limit?: number, offset?: number): Promise<Array<{
54
+ id: string;
55
+ config: Record<string, unknown>;
56
+ userId: string | null;
57
+ changeSummary: string | null;
58
+ createdAt: Date;
59
+ }>>;
60
+ /** Restore a previous config version. */
61
+ restoreConfigVersion(themeId: string, versionId: string, _userId: string): Promise<Theme | null>;
42
62
  }
43
63
  export declare const themeService: ThemeService;
44
64
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/theme/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAUhD,qBAAa,YAAY;IACvB;;;;;;OAMG;IACG,iBAAiB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAwC3C,4DAA4D;YAC9C,YAAY;IAWpB,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAMxB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAM1C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMpD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,KAAK,CAAC;IAqClB;;;OAGG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAsBjD;;;;OAIG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAqBnD,wEAAwE;IAClE,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUxC,+EAA+E;IACzE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAiBhE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAS9C;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/theme/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAkXhD,qBAAa,YAAY;IACvB;;;;;;OAMG;IACG,iBAAiB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAwC3C,4DAA4D;YAC9C,YAAY;IAWpB,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAMxB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAM1C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMpD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,KAAK,CAAC;IAqClB;;;OAGG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAsBjD;;;;OAIG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAqBnD,wEAAwE;IAClE,SAAS,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUxC,oFAAoF;IAC9E,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAiC3G,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU7C,mCAAmC;IAC7B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAW1I,kEAAkE;IAC5D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgChI,8CAA8C;IACxC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAajM,yCAAyC;IACnC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAWvG;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -8,6 +8,299 @@ const SAFE_NAME_RE = /^[a-z0-9][a-z0-9_-]*$/i;
8
8
  function isPlainObject(value) {
9
9
  return typeof value === 'object' && value !== null && !Array.isArray(value);
10
10
  }
11
+ /**
12
+ * Valida e sanitiza o config do tema contra o schema do manifesto.
13
+ * - Rejeita chaves não declaradas no manifest.settings
14
+ * - Valida required, type, min/max, minLength/maxLength, pattern, enum (select)
15
+ * - Sanitiza HTML em wysiwyg/textarea (strip tags perigosos)
16
+ * - Para repeater/flexible_content/group: valida recursivamente subFields
17
+ */
18
+ function validateThemeConfig(config, manifestSettings, allowExtraKeys = false) {
19
+ const errors = [];
20
+ const sanitized = {};
21
+ const allowedKeys = new Set();
22
+ // Build allowed keys set from manifest
23
+ const declaredSettings = Array.isArray(manifestSettings) ? manifestSettings : [];
24
+ for (const field of declaredSettings) {
25
+ if (!field || typeof field !== 'object')
26
+ continue;
27
+ const record = field;
28
+ const name = record['name'];
29
+ if (typeof name === 'string' && name) {
30
+ allowedKeys.add(name);
31
+ }
32
+ }
33
+ // Validate each key in config
34
+ for (const [key, value] of Object.entries(config)) {
35
+ if (!allowedKeys.has(key)) {
36
+ if (!allowExtraKeys) {
37
+ errors.push(`Setting "${key}" is not declared in theme manifest.settings`);
38
+ continue; // Skip undeclared keys
39
+ }
40
+ // In allowExtraKeys mode, accept the value as-is
41
+ sanitized[key] = value;
42
+ continue;
43
+ }
44
+ // Find field definition
45
+ const fieldDef = declaredSettings.find((f) => {
46
+ if (!f || typeof f !== 'object')
47
+ return false;
48
+ return f['name'] === key;
49
+ });
50
+ if (!fieldDef) {
51
+ // Should not happen since allowedKeys check passed
52
+ continue;
53
+ }
54
+ // Validate required
55
+ if (fieldDef.required && (value === undefined || value === null || value === '')) {
56
+ errors.push(`Setting "${key}" is required`);
57
+ continue;
58
+ }
59
+ // If value is empty and not required, skip further validation
60
+ if (value === undefined || value === null || value === '') {
61
+ sanitized[key] = fieldDef.default ?? '';
62
+ continue;
63
+ }
64
+ // Type-specific validation
65
+ const validation = validateFieldValue(key, value, fieldDef);
66
+ if (!validation.valid) {
67
+ errors.push(...validation.errors);
68
+ continue;
69
+ }
70
+ sanitized[key] = validation.sanitized;
71
+ }
72
+ return { valid: errors.length === 0, errors, sanitized };
73
+ }
74
+ /** Valida um valor individual contra a definição do campo. */
75
+ function validateFieldValue(key, value, field) {
76
+ const errors = [];
77
+ let sanitized = value;
78
+ const type = field.type ?? 'text';
79
+ switch (type) {
80
+ case 'text':
81
+ case 'textarea':
82
+ case 'wysiwyg': {
83
+ if (typeof value !== 'string') {
84
+ errors.push(`Setting "${key}" must be a string`);
85
+ break;
86
+ }
87
+ if (field.minLength !== undefined && value.length < field.minLength) {
88
+ errors.push(`Setting "${key}" must be at least ${field.minLength} characters`);
89
+ }
90
+ if (field.maxLength !== undefined && value.length > field.maxLength) {
91
+ errors.push(`Setting "${key}" must be at most ${field.maxLength} characters`);
92
+ }
93
+ if (field.pattern && typeof field.pattern === 'string') {
94
+ try {
95
+ const re = new RegExp(field.pattern);
96
+ if (!re.test(value)) {
97
+ errors.push(`Setting "${key}" does not match required pattern`);
98
+ }
99
+ }
100
+ catch {
101
+ errors.push(`Setting "${key}" has invalid pattern regex`);
102
+ }
103
+ }
104
+ // Sanitize HTML for wysiwyg/textarea
105
+ if ((type === 'wysiwyg' || type === 'textarea') && value.includes('<')) {
106
+ sanitized = sanitizeHtml(value);
107
+ }
108
+ break;
109
+ }
110
+ case 'select': {
111
+ if (typeof value !== 'string') {
112
+ errors.push(`Setting "${key}" must be a string`);
113
+ break;
114
+ }
115
+ const options = field.options ?? [];
116
+ const validValues = options.map((o) => (typeof o === 'string' ? o : o.value));
117
+ if (options.length > 0 && !validValues.includes(value)) {
118
+ errors.push(`Setting "${key}" must be one of: ${validValues.join(', ')}`);
119
+ }
120
+ break;
121
+ }
122
+ case 'checkbox': {
123
+ sanitized = Boolean(value);
124
+ break;
125
+ }
126
+ case 'color': {
127
+ if (typeof value !== 'string' || !/^#[0-9a-fA-F]{6}$/.test(value)) {
128
+ errors.push(`Setting "${key}" must be a valid hex color (e.g., #ff0000)`);
129
+ }
130
+ break;
131
+ }
132
+ case 'number': {
133
+ const num = Number(value);
134
+ if (Number.isNaN(num)) {
135
+ errors.push(`Setting "${key}" must be a number`);
136
+ break;
137
+ }
138
+ if (field.min !== undefined && num < field.min) {
139
+ errors.push(`Setting "${key}" must be at least ${field.min}`);
140
+ }
141
+ if (field.max !== undefined && num > field.max) {
142
+ errors.push(`Setting "${key}" must be at most ${field.max}`);
143
+ }
144
+ sanitized = num;
145
+ break;
146
+ }
147
+ case 'date_picker':
148
+ case 'date_time_picker':
149
+ case 'time_picker': {
150
+ if (typeof value !== 'string') {
151
+ errors.push(`Setting "${key}" must be a string`);
152
+ break;
153
+ }
154
+ // Basic format validation (YYYY-MM-DD, YYYY-MM-DDTHH:mm, HH:mm)
155
+ const patterns = {
156
+ date_picker: /^\d{4}-\d{2}-\d{2}$/,
157
+ date_time_picker: /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}$/,
158
+ time_picker: /^\d{2}:\d{2}$/,
159
+ };
160
+ if (!patterns[type].test(value)) {
161
+ errors.push(`Setting "${key}" has invalid format`);
162
+ }
163
+ break;
164
+ }
165
+ case 'google_map': {
166
+ if (!isPlainObject(value)) {
167
+ errors.push(`Setting "${key}" must be an object with address, lat, lng`);
168
+ break;
169
+ }
170
+ const map = value;
171
+ if (typeof map['address'] !== 'string' || typeof map['lat'] !== 'number' || typeof map['lng'] !== 'number') {
172
+ errors.push(`Setting "${key}" must have address (string), lat (number), lng (number)`);
173
+ }
174
+ const lat = map['lat'];
175
+ const lng = map['lng'];
176
+ if (lat !== undefined && (lat < -90 || lat > 90)) {
177
+ errors.push(`Setting "${key}" latitude must be between -90 and 90`);
178
+ }
179
+ if (lng !== undefined && (lng < -180 || lng > 180)) {
180
+ errors.push(`Setting "${key}" longitude must be between -180 and 180`);
181
+ }
182
+ break;
183
+ }
184
+ case 'link': {
185
+ if (!isPlainObject(value)) {
186
+ errors.push(`Setting "${key}" must be an object with url and target`);
187
+ break;
188
+ }
189
+ const link = value;
190
+ if (typeof link['url'] !== 'string' || !link['url']) {
191
+ errors.push(`Setting "${key}" must have a url`);
192
+ }
193
+ if (link['target'] !== undefined && !['_self', '_blank'].includes(link['target'])) {
194
+ errors.push(`Setting "${key}" target must be _self or _blank`);
195
+ }
196
+ break;
197
+ }
198
+ case 'relationship':
199
+ case 'post_object': {
200
+ // Value can be string (single) or string[] (multiple)
201
+ if (!Array.isArray(value) && typeof value !== 'string') {
202
+ errors.push(`Setting "${key}" must be a string or array of strings`);
203
+ }
204
+ break;
205
+ }
206
+ case 'taxonomy':
207
+ case 'user': {
208
+ if (!Array.isArray(value) && typeof value !== 'string') {
209
+ errors.push(`Setting "${key}" must be a string or array of strings`);
210
+ }
211
+ break;
212
+ }
213
+ case 'repeater': {
214
+ if (!Array.isArray(value)) {
215
+ errors.push(`Setting "${key}" must be an array`);
216
+ break;
217
+ }
218
+ const subFields = field.subFields ?? [];
219
+ if (subFields.length > 0) {
220
+ for (let i = 0; i < value.length; i++) {
221
+ const row = value[i];
222
+ if (!isPlainObject(row)) {
223
+ errors.push(`Setting "${key}[${i}]" must be an object`);
224
+ continue;
225
+ }
226
+ const rowResult = validateThemeConfig(row, subFields);
227
+ if (!rowResult.valid) {
228
+ errors.push(...rowResult.errors.map((e) => `${key}[${i}]: ${e}`));
229
+ }
230
+ }
231
+ }
232
+ sanitized = value;
233
+ break;
234
+ }
235
+ case 'flexible_content': {
236
+ if (!Array.isArray(value)) {
237
+ errors.push(`Setting "${key}" must be an array`);
238
+ break;
239
+ }
240
+ const layouts = field.layouts ?? [];
241
+ for (let i = 0; i < value.length; i++) {
242
+ const row = value[i];
243
+ if (!isPlainObject(row)) {
244
+ errors.push(`Setting "${key}[${i}]" must be an object`);
245
+ continue;
246
+ }
247
+ const rowRecord = row;
248
+ const layoutName = rowRecord['fc_layout'];
249
+ const layoutDef = layouts.find((l) => l.name === layoutName);
250
+ if (!layoutDef) {
251
+ errors.push(`Setting "${key}[${i}]" has unknown layout "${layoutName}"`);
252
+ continue;
253
+ }
254
+ const subFields = layoutDef.subFields ?? [];
255
+ if (subFields.length > 0) {
256
+ const rowData = { ...row };
257
+ delete rowData['fc_layout'];
258
+ const rowResult = validateThemeConfig(rowData, subFields);
259
+ if (!rowResult.valid) {
260
+ errors.push(...rowResult.errors.map((e) => `${key}[${i}]: ${e}`));
261
+ }
262
+ }
263
+ }
264
+ sanitized = value;
265
+ break;
266
+ }
267
+ case 'group': {
268
+ if (!isPlainObject(value)) {
269
+ errors.push(`Setting "${key}" must be an object`);
270
+ break;
271
+ }
272
+ const subFields = field.subFields ?? [];
273
+ if (subFields.length > 0) {
274
+ const groupResult = validateThemeConfig(value, subFields);
275
+ if (!groupResult.valid) {
276
+ errors.push(...groupResult.errors.map((e) => `${key}: ${e}`));
277
+ }
278
+ sanitized = groupResult.sanitized;
279
+ }
280
+ break;
281
+ }
282
+ case 'image':
283
+ case 'file':
284
+ case 'gallery': {
285
+ // These are handled by MediaPicker - value can be string (id) or File object
286
+ // We accept string, number, or File-like object
287
+ break;
288
+ }
289
+ default:
290
+ // Unknown type - accept as-is but warn
291
+ break;
292
+ }
293
+ return { valid: errors.length === 0, errors, sanitized };
294
+ }
295
+ /** Sanitização básica de HTML para prevenir XSS em campos wysiwyg/textarea. */
296
+ function sanitizeHtml(html) {
297
+ return html
298
+ .replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '') // Remove script tags
299
+ .replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi, '') // Remove iframe tags
300
+ .replace(/on\w+="[^"]*"/gi, '') // Remove onclick, onload, etc.
301
+ .replace(/on\w+='[^']*'/gi, '')
302
+ .replace(/javascript:/gi, ''); // Remove javascript: URLs
303
+ }
11
304
  export class ThemeService {
12
305
  /**
13
306
  * Descobre temas presentes no diretório configurado do projeto e faz upsert
@@ -154,16 +447,26 @@ export class ThemeService {
154
447
  LIMIT 1`);
155
448
  return result[0] ?? null;
156
449
  }
157
- /** Atualiza o config (customizador) do tema — validado como objeto simples. */
158
- async updateConfig(id, config) {
450
+ /** Atualiza o config (customizador) do tema — validado contra manifest.settings. */
451
+ async updateConfig(id, config, userId, allowExtraKeys) {
159
452
  if (!isPlainObject(config)) {
160
453
  throw new Error('Theme config must be an object');
161
454
  }
162
455
  const existing = await this.getById(id);
163
456
  if (!existing)
164
457
  return null;
458
+ // Validate config against manifest.settings
459
+ const manifest = existing.manifest;
460
+ const manifestSettings = manifest?.settings ?? [];
461
+ const validation = validateThemeConfig(config, manifestSettings, allowExtraKeys);
462
+ if (!validation.valid) {
463
+ throw new Error(`Theme config validation failed: ${validation.errors.join('; ')}`);
464
+ }
165
465
  const sql = getConnection();
166
- const result = await sql.unsafe(`UPDATE themes SET config = $1::jsonb, updated_at = NOW() WHERE id = $2 RETURNING *`, [config, id]);
466
+ // Create history entry before updating
467
+ await sql.unsafe(`INSERT INTO theme_config_versions (theme_id, config, user_id, change_summary)
468
+ VALUES ($1, $2::jsonb, $3, $4)`, [id, existing.config ?? {}, userId ?? 'system', 'Config updated via API']);
469
+ const result = await sql.unsafe(`UPDATE themes SET config = $1::jsonb, updated_at = NOW() WHERE id = $2 RETURNING *`, [allowExtraKeys ? config : validation.sanitized, id]);
167
470
  return result[0] ?? null;
168
471
  }
169
472
  async uninstall(id) {
@@ -174,6 +477,67 @@ export class ThemeService {
174
477
  await sql.unsafe('DELETE FROM themes WHERE id = $1', [id]);
175
478
  return true;
176
479
  }
480
+ /** Export theme config as JSON. */
481
+ async exportConfig(id) {
482
+ const theme = await this.getById(id);
483
+ if (!theme)
484
+ return null;
485
+ return {
486
+ config: theme.config ?? {},
487
+ manifest: theme.manifest,
488
+ exportedAt: new Date().toISOString(),
489
+ };
490
+ }
491
+ /** Import theme config from JSON, validating against manifest. */
492
+ async importConfig(id, config, options) {
493
+ const existing = await this.getById(id);
494
+ if (!existing)
495
+ return null;
496
+ const mode = options?.mode ?? 'merge';
497
+ const manifest = existing.manifest;
498
+ const manifestSettings = manifest?.settings ?? [];
499
+ // In replace mode, we allow any keys (full config replacement)
500
+ // In merge mode, we validate against manifest
501
+ let validation;
502
+ if (mode === 'replace') {
503
+ // In replace mode, we accept any config but still sanitize known fields
504
+ validation = validateThemeConfig(config, manifestSettings, true);
505
+ }
506
+ else {
507
+ validation = validateThemeConfig(config, manifestSettings);
508
+ }
509
+ if (!validation.valid) {
510
+ throw new Error(`Theme config validation failed: ${validation.errors.join('; ')}`);
511
+ }
512
+ let newConfig;
513
+ if (mode === 'replace') {
514
+ // In replace mode, use the full config (not just sanitized)
515
+ newConfig = config;
516
+ }
517
+ else {
518
+ newConfig = { ...(existing.config ?? {}), ...validation.sanitized };
519
+ }
520
+ return this.updateConfig(id, newConfig, undefined, mode === 'replace');
521
+ }
522
+ /** Get config version history for a theme. */
523
+ async getConfigHistory(id, limit = 50, offset = 0) {
524
+ const sql = getConnection();
525
+ const rows = await sql.unsafe(`SELECT id, config, user_id, change_summary, created_at
526
+ FROM theme_config_versions
527
+ WHERE theme_id = $1
528
+ ORDER BY created_at DESC
529
+ LIMIT $2 OFFSET $3`, [id, limit, offset]);
530
+ return rows;
531
+ }
532
+ /** Restore a previous config version. */
533
+ async restoreConfigVersion(themeId, versionId, _userId) {
534
+ const sql = getConnection();
535
+ const version = await sql.unsafe(`SELECT config FROM theme_config_versions WHERE id = $1 AND theme_id = $2`, [versionId, themeId]);
536
+ if (!version[0])
537
+ return null;
538
+ const config = version[0]['config'];
539
+ return this.updateConfig(themeId, config);
540
+ }
177
541
  }
178
542
  export const themeService = new ThemeService();
179
543
  //# sourceMappingURL=service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/theme/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/theme/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oktis-works/core",
3
- "version": "0.11.4",
3
+ "version": "0.14.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,7 +24,7 @@
24
24
  "@oktis-works/types": "^0.9.0",
25
25
  "@oktis-works/validation": "^0.7.0",
26
26
  "@oktis-works/config": "^0.6.4",
27
- "@oktis-works/database": "^0.13.1",
27
+ "@oktis-works/database": "^0.14.0",
28
28
  "@oktis-works/plugin-runtime": "^0.7.0",
29
29
  "@aws-sdk/client-s3": "3.700.0",
30
30
  "bullmq": "5.0.0",