diff --git a/packages/project/src/registry.ts b/packages/project/src/registry.ts index d5c0d32..e8a7cea 100644 --- a/packages/project/src/registry.ts +++ b/packages/project/src/registry.ts @@ -41,6 +41,7 @@ const RegistryListSchema = z.object({ description: z.string().optional(), projectType: JaculusProjectTypeSchema.optional(), isTemplate: z.boolean().optional(), + templatePriority: z.number().optional(), // lower number means higher priority }); const RegistryVersionSchema = z.object({ @@ -49,7 +50,10 @@ const RegistryVersionSchema = z.object({ export type RegistryList = z.infer; export type RegistryListProject = Pick; -export type RegistryListTemplate = Pick; +export type RegistryListTemplate = Pick< + RegistryList, + "id" | "description" | "projectType" | "templatePriority" +>; export type RegistryVersion = z.infer; @@ -104,7 +108,13 @@ export class Registry { id: item.id, description: item.description, projectType: item.projectType, - })); + templatePriority: item.templatePriority, + })) + .sort((left, right) => { + const leftPriority = left.templatePriority ?? Number.POSITIVE_INFINITY; + const rightPriority = right.templatePriority ?? Number.POSITIVE_INFINITY; + return leftPriority - rightPriority; + }); } public static async searchPackages( diff --git a/test/project/data/test-registry/color/0.0.1/package/package.json b/test/project/data/test-registry/color/0.0.1/package/package.json index 8e30452..e8ee320 100755 --- a/test/project/data/test-registry/color/0.0.1/package/package.json +++ b/test/project/data/test-registry/color/0.0.1/package/package.json @@ -8,6 +8,7 @@ "main": "", "types": "dist/types/index.d.ts", "jaculus": { + "packageFormat": 1, "blocks": "blocks" } } diff --git a/test/project/data/test-registry/core/0.0.24/package/package.json b/test/project/data/test-registry/core/0.0.24/package/package.json index 966676c..39756af 100644 --- a/test/project/data/test-registry/core/0.0.24/package/package.json +++ b/test/project/data/test-registry/core/0.0.24/package/package.json @@ -8,6 +8,7 @@ "main": "", "types": "dist/types/index.d.ts", "jaculus": { + "packageFormat": 1, "blocks": "blocks" } }