@plyaz/types 1.35.0 → 1.35.1

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.
@@ -48,3 +48,35 @@ export declare enum CREATE_CAMPAIGN_ERRORS {
48
48
  * Type representing all possible error keys for campaign creation form validation
49
49
  */
50
50
  export type CreateCampaignErrorKey = keyof typeof CREATE_CAMPAIGN_ERRORS;
51
+ /**
52
+ * Campaign status enum matching database schema
53
+ */
54
+ export declare enum CAMPAIGN_STATUS {
55
+ Draft = "DRAFT",
56
+ Pending = "PENDING",
57
+ Active = "ACTIVE",
58
+ Completed = "COMPLETED",
59
+ Closed = "CLOSED",
60
+ Cancelled = "CANCELLED",
61
+ Rejected = "REJECTED"
62
+ }
63
+ /**
64
+ * Milestone trigger types
65
+ */
66
+ export declare enum MILESTONE_TRIGGER_TYPE {
67
+ FundingPercentage = "FUNDING_PERCENTAGE",
68
+ FundingAmount = "FUNDING_AMOUNT",
69
+ BackerCount = "BACKER_COUNT",
70
+ TimeBased = "TIME_BASED",
71
+ Manual = "MANUAL"
72
+ }
73
+ /**
74
+ * Milestone status
75
+ */
76
+ export declare enum MILESTONE_STATUS {
77
+ Pending = "PENDING",
78
+ Achieved = "ACHIEVED",
79
+ Verified = "VERIFIED",
80
+ PayoutReady = "PAYOUT_READY",
81
+ Completed = "COMPLETED"
82
+ }
@@ -30,6 +30,32 @@ var CREATE_CAMPAIGN_ERRORS = /* @__PURE__ */ ((CREATE_CAMPAIGN_ERRORS2) => {
30
30
  CREATE_CAMPAIGN_ERRORS2["YoutubeInvalid"] = "components.CreateCampaign.Form.errors.youtubeInvalid";
31
31
  return CREATE_CAMPAIGN_ERRORS2;
32
32
  })(CREATE_CAMPAIGN_ERRORS || {});
33
+ var CAMPAIGN_STATUS = /* @__PURE__ */ ((CAMPAIGN_STATUS2) => {
34
+ CAMPAIGN_STATUS2["Draft"] = "DRAFT";
35
+ CAMPAIGN_STATUS2["Pending"] = "PENDING";
36
+ CAMPAIGN_STATUS2["Active"] = "ACTIVE";
37
+ CAMPAIGN_STATUS2["Completed"] = "COMPLETED";
38
+ CAMPAIGN_STATUS2["Closed"] = "CLOSED";
39
+ CAMPAIGN_STATUS2["Cancelled"] = "CANCELLED";
40
+ CAMPAIGN_STATUS2["Rejected"] = "REJECTED";
41
+ return CAMPAIGN_STATUS2;
42
+ })(CAMPAIGN_STATUS || {});
43
+ var MILESTONE_TRIGGER_TYPE = /* @__PURE__ */ ((MILESTONE_TRIGGER_TYPE2) => {
44
+ MILESTONE_TRIGGER_TYPE2["FundingPercentage"] = "FUNDING_PERCENTAGE";
45
+ MILESTONE_TRIGGER_TYPE2["FundingAmount"] = "FUNDING_AMOUNT";
46
+ MILESTONE_TRIGGER_TYPE2["BackerCount"] = "BACKER_COUNT";
47
+ MILESTONE_TRIGGER_TYPE2["TimeBased"] = "TIME_BASED";
48
+ MILESTONE_TRIGGER_TYPE2["Manual"] = "MANUAL";
49
+ return MILESTONE_TRIGGER_TYPE2;
50
+ })(MILESTONE_TRIGGER_TYPE || {});
51
+ var MILESTONE_STATUS = /* @__PURE__ */ ((MILESTONE_STATUS2) => {
52
+ MILESTONE_STATUS2["Pending"] = "PENDING";
53
+ MILESTONE_STATUS2["Achieved"] = "ACHIEVED";
54
+ MILESTONE_STATUS2["Verified"] = "VERIFIED";
55
+ MILESTONE_STATUS2["PayoutReady"] = "PAYOUT_READY";
56
+ MILESTONE_STATUS2["Completed"] = "COMPLETED";
57
+ return MILESTONE_STATUS2;
58
+ })(MILESTONE_STATUS || {});
33
59
  var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => zod.z.object({
34
60
  title: zod.z.string().min(1, "components.CreateCampaign.Form.errors.titleRequired" /* TitleRequired */).max(60, "components.CreateCampaign.Form.errors.titleMax" /* TitleMax */),
35
61
  subtitle: zod.z.string().min(1, "components.CreateCampaign.Form.errors.subtitleRequired" /* SubtitleRequired */).max(200, "components.CreateCampaign.Form.errors.subtitleMax" /* SubtitleMax */),
@@ -75,8 +101,49 @@ var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => zod.z.object
75
101
  tiktokHandle: zod.z.string().max(24, "components.CreateCampaign.Form.errors.tiktokMax" /* TiktokMax */).regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, "components.CreateCampaign.Form.errors.tiktokInvalid" /* TiktokInvalid */).optional(),
76
102
  youtubeHandle: zod.z.string().max(50, "components.CreateCampaign.Form.errors.youtubeMax" /* YoutubeMax */).regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, "components.CreateCampaign.Form.errors.youtubeInvalid" /* YoutubeInvalid */).optional()
77
103
  }), "formCampaignSchema");
104
+ var CreateCampaignSchema = zod.z.object({
105
+ creator_id: zod.z.string().uuid(),
106
+ title: zod.z.string().min(3).max(60),
107
+ subtitle: zod.z.string().min(1).max(200),
108
+ story: zod.z.string().min(10).max(1e3),
109
+ funding_target: zod.z.number().positive(),
110
+ duration: zod.z.number().min(7).max(365).optional(),
111
+ location_region: zod.z.string().max(100).optional(),
112
+ location_city: zod.z.string().max(100).optional(),
113
+ sport: zod.z.string().max(50).optional(),
114
+ category: zod.z.string().max(50).optional(),
115
+ tags: zod.z.array(zod.z.string()).optional(),
116
+ campaign_images: zod.z.array(zod.z.string().uuid()).optional(),
117
+ campaign_videos: zod.z.array(zod.z.string().uuid()).optional()
118
+ });
119
+ var UpdateCampaignSchema = CreateCampaignSchema.extend({
120
+ id: zod.z.string().uuid()
121
+ });
122
+ var PatchCampaignSchema = CreateCampaignSchema.partial().extend({
123
+ id: zod.z.string().uuid().optional()
124
+ });
125
+ var DeleteCampaignSchema = zod.z.object({
126
+ id: zod.z.string().uuid()
127
+ });
128
+ var QueryCampaignSchema = zod.z.object({
129
+ status: zod.z.nativeEnum(CAMPAIGN_STATUS).optional(),
130
+ creator_id: zod.z.string().uuid().optional(),
131
+ sport: zod.z.string().optional(),
132
+ category: zod.z.string().optional(),
133
+ location_region: zod.z.string().optional(),
134
+ limit: zod.z.number().positive().optional(),
135
+ offset: zod.z.number().min(0).optional()
136
+ });
78
137
 
138
+ exports.CAMPAIGN_STATUS = CAMPAIGN_STATUS;
79
139
  exports.CREATE_CAMPAIGN_ERRORS = CREATE_CAMPAIGN_ERRORS;
140
+ exports.CreateCampaignSchema = CreateCampaignSchema;
141
+ exports.DeleteCampaignSchema = DeleteCampaignSchema;
142
+ exports.MILESTONE_STATUS = MILESTONE_STATUS;
143
+ exports.MILESTONE_TRIGGER_TYPE = MILESTONE_TRIGGER_TYPE;
144
+ exports.PatchCampaignSchema = PatchCampaignSchema;
145
+ exports.QueryCampaignSchema = QueryCampaignSchema;
146
+ exports.UpdateCampaignSchema = UpdateCampaignSchema;
80
147
  exports.formCampaignSchema = formCampaignSchema;
81
148
  //# sourceMappingURL=index.cjs.map
82
149
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/campaign/enums.ts","../../src/campaign/schemas.ts"],"names":["CREATE_CAMPAIGN_ERRORS","z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Enum containing error message keys for campaign creation form validation.\n * Contains localized error message keys that map to translation strings.\n */\nexport enum CREATE_CAMPAIGN_ERRORS {\n /** Error when campaign title is required but not provided */\n TitleRequired = 'components.CreateCampaign.Form.errors.titleRequired',\n /** Error when campaign title exceeds maximum length */\n TitleMax = 'components.CreateCampaign.Form.errors.titleMax',\n /** Error when campaign subtitle is required but not provided */\n SubtitleRequired = 'components.CreateCampaign.Form.errors.subtitleRequired',\n /** Error when campaign subtitle exceeds maximum length */\n SubtitleMax = 'components.CreateCampaign.Form.errors.subtitleMax',\n /** Error when campaign image is required but not provided */\n CampaignImageRequired = 'components.CreateCampaign.Form.errors.campaignImageRequired',\n /** Error when start date is required but not provided */\n StartDateRequired = 'components.CreateCampaign.Form.errors.startDateRequired',\n /** Error when start date format is invalid */\n StartDateInvalid = 'components.CreateCampaign.Form.errors.startDateInvalid',\n /** Error when start date is not in the future */\n StartDateFuture = 'components.CreateCampaign.Form.errors.startDateFuture',\n /** Error when campaign duration is required but not selected */\n DurationRequired = 'components.CreateCampaign.Form.errors.durationRequired',\n /** Error when campaign story is required but not provided */\n StoryRequired = 'components.CreateCampaign.Form.errors.storyRequired',\n /** Error when campaign story exceeds maximum length */\n StoryMax = 'components.CreateCampaign.Form.errors.storyMax',\n /** Error when video URL is from an unsupported provider */\n VideoInvalidProvider = 'components.CreateCampaign.Form.errors.videoInvalidProvider',\n /** Error when funding target is required but not provided */\n FundingRequired = 'components.CreateCampaign.Form.errors.fundingRequired',\n /** Error when funding target is outside allowed range */\n FundingRange = 'components.CreateCampaign.Form.errors.fundingRange',\n /** Error when Instagram handle exceeds maximum length */\n InstagramMax = 'components.CreateCampaign.Form.errors.instagramMax',\n /** Error when Instagram handle format is invalid */\n InstagramInvalid = 'components.CreateCampaign.Form.errors.instagramInvalid',\n /** Error when TikTok handle exceeds maximum length */\n TiktokMax = 'components.CreateCampaign.Form.errors.tiktokMax',\n /** Error when TikTok handle format is invalid */\n TiktokInvalid = 'components.CreateCampaign.Form.errors.tiktokInvalid',\n /** Error when YouTube handle exceeds maximum length */\n YoutubeMax = 'components.CreateCampaign.Form.errors.youtubeMax',\n /** Error when YouTube handle format is invalid */\n YoutubeInvalid = 'components.CreateCampaign.Form.errors.youtubeInvalid',\n}\n\n/**\n * Type representing all possible error keys for campaign creation form validation\n */\nexport type CreateCampaignErrorKey = keyof typeof CREATE_CAMPAIGN_ERRORS;\n","/* eslint-disable no-magic-numbers */\nimport { z } from 'zod';\n\nimport { CREATE_CAMPAIGN_ERRORS as ERR } from './enums';\n\n/**\n * Zod schema for campaign creation form validation.\n * Validates all required fields for creating a new campaign including:\n * - Basic info (title, subtitle, image)\n * - Timeline (start date, duration)\n * - Content (story, video highlight)\n * - Funding target\n * - Social media handles\n *\n * @param config - Configuration object\n * @param config.maxFunding - Maximum funding amount allowed for campaigns\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const formCampaignSchema = ({ maxFunding }: { maxFunding: number }) =>\n z.object({\n title: z.string().min(1, ERR.TitleRequired).max(60, ERR.TitleMax),\n subtitle: z.string().min(1, ERR.SubtitleRequired).max(200, ERR.SubtitleMax),\n campaignImage: z.any().refine(val => val instanceof File, {\n message: ERR.CampaignImageRequired,\n }),\n startDate: z\n .date({\n error: ERR.StartDateRequired,\n })\n .refine(date => date instanceof Date && !isNaN(date.getTime()), {\n message: ERR.StartDateInvalid,\n })\n .refine(date => date >= new Date(), {\n message: ERR.StartDateFuture,\n }),\n duration: z\n .union([z.literal(30), z.literal(60), z.literal(90)])\n .nullable()\n .refine(val => val !== null, {\n message: ERR.DurationRequired,\n }),\n story: z.string().min(1, ERR.StoryRequired).max(10000, ERR.StoryMax),\n videoHighlight: z\n .string()\n .refine(\n url => {\n if (!url || url.trim() === '') return true;\n try {\n const urlObj = new URL(url);\n const hostname = urlObj.hostname.toLowerCase();\n return (\n hostname.includes('youtube.com') ||\n hostname.includes('youtu.be') ||\n hostname.includes('tiktok.com') ||\n hostname.includes('vimeo.com')\n );\n } catch {\n return false;\n }\n },\n {\n message: ERR.VideoInvalidProvider,\n }\n )\n .optional(),\n fundingTarget: z\n .string()\n .min(1, ERR.FundingRequired)\n .refine(\n val => {\n const num = Number.parseFloat(val ?? '');\n return !isNaN(num) && num > 0 && num <= maxFunding;\n },\n {\n message: ERR.FundingRange,\n }\n ),\n instagramHandle: z\n .string()\n .max(30, ERR.InstagramMax)\n .regex(/^$|^@?(?!.*\\.\\.)(?!.*\\.$)[a-zA-Z0-9._]{1,30}$/, ERR.InstagramInvalid)\n .optional(),\n tiktokHandle: z\n .string()\n .max(24, ERR.TiktokMax)\n .regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, ERR.TiktokInvalid)\n .optional(),\n youtubeHandle: z\n .string()\n .max(50, ERR.YoutubeMax)\n .regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, ERR.YoutubeInvalid)\n .optional(),\n });\n"]}
1
+ {"version":3,"sources":["../../src/campaign/enums.ts","../../src/campaign/schemas.ts"],"names":["CREATE_CAMPAIGN_ERRORS","CAMPAIGN_STATUS","MILESTONE_TRIGGER_TYPE","MILESTONE_STATUS","z"],"mappings":";;;;;;;;;AAIO,IAAK,sBAAA,qBAAAA,uBAAAA,KAAL;AAEL,EAAAA,wBAAA,eAAA,CAAA,GAAgB,qDAAA;AAEhB,EAAAA,wBAAA,UAAA,CAAA,GAAW,gDAAA;AAEX,EAAAA,wBAAA,kBAAA,CAAA,GAAmB,wDAAA;AAEnB,EAAAA,wBAAA,aAAA,CAAA,GAAc,mDAAA;AAEd,EAAAA,wBAAA,uBAAA,CAAA,GAAwB,6DAAA;AAExB,EAAAA,wBAAA,mBAAA,CAAA,GAAoB,yDAAA;AAEpB,EAAAA,wBAAA,kBAAA,CAAA,GAAmB,wDAAA;AAEnB,EAAAA,wBAAA,iBAAA,CAAA,GAAkB,uDAAA;AAElB,EAAAA,wBAAA,kBAAA,CAAA,GAAmB,wDAAA;AAEnB,EAAAA,wBAAA,eAAA,CAAA,GAAgB,qDAAA;AAEhB,EAAAA,wBAAA,UAAA,CAAA,GAAW,gDAAA;AAEX,EAAAA,wBAAA,sBAAA,CAAA,GAAuB,4DAAA;AAEvB,EAAAA,wBAAA,iBAAA,CAAA,GAAkB,uDAAA;AAElB,EAAAA,wBAAA,cAAA,CAAA,GAAe,oDAAA;AAEf,EAAAA,wBAAA,cAAA,CAAA,GAAe,oDAAA;AAEf,EAAAA,wBAAA,kBAAA,CAAA,GAAmB,wDAAA;AAEnB,EAAAA,wBAAA,WAAA,CAAA,GAAY,iDAAA;AAEZ,EAAAA,wBAAA,eAAA,CAAA,GAAgB,qDAAA;AAEhB,EAAAA,wBAAA,YAAA,CAAA,GAAa,kDAAA;AAEb,EAAAA,wBAAA,gBAAA,CAAA,GAAiB,sDAAA;AAxCP,EAAA,OAAAA,uBAAAA;AAAA,CAAA,EAAA,sBAAA,IAAA,EAAA;AAkDL,IAAK,eAAA,qBAAAC,gBAAAA,KAAL;AACL,EAAAA,iBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,iBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,iBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,iBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,iBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,iBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,iBAAA,UAAA,CAAA,GAAW,UAAA;AAPD,EAAA,OAAAA,gBAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;AAaL,IAAK,sBAAA,qBAAAC,uBAAAA,KAAL;AACL,EAAAA,wBAAA,mBAAA,CAAA,GAAoB,oBAAA;AACpB,EAAAA,wBAAA,eAAA,CAAA,GAAgB,gBAAA;AAChB,EAAAA,wBAAA,aAAA,CAAA,GAAc,cAAA;AACd,EAAAA,wBAAA,WAAA,CAAA,GAAY,YAAA;AACZ,EAAAA,wBAAA,QAAA,CAAA,GAAS,QAAA;AALC,EAAA,OAAAA,uBAAAA;AAAA,CAAA,EAAA,sBAAA,IAAA,EAAA;AAWL,IAAK,gBAAA,qBAAAC,iBAAAA,KAAL;AACL,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,kBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,kBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,kBAAA,aAAA,CAAA,GAAc,cAAA;AACd,EAAAA,kBAAA,WAAA,CAAA,GAAY,WAAA;AALF,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA;AC3DL,IAAM,qCAAqB,MAAA,CAAA,CAAC,EAAE,UAAA,EAAW,KAC9CC,MAAE,MAAA,CAAO;AAAA,EACP,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAA,EAAA,qDAAA,qBAAoB,CAAE,IAAI,EAAA,EAAA,gDAAA,gBAAgB;AAAA,EAChE,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAA,EAAA,wDAAA,wBAAuB,CAAE,IAAI,GAAA,EAAA,mDAAA,mBAAoB;AAAA,EAC1E,eAAeA,KAAA,CAAE,GAAA,GAAM,MAAA,CAAO,CAAA,GAAA,KAAO,eAAe,IAAA,EAAM;AAAA,IACxD,OAAA,EAAA,6DAAA;AAAA,GACD,CAAA;AAAA,EACD,SAAA,EAAWA,MACR,IAAA,CAAK;AAAA,IACJ,KAAA,EAAA,yDAAA;AAAA,GACD,CAAA,CACA,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,YAAgB,IAAA,IAAQ,CAAC,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,CAAA,EAAG;AAAA,IAC9D,OAAA,EAAA,wDAAA;AAAA,GACD,CAAA,CACA,MAAA,CAAO,UAAQ,IAAA,oBAAQ,IAAI,MAAK,EAAG;AAAA,IAClC,OAAA,EAAA,uDAAA;AAAA,GACD,CAAA;AAAA,EACH,QAAA,EAAUA,MACP,KAAA,CAAM,CAACA,MAAE,OAAA,CAAQ,EAAE,CAAA,EAAGA,KAAA,CAAE,OAAA,CAAQ,EAAE,GAAGA,KAAA,CAAE,OAAA,CAAQ,EAAE,CAAC,CAAC,CAAA,CACnD,UAAS,CACT,MAAA,CAAO,CAAA,GAAA,KAAO,GAAA,KAAQ,IAAA,EAAM;AAAA,IAC3B,OAAA,EAAA,wDAAA;AAAA,GACD,CAAA;AAAA,EACH,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAA,EAAA,qDAAA,qBAAoB,CAAE,IAAI,GAAA,EAAA,gDAAA,gBAAmB;AAAA,EACnE,cAAA,EAAgBA,KAAA,CACb,MAAA,EAAO,CACP,MAAA;AAAA,IACC,CAAA,GAAA,KAAO;AACL,MAAA,IAAI,CAAC,GAAA,IAAO,GAAA,CAAI,IAAA,EAAK,KAAM,IAAI,OAAO,IAAA;AACtC,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,GAAG,CAAA;AAC1B,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,WAAA,EAAY;AAC7C,QAAA,OACE,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,IAC/B,SAAS,QAAA,CAAS,UAAU,CAAA,IAC5B,QAAA,CAAS,QAAA,CAAS,YAAY,CAAA,IAC9B,QAAA,CAAS,SAAS,WAAW,CAAA;AAAA,MAEjC,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,OAAA,EAAA,4DAAA;AAAA;AACF,IAED,QAAA,EAAS;AAAA,EACZ,eAAeA,KAAA,CACZ,MAAA,EAAO,CACP,GAAA,CAAI,iFAAsB,CAC1B,MAAA;AAAA,IACC,CAAA,GAAA,KAAO;AACL,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,GAAA,IAAO,EAAE,CAAA;AACvC,MAAA,OAAO,CAAC,KAAA,CAAM,GAAG,CAAA,IAAK,GAAA,GAAM,KAAK,GAAA,IAAO,UAAA;AAAA,IAC1C,CAAA;AAAA,IACA;AAAA,MACE,OAAA,EAAA,oDAAA;AAAA;AACF,GACF;AAAA,EACF,eAAA,EAAiBA,KAAA,CACd,MAAA,EAAO,CACP,GAAA,CAAI,4EAAoB,CACxB,KAAA,CAAM,+CAAA,EAAA,wDAAA,wBAAqE,CAC3E,QAAA,EAAS;AAAA,EACZ,YAAA,EAAcA,KAAA,CACX,MAAA,EAAO,CACP,GAAA,CAAI,sEAAiB,CACrB,KAAA,CAAM,uCAAA,EAAA,qDAAA,qBAA0D,CAChE,QAAA,EAAS;AAAA,EACZ,aAAA,EAAeA,KAAA,CACZ,MAAA,EAAO,CACP,GAAA,CAAI,wEAAkB,CACtB,KAAA,CAAM,kDAAA,EAAA,sDAAA,sBAAsE,CAC5E,QAAA;AACL,CAAC,CAAA,EA1E+B,oBAAA;AA+E3B,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,UAAA,EAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK;AAAA,EAC5B,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EAC/B,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,EACnC,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA,CAAE,IAAI,GAAI,CAAA;AAAA,EAClC,cAAA,EAAgBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACpC,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EAC9C,iBAAiBA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,EAC9C,eAAeA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,EAC5C,OAAOA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACnC,UAAUA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACtC,MAAMA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACnC,eAAA,EAAiBA,MAAE,KAAA,CAAMA,KAAA,CAAE,QAAO,CAAE,IAAA,EAAM,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,eAAA,EAAiBA,MAAE,KAAA,CAAMA,KAAA,CAAE,QAAO,CAAE,IAAA,EAAM,CAAA,CAAE,QAAA;AAC9C,CAAC;AAKM,IAAM,oBAAA,GAAuB,qBAAqB,MAAA,CAAO;AAAA,EAC9D,EAAA,EAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA;AACjB,CAAC;AAKM,IAAM,mBAAA,GAAsB,oBAAA,CAAqB,OAAA,EAAQ,CAAE,MAAA,CAAO;AAAA,EACvE,IAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,QAAA;AACxB,CAAC;AAKM,IAAM,oBAAA,GAAuBA,MAAE,MAAA,CAAO;AAAA,EAC3C,EAAA,EAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA;AACjB,CAAC;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,MAAA,EAAQA,KAAA,CAAE,UAAA,CAAW,eAAe,EAAE,QAAA,EAAS;AAAA,EAC/C,YAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,QAAA,EAAS;AAAA,EACvC,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,eAAA,EAAiBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACrC,OAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtC,QAAQA,KAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA;AAC5B,CAAC","file":"index.cjs","sourcesContent":["/**\n * Enum containing error message keys for campaign creation form validation.\n * Contains localized error message keys that map to translation strings.\n */\nexport enum CREATE_CAMPAIGN_ERRORS {\n /** Error when campaign title is required but not provided */\n TitleRequired = 'components.CreateCampaign.Form.errors.titleRequired',\n /** Error when campaign title exceeds maximum length */\n TitleMax = 'components.CreateCampaign.Form.errors.titleMax',\n /** Error when campaign subtitle is required but not provided */\n SubtitleRequired = 'components.CreateCampaign.Form.errors.subtitleRequired',\n /** Error when campaign subtitle exceeds maximum length */\n SubtitleMax = 'components.CreateCampaign.Form.errors.subtitleMax',\n /** Error when campaign image is required but not provided */\n CampaignImageRequired = 'components.CreateCampaign.Form.errors.campaignImageRequired',\n /** Error when start date is required but not provided */\n StartDateRequired = 'components.CreateCampaign.Form.errors.startDateRequired',\n /** Error when start date format is invalid */\n StartDateInvalid = 'components.CreateCampaign.Form.errors.startDateInvalid',\n /** Error when start date is not in the future */\n StartDateFuture = 'components.CreateCampaign.Form.errors.startDateFuture',\n /** Error when campaign duration is required but not selected */\n DurationRequired = 'components.CreateCampaign.Form.errors.durationRequired',\n /** Error when campaign story is required but not provided */\n StoryRequired = 'components.CreateCampaign.Form.errors.storyRequired',\n /** Error when campaign story exceeds maximum length */\n StoryMax = 'components.CreateCampaign.Form.errors.storyMax',\n /** Error when video URL is from an unsupported provider */\n VideoInvalidProvider = 'components.CreateCampaign.Form.errors.videoInvalidProvider',\n /** Error when funding target is required but not provided */\n FundingRequired = 'components.CreateCampaign.Form.errors.fundingRequired',\n /** Error when funding target is outside allowed range */\n FundingRange = 'components.CreateCampaign.Form.errors.fundingRange',\n /** Error when Instagram handle exceeds maximum length */\n InstagramMax = 'components.CreateCampaign.Form.errors.instagramMax',\n /** Error when Instagram handle format is invalid */\n InstagramInvalid = 'components.CreateCampaign.Form.errors.instagramInvalid',\n /** Error when TikTok handle exceeds maximum length */\n TiktokMax = 'components.CreateCampaign.Form.errors.tiktokMax',\n /** Error when TikTok handle format is invalid */\n TiktokInvalid = 'components.CreateCampaign.Form.errors.tiktokInvalid',\n /** Error when YouTube handle exceeds maximum length */\n YoutubeMax = 'components.CreateCampaign.Form.errors.youtubeMax',\n /** Error when YouTube handle format is invalid */\n YoutubeInvalid = 'components.CreateCampaign.Form.errors.youtubeInvalid',\n}\n\n/**\n * Type representing all possible error keys for campaign creation form validation\n */\nexport type CreateCampaignErrorKey = keyof typeof CREATE_CAMPAIGN_ERRORS;\n/**\n * Campaign status enum matching database schema\n */\nexport enum CAMPAIGN_STATUS {\n Draft = 'DRAFT',\n Pending = 'PENDING', \n Active = 'ACTIVE',\n Completed = 'COMPLETED',\n Closed = 'CLOSED',\n Cancelled = 'CANCELLED',\n Rejected = 'REJECTED'\n}\n\n/**\n * Milestone trigger types\n */\nexport enum MILESTONE_TRIGGER_TYPE {\n FundingPercentage = 'FUNDING_PERCENTAGE',\n FundingAmount = 'FUNDING_AMOUNT',\n BackerCount = 'BACKER_COUNT',\n TimeBased = 'TIME_BASED',\n Manual = 'MANUAL'\n}\n\n/**\n * Milestone status\n */\nexport enum MILESTONE_STATUS {\n Pending = 'PENDING',\n Achieved = 'ACHIEVED',\n Verified = 'VERIFIED',\n PayoutReady = 'PAYOUT_READY',\n Completed = 'COMPLETED'\n}","/* eslint-disable no-magic-numbers */\nimport { z } from 'zod';\n\nimport { CREATE_CAMPAIGN_ERRORS as ERR , CAMPAIGN_STATUS } from './enums';\n\n\n/**\n * Zod schema for campaign creation form validation.\n * Validates all required fields for creating a new campaign including:\n * - Basic info (title, subtitle, image)\n * - Timeline (start date, duration)\n * - Content (story, video highlight)\n * - Funding target\n * - Social media handles\n *\n * @param config - Configuration object\n * @param config.maxFunding - Maximum funding amount allowed for campaigns\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const formCampaignSchema = ({ maxFunding }: { maxFunding: number }) =>\n z.object({\n title: z.string().min(1, ERR.TitleRequired).max(60, ERR.TitleMax),\n subtitle: z.string().min(1, ERR.SubtitleRequired).max(200, ERR.SubtitleMax),\n campaignImage: z.any().refine(val => val instanceof File, {\n message: ERR.CampaignImageRequired,\n }),\n startDate: z\n .date({\n error: ERR.StartDateRequired,\n })\n .refine(date => date instanceof Date && !isNaN(date.getTime()), {\n message: ERR.StartDateInvalid,\n })\n .refine(date => date >= new Date(), {\n message: ERR.StartDateFuture,\n }),\n duration: z\n .union([z.literal(30), z.literal(60), z.literal(90)])\n .nullable()\n .refine(val => val !== null, {\n message: ERR.DurationRequired,\n }),\n story: z.string().min(1, ERR.StoryRequired).max(10000, ERR.StoryMax),\n videoHighlight: z\n .string()\n .refine(\n url => {\n if (!url || url.trim() === '') return true;\n try {\n const urlObj = new URL(url);\n const hostname = urlObj.hostname.toLowerCase();\n return (\n hostname.includes('youtube.com') ||\n hostname.includes('youtu.be') ||\n hostname.includes('tiktok.com') ||\n hostname.includes('vimeo.com')\n );\n } catch {\n return false;\n }\n },\n {\n message: ERR.VideoInvalidProvider,\n }\n )\n .optional(),\n fundingTarget: z\n .string()\n .min(1, ERR.FundingRequired)\n .refine(\n val => {\n const num = Number.parseFloat(val ?? '');\n return !isNaN(num) && num > 0 && num <= maxFunding;\n },\n {\n message: ERR.FundingRange,\n }\n ),\n instagramHandle: z\n .string()\n .max(30, ERR.InstagramMax)\n .regex(/^$|^@?(?!.*\\.\\.)(?!.*\\.$)[a-zA-Z0-9._]{1,30}$/, ERR.InstagramInvalid)\n .optional(),\n tiktokHandle: z\n .string()\n .max(24, ERR.TiktokMax)\n .regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, ERR.TiktokInvalid)\n .optional(),\n youtubeHandle: z\n .string()\n .max(50, ERR.YoutubeMax)\n .regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, ERR.YoutubeInvalid)\n .optional(),\n });\n\n/**\n * Create campaign schema\n */\nexport const CreateCampaignSchema = z.object({\n creator_id: z.string().uuid(),\n title: z.string().min(3).max(60),\n subtitle: z.string().min(1).max(200),\n story: z.string().min(10).max(1000),\n funding_target: z.number().positive(),\n duration: z.number().min(7).max(365).optional(),\n location_region: z.string().max(100).optional(),\n location_city: z.string().max(100).optional(),\n sport: z.string().max(50).optional(),\n category: z.string().max(50).optional(),\n tags: z.array(z.string()).optional(),\n campaign_images: z.array(z.string().uuid()).optional(),\n campaign_videos: z.array(z.string().uuid()).optional(),\n});\n\n/**\n * Update campaign schema\n */\nexport const UpdateCampaignSchema = CreateCampaignSchema.extend({\n id: z.string().uuid(),\n});\n\n/**\n * Patch campaign schema\n */\nexport const PatchCampaignSchema = CreateCampaignSchema.partial().extend({\n id: z.string().uuid().optional(),\n});\n\n/**\n * Delete campaign schema\n */\nexport const DeleteCampaignSchema = z.object({\n id: z.string().uuid(),\n});\n\n/**\n * Query campaign schema\n */\nexport const QueryCampaignSchema = z.object({\n status: z.nativeEnum(CAMPAIGN_STATUS).optional(),\n creator_id: z.string().uuid().optional(),\n sport: z.string().optional(),\n category: z.string().optional(),\n location_region: z.string().optional(),\n limit: z.number().positive().optional(),\n offset: z.number().min(0).optional(),\n});"]}
@@ -1,3 +1,5 @@
1
1
  export * from './enums';
2
2
  export * from './schemas';
3
3
  export type * from './types';
4
+ export type { CampaignEntity, CreateCampaignDTO, UpdateCampaignDTO, PatchCampaignDTO, DeleteCampaignDTO, QueryCampaignDTO, CampaignResponseDTO, CampaignStoreItem, CampaignDomainServiceConfig, } from './types';
5
+ export { CreateCampaignSchema, UpdateCampaignSchema, PatchCampaignSchema, DeleteCampaignSchema, QueryCampaignSchema, } from './schemas';
@@ -28,6 +28,32 @@ var CREATE_CAMPAIGN_ERRORS = /* @__PURE__ */ ((CREATE_CAMPAIGN_ERRORS2) => {
28
28
  CREATE_CAMPAIGN_ERRORS2["YoutubeInvalid"] = "components.CreateCampaign.Form.errors.youtubeInvalid";
29
29
  return CREATE_CAMPAIGN_ERRORS2;
30
30
  })(CREATE_CAMPAIGN_ERRORS || {});
31
+ var CAMPAIGN_STATUS = /* @__PURE__ */ ((CAMPAIGN_STATUS2) => {
32
+ CAMPAIGN_STATUS2["Draft"] = "DRAFT";
33
+ CAMPAIGN_STATUS2["Pending"] = "PENDING";
34
+ CAMPAIGN_STATUS2["Active"] = "ACTIVE";
35
+ CAMPAIGN_STATUS2["Completed"] = "COMPLETED";
36
+ CAMPAIGN_STATUS2["Closed"] = "CLOSED";
37
+ CAMPAIGN_STATUS2["Cancelled"] = "CANCELLED";
38
+ CAMPAIGN_STATUS2["Rejected"] = "REJECTED";
39
+ return CAMPAIGN_STATUS2;
40
+ })(CAMPAIGN_STATUS || {});
41
+ var MILESTONE_TRIGGER_TYPE = /* @__PURE__ */ ((MILESTONE_TRIGGER_TYPE2) => {
42
+ MILESTONE_TRIGGER_TYPE2["FundingPercentage"] = "FUNDING_PERCENTAGE";
43
+ MILESTONE_TRIGGER_TYPE2["FundingAmount"] = "FUNDING_AMOUNT";
44
+ MILESTONE_TRIGGER_TYPE2["BackerCount"] = "BACKER_COUNT";
45
+ MILESTONE_TRIGGER_TYPE2["TimeBased"] = "TIME_BASED";
46
+ MILESTONE_TRIGGER_TYPE2["Manual"] = "MANUAL";
47
+ return MILESTONE_TRIGGER_TYPE2;
48
+ })(MILESTONE_TRIGGER_TYPE || {});
49
+ var MILESTONE_STATUS = /* @__PURE__ */ ((MILESTONE_STATUS2) => {
50
+ MILESTONE_STATUS2["Pending"] = "PENDING";
51
+ MILESTONE_STATUS2["Achieved"] = "ACHIEVED";
52
+ MILESTONE_STATUS2["Verified"] = "VERIFIED";
53
+ MILESTONE_STATUS2["PayoutReady"] = "PAYOUT_READY";
54
+ MILESTONE_STATUS2["Completed"] = "COMPLETED";
55
+ return MILESTONE_STATUS2;
56
+ })(MILESTONE_STATUS || {});
31
57
  var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => z.object({
32
58
  title: z.string().min(1, "components.CreateCampaign.Form.errors.titleRequired" /* TitleRequired */).max(60, "components.CreateCampaign.Form.errors.titleMax" /* TitleMax */),
33
59
  subtitle: z.string().min(1, "components.CreateCampaign.Form.errors.subtitleRequired" /* SubtitleRequired */).max(200, "components.CreateCampaign.Form.errors.subtitleMax" /* SubtitleMax */),
@@ -73,7 +99,40 @@ var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => z.object({
73
99
  tiktokHandle: z.string().max(24, "components.CreateCampaign.Form.errors.tiktokMax" /* TiktokMax */).regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, "components.CreateCampaign.Form.errors.tiktokInvalid" /* TiktokInvalid */).optional(),
74
100
  youtubeHandle: z.string().max(50, "components.CreateCampaign.Form.errors.youtubeMax" /* YoutubeMax */).regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, "components.CreateCampaign.Form.errors.youtubeInvalid" /* YoutubeInvalid */).optional()
75
101
  }), "formCampaignSchema");
102
+ var CreateCampaignSchema = z.object({
103
+ creator_id: z.string().uuid(),
104
+ title: z.string().min(3).max(60),
105
+ subtitle: z.string().min(1).max(200),
106
+ story: z.string().min(10).max(1e3),
107
+ funding_target: z.number().positive(),
108
+ duration: z.number().min(7).max(365).optional(),
109
+ location_region: z.string().max(100).optional(),
110
+ location_city: z.string().max(100).optional(),
111
+ sport: z.string().max(50).optional(),
112
+ category: z.string().max(50).optional(),
113
+ tags: z.array(z.string()).optional(),
114
+ campaign_images: z.array(z.string().uuid()).optional(),
115
+ campaign_videos: z.array(z.string().uuid()).optional()
116
+ });
117
+ var UpdateCampaignSchema = CreateCampaignSchema.extend({
118
+ id: z.string().uuid()
119
+ });
120
+ var PatchCampaignSchema = CreateCampaignSchema.partial().extend({
121
+ id: z.string().uuid().optional()
122
+ });
123
+ var DeleteCampaignSchema = z.object({
124
+ id: z.string().uuid()
125
+ });
126
+ var QueryCampaignSchema = z.object({
127
+ status: z.nativeEnum(CAMPAIGN_STATUS).optional(),
128
+ creator_id: z.string().uuid().optional(),
129
+ sport: z.string().optional(),
130
+ category: z.string().optional(),
131
+ location_region: z.string().optional(),
132
+ limit: z.number().positive().optional(),
133
+ offset: z.number().min(0).optional()
134
+ });
76
135
 
77
- export { CREATE_CAMPAIGN_ERRORS, formCampaignSchema };
136
+ export { CAMPAIGN_STATUS, CREATE_CAMPAIGN_ERRORS, CreateCampaignSchema, DeleteCampaignSchema, MILESTONE_STATUS, MILESTONE_TRIGGER_TYPE, PatchCampaignSchema, QueryCampaignSchema, UpdateCampaignSchema, formCampaignSchema };
78
137
  //# sourceMappingURL=index.js.map
79
138
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/campaign/enums.ts","../../src/campaign/schemas.ts"],"names":["CREATE_CAMPAIGN_ERRORS"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Enum containing error message keys for campaign creation form validation.\n * Contains localized error message keys that map to translation strings.\n */\nexport enum CREATE_CAMPAIGN_ERRORS {\n /** Error when campaign title is required but not provided */\n TitleRequired = 'components.CreateCampaign.Form.errors.titleRequired',\n /** Error when campaign title exceeds maximum length */\n TitleMax = 'components.CreateCampaign.Form.errors.titleMax',\n /** Error when campaign subtitle is required but not provided */\n SubtitleRequired = 'components.CreateCampaign.Form.errors.subtitleRequired',\n /** Error when campaign subtitle exceeds maximum length */\n SubtitleMax = 'components.CreateCampaign.Form.errors.subtitleMax',\n /** Error when campaign image is required but not provided */\n CampaignImageRequired = 'components.CreateCampaign.Form.errors.campaignImageRequired',\n /** Error when start date is required but not provided */\n StartDateRequired = 'components.CreateCampaign.Form.errors.startDateRequired',\n /** Error when start date format is invalid */\n StartDateInvalid = 'components.CreateCampaign.Form.errors.startDateInvalid',\n /** Error when start date is not in the future */\n StartDateFuture = 'components.CreateCampaign.Form.errors.startDateFuture',\n /** Error when campaign duration is required but not selected */\n DurationRequired = 'components.CreateCampaign.Form.errors.durationRequired',\n /** Error when campaign story is required but not provided */\n StoryRequired = 'components.CreateCampaign.Form.errors.storyRequired',\n /** Error when campaign story exceeds maximum length */\n StoryMax = 'components.CreateCampaign.Form.errors.storyMax',\n /** Error when video URL is from an unsupported provider */\n VideoInvalidProvider = 'components.CreateCampaign.Form.errors.videoInvalidProvider',\n /** Error when funding target is required but not provided */\n FundingRequired = 'components.CreateCampaign.Form.errors.fundingRequired',\n /** Error when funding target is outside allowed range */\n FundingRange = 'components.CreateCampaign.Form.errors.fundingRange',\n /** Error when Instagram handle exceeds maximum length */\n InstagramMax = 'components.CreateCampaign.Form.errors.instagramMax',\n /** Error when Instagram handle format is invalid */\n InstagramInvalid = 'components.CreateCampaign.Form.errors.instagramInvalid',\n /** Error when TikTok handle exceeds maximum length */\n TiktokMax = 'components.CreateCampaign.Form.errors.tiktokMax',\n /** Error when TikTok handle format is invalid */\n TiktokInvalid = 'components.CreateCampaign.Form.errors.tiktokInvalid',\n /** Error when YouTube handle exceeds maximum length */\n YoutubeMax = 'components.CreateCampaign.Form.errors.youtubeMax',\n /** Error when YouTube handle format is invalid */\n YoutubeInvalid = 'components.CreateCampaign.Form.errors.youtubeInvalid',\n}\n\n/**\n * Type representing all possible error keys for campaign creation form validation\n */\nexport type CreateCampaignErrorKey = keyof typeof CREATE_CAMPAIGN_ERRORS;\n","/* eslint-disable no-magic-numbers */\nimport { z } from 'zod';\n\nimport { CREATE_CAMPAIGN_ERRORS as ERR } from './enums';\n\n/**\n * Zod schema for campaign creation form validation.\n * Validates all required fields for creating a new campaign including:\n * - Basic info (title, subtitle, image)\n * - Timeline (start date, duration)\n * - Content (story, video highlight)\n * - Funding target\n * - Social media handles\n *\n * @param config - Configuration object\n * @param config.maxFunding - Maximum funding amount allowed for campaigns\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const formCampaignSchema = ({ maxFunding }: { maxFunding: number }) =>\n z.object({\n title: z.string().min(1, ERR.TitleRequired).max(60, ERR.TitleMax),\n subtitle: z.string().min(1, ERR.SubtitleRequired).max(200, ERR.SubtitleMax),\n campaignImage: z.any().refine(val => val instanceof File, {\n message: ERR.CampaignImageRequired,\n }),\n startDate: z\n .date({\n error: ERR.StartDateRequired,\n })\n .refine(date => date instanceof Date && !isNaN(date.getTime()), {\n message: ERR.StartDateInvalid,\n })\n .refine(date => date >= new Date(), {\n message: ERR.StartDateFuture,\n }),\n duration: z\n .union([z.literal(30), z.literal(60), z.literal(90)])\n .nullable()\n .refine(val => val !== null, {\n message: ERR.DurationRequired,\n }),\n story: z.string().min(1, ERR.StoryRequired).max(10000, ERR.StoryMax),\n videoHighlight: z\n .string()\n .refine(\n url => {\n if (!url || url.trim() === '') return true;\n try {\n const urlObj = new URL(url);\n const hostname = urlObj.hostname.toLowerCase();\n return (\n hostname.includes('youtube.com') ||\n hostname.includes('youtu.be') ||\n hostname.includes('tiktok.com') ||\n hostname.includes('vimeo.com')\n );\n } catch {\n return false;\n }\n },\n {\n message: ERR.VideoInvalidProvider,\n }\n )\n .optional(),\n fundingTarget: z\n .string()\n .min(1, ERR.FundingRequired)\n .refine(\n val => {\n const num = Number.parseFloat(val ?? '');\n return !isNaN(num) && num > 0 && num <= maxFunding;\n },\n {\n message: ERR.FundingRange,\n }\n ),\n instagramHandle: z\n .string()\n .max(30, ERR.InstagramMax)\n .regex(/^$|^@?(?!.*\\.\\.)(?!.*\\.$)[a-zA-Z0-9._]{1,30}$/, ERR.InstagramInvalid)\n .optional(),\n tiktokHandle: z\n .string()\n .max(24, ERR.TiktokMax)\n .regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, ERR.TiktokInvalid)\n .optional(),\n youtubeHandle: z\n .string()\n .max(50, ERR.YoutubeMax)\n .regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, ERR.YoutubeInvalid)\n .optional(),\n });\n"]}
1
+ {"version":3,"sources":["../../src/campaign/enums.ts","../../src/campaign/schemas.ts"],"names":["CREATE_CAMPAIGN_ERRORS","CAMPAIGN_STATUS","MILESTONE_TRIGGER_TYPE","MILESTONE_STATUS"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Enum containing error message keys for campaign creation form validation.\n * Contains localized error message keys that map to translation strings.\n */\nexport enum CREATE_CAMPAIGN_ERRORS {\n /** Error when campaign title is required but not provided */\n TitleRequired = 'components.CreateCampaign.Form.errors.titleRequired',\n /** Error when campaign title exceeds maximum length */\n TitleMax = 'components.CreateCampaign.Form.errors.titleMax',\n /** Error when campaign subtitle is required but not provided */\n SubtitleRequired = 'components.CreateCampaign.Form.errors.subtitleRequired',\n /** Error when campaign subtitle exceeds maximum length */\n SubtitleMax = 'components.CreateCampaign.Form.errors.subtitleMax',\n /** Error when campaign image is required but not provided */\n CampaignImageRequired = 'components.CreateCampaign.Form.errors.campaignImageRequired',\n /** Error when start date is required but not provided */\n StartDateRequired = 'components.CreateCampaign.Form.errors.startDateRequired',\n /** Error when start date format is invalid */\n StartDateInvalid = 'components.CreateCampaign.Form.errors.startDateInvalid',\n /** Error when start date is not in the future */\n StartDateFuture = 'components.CreateCampaign.Form.errors.startDateFuture',\n /** Error when campaign duration is required but not selected */\n DurationRequired = 'components.CreateCampaign.Form.errors.durationRequired',\n /** Error when campaign story is required but not provided */\n StoryRequired = 'components.CreateCampaign.Form.errors.storyRequired',\n /** Error when campaign story exceeds maximum length */\n StoryMax = 'components.CreateCampaign.Form.errors.storyMax',\n /** Error when video URL is from an unsupported provider */\n VideoInvalidProvider = 'components.CreateCampaign.Form.errors.videoInvalidProvider',\n /** Error when funding target is required but not provided */\n FundingRequired = 'components.CreateCampaign.Form.errors.fundingRequired',\n /** Error when funding target is outside allowed range */\n FundingRange = 'components.CreateCampaign.Form.errors.fundingRange',\n /** Error when Instagram handle exceeds maximum length */\n InstagramMax = 'components.CreateCampaign.Form.errors.instagramMax',\n /** Error when Instagram handle format is invalid */\n InstagramInvalid = 'components.CreateCampaign.Form.errors.instagramInvalid',\n /** Error when TikTok handle exceeds maximum length */\n TiktokMax = 'components.CreateCampaign.Form.errors.tiktokMax',\n /** Error when TikTok handle format is invalid */\n TiktokInvalid = 'components.CreateCampaign.Form.errors.tiktokInvalid',\n /** Error when YouTube handle exceeds maximum length */\n YoutubeMax = 'components.CreateCampaign.Form.errors.youtubeMax',\n /** Error when YouTube handle format is invalid */\n YoutubeInvalid = 'components.CreateCampaign.Form.errors.youtubeInvalid',\n}\n\n/**\n * Type representing all possible error keys for campaign creation form validation\n */\nexport type CreateCampaignErrorKey = keyof typeof CREATE_CAMPAIGN_ERRORS;\n/**\n * Campaign status enum matching database schema\n */\nexport enum CAMPAIGN_STATUS {\n Draft = 'DRAFT',\n Pending = 'PENDING', \n Active = 'ACTIVE',\n Completed = 'COMPLETED',\n Closed = 'CLOSED',\n Cancelled = 'CANCELLED',\n Rejected = 'REJECTED'\n}\n\n/**\n * Milestone trigger types\n */\nexport enum MILESTONE_TRIGGER_TYPE {\n FundingPercentage = 'FUNDING_PERCENTAGE',\n FundingAmount = 'FUNDING_AMOUNT',\n BackerCount = 'BACKER_COUNT',\n TimeBased = 'TIME_BASED',\n Manual = 'MANUAL'\n}\n\n/**\n * Milestone status\n */\nexport enum MILESTONE_STATUS {\n Pending = 'PENDING',\n Achieved = 'ACHIEVED',\n Verified = 'VERIFIED',\n PayoutReady = 'PAYOUT_READY',\n Completed = 'COMPLETED'\n}","/* eslint-disable no-magic-numbers */\nimport { z } from 'zod';\n\nimport { CREATE_CAMPAIGN_ERRORS as ERR , CAMPAIGN_STATUS } from './enums';\n\n\n/**\n * Zod schema for campaign creation form validation.\n * Validates all required fields for creating a new campaign including:\n * - Basic info (title, subtitle, image)\n * - Timeline (start date, duration)\n * - Content (story, video highlight)\n * - Funding target\n * - Social media handles\n *\n * @param config - Configuration object\n * @param config.maxFunding - Maximum funding amount allowed for campaigns\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const formCampaignSchema = ({ maxFunding }: { maxFunding: number }) =>\n z.object({\n title: z.string().min(1, ERR.TitleRequired).max(60, ERR.TitleMax),\n subtitle: z.string().min(1, ERR.SubtitleRequired).max(200, ERR.SubtitleMax),\n campaignImage: z.any().refine(val => val instanceof File, {\n message: ERR.CampaignImageRequired,\n }),\n startDate: z\n .date({\n error: ERR.StartDateRequired,\n })\n .refine(date => date instanceof Date && !isNaN(date.getTime()), {\n message: ERR.StartDateInvalid,\n })\n .refine(date => date >= new Date(), {\n message: ERR.StartDateFuture,\n }),\n duration: z\n .union([z.literal(30), z.literal(60), z.literal(90)])\n .nullable()\n .refine(val => val !== null, {\n message: ERR.DurationRequired,\n }),\n story: z.string().min(1, ERR.StoryRequired).max(10000, ERR.StoryMax),\n videoHighlight: z\n .string()\n .refine(\n url => {\n if (!url || url.trim() === '') return true;\n try {\n const urlObj = new URL(url);\n const hostname = urlObj.hostname.toLowerCase();\n return (\n hostname.includes('youtube.com') ||\n hostname.includes('youtu.be') ||\n hostname.includes('tiktok.com') ||\n hostname.includes('vimeo.com')\n );\n } catch {\n return false;\n }\n },\n {\n message: ERR.VideoInvalidProvider,\n }\n )\n .optional(),\n fundingTarget: z\n .string()\n .min(1, ERR.FundingRequired)\n .refine(\n val => {\n const num = Number.parseFloat(val ?? '');\n return !isNaN(num) && num > 0 && num <= maxFunding;\n },\n {\n message: ERR.FundingRange,\n }\n ),\n instagramHandle: z\n .string()\n .max(30, ERR.InstagramMax)\n .regex(/^$|^@?(?!.*\\.\\.)(?!.*\\.$)[a-zA-Z0-9._]{1,30}$/, ERR.InstagramInvalid)\n .optional(),\n tiktokHandle: z\n .string()\n .max(24, ERR.TiktokMax)\n .regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, ERR.TiktokInvalid)\n .optional(),\n youtubeHandle: z\n .string()\n .max(50, ERR.YoutubeMax)\n .regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, ERR.YoutubeInvalid)\n .optional(),\n });\n\n/**\n * Create campaign schema\n */\nexport const CreateCampaignSchema = z.object({\n creator_id: z.string().uuid(),\n title: z.string().min(3).max(60),\n subtitle: z.string().min(1).max(200),\n story: z.string().min(10).max(1000),\n funding_target: z.number().positive(),\n duration: z.number().min(7).max(365).optional(),\n location_region: z.string().max(100).optional(),\n location_city: z.string().max(100).optional(),\n sport: z.string().max(50).optional(),\n category: z.string().max(50).optional(),\n tags: z.array(z.string()).optional(),\n campaign_images: z.array(z.string().uuid()).optional(),\n campaign_videos: z.array(z.string().uuid()).optional(),\n});\n\n/**\n * Update campaign schema\n */\nexport const UpdateCampaignSchema = CreateCampaignSchema.extend({\n id: z.string().uuid(),\n});\n\n/**\n * Patch campaign schema\n */\nexport const PatchCampaignSchema = CreateCampaignSchema.partial().extend({\n id: z.string().uuid().optional(),\n});\n\n/**\n * Delete campaign schema\n */\nexport const DeleteCampaignSchema = z.object({\n id: z.string().uuid(),\n});\n\n/**\n * Query campaign schema\n */\nexport const QueryCampaignSchema = z.object({\n status: z.nativeEnum(CAMPAIGN_STATUS).optional(),\n creator_id: z.string().uuid().optional(),\n sport: z.string().optional(),\n category: z.string().optional(),\n location_region: z.string().optional(),\n limit: z.number().positive().optional(),\n offset: z.number().min(0).optional(),\n});"]}
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { CAMPAIGN_STATUS } from './enums';
2
3
  /**
3
4
  * Zod schema for campaign creation form validation.
4
5
  * Validates all required fields for creating a new campaign including:
@@ -26,3 +27,77 @@ export declare const formCampaignSchema: ({ maxFunding }: {
26
27
  tiktokHandle: z.ZodOptional<z.ZodString>;
27
28
  youtubeHandle: z.ZodOptional<z.ZodString>;
28
29
  }, z.core.$strip>;
30
+ /**
31
+ * Create campaign schema
32
+ */
33
+ export declare const CreateCampaignSchema: z.ZodObject<{
34
+ creator_id: z.ZodString;
35
+ title: z.ZodString;
36
+ subtitle: z.ZodString;
37
+ story: z.ZodString;
38
+ funding_target: z.ZodNumber;
39
+ duration: z.ZodOptional<z.ZodNumber>;
40
+ location_region: z.ZodOptional<z.ZodString>;
41
+ location_city: z.ZodOptional<z.ZodString>;
42
+ sport: z.ZodOptional<z.ZodString>;
43
+ category: z.ZodOptional<z.ZodString>;
44
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
45
+ campaign_images: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
+ campaign_videos: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
+ }, z.core.$strip>;
48
+ /**
49
+ * Update campaign schema
50
+ */
51
+ export declare const UpdateCampaignSchema: z.ZodObject<{
52
+ creator_id: z.ZodString;
53
+ title: z.ZodString;
54
+ subtitle: z.ZodString;
55
+ story: z.ZodString;
56
+ funding_target: z.ZodNumber;
57
+ duration: z.ZodOptional<z.ZodNumber>;
58
+ location_region: z.ZodOptional<z.ZodString>;
59
+ location_city: z.ZodOptional<z.ZodString>;
60
+ sport: z.ZodOptional<z.ZodString>;
61
+ category: z.ZodOptional<z.ZodString>;
62
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
+ campaign_images: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
+ campaign_videos: z.ZodOptional<z.ZodArray<z.ZodString>>;
65
+ id: z.ZodString;
66
+ }, z.core.$strip>;
67
+ /**
68
+ * Patch campaign schema
69
+ */
70
+ export declare const PatchCampaignSchema: z.ZodObject<{
71
+ creator_id: z.ZodOptional<z.ZodString>;
72
+ title: z.ZodOptional<z.ZodString>;
73
+ subtitle: z.ZodOptional<z.ZodString>;
74
+ story: z.ZodOptional<z.ZodString>;
75
+ funding_target: z.ZodOptional<z.ZodNumber>;
76
+ duration: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
77
+ location_region: z.ZodOptional<z.ZodOptional<z.ZodString>>;
78
+ location_city: z.ZodOptional<z.ZodOptional<z.ZodString>>;
79
+ sport: z.ZodOptional<z.ZodOptional<z.ZodString>>;
80
+ category: z.ZodOptional<z.ZodOptional<z.ZodString>>;
81
+ tags: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
82
+ campaign_images: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
83
+ campaign_videos: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
84
+ id: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>;
86
+ /**
87
+ * Delete campaign schema
88
+ */
89
+ export declare const DeleteCampaignSchema: z.ZodObject<{
90
+ id: z.ZodString;
91
+ }, z.core.$strip>;
92
+ /**
93
+ * Query campaign schema
94
+ */
95
+ export declare const QueryCampaignSchema: z.ZodObject<{
96
+ status: z.ZodOptional<z.ZodEnum<typeof CAMPAIGN_STATUS>>;
97
+ creator_id: z.ZodOptional<z.ZodString>;
98
+ sport: z.ZodOptional<z.ZodString>;
99
+ category: z.ZodOptional<z.ZodString>;
100
+ location_region: z.ZodOptional<z.ZodString>;
101
+ limit: z.ZodOptional<z.ZodNumber>;
102
+ offset: z.ZodOptional<z.ZodNumber>;
103
+ }, z.core.$strip>;
@@ -1,5 +1,6 @@
1
1
  import type { z } from 'zod';
2
2
  import type { formCampaignSchema } from './schemas';
3
+ import type { CAMPAIGN_STATUS } from './enums';
3
4
  import type { USER_TYPE } from '../payments';
4
5
  /**
5
6
  * Type inferred from the campaign form schema for form validation
@@ -57,3 +58,99 @@ export interface DraftCampaignData extends FormCampaignDataInterface {
57
58
  /** Timestamp when the draft was last saved */
58
59
  lastSavedAt: Date;
59
60
  }
61
+ /**
62
+ * Campaign entity matching database schema
63
+ */
64
+ export interface CampaignEntity {
65
+ id: string;
66
+ creator_id: string;
67
+ title: string;
68
+ subtitle: string;
69
+ campaign_images?: string[];
70
+ start_date?: string;
71
+ duration?: number;
72
+ story: string;
73
+ location_region?: string;
74
+ location_city?: string;
75
+ sport?: string;
76
+ category?: string;
77
+ tags?: string[];
78
+ campaign_videos?: string[];
79
+ funding_target: number;
80
+ status: CAMPAIGN_STATUS;
81
+ first_contribution_at?: string;
82
+ created_at: string;
83
+ updated_at: string;
84
+ deleted_at?: string;
85
+ }
86
+ /**
87
+ * Create campaign DTO
88
+ */
89
+ export interface CreateCampaignDTO {
90
+ creator_id: string;
91
+ title: string;
92
+ subtitle: string;
93
+ story: string;
94
+ funding_target: number;
95
+ duration?: number;
96
+ location_region?: string;
97
+ location_city?: string;
98
+ sport?: string;
99
+ category?: string;
100
+ tags?: string[];
101
+ campaign_images?: string[];
102
+ campaign_videos?: string[];
103
+ }
104
+ /**
105
+ * Update campaign DTO
106
+ */
107
+ export interface UpdateCampaignDTO extends CreateCampaignDTO {
108
+ id: string;
109
+ }
110
+ /**
111
+ * Patch campaign DTO
112
+ */
113
+ export interface PatchCampaignDTO extends Partial<CreateCampaignDTO> {
114
+ id?: string;
115
+ }
116
+ /**
117
+ * Delete campaign DTO
118
+ */
119
+ export interface DeleteCampaignDTO {
120
+ id: string;
121
+ }
122
+ /**
123
+ * Query campaign DTO
124
+ */
125
+ export interface QueryCampaignDTO {
126
+ status?: CAMPAIGN_STATUS;
127
+ creator_id?: string;
128
+ sport?: string;
129
+ category?: string;
130
+ location_region?: string;
131
+ limit?: number;
132
+ offset?: number;
133
+ }
134
+ /**
135
+ * Campaign response DTO
136
+ */
137
+ export interface CampaignResponseDTO extends CampaignEntity {
138
+ }
139
+ /**
140
+ * Campaign store item
141
+ */
142
+ export interface CampaignStoreItem extends CampaignEntity {
143
+ }
144
+ /**
145
+ * Campaign domain service config
146
+ */
147
+ export interface CampaignDomainServiceConfig {
148
+ enabled?: boolean;
149
+ throwOnValidationError?: boolean;
150
+ throwOnRepositoryError?: boolean;
151
+ emitEvents?: boolean;
152
+ cache?: {
153
+ enabled?: boolean;
154
+ defaultTtl?: number;
155
+ };
156
+ }
package/dist/index.cjs CHANGED
@@ -6862,6 +6862,32 @@ var CREATE_CAMPAIGN_ERRORS = /* @__PURE__ */ ((CREATE_CAMPAIGN_ERRORS2) => {
6862
6862
  CREATE_CAMPAIGN_ERRORS2["YoutubeInvalid"] = "components.CreateCampaign.Form.errors.youtubeInvalid";
6863
6863
  return CREATE_CAMPAIGN_ERRORS2;
6864
6864
  })(CREATE_CAMPAIGN_ERRORS || {});
6865
+ var CAMPAIGN_STATUS = /* @__PURE__ */ ((CAMPAIGN_STATUS2) => {
6866
+ CAMPAIGN_STATUS2["Draft"] = "DRAFT";
6867
+ CAMPAIGN_STATUS2["Pending"] = "PENDING";
6868
+ CAMPAIGN_STATUS2["Active"] = "ACTIVE";
6869
+ CAMPAIGN_STATUS2["Completed"] = "COMPLETED";
6870
+ CAMPAIGN_STATUS2["Closed"] = "CLOSED";
6871
+ CAMPAIGN_STATUS2["Cancelled"] = "CANCELLED";
6872
+ CAMPAIGN_STATUS2["Rejected"] = "REJECTED";
6873
+ return CAMPAIGN_STATUS2;
6874
+ })(CAMPAIGN_STATUS || {});
6875
+ var MILESTONE_TRIGGER_TYPE = /* @__PURE__ */ ((MILESTONE_TRIGGER_TYPE2) => {
6876
+ MILESTONE_TRIGGER_TYPE2["FundingPercentage"] = "FUNDING_PERCENTAGE";
6877
+ MILESTONE_TRIGGER_TYPE2["FundingAmount"] = "FUNDING_AMOUNT";
6878
+ MILESTONE_TRIGGER_TYPE2["BackerCount"] = "BACKER_COUNT";
6879
+ MILESTONE_TRIGGER_TYPE2["TimeBased"] = "TIME_BASED";
6880
+ MILESTONE_TRIGGER_TYPE2["Manual"] = "MANUAL";
6881
+ return MILESTONE_TRIGGER_TYPE2;
6882
+ })(MILESTONE_TRIGGER_TYPE || {});
6883
+ var MILESTONE_STATUS = /* @__PURE__ */ ((MILESTONE_STATUS2) => {
6884
+ MILESTONE_STATUS2["Pending"] = "PENDING";
6885
+ MILESTONE_STATUS2["Achieved"] = "ACHIEVED";
6886
+ MILESTONE_STATUS2["Verified"] = "VERIFIED";
6887
+ MILESTONE_STATUS2["PayoutReady"] = "PAYOUT_READY";
6888
+ MILESTONE_STATUS2["Completed"] = "COMPLETED";
6889
+ return MILESTONE_STATUS2;
6890
+ })(MILESTONE_STATUS || {});
6865
6891
  var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => zod.z.object({
6866
6892
  title: zod.z.string().min(1, "components.CreateCampaign.Form.errors.titleRequired" /* TitleRequired */).max(60, "components.CreateCampaign.Form.errors.titleMax" /* TitleMax */),
6867
6893
  subtitle: zod.z.string().min(1, "components.CreateCampaign.Form.errors.subtitleRequired" /* SubtitleRequired */).max(200, "components.CreateCampaign.Form.errors.subtitleMax" /* SubtitleMax */),
@@ -6907,6 +6933,39 @@ var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => zod.z.object
6907
6933
  tiktokHandle: zod.z.string().max(24, "components.CreateCampaign.Form.errors.tiktokMax" /* TiktokMax */).regex(/^$|^@?[a-zA-Z0-9][a-zA-Z0-9._]{1,23}$/, "components.CreateCampaign.Form.errors.tiktokInvalid" /* TiktokInvalid */).optional(),
6908
6934
  youtubeHandle: zod.z.string().max(50, "components.CreateCampaign.Form.errors.youtubeMax" /* YoutubeMax */).regex(/^$|^@[a-zA-Z0-9][a-zA-Z0-9._-]{1,28}[a-zA-Z0-9]$/, "components.CreateCampaign.Form.errors.youtubeInvalid" /* YoutubeInvalid */).optional()
6909
6935
  }), "formCampaignSchema");
6936
+ var CreateCampaignSchema = zod.z.object({
6937
+ creator_id: zod.z.string().uuid(),
6938
+ title: zod.z.string().min(3).max(60),
6939
+ subtitle: zod.z.string().min(1).max(200),
6940
+ story: zod.z.string().min(10).max(1e3),
6941
+ funding_target: zod.z.number().positive(),
6942
+ duration: zod.z.number().min(7).max(365).optional(),
6943
+ location_region: zod.z.string().max(100).optional(),
6944
+ location_city: zod.z.string().max(100).optional(),
6945
+ sport: zod.z.string().max(50).optional(),
6946
+ category: zod.z.string().max(50).optional(),
6947
+ tags: zod.z.array(zod.z.string()).optional(),
6948
+ campaign_images: zod.z.array(zod.z.string().uuid()).optional(),
6949
+ campaign_videos: zod.z.array(zod.z.string().uuid()).optional()
6950
+ });
6951
+ var UpdateCampaignSchema = CreateCampaignSchema.extend({
6952
+ id: zod.z.string().uuid()
6953
+ });
6954
+ var PatchCampaignSchema = CreateCampaignSchema.partial().extend({
6955
+ id: zod.z.string().uuid().optional()
6956
+ });
6957
+ var DeleteCampaignSchema = zod.z.object({
6958
+ id: zod.z.string().uuid()
6959
+ });
6960
+ var QueryCampaignSchema = zod.z.object({
6961
+ status: zod.z.nativeEnum(CAMPAIGN_STATUS).optional(),
6962
+ creator_id: zod.z.string().uuid().optional(),
6963
+ sport: zod.z.string().optional(),
6964
+ category: zod.z.string().optional(),
6965
+ location_region: zod.z.string().optional(),
6966
+ limit: zod.z.number().positive().optional(),
6967
+ offset: zod.z.number().min(0).optional()
6968
+ });
6910
6969
 
6911
6970
  // src/logger/enums.ts
6912
6971
  var LOGGER_SERVICES = {
@@ -9189,6 +9248,7 @@ exports.BUSINESS_MODEL = BUSINESS_MODEL;
9189
9248
  exports.CACHE_DURATION_MS = CACHE_DURATION_MS;
9190
9249
  exports.CACHE_EVENTS = CACHE_EVENTS;
9191
9250
  exports.CACHE_STRATEGIES = CACHE_STRATEGIES;
9251
+ exports.CAMPAIGN_STATUS = CAMPAIGN_STATUS;
9192
9252
  exports.CHAIN_ID = CHAIN_ID;
9193
9253
  exports.CHANGE_TYPES = CHANGE_TYPES;
9194
9254
  exports.CLIENT_EVENTS = CLIENT_EVENTS;
@@ -9211,6 +9271,7 @@ exports.CacheEventAction = CacheEventAction;
9211
9271
  exports.ContactUsFormSchema = ContactUsFormSchema;
9212
9272
  exports.CoreEventScope = CoreEventScope;
9213
9273
  exports.CorrelationIdSchema = CorrelationIdSchema;
9274
+ exports.CreateCampaignSchema = CreateCampaignSchema;
9214
9275
  exports.DATABASE_ERROR_CODES = DATABASE_ERROR_CODES;
9215
9276
  exports.DATABASE_EVENT_TYPE = DATABASE_EVENT_TYPE;
9216
9277
  exports.DATABASE_FIELDS = DATABASE_FIELDS;
@@ -9221,6 +9282,7 @@ exports.DEBUG_EVENTS = DEBUG_EVENTS;
9221
9282
  exports.DEFAULT_THRESHOLDS = DEFAULT_THRESHOLDS;
9222
9283
  exports.DOCUMENT_TYPE = DOCUMENT_TYPE;
9223
9284
  exports.DatabaseEventAction = DatabaseEventAction;
9285
+ exports.DeleteCampaignSchema = DeleteCampaignSchema;
9224
9286
  exports.DeviceTokenSchema = DeviceTokenSchema;
9225
9287
  exports.ENCRYPTION_DEFAULTS = ENCRYPTION_DEFAULTS;
9226
9288
  exports.ENTITY_TYPE = ENTITY_TYPE;
@@ -9297,6 +9359,8 @@ exports.MEDIA_EXTENSIONS = MEDIA_EXTENSIONS;
9297
9359
  exports.MEDIA_MIME_PREFIXES = MEDIA_MIME_PREFIXES;
9298
9360
  exports.MEDIA_VARIANT_TYPE = MEDIA_VARIANT_TYPE;
9299
9361
  exports.MFATYPE = MFATYPE;
9362
+ exports.MILESTONE_STATUS = MILESTONE_STATUS;
9363
+ exports.MILESTONE_TRIGGER_TYPE = MILESTONE_TRIGGER_TYPE;
9300
9364
  exports.MIME_TYPES = MIME_TYPES;
9301
9365
  exports.NETWORK_CONFIDENCE_LEVELS = NETWORK_CONFIDENCE_LEVELS;
9302
9366
  exports.NETWORK_EVENTS = NETWORK_EVENTS;
@@ -9337,8 +9401,10 @@ exports.PRODUCT_TYPE = PRODUCT_TYPE;
9337
9401
  exports.PROVIDERTYPE = PROVIDERTYPE;
9338
9402
  exports.PROVIDER_PRODUCT_STATUS = PROVIDER_PRODUCT_STATUS;
9339
9403
  exports.PUB_SUB_EVENT = PUB_SUB_EVENT;
9404
+ exports.PatchCampaignSchema = PatchCampaignSchema;
9340
9405
  exports.PhoneSchema = PhoneSchema;
9341
9406
  exports.QUEUE_OPERATIONS = QUEUE_OPERATIONS;
9407
+ exports.QueryCampaignSchema = QueryCampaignSchema;
9342
9408
  exports.QueuePrioritySchema = QueuePrioritySchema;
9343
9409
  exports.R2EventRecordSchema = R2EventRecordSchema;
9344
9410
  exports.R2WebhookPayloadSchema = R2WebhookPayloadSchema;
@@ -9419,6 +9485,7 @@ exports.USER_ROLE = USER_ROLE;
9419
9485
  exports.USER_ROLE_STATUS = USER_ROLE_STATUS;
9420
9486
  exports.USER_STATUS = USER_STATUS;
9421
9487
  exports.USER_TYPE = USER_TYPE;
9488
+ exports.UpdateCampaignSchema = UpdateCampaignSchema;
9422
9489
  exports.UserIdSchema = UserIdSchema;
9423
9490
  exports.VALIDATION_RANGES = VALIDATION_RANGES;
9424
9491
  exports.ValidationEventAction = ValidationEventAction;