commons:component meta

This commit is contained in:
Code 2025-02-09 15:37:11 +01:00
parent f3d4f0c7bd
commit e5019dc29f
4 changed files with 854 additions and 67 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -68,6 +68,7 @@
"glob": "^10.4.5",
"js-yaml": "^4.1.0",
"jsonpath-plus": "^8.1.0",
"normalize-url": "^8.0.1",
"p-map": "^7.0.3",
"p-throttle": "^4.1.1",
"tslog": "^3.3.3",

View File

@ -1,7 +1,9 @@
import * as path from 'path'
import * as fs from 'fs'
import { z } from "zod";
import { z } from "zod"
import normalizeUrl from 'normalize-url'
export const UrlSchema = z.string().url().transform((arg)=>normalizeUrl(arg))
export const ExifSchema = z.object({
file: z.any(), // Assuming File is another schema or any type
@ -33,7 +35,14 @@ export const CADMetaSchema = z.object({
step: z.string().optional(),
model: z.string().optional(),
html: z.string().optional(),
});
})
export const ResourceSchema = z.object({
name: z.string(),
url: z.string(),
type: z.string()
})
export const AssetImageSchema = z.object({
name: z.string().optional(),
url: z.string(),
@ -45,13 +54,14 @@ export const AssetImageSchema = z.object({
alt: z.string().optional(),
title: z.string().optional(),
height: z.number().optional(),
width: z.number().optional()
});
width: z.number().optional(),
exif:ExifSchema.optional(),
})
export const AuthorSchema = z.object({
name: z.string(),
url: z.string(),
});
})
export const ContentSchema = z.object({
body: z.string().optional(),
@ -59,7 +69,7 @@ export const ContentSchema = z.object({
highlights: z.string().optional(),
specs: z.string().optional(),
license: z.string().optional()
});
})
export const VersionSchema = z.object({
version: z.string().optional(),
@ -67,19 +77,19 @@ export const VersionSchema = z.object({
down: z.string().optional(),
family: z.string().optional(),
sheet: z.string().optional()
});
})
export const AssetsSchema = z.object({
gallery: z.array(AssetImageSchema).optional(),
renderings: z.array(AssetImageSchema).optional(),
components: z.array(AssetImageSchema).optional()
});
})
export const ProductionSchema = z.object({
"fusion-folder": z.string(),
"nc-folder": z.string(),
cam: z.array(AuthorSchema)
});
})
export const ComponentConfigSchema = z.object({
@ -93,15 +103,18 @@ export const ComponentConfigSchema = z.object({
//internal
version: z.string().optional(),
versions:VersionSchema.optional(),
status: z.string().optional(),
authors: z.array(AuthorSchema).optional(),
// references
replaced_by: z.string().optional(),
alternatives: z.array(z.string()).optional(),
flags: z.number().optional(),
versions: VersionSchema.optional(),
alternatives: z.array(ResourceSchema).optional(),
used_by: z.array(ResourceSchema).optional(),
image: AssetImageSchema.optional(),
name: z.string(),
flags: z.number().optional(),
// public
download: z.boolean().optional(),
@ -110,7 +123,6 @@ export const ComponentConfigSchema = z.object({
showDimensions: z.boolean().optional(),
showParts: z.boolean().optional(),
slug: z.string(),
score: z.number().optional(),
keywords: z.string().optional(),
meta_keywords: z.string().optional(),
@ -121,6 +133,8 @@ export const ComponentConfigSchema = z.object({
components: []
}),
cad: z.array(CADMetaSchema).default([]),
resources: z.array(ResourceSchema).default([]),
tests: z.array(ResourceSchema).default([]),
/**
* @deprecated
@ -132,6 +146,7 @@ export const ComponentConfigSchema = z.object({
category: z.string(),
product_dimensions: z.string().optional(),
production: ProductionSchema.optional(),
score: z.number().optional(),
}).passthrough();
export type IComponentConfig = z.infer<typeof ComponentConfigSchema>