@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.
- package/dist/campaign/enums.d.ts +32 -0
- package/dist/campaign/index.cjs +67 -0
- package/dist/campaign/index.cjs.map +1 -1
- package/dist/campaign/index.d.ts +2 -0
- package/dist/campaign/index.js +60 -1
- package/dist/campaign/index.js.map +1 -1
- package/dist/campaign/schemas.d.ts +75 -0
- package/dist/campaign/types.d.ts +97 -0
- package/dist/index.cjs +67 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +60 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/campaign/enums.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/dist/campaign/index.cjs
CHANGED
|
@@ -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":"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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/**\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});"]}
|
package/dist/campaign/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/campaign/index.js
CHANGED
|
@@ -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>;
|
package/dist/campaign/types.d.ts
CHANGED
|
@@ -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;
|