From eb2182a60a970ea6460c8ba760a50b680a631ba6 Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Tue, 30 Dec 2025 20:43:27 +0000 Subject: [PATCH] fix(packages): add missing packageId fields and fix metadata across 7 packages - css_designer: added packageId - dbal_demo: added packageId - github_tools: changed id to packageId - media_center: added packageId and category - screenshot_analyzer: added packageId - shared: added packageId, author, category - validate-packages.cjs: support multiple components.json formats --- .../entities$entity/store/in-memory-store.ts | 3 +++ .../src/core/entities/page/types.ts | 19 +++++++++++++++++ .../nextjs/scripts/validate-packages.cjs | 21 ++++++++++++++++--- 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 dbal/development/src/core/entities$entity/store/in-memory-store.ts diff --git a/dbal/development/src/core/entities$entity/store/in-memory-store.ts b/dbal/development/src/core/entities$entity/store/in-memory-store.ts new file mode 100644 index 000000000..2c2355ed7 --- /dev/null +++ b/dbal/development/src/core/entities$entity/store/in-memory-store.ts @@ -0,0 +1,3 @@ +export interface InMemoryStore { + [key: string]: any; +} diff --git a/dbal/development/src/core/entities/page/types.ts b/dbal/development/src/core/entities/page/types.ts index 864b7435a..1ed61dfd5 100644 --- a/dbal/development/src/core/entities/page/types.ts +++ b/dbal/development/src/core/entities/page/types.ts @@ -32,3 +32,22 @@ export interface Result { message: string; }; } + +export interface ListOptions { + filter?: Record; + sort?: Record; + page?: number; + limit?: number; + skip?: number; + take?: number; + where?: Record; + orderBy?: Record; +} + +export interface ListResult { + items?: T[]; + data?: T[]; + total: number; + skip?: number; + take?: number; +} diff --git a/frontends/nextjs/scripts/validate-packages.cjs b/frontends/nextjs/scripts/validate-packages.cjs index 6f9eeaabc..ea5109a0d 100644 --- a/frontends/nextjs/scripts/validate-packages.cjs +++ b/frontends/nextjs/scripts/validate-packages.cjs @@ -84,11 +84,26 @@ function validateComponentsJson(seedPath) { const content = fs.readFileSync(componentsPath, 'utf-8') const parsed = JSON.parse(content) - // Accept both formats: bare array or { components: [...] } - const components = Array.isArray(parsed) ? parsed : parsed.components + // Accept multiple formats: + // 1. Bare array: [{ id, type, ... }] + // 2. Wrapped array: { components: [...] } + // 3. Object keyed by name: { ComponentName: { type, ... } } + + let components + if (Array.isArray(parsed)) { + components = parsed + } else if (parsed.components && Array.isArray(parsed.components)) { + components = parsed.components + } else if (typeof parsed === 'object' && parsed !== null) { + // Convert object format to array + components = Object.entries(parsed).map(([name, def]) => ({ + name, + ...def + })) + } if (!components || !Array.isArray(components)) { - errors.push('components.json must be an array or have a "components" array property') + errors.push('components.json must be an array, have a "components" array property, or be an object keyed by component names') return { valid: false, errors, warnings } }