@zyacreatives/shared 2.0.50 → 2.0.52

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.
package/dist/constants.js CHANGED
@@ -285,61 +285,65 @@ exports.API_ROUTES = {
285
285
  },
286
286
  };
287
287
  exports.DEFAULT_DISCIPLINES = [
288
- { name: "Painting", slug: "painting" },
289
- { name: "Drawing", slug: "drawing" },
290
- { name: "Sculpture", slug: "sculpture" },
291
- { name: "Printmaking", slug: "printmaking" },
288
+ { name: "Digital Art", slug: "digital_art" },
289
+ { name: "Traditional Art", slug: "traditional_art" },
292
290
  { name: "Photography", slug: "photography" },
293
- { name: "Illustration", slug: "illustration" },
294
- { name: "Installation Art", slug: "installation_art" },
295
- { name: "Mixed Media Art", slug: "mixed_media_art" },
296
- { name: "Conceptual Art", slug: "conceptual_art" },
297
291
  { name: "Graphic Design", slug: "graphic_design" },
298
- { name: "Fashion Design", slug: "fashion_design" },
299
- { name: "Interior Design", slug: "interior_design" },
300
- { name: "Industrial / Product Design", slug: "industrial_product_design" },
301
- { name: "UX Design", slug: "ux_design" },
302
- { name: "UI Design", slug: "ui_design" },
303
- { name: "Motion Design", slug: "motion_design" },
304
- { name: "Textile Design", slug: "textile_design" },
305
- { name: "Jewelry Design", slug: "jewelry_design" },
306
- { name: "Furniture Design", slug: "furniture_design" },
307
- { name: "Architecture", slug: "architecture" },
308
- { name: "Web Design", slug: "web_design" },
309
- { name: "Exhibition Design", slug: "exhibition_design" },
310
- { name: "Design Research", slug: "design_research" },
311
- { name: "Film / Video Production", slug: "film_video_production" },
312
- { name: "Animation", slug: "animation" },
313
- { name: "Game Design", slug: "game_design" },
314
- { name: "Digital Media Art", slug: "digital_media_art" },
315
- { name: "Advertising / Art Direction", slug: "advertising_art_direction" },
316
- { name: "Copywriting", slug: "copywriting" },
317
- { name: "Content Strategy", slug: "content_strategy" },
292
+ { name: "UI/UX Design", slug: "ui_ux_design" },
293
+ { name: "3D Art", slug: "3d_art" },
294
+ { name: "Animation & Motion", slug: "animation_motion" },
295
+ { name: "Video Content", slug: "video_content" },
296
+ { name: "Illustration", slug: "illustration" },
297
+ { name: "Comics & Webtoons", slug: "comics_webtoons" },
298
+ { name: "Fashion & Style", slug: "fashion_style" },
299
+ { name: "Architecture & Interior", slug: "architecture_interior" },
300
+ { name: "Crafts & DIY", slug: "crafts_diy" },
301
+ { name: "Lettering & Typography", slug: "lettering_typography" },
302
+ { name: "Tattoo Art", slug: "tattoo_art" },
303
+ { name: "Music Production", slug: "music_production" },
304
+ { name: "Music Performance", slug: "music_performance" },
305
+ { name: "Game Development", slug: "game_development" },
306
+ { name: "Creative Coding", slug: "creative_coding" },
307
+ { name: "Content Creation", slug: "content_creation" },
308
+ { name: "Writing & Storytelling", slug: "writing_storytelling" },
309
+ { name: "Food Content", slug: "food_content" },
310
+ { name: "Sculpture & 3D Crafts", slug: "sculpture_3d_crafts" },
311
+ { name: "Street Art & Murals", slug: "street_art_murals" },
312
+ { name: "Concept Art", slug: "concept_art" },
313
+ { name: "Pixel Art", slug: "pixel_art" },
314
+ { name: "Virtual/Augmented Reality", slug: "virtual_augmented_reality" },
315
+ { name: "Art Education", slug: "art_education" },
316
+ { name: "Art Business", slug: "art_business" },
317
+ { name: "Art Challenges & Community", slug: "art_challenges_community" },
318
+ { name: "Miniature & Model Making", slug: "miniature_model_making" },
319
+ { name: "Brand Strategy", slug: "brand_strategy" },
320
+ { name: "Advertising & Marketing", slug: "advertising_marketing" },
318
321
  {
319
- name: "Social Media Content Creation",
320
- slug: "social_media_content_creation",
322
+ name: "Copywriting & Content Writing",
323
+ slug: "copywriting_content_writing",
321
324
  },
322
- { name: "Podcasting", slug: "podcasting" },
323
- { name: "Journalism", slug: "journalism" },
324
- { name: "Creative Coding", slug: "creative_coding" },
325
+ { name: "Sound Design & Audio", slug: "sound_design_audio" },
326
+ { name: "Web Development (Front-End)", slug: "web_development_frontend" },
327
+ { name: "Web Development (Back-End)", slug: "web_development_backend" },
328
+ { name: "Technical Illustration", slug: "technical_illustration" },
329
+ { name: "Data Visualization", slug: "data_visualization" },
330
+ { name: "Book & Editorial Design", slug: "book_editorial_design" },
325
331
  {
326
- name: "Augmented Reality (AR) Design",
327
- slug: "augmented_reality_ar_design",
332
+ name: "Product Strategy & Management",
333
+ slug: "product_strategy_management",
328
334
  },
329
- { name: "Virtual Reality (VR) Design", slug: "virtual_reality_vr_design" },
330
- { name: "Interaction Design", slug: "interaction_design" },
331
- { name: "Music", slug: "music" },
332
- { name: "Dance", slug: "dance" },
333
- { name: "Theatre / Acting", slug: "theatre_acting" },
335
+ { name: "Business & Consulting", slug: "business_consulting" },
336
+ { name: "AI & Machine Learning Art", slug: "ai_machine_learning_art" },
337
+ { name: "Storyboarding & Pre-Vis", slug: "storyboarding_previs" },
338
+ { name: "Calligraphy & Penmanship", slug: "calligraphy_penmanship" },
339
+ { name: "Visual Effects (VFX)", slug: "visual_effects_vfx" },
340
+ { name: "Digital Painting & Matte Painting", slug: "digital_painting_matte" },
334
341
  {
335
- name: "Spoken Word / Performance Poetry",
336
- slug: "spoken_word_performance_poetry",
342
+ name: "Character Rigging & Animation Setup",
343
+ slug: "character_rigging_setup",
337
344
  },
338
- { name: "DJ", slug: "dj" },
339
- { name: "Sound Design", slug: "sound_design" },
340
- { name: "Voice Acting", slug: "voice_acting" },
341
- { name: "Creative Writing", slug: "creative_writing" },
342
- { name: "Comics / Graphic Novels", slug: "comics_graphic_novels" },
343
- { name: "Curation", slug: "curation" },
344
- { name: "Creative Entrepreneurship", slug: "creative_entrepreneurship" },
345
+ { name: "Technical Writing", slug: "technical_writing" },
346
+ { name: "E-commerce & Store Design", slug: "ecommerce_store_design" },
347
+ { name: "Data Science & Analysis", slug: "data_science_analysis" },
348
+ { name: "Translation & Localization", slug: "translation_localization" },
345
349
  ];
@@ -1,9 +1,5 @@
1
1
  import { z } from "@hono/zod-openapi";
2
- export declare const UserSocialGraphEntitySchema: z.ZodObject<{
3
- followerCount: z.ZodOptional<z.ZodNumber>;
4
- followingCount: z.ZodOptional<z.ZodNumber>;
5
- }, z.core.$strip>;
6
- export declare const BaseUserEntitySchema: z.ZodObject<{
2
+ export declare const UserEntitySchema: z.ZodObject<{
7
3
  id: z.ZodCUID2;
8
4
  email: z.ZodString;
9
5
  emailVerified: z.ZodBoolean;
@@ -53,44 +49,10 @@ export declare const MinimalUserSchema: z.ZodObject<{
53
49
  ADMIN: "ADMIN";
54
50
  }>;
55
51
  }, z.core.$strip>;
56
- export declare const UserEntitySchema: z.ZodObject<{
57
- id: z.ZodCUID2;
58
- email: z.ZodString;
59
- emailVerified: z.ZodBoolean;
60
- name: z.ZodOptional<z.ZodString>;
61
- image: z.ZodOptional<z.ZodString>;
62
- username: z.ZodOptional<z.ZodString>;
63
- displayUsername: z.ZodOptional<z.ZodString>;
64
- role: z.ZodEnum<{
65
- CREATIVE: "CREATIVE";
66
- BRAND: "BRAND";
67
- INVESTOR: "INVESTOR";
68
- ADMIN: "ADMIN";
69
- }>;
70
- status: z.ZodEnum<{
71
- ACTIVE: "ACTIVE";
72
- SUSPENDED: "SUSPENDED";
73
- DELETED: "DELETED";
74
- }>;
75
- onboardingPage: z.ZodEnum<{
76
- EMAIL_VERIFICATION: "EMAIL_VERIFICATION";
77
- USERNAME_SELECTION: "USERNAME_SELECTION";
78
- ACCOUNT_TYPE_SELECTION: "ACCOUNT_TYPE_SELECTION";
79
- CREATIVE_PROFILE_DETAILS: "CREATIVE_PROFILE_DETAILS";
80
- CREATIVE_PROFILE_CUSTOMIZE_FEED: "CREATIVE_PROFILE_CUSTOMIZE_FEED";
81
- CREATIVE_PROFILE_PORTFOLIO: "CREATIVE_PROFILE_PORTFOLIO";
82
- BRAND_PROFILE_DETAILS: "BRAND_PROFILE_DETAILS";
83
- BRAND_PROFILE_CUSTOMIZE_FEED: "BRAND_PROFILE_CUSTOMIZE_FEED";
84
- BRAND_PROFILE_PORTFOLIO: "BRAND_PROFILE_PORTFOLIO";
85
- INVESTOR_PROFILE_DETAILS: "INVESTOR_PROFILE_DETAILS";
86
- INVESTOR_INVESTMENT_FOCUS: "INVESTOR_INVESTMENT_FOCUS";
87
- INVESTOR_VERIFICATION: "INVESTOR_VERIFICATION";
88
- DONE: "DONE";
89
- }>;
90
- createdAt: z.ZodCoercedDate<unknown>;
91
- updatedAt: z.ZodCoercedDate<unknown>;
92
- followerCount: z.ZodOptional<z.ZodNumber>;
93
- followingCount: z.ZodOptional<z.ZodNumber>;
52
+ export declare const UserStatsEntitySchema: z.ZodObject<{
53
+ followerCount: z.ZodInt;
54
+ followingCount: z.ZodInt;
55
+ followingIds: z.ZodArray<z.ZodString>;
94
56
  }, z.core.$strip>;
95
57
  export declare const UserProfileEntitySchema: z.ZodObject<{
96
58
  id: z.ZodCUID2;
@@ -128,8 +90,6 @@ export declare const UserProfileEntitySchema: z.ZodObject<{
128
90
  }>;
129
91
  createdAt: z.ZodCoercedDate<unknown>;
130
92
  updatedAt: z.ZodCoercedDate<unknown>;
131
- followerCount: z.ZodOptional<z.ZodNumber>;
132
- followingCount: z.ZodOptional<z.ZodNumber>;
133
93
  profileType: z.ZodOptional<z.ZodEnum<{
134
94
  creative: "creative";
135
95
  brand: "brand";
@@ -438,8 +398,6 @@ export declare const GetAuthenticatedUserOutputSchema: z.ZodObject<{
438
398
  }>;
439
399
  createdAt: z.ZodCoercedDate<unknown>;
440
400
  updatedAt: z.ZodCoercedDate<unknown>;
441
- followerCount: z.ZodOptional<z.ZodNumber>;
442
- followingCount: z.ZodOptional<z.ZodNumber>;
443
401
  }, z.core.$strip>;
444
402
  export declare const GetAuthenticatedUserProfileOutputSchema: z.ZodObject<{
445
403
  id: z.ZodCUID2;
@@ -477,8 +435,6 @@ export declare const GetAuthenticatedUserProfileOutputSchema: z.ZodObject<{
477
435
  }>;
478
436
  createdAt: z.ZodCoercedDate<unknown>;
479
437
  updatedAt: z.ZodCoercedDate<unknown>;
480
- followerCount: z.ZodOptional<z.ZodNumber>;
481
- followingCount: z.ZodOptional<z.ZodNumber>;
482
438
  profileType: z.ZodOptional<z.ZodEnum<{
483
439
  creative: "creative";
484
440
  brand: "brand";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetUserActivityOutputSchema = exports.GetUserActivityInputSchema = exports.GetAuthenticatedUserWithProjectLikesOutputSchema = exports.GetAuthenticatedUserWithUserFollowersOutputSchema = exports.GetAuthenticatedUserWithUserFollowingOutputSchema = exports.GetAuthenticatedUserWithProjectBookmarksOutputSchema = exports.GetAuthenticatedUserWithProjectsOutputSchema = exports.GetAuthenticatedUserProfileOutputSchema = exports.GetAuthenticatedUserOutputSchema = exports.GetUserFollowersOutputSchema = exports.GetUserFollowingOutputSchema = exports.UserWithFollowersEntitySchema = exports.UserWithFollowingEntitySchema = exports.GetUserFollowersInputSchema = exports.GetUserFollowingInputSchema = exports.UserWithProjectBookmarksEntitySchema = exports.UserWithProjectLikesEntitySchema = exports.UserWithProjectsEntitySchema = exports.UserProfileEntitySchema = exports.UserEntitySchema = exports.MinimalUserSchema = exports.BaseUserEntitySchema = exports.UserSocialGraphEntitySchema = void 0;
3
+ exports.GetUserActivityOutputSchema = exports.GetUserActivityInputSchema = exports.GetAuthenticatedUserWithProjectLikesOutputSchema = exports.GetAuthenticatedUserWithUserFollowersOutputSchema = exports.GetAuthenticatedUserWithUserFollowingOutputSchema = exports.GetAuthenticatedUserWithProjectBookmarksOutputSchema = exports.GetAuthenticatedUserWithProjectsOutputSchema = exports.GetAuthenticatedUserProfileOutputSchema = exports.GetAuthenticatedUserOutputSchema = exports.GetUserFollowersOutputSchema = exports.GetUserFollowingOutputSchema = exports.UserWithFollowersEntitySchema = exports.UserWithFollowingEntitySchema = exports.GetUserFollowersInputSchema = exports.GetUserFollowingInputSchema = exports.UserWithProjectBookmarksEntitySchema = exports.UserWithProjectLikesEntitySchema = exports.UserWithProjectsEntitySchema = exports.UserProfileEntitySchema = exports.UserStatsEntitySchema = exports.MinimalUserSchema = exports.UserEntitySchema = void 0;
4
4
  const zod_openapi_1 = require("@hono/zod-openapi");
5
5
  const constants_1 = require("../constants");
6
6
  const project_1 = require("./project");
@@ -9,23 +9,7 @@ const like_1 = require("./like");
9
9
  const brand_1 = require("./brand");
10
10
  const creative_1 = require("./creative");
11
11
  const investor_1 = require("./investor");
12
- exports.UserSocialGraphEntitySchema = zod_openapi_1.z
13
- .object({
14
- followerCount: zod_openapi_1.z
15
- .number()
16
- .int()
17
- .nonnegative()
18
- .optional()
19
- .openapi({ example: 120 }),
20
- followingCount: zod_openapi_1.z
21
- .number()
22
- .int()
23
- .nonnegative()
24
- .optional()
25
- .openapi({ example: 45 }),
26
- })
27
- .openapi("UserSocialGraphEntity");
28
- exports.BaseUserEntitySchema = zod_openapi_1.z
12
+ exports.UserEntitySchema = zod_openapi_1.z
29
13
  .object({
30
14
  id: zod_openapi_1.z.cuid2().openapi({ example: "cksd0v6q0000s9a5y8z7p3x9" }),
31
15
  email: zod_openapi_1.z.string().email().openapi({ example: "user@example.com" }),
@@ -54,7 +38,7 @@ exports.BaseUserEntitySchema = zod_openapi_1.z
54
38
  updatedAt: zod_openapi_1.z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
55
39
  })
56
40
  .openapi("BaseUserEntity");
57
- exports.MinimalUserSchema = exports.BaseUserEntitySchema.pick({
41
+ exports.MinimalUserSchema = exports.UserEntitySchema.pick({
58
42
  id: true,
59
43
  name: true,
60
44
  email: true,
@@ -62,7 +46,11 @@ exports.MinimalUserSchema = exports.BaseUserEntitySchema.pick({
62
46
  username: true,
63
47
  role: true,
64
48
  }).openapi("MinimalUser");
65
- exports.UserEntitySchema = exports.BaseUserEntitySchema.extend(exports.UserSocialGraphEntitySchema.shape).openapi("UserEntity");
49
+ exports.UserStatsEntitySchema = zod_openapi_1.z.object({
50
+ followerCount: zod_openapi_1.z.int(),
51
+ followingCount: zod_openapi_1.z.int(),
52
+ followingIds: zod_openapi_1.z.array(zod_openapi_1.z.string()),
53
+ });
66
54
  exports.UserProfileEntitySchema = exports.UserEntitySchema.extend({
67
55
  profileType: zod_openapi_1.z.enum(["creative", "brand", "investor"]).optional(),
68
56
  brand: brand_1.BrandEntitySchema,
@@ -1,5 +1,4 @@
1
1
  import z from "zod";
2
- import { ProjectSocialGraphEntitySchema, UserSocialGraphEntitySchema } from "../schemas";
2
+ import { ProjectSocialGraphEntitySchema } from "../schemas";
3
3
  export type ProjectSocialGraphEntity = z.infer<typeof ProjectSocialGraphEntitySchema>;
4
4
  export type PostSocialGraphEntity = z.infer<typeof ProjectSocialGraphEntitySchema>;
5
- export type UserSocialGraphEntity = z.infer<typeof UserSocialGraphEntitySchema>;
@@ -1,6 +1,6 @@
1
- import { BaseUserEntitySchema, MinimalUserSchema, UserEntitySchema, UserProfileEntitySchema, UserWithProjectsEntitySchema, UserWithProjectBookmarksEntitySchema, GetUserFollowingInputSchema, GetUserFollowersInputSchema, UserWithFollowingEntitySchema, UserWithFollowersEntitySchema, GetUserFollowingOutputSchema, GetUserFollowersOutputSchema, GetAuthenticatedUserOutputSchema, GetAuthenticatedUserProfileOutputSchema, GetAuthenticatedUserWithProjectsOutputSchema, GetAuthenticatedUserWithProjectBookmarksOutputSchema, GetAuthenticatedUserWithUserFollowingOutputSchema, GetAuthenticatedUserWithUserFollowersOutputSchema, UserWithProjectLikesEntitySchema, GetAuthenticatedUserWithProjectLikesOutputSchema, GetUserActivityInputSchema, GetUserActivityOutputSchema } from "../schemas/user";
1
+ import { MinimalUserSchema, UserEntitySchema, UserProfileEntitySchema, UserWithProjectsEntitySchema, UserWithProjectBookmarksEntitySchema, GetUserFollowingInputSchema, GetUserFollowersInputSchema, UserWithFollowingEntitySchema, UserWithFollowersEntitySchema, GetUserFollowingOutputSchema, GetUserFollowersOutputSchema, GetAuthenticatedUserOutputSchema, GetAuthenticatedUserProfileOutputSchema, GetAuthenticatedUserWithProjectsOutputSchema, GetAuthenticatedUserWithProjectBookmarksOutputSchema, GetAuthenticatedUserWithUserFollowingOutputSchema, GetAuthenticatedUserWithUserFollowersOutputSchema, UserWithProjectLikesEntitySchema, GetAuthenticatedUserWithProjectLikesOutputSchema, GetUserActivityInputSchema, GetUserActivityOutputSchema, UserStatsEntitySchema } from "../schemas/user";
2
2
  import { z } from "@hono/zod-openapi";
3
- export type BaseUserEntity = z.infer<typeof BaseUserEntitySchema>;
3
+ export type BaseUserEntity = z.infer<typeof UserEntitySchema>;
4
4
  export type MinimalUser = z.infer<typeof MinimalUserSchema>;
5
5
  export type UserEntity = z.infer<typeof UserEntitySchema>;
6
6
  export type UserProfileEntity = z.infer<typeof UserProfileEntitySchema>;
@@ -22,3 +22,4 @@ export type GetAuthenticatedUserWithUserFollowingOutput = z.infer<typeof GetAuth
22
22
  export type GetAuthenticatedUserWithUserFollowersOutput = z.infer<typeof GetAuthenticatedUserWithUserFollowersOutputSchema>;
23
23
  export type GetUserActivityInput = z.infer<typeof GetUserActivityInputSchema>;
24
24
  export type GetUserActivityOutput = z.infer<typeof GetUserActivityOutputSchema>;
25
+ export type UserStatsEntity = z.infer<typeof UserStatsEntitySchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zyacreatives/shared",
3
- "version": "2.0.50",
3
+ "version": "2.0.52",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/constants.ts CHANGED
@@ -344,61 +344,65 @@ export const API_ROUTES = {
344
344
  } as const;
345
345
 
346
346
  export const DEFAULT_DISCIPLINES = [
347
- { name: "Painting", slug: "painting" },
348
- { name: "Drawing", slug: "drawing" },
349
- { name: "Sculpture", slug: "sculpture" },
350
- { name: "Printmaking", slug: "printmaking" },
347
+ { name: "Digital Art", slug: "digital_art" },
348
+ { name: "Traditional Art", slug: "traditional_art" },
351
349
  { name: "Photography", slug: "photography" },
352
- { name: "Illustration", slug: "illustration" },
353
- { name: "Installation Art", slug: "installation_art" },
354
- { name: "Mixed Media Art", slug: "mixed_media_art" },
355
- { name: "Conceptual Art", slug: "conceptual_art" },
356
350
  { name: "Graphic Design", slug: "graphic_design" },
357
- { name: "Fashion Design", slug: "fashion_design" },
358
- { name: "Interior Design", slug: "interior_design" },
359
- { name: "Industrial / Product Design", slug: "industrial_product_design" },
360
- { name: "UX Design", slug: "ux_design" },
361
- { name: "UI Design", slug: "ui_design" },
362
- { name: "Motion Design", slug: "motion_design" },
363
- { name: "Textile Design", slug: "textile_design" },
364
- { name: "Jewelry Design", slug: "jewelry_design" },
365
- { name: "Furniture Design", slug: "furniture_design" },
366
- { name: "Architecture", slug: "architecture" },
367
- { name: "Web Design", slug: "web_design" },
368
- { name: "Exhibition Design", slug: "exhibition_design" },
369
- { name: "Design Research", slug: "design_research" },
370
- { name: "Film / Video Production", slug: "film_video_production" },
371
- { name: "Animation", slug: "animation" },
372
- { name: "Game Design", slug: "game_design" },
373
- { name: "Digital Media Art", slug: "digital_media_art" },
374
- { name: "Advertising / Art Direction", slug: "advertising_art_direction" },
375
- { name: "Copywriting", slug: "copywriting" },
376
- { name: "Content Strategy", slug: "content_strategy" },
351
+ { name: "UI/UX Design", slug: "ui_ux_design" },
352
+ { name: "3D Art", slug: "3d_art" },
353
+ { name: "Animation & Motion", slug: "animation_motion" },
354
+ { name: "Video Content", slug: "video_content" },
355
+ { name: "Illustration", slug: "illustration" },
356
+ { name: "Comics & Webtoons", slug: "comics_webtoons" },
357
+ { name: "Fashion & Style", slug: "fashion_style" },
358
+ { name: "Architecture & Interior", slug: "architecture_interior" },
359
+ { name: "Crafts & DIY", slug: "crafts_diy" },
360
+ { name: "Lettering & Typography", slug: "lettering_typography" },
361
+ { name: "Tattoo Art", slug: "tattoo_art" },
362
+ { name: "Music Production", slug: "music_production" },
363
+ { name: "Music Performance", slug: "music_performance" },
364
+ { name: "Game Development", slug: "game_development" },
365
+ { name: "Creative Coding", slug: "creative_coding" },
366
+ { name: "Content Creation", slug: "content_creation" },
367
+ { name: "Writing & Storytelling", slug: "writing_storytelling" },
368
+ { name: "Food Content", slug: "food_content" },
369
+ { name: "Sculpture & 3D Crafts", slug: "sculpture_3d_crafts" },
370
+ { name: "Street Art & Murals", slug: "street_art_murals" },
371
+ { name: "Concept Art", slug: "concept_art" },
372
+ { name: "Pixel Art", slug: "pixel_art" },
373
+ { name: "Virtual/Augmented Reality", slug: "virtual_augmented_reality" },
374
+ { name: "Art Education", slug: "art_education" },
375
+ { name: "Art Business", slug: "art_business" },
376
+ { name: "Art Challenges & Community", slug: "art_challenges_community" },
377
+ { name: "Miniature & Model Making", slug: "miniature_model_making" },
378
+ { name: "Brand Strategy", slug: "brand_strategy" },
379
+ { name: "Advertising & Marketing", slug: "advertising_marketing" },
377
380
  {
378
- name: "Social Media Content Creation",
379
- slug: "social_media_content_creation",
381
+ name: "Copywriting & Content Writing",
382
+ slug: "copywriting_content_writing",
380
383
  },
381
- { name: "Podcasting", slug: "podcasting" },
382
- { name: "Journalism", slug: "journalism" },
383
- { name: "Creative Coding", slug: "creative_coding" },
384
+ { name: "Sound Design & Audio", slug: "sound_design_audio" },
385
+ { name: "Web Development (Front-End)", slug: "web_development_frontend" },
386
+ { name: "Web Development (Back-End)", slug: "web_development_backend" },
387
+ { name: "Technical Illustration", slug: "technical_illustration" },
388
+ { name: "Data Visualization", slug: "data_visualization" },
389
+ { name: "Book & Editorial Design", slug: "book_editorial_design" },
384
390
  {
385
- name: "Augmented Reality (AR) Design",
386
- slug: "augmented_reality_ar_design",
391
+ name: "Product Strategy & Management",
392
+ slug: "product_strategy_management",
387
393
  },
388
- { name: "Virtual Reality (VR) Design", slug: "virtual_reality_vr_design" },
389
- { name: "Interaction Design", slug: "interaction_design" },
390
- { name: "Music", slug: "music" },
391
- { name: "Dance", slug: "dance" },
392
- { name: "Theatre / Acting", slug: "theatre_acting" },
394
+ { name: "Business & Consulting", slug: "business_consulting" },
395
+ { name: "AI & Machine Learning Art", slug: "ai_machine_learning_art" },
396
+ { name: "Storyboarding & Pre-Vis", slug: "storyboarding_previs" },
397
+ { name: "Calligraphy & Penmanship", slug: "calligraphy_penmanship" },
398
+ { name: "Visual Effects (VFX)", slug: "visual_effects_vfx" },
399
+ { name: "Digital Painting & Matte Painting", slug: "digital_painting_matte" },
393
400
  {
394
- name: "Spoken Word / Performance Poetry",
395
- slug: "spoken_word_performance_poetry",
401
+ name: "Character Rigging & Animation Setup",
402
+ slug: "character_rigging_setup",
396
403
  },
397
- { name: "DJ", slug: "dj" },
398
- { name: "Sound Design", slug: "sound_design" },
399
- { name: "Voice Acting", slug: "voice_acting" },
400
- { name: "Creative Writing", slug: "creative_writing" },
401
- { name: "Comics / Graphic Novels", slug: "comics_graphic_novels" },
402
- { name: "Curation", slug: "curation" },
403
- { name: "Creative Entrepreneurship", slug: "creative_entrepreneurship" },
404
+ { name: "Technical Writing", slug: "technical_writing" },
405
+ { name: "E-commerce & Store Design", slug: "ecommerce_store_design" },
406
+ { name: "Data Science & Analysis", slug: "data_science_analysis" },
407
+ { name: "Translation & Localization", slug: "translation_localization" },
404
408
  ];
@@ -21,24 +21,7 @@ import { BrandEntitySchema } from "./brand";
21
21
  import { CreativeEntitySchema } from "./creative";
22
22
  import { InvestorEntitySchema } from "./investor";
23
23
 
24
- export const UserSocialGraphEntitySchema = z
25
- .object({
26
- followerCount: z
27
- .number()
28
- .int()
29
- .nonnegative()
30
- .optional()
31
- .openapi({ example: 120 }),
32
- followingCount: z
33
- .number()
34
- .int()
35
- .nonnegative()
36
- .optional()
37
- .openapi({ example: 45 }),
38
- })
39
- .openapi("UserSocialGraphEntity");
40
-
41
- export const BaseUserEntitySchema = z
24
+ export const UserEntitySchema = z
42
25
  .object({
43
26
  id: z.cuid2().openapi({ example: "cksd0v6q0000s9a5y8z7p3x9" }),
44
27
  email: z.string().email().openapi({ example: "user@example.com" }),
@@ -70,7 +53,7 @@ export const BaseUserEntitySchema = z
70
53
  })
71
54
  .openapi("BaseUserEntity");
72
55
 
73
- export const MinimalUserSchema = BaseUserEntitySchema.pick({
56
+ export const MinimalUserSchema = UserEntitySchema.pick({
74
57
  id: true,
75
58
  name: true,
76
59
  email: true,
@@ -79,9 +62,11 @@ export const MinimalUserSchema = BaseUserEntitySchema.pick({
79
62
  role: true,
80
63
  }).openapi("MinimalUser");
81
64
 
82
- export const UserEntitySchema = BaseUserEntitySchema.extend(
83
- UserSocialGraphEntitySchema.shape
84
- ).openapi("UserEntity");
65
+ export const UserStatsEntitySchema = z.object({
66
+ followerCount: z.int(),
67
+ followingCount: z.int(),
68
+ followingIds: z.array(z.string()),
69
+ });
85
70
 
86
71
  export const UserProfileEntitySchema = UserEntitySchema.extend({
87
72
  profileType: z.enum(["creative", "brand", "investor"]).optional(),
@@ -1,8 +1,5 @@
1
1
  import z from "zod";
2
- import {
3
- ProjectSocialGraphEntitySchema,
4
- UserSocialGraphEntitySchema,
5
- } from "../schemas";
2
+ import { ProjectSocialGraphEntitySchema } from "../schemas";
6
3
 
7
4
  export type ProjectSocialGraphEntity = z.infer<
8
5
  typeof ProjectSocialGraphEntitySchema
@@ -10,4 +7,3 @@ export type ProjectSocialGraphEntity = z.infer<
10
7
  export type PostSocialGraphEntity = z.infer<
11
8
  typeof ProjectSocialGraphEntitySchema
12
9
  >;
13
- export type UserSocialGraphEntity = z.infer<typeof UserSocialGraphEntitySchema>;
package/src/types/user.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import {
2
- BaseUserEntitySchema,
3
2
  MinimalUserSchema,
4
3
  UserEntitySchema,
5
4
  UserProfileEntitySchema,
@@ -21,11 +20,12 @@ import {
21
20
  GetAuthenticatedUserWithProjectLikesOutputSchema,
22
21
  GetUserActivityInputSchema,
23
22
  GetUserActivityOutputSchema,
23
+ UserStatsEntitySchema,
24
24
  } from "../schemas/user";
25
25
 
26
26
  import { z } from "@hono/zod-openapi";
27
27
 
28
- export type BaseUserEntity = z.infer<typeof BaseUserEntitySchema>;
28
+ export type BaseUserEntity = z.infer<typeof UserEntitySchema>;
29
29
  export type MinimalUser = z.infer<typeof MinimalUserSchema>;
30
30
  export type UserEntity = z.infer<typeof UserEntitySchema>;
31
31
  export type UserProfileEntity = z.infer<typeof UserProfileEntitySchema>;
@@ -76,3 +76,4 @@ export type GetAuthenticatedUserWithUserFollowersOutput = z.infer<
76
76
 
77
77
  export type GetUserActivityInput = z.infer<typeof GetUserActivityInputSchema>;
78
78
  export type GetUserActivityOutput = z.infer<typeof GetUserActivityOutputSchema>;
79
+ export type UserStatsEntity = z.infer<typeof UserStatsEntitySchema>;