@zyacreatives/shared 2.1.6 → 2.1.8

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
@@ -299,65 +299,65 @@ exports.API_ROUTES = {
299
299
  },
300
300
  };
301
301
  exports.DEFAULT_DISCIPLINES = [
302
- { name: "Digital Art", slug: "digital_art" },
303
- { name: "Traditional Art", slug: "traditional_art" },
304
- { name: "Photography", slug: "photography" },
305
- { name: "Graphic Design", slug: "graphic_design" },
306
- { name: "UI/UX Design", slug: "ui_ux_design" },
307
302
  { name: "3D Art", slug: "3d_art" },
303
+ { name: "Advertising & Marketing", slug: "advertising_marketing" },
304
+ { name: "AI & Machine Learning Art", slug: "ai_machine_learning_art" },
308
305
  { name: "Animation & Motion", slug: "animation_motion" },
309
- { name: "Video Content", slug: "video_content" },
310
- { name: "Illustration", slug: "illustration" },
311
- { name: "Comics & Webtoons", slug: "comics_webtoons" },
312
- { name: "Fashion & Style", slug: "fashion_style" },
313
306
  { name: "Architecture & Interior", slug: "architecture_interior" },
314
- { name: "Crafts & DIY", slug: "crafts_diy" },
315
- { name: "Lettering & Typography", slug: "lettering_typography" },
316
- { name: "Tattoo Art", slug: "tattoo_art" },
317
- { name: "Music Production", slug: "music_production" },
318
- { name: "Music Performance", slug: "music_performance" },
319
- { name: "Game Development", slug: "game_development" },
320
- { name: "Creative Coding", slug: "creative_coding" },
321
- { name: "Content Creation", slug: "content_creation" },
322
- { name: "Writing & Storytelling", slug: "writing_storytelling" },
323
- { name: "Food Content", slug: "food_content" },
324
- { name: "Sculpture & 3D Crafts", slug: "sculpture_3d_crafts" },
325
- { name: "Street Art & Murals", slug: "street_art_murals" },
326
- { name: "Concept Art", slug: "concept_art" },
327
- { name: "Pixel Art", slug: "pixel_art" },
328
- { name: "Virtual/Augmented Reality", slug: "virtual_augmented_reality" },
329
- { name: "Art Education", slug: "art_education" },
330
307
  { name: "Art Business", slug: "art_business" },
331
308
  { name: "Art Challenges & Community", slug: "art_challenges_community" },
332
- { name: "Miniature & Model Making", slug: "miniature_model_making" },
309
+ { name: "Art Education", slug: "art_education" },
310
+ { name: "Book & Editorial Design", slug: "book_editorial_design" },
333
311
  { name: "Brand Strategy", slug: "brand_strategy" },
334
- { name: "Advertising & Marketing", slug: "advertising_marketing" },
312
+ { name: "Business & Consulting", slug: "business_consulting" },
313
+ { name: "Calligraphy & Penmanship", slug: "calligraphy_penmanship" },
314
+ {
315
+ name: "Character Rigging & Animation Setup",
316
+ slug: "character_rigging_setup",
317
+ },
318
+ { name: "Comics & Webtoons", slug: "comics_webtoons" },
319
+ { name: "Concept Art", slug: "concept_art" },
320
+ { name: "Content Creation", slug: "content_creation" },
335
321
  {
336
322
  name: "Copywriting & Content Writing",
337
323
  slug: "copywriting_content_writing",
338
324
  },
339
- { name: "Sound Design & Audio", slug: "sound_design_audio" },
340
- { name: "Web Development (Front-End)", slug: "web_development_frontend" },
341
- { name: "Web Development (Back-End)", slug: "web_development_backend" },
342
- { name: "Technical Illustration", slug: "technical_illustration" },
325
+ { name: "Crafts & DIY", slug: "crafts_diy" },
326
+ { name: "Creative Coding", slug: "creative_coding" },
327
+ { name: "Data Science & Analysis", slug: "data_science_analysis" },
343
328
  { name: "Data Visualization", slug: "data_visualization" },
344
- { name: "Book & Editorial Design", slug: "book_editorial_design" },
329
+ { name: "Digital Art", slug: "digital_art" },
330
+ { name: "Digital Painting & Matte Painting", slug: "digital_painting_matte" },
331
+ { name: "E-commerce & Store Design", slug: "ecommerce_store_design" },
332
+ { name: "Fashion & Style", slug: "fashion_style" },
333
+ { name: "Food Content", slug: "food_content" },
334
+ { name: "Game Development", slug: "game_development" },
335
+ { name: "Graphic Design", slug: "graphic_design" },
336
+ { name: "Illustration", slug: "illustration" },
337
+ { name: "Lettering & Typography", slug: "lettering_typography" },
338
+ { name: "Miniature & Model Making", slug: "miniature_model_making" },
339
+ { name: "Music Performance", slug: "music_performance" },
340
+ { name: "Music Production", slug: "music_production" },
341
+ { name: "Photography", slug: "photography" },
342
+ { name: "Pixel Art", slug: "pixel_art" },
345
343
  {
346
344
  name: "Product Strategy & Management",
347
345
  slug: "product_strategy_management",
348
346
  },
349
- { name: "Business & Consulting", slug: "business_consulting" },
350
- { name: "AI & Machine Learning Art", slug: "ai_machine_learning_art" },
347
+ { name: "Sculpture & 3D Crafts", slug: "sculpture_3d_crafts" },
348
+ { name: "Sound Design & Audio", slug: "sound_design_audio" },
351
349
  { name: "Storyboarding & Pre-Vis", slug: "storyboarding_previs" },
352
- { name: "Calligraphy & Penmanship", slug: "calligraphy_penmanship" },
353
- { name: "Visual Effects (VFX)", slug: "visual_effects_vfx" },
354
- { name: "Digital Painting & Matte Painting", slug: "digital_painting_matte" },
355
- {
356
- name: "Character Rigging & Animation Setup",
357
- slug: "character_rigging_setup",
358
- },
350
+ { name: "Street Art & Murals", slug: "street_art_murals" },
351
+ { name: "Tattoo Art", slug: "tattoo_art" },
352
+ { name: "Technical Illustration", slug: "technical_illustration" },
359
353
  { name: "Technical Writing", slug: "technical_writing" },
360
- { name: "E-commerce & Store Design", slug: "ecommerce_store_design" },
361
- { name: "Data Science & Analysis", slug: "data_science_analysis" },
354
+ { name: "Traditional Art", slug: "traditional_art" },
362
355
  { name: "Translation & Localization", slug: "translation_localization" },
356
+ { name: "UI/UX Design", slug: "ui_ux_design" },
357
+ { name: "Video Content", slug: "video_content" },
358
+ { name: "Virtual/Augmented Reality", slug: "virtual_augmented_reality" },
359
+ { name: "Visual Effects (VFX)", slug: "visual_effects_vfx" },
360
+ { name: "Web Development (Back-End)", slug: "web_development_backend" },
361
+ { name: "Web Development (Front-End)", slug: "web_development_frontend" },
362
+ { name: "Writing & Storytelling", slug: "writing_storytelling" },
363
363
  ];
@@ -347,7 +347,7 @@ export declare const UserWithFollowersEntitySchema: z.ZodObject<{
347
347
  }>;
348
348
  }, z.core.$strip>>;
349
349
  }, z.core.$strip>;
350
- export declare const UserWithUserPostsEntitySchema: z.ZodObject<{
350
+ export declare const UserWithPostsEntitySchema: z.ZodObject<{
351
351
  userId: z.ZodCUID2;
352
352
  posts: z.ZodArray<z.ZodObject<{
353
353
  id: z.ZodCUID2;
@@ -391,6 +391,13 @@ export declare const UserWithUserPostsEntitySchema: z.ZodObject<{
391
391
  description: z.ZodOptional<z.ZodString>;
392
392
  image: z.ZodOptional<z.ZodURL>;
393
393
  }, z.core.$strip>>;
394
+ postFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
395
+ id: z.ZodString;
396
+ postId: z.ZodString;
397
+ fileId: z.ZodString;
398
+ order: z.ZodNumber;
399
+ url: z.ZodURL;
400
+ }, z.core.$strip>>>;
394
401
  }, z.core.$strip>>;
395
402
  }, z.core.$strip>;
396
403
  export declare const GetUserFollowingOutputSchema: z.ZodObject<{
@@ -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.UserWithUserPostsEntitySchema = exports.UserWithFollowersEntitySchema = exports.UserWithFollowingEntitySchema = exports.GetUserFollowersInputSchema = exports.GetUserFollowingInputSchema = exports.UserWithProjectBookmarksEntitySchema = exports.UserWithProjectLikesEntitySchema = exports.UserWithProjectsEntitySchema = exports.UserProfileEntitySchema = exports.UserStatsEntitySchema = exports.MinimalUserSchema = exports.UserEntitySchema = 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.UserWithPostsEntitySchema = 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");
@@ -112,10 +112,10 @@ exports.UserWithFollowersEntitySchema = exports.MinimalUserSchema.extend({
112
112
  .array(exports.MinimalUserSchema)
113
113
  .openapi({ description: "List of users who follow this user." }),
114
114
  }).openapi("UserWithFollowersEntity");
115
- exports.UserWithUserPostsEntitySchema = zod_openapi_1.z.object({
115
+ exports.UserWithPostsEntitySchema = zod_openapi_1.z.object({
116
116
  userId: zod_openapi_1.z.cuid2(),
117
- posts: zod_openapi_1.z.array(post_1.PostEntitySchema),
118
- }).openapi("UserWithUserPostsEntity");
117
+ posts: zod_openapi_1.z.array(post_1.PostWithFilesEntitySchema),
118
+ }).openapi("UserWithPostsEntity");
119
119
  exports.GetUserFollowingOutputSchema = zod_openapi_1.z.object({
120
120
  results: exports.UserWithFollowingEntitySchema,
121
121
  });
@@ -1,4 +1,4 @@
1
- import { MinimalUserSchema, UserEntitySchema, UserProfileEntitySchema, UserWithProjectsEntitySchema, UserWithProjectBookmarksEntitySchema, GetUserFollowingInputSchema, GetUserFollowersInputSchema, UserWithFollowingEntitySchema, UserWithFollowersEntitySchema, GetUserFollowingOutputSchema, GetUserFollowersOutputSchema, GetAuthenticatedUserOutputSchema, GetAuthenticatedUserProfileOutputSchema, GetAuthenticatedUserWithProjectsOutputSchema, GetAuthenticatedUserWithProjectBookmarksOutputSchema, GetAuthenticatedUserWithUserFollowingOutputSchema, GetAuthenticatedUserWithUserFollowersOutputSchema, UserWithProjectLikesEntitySchema, GetAuthenticatedUserWithProjectLikesOutputSchema, GetUserActivityInputSchema, GetUserActivityOutputSchema, UserStatsEntitySchema, UserWithUserPostsEntitySchema } 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, UserWithPostsEntitySchema } from "../schemas/user";
2
2
  import { z } from "@hono/zod-openapi";
3
3
  export type BaseUserEntity = z.infer<typeof UserEntitySchema>;
4
4
  export type MinimalUser = z.infer<typeof MinimalUserSchema>;
@@ -7,7 +7,7 @@ export type UserProfileEntity = z.infer<typeof UserProfileEntitySchema>;
7
7
  export type UserWithProjectsEntity = z.infer<typeof UserWithProjectsEntitySchema>;
8
8
  export type UserWithProjectBookmarksEntity = z.infer<typeof UserWithProjectBookmarksEntitySchema>;
9
9
  export type UserWithProjectLikesEntity = z.infer<typeof UserWithProjectLikesEntitySchema>;
10
- export type UserWithUserPostsEntity = z.infer<typeof UserWithUserPostsEntitySchema>;
10
+ export type UserWithUserPostsEntity = z.infer<typeof UserWithPostsEntitySchema>;
11
11
  export type GetUserFollowingInput = z.infer<typeof GetUserFollowingInputSchema>;
12
12
  export type GetUserFollowersInput = z.infer<typeof GetUserFollowersInputSchema>;
13
13
  export type UserWithFollowingEntity = z.infer<typeof UserWithFollowingEntitySchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zyacreatives/shared",
3
- "version": "2.1.6",
3
+ "version": "2.1.8",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/constants.ts CHANGED
@@ -364,65 +364,65 @@ export const API_ROUTES = {
364
364
  } as const;
365
365
 
366
366
  export const DEFAULT_DISCIPLINES = [
367
- { name: "Digital Art", slug: "digital_art" },
368
- { name: "Traditional Art", slug: "traditional_art" },
369
- { name: "Photography", slug: "photography" },
370
- { name: "Graphic Design", slug: "graphic_design" },
371
- { name: "UI/UX Design", slug: "ui_ux_design" },
372
367
  { name: "3D Art", slug: "3d_art" },
368
+ { name: "Advertising & Marketing", slug: "advertising_marketing" },
369
+ { name: "AI & Machine Learning Art", slug: "ai_machine_learning_art" },
373
370
  { name: "Animation & Motion", slug: "animation_motion" },
374
- { name: "Video Content", slug: "video_content" },
375
- { name: "Illustration", slug: "illustration" },
376
- { name: "Comics & Webtoons", slug: "comics_webtoons" },
377
- { name: "Fashion & Style", slug: "fashion_style" },
378
371
  { name: "Architecture & Interior", slug: "architecture_interior" },
379
- { name: "Crafts & DIY", slug: "crafts_diy" },
380
- { name: "Lettering & Typography", slug: "lettering_typography" },
381
- { name: "Tattoo Art", slug: "tattoo_art" },
382
- { name: "Music Production", slug: "music_production" },
383
- { name: "Music Performance", slug: "music_performance" },
384
- { name: "Game Development", slug: "game_development" },
385
- { name: "Creative Coding", slug: "creative_coding" },
386
- { name: "Content Creation", slug: "content_creation" },
387
- { name: "Writing & Storytelling", slug: "writing_storytelling" },
388
- { name: "Food Content", slug: "food_content" },
389
- { name: "Sculpture & 3D Crafts", slug: "sculpture_3d_crafts" },
390
- { name: "Street Art & Murals", slug: "street_art_murals" },
391
- { name: "Concept Art", slug: "concept_art" },
392
- { name: "Pixel Art", slug: "pixel_art" },
393
- { name: "Virtual/Augmented Reality", slug: "virtual_augmented_reality" },
394
- { name: "Art Education", slug: "art_education" },
395
372
  { name: "Art Business", slug: "art_business" },
396
373
  { name: "Art Challenges & Community", slug: "art_challenges_community" },
397
- { name: "Miniature & Model Making", slug: "miniature_model_making" },
374
+ { name: "Art Education", slug: "art_education" },
375
+ { name: "Book & Editorial Design", slug: "book_editorial_design" },
398
376
  { name: "Brand Strategy", slug: "brand_strategy" },
399
- { name: "Advertising & Marketing", slug: "advertising_marketing" },
377
+ { name: "Business & Consulting", slug: "business_consulting" },
378
+ { name: "Calligraphy & Penmanship", slug: "calligraphy_penmanship" },
379
+ {
380
+ name: "Character Rigging & Animation Setup",
381
+ slug: "character_rigging_setup",
382
+ },
383
+ { name: "Comics & Webtoons", slug: "comics_webtoons" },
384
+ { name: "Concept Art", slug: "concept_art" },
385
+ { name: "Content Creation", slug: "content_creation" },
400
386
  {
401
387
  name: "Copywriting & Content Writing",
402
388
  slug: "copywriting_content_writing",
403
389
  },
404
- { name: "Sound Design & Audio", slug: "sound_design_audio" },
405
- { name: "Web Development (Front-End)", slug: "web_development_frontend" },
406
- { name: "Web Development (Back-End)", slug: "web_development_backend" },
407
- { name: "Technical Illustration", slug: "technical_illustration" },
390
+ { name: "Crafts & DIY", slug: "crafts_diy" },
391
+ { name: "Creative Coding", slug: "creative_coding" },
392
+ { name: "Data Science & Analysis", slug: "data_science_analysis" },
408
393
  { name: "Data Visualization", slug: "data_visualization" },
409
- { name: "Book & Editorial Design", slug: "book_editorial_design" },
394
+ { name: "Digital Art", slug: "digital_art" },
395
+ { name: "Digital Painting & Matte Painting", slug: "digital_painting_matte" },
396
+ { name: "E-commerce & Store Design", slug: "ecommerce_store_design" },
397
+ { name: "Fashion & Style", slug: "fashion_style" },
398
+ { name: "Food Content", slug: "food_content" },
399
+ { name: "Game Development", slug: "game_development" },
400
+ { name: "Graphic Design", slug: "graphic_design" },
401
+ { name: "Illustration", slug: "illustration" },
402
+ { name: "Lettering & Typography", slug: "lettering_typography" },
403
+ { name: "Miniature & Model Making", slug: "miniature_model_making" },
404
+ { name: "Music Performance", slug: "music_performance" },
405
+ { name: "Music Production", slug: "music_production" },
406
+ { name: "Photography", slug: "photography" },
407
+ { name: "Pixel Art", slug: "pixel_art" },
410
408
  {
411
409
  name: "Product Strategy & Management",
412
410
  slug: "product_strategy_management",
413
411
  },
414
- { name: "Business & Consulting", slug: "business_consulting" },
415
- { name: "AI & Machine Learning Art", slug: "ai_machine_learning_art" },
412
+ { name: "Sculpture & 3D Crafts", slug: "sculpture_3d_crafts" },
413
+ { name: "Sound Design & Audio", slug: "sound_design_audio" },
416
414
  { name: "Storyboarding & Pre-Vis", slug: "storyboarding_previs" },
417
- { name: "Calligraphy & Penmanship", slug: "calligraphy_penmanship" },
418
- { name: "Visual Effects (VFX)", slug: "visual_effects_vfx" },
419
- { name: "Digital Painting & Matte Painting", slug: "digital_painting_matte" },
420
- {
421
- name: "Character Rigging & Animation Setup",
422
- slug: "character_rigging_setup",
423
- },
415
+ { name: "Street Art & Murals", slug: "street_art_murals" },
416
+ { name: "Tattoo Art", slug: "tattoo_art" },
417
+ { name: "Technical Illustration", slug: "technical_illustration" },
424
418
  { name: "Technical Writing", slug: "technical_writing" },
425
- { name: "E-commerce & Store Design", slug: "ecommerce_store_design" },
426
- { name: "Data Science & Analysis", slug: "data_science_analysis" },
419
+ { name: "Traditional Art", slug: "traditional_art" },
427
420
  { name: "Translation & Localization", slug: "translation_localization" },
421
+ { name: "UI/UX Design", slug: "ui_ux_design" },
422
+ { name: "Video Content", slug: "video_content" },
423
+ { name: "Virtual/Augmented Reality", slug: "virtual_augmented_reality" },
424
+ { name: "Visual Effects (VFX)", slug: "visual_effects_vfx" },
425
+ { name: "Web Development (Back-End)", slug: "web_development_backend" },
426
+ { name: "Web Development (Front-End)", slug: "web_development_frontend" },
427
+ { name: "Writing & Storytelling", slug: "writing_storytelling" },
428
428
  ];
@@ -20,7 +20,7 @@ import { LikeEntitySchema } from "./like";
20
20
  import { BrandEntitySchema } from "./brand";
21
21
  import { CreativeEntitySchema } from "./creative";
22
22
  import { InvestorEntitySchema } from "./investor";
23
- import { PostEntitySchema } from "./post";
23
+ import { PostEntitySchema, PostWithFilesEntitySchema } from "./post";
24
24
 
25
25
  export const UserEntitySchema = z
26
26
  .object({
@@ -140,10 +140,10 @@ export const UserWithFollowersEntitySchema = MinimalUserSchema.extend({
140
140
  .openapi({ description: "List of users who follow this user." }),
141
141
  }).openapi("UserWithFollowersEntity");
142
142
 
143
- export const UserWithUserPostsEntitySchema = z.object({
143
+ export const UserWithPostsEntitySchema = z.object({
144
144
  userId: z.cuid2(),
145
- posts: z.array(PostEntitySchema),
146
- }).openapi("UserWithUserPostsEntity");
145
+ posts: z.array(PostWithFilesEntitySchema),
146
+ }).openapi("UserWithPostsEntity");
147
147
 
148
148
  export const GetUserFollowingOutputSchema = z.object({
149
149
  results: UserWithFollowingEntitySchema,
package/src/types/user.ts CHANGED
@@ -21,7 +21,7 @@ import {
21
21
  GetUserActivityInputSchema,
22
22
  GetUserActivityOutputSchema,
23
23
  UserStatsEntitySchema,
24
- UserWithUserPostsEntitySchema,
24
+ UserWithPostsEntitySchema,
25
25
  } from "../schemas/user";
26
26
 
27
27
  import { z } from "@hono/zod-openapi";
@@ -39,7 +39,7 @@ export type UserWithProjectBookmarksEntity = z.infer<
39
39
  export type UserWithProjectLikesEntity = z.infer<
40
40
  typeof UserWithProjectLikesEntitySchema
41
41
  >;
42
- export type UserWithUserPostsEntity = z.infer<typeof UserWithUserPostsEntitySchema>;
42
+ export type UserWithUserPostsEntity = z.infer<typeof UserWithPostsEntitySchema>;
43
43
  export type GetUserFollowingInput = z.infer<typeof GetUserFollowingInputSchema>;
44
44
  export type GetUserFollowersInput = z.infer<typeof GetUserFollowersInputSchema>;
45
45
  export type UserWithFollowingEntity = z.infer<