@plyaz/types 1.35.3 → 1.36.0
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/index.cjs +48 -27
- package/dist/campaign/index.cjs.map +1 -1
- package/dist/campaign/index.d.ts +19 -5
- package/dist/campaign/index.js +47 -27
- package/dist/campaign/index.js.map +1 -1
- package/dist/campaign/schemas.d.ts +77 -3
- package/dist/campaign/types.d.ts +186 -90
- package/dist/core/domain/files/index.d.ts +3 -1
- package/dist/core/domain/files/schemas.d.ts +190 -0
- package/dist/core/domain/files/types.d.ts +5 -67
- package/dist/core/index.cjs +3 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/services/keys.d.ts +3 -1
- package/dist/examples/schemas.d.ts +1 -1
- package/dist/index.cjs +51 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +50 -28
- package/dist/index.js.map +1 -1
- package/dist/store/index.cjs +5 -1
- package/dist/store/index.cjs.map +1 -1
- package/dist/store/index.js +5 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/keys.d.ts +4 -0
- package/package.json +1 -1
package/dist/campaign/index.cjs
CHANGED
|
@@ -7,29 +7,6 @@ var __defProp = Object.defineProperty;
|
|
|
7
7
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
8
|
|
|
9
9
|
// src/campaign/enums.ts
|
|
10
|
-
var CREATE_CAMPAIGN_ERRORS = /* @__PURE__ */ ((CREATE_CAMPAIGN_ERRORS2) => {
|
|
11
|
-
CREATE_CAMPAIGN_ERRORS2["TitleRequired"] = "components.CreateCampaign.Form.errors.titleRequired";
|
|
12
|
-
CREATE_CAMPAIGN_ERRORS2["TitleMax"] = "components.CreateCampaign.Form.errors.titleMax";
|
|
13
|
-
CREATE_CAMPAIGN_ERRORS2["SubtitleRequired"] = "components.CreateCampaign.Form.errors.subtitleRequired";
|
|
14
|
-
CREATE_CAMPAIGN_ERRORS2["SubtitleMax"] = "components.CreateCampaign.Form.errors.subtitleMax";
|
|
15
|
-
CREATE_CAMPAIGN_ERRORS2["CampaignImageRequired"] = "components.CreateCampaign.Form.errors.campaignImageRequired";
|
|
16
|
-
CREATE_CAMPAIGN_ERRORS2["StartDateRequired"] = "components.CreateCampaign.Form.errors.startDateRequired";
|
|
17
|
-
CREATE_CAMPAIGN_ERRORS2["StartDateInvalid"] = "components.CreateCampaign.Form.errors.startDateInvalid";
|
|
18
|
-
CREATE_CAMPAIGN_ERRORS2["StartDateFuture"] = "components.CreateCampaign.Form.errors.startDateFuture";
|
|
19
|
-
CREATE_CAMPAIGN_ERRORS2["DurationRequired"] = "components.CreateCampaign.Form.errors.durationRequired";
|
|
20
|
-
CREATE_CAMPAIGN_ERRORS2["StoryRequired"] = "components.CreateCampaign.Form.errors.storyRequired";
|
|
21
|
-
CREATE_CAMPAIGN_ERRORS2["StoryMax"] = "components.CreateCampaign.Form.errors.storyMax";
|
|
22
|
-
CREATE_CAMPAIGN_ERRORS2["VideoInvalidProvider"] = "components.CreateCampaign.Form.errors.videoInvalidProvider";
|
|
23
|
-
CREATE_CAMPAIGN_ERRORS2["FundingRequired"] = "components.CreateCampaign.Form.errors.fundingRequired";
|
|
24
|
-
CREATE_CAMPAIGN_ERRORS2["FundingRange"] = "components.CreateCampaign.Form.errors.fundingRange";
|
|
25
|
-
CREATE_CAMPAIGN_ERRORS2["InstagramMax"] = "components.CreateCampaign.Form.errors.instagramMax";
|
|
26
|
-
CREATE_CAMPAIGN_ERRORS2["InstagramInvalid"] = "components.CreateCampaign.Form.errors.instagramInvalid";
|
|
27
|
-
CREATE_CAMPAIGN_ERRORS2["TiktokMax"] = "components.CreateCampaign.Form.errors.tiktokMax";
|
|
28
|
-
CREATE_CAMPAIGN_ERRORS2["TiktokInvalid"] = "components.CreateCampaign.Form.errors.tiktokInvalid";
|
|
29
|
-
CREATE_CAMPAIGN_ERRORS2["YoutubeMax"] = "components.CreateCampaign.Form.errors.youtubeMax";
|
|
30
|
-
CREATE_CAMPAIGN_ERRORS2["YoutubeInvalid"] = "components.CreateCampaign.Form.errors.youtubeInvalid";
|
|
31
|
-
return CREATE_CAMPAIGN_ERRORS2;
|
|
32
|
-
})(CREATE_CAMPAIGN_ERRORS || {});
|
|
33
10
|
var CAMPAIGN_STATUS = /* @__PURE__ */ ((CAMPAIGN_STATUS2) => {
|
|
34
11
|
CAMPAIGN_STATUS2["Draft"] = "DRAFT";
|
|
35
12
|
CAMPAIGN_STATUS2["Pending"] = "PENDING";
|
|
@@ -56,6 +33,8 @@ var MILESTONE_STATUS = /* @__PURE__ */ ((MILESTONE_STATUS2) => {
|
|
|
56
33
|
MILESTONE_STATUS2["Completed"] = "COMPLETED";
|
|
57
34
|
return MILESTONE_STATUS2;
|
|
58
35
|
})(MILESTONE_STATUS || {});
|
|
36
|
+
|
|
37
|
+
// src/campaign/schemas.ts
|
|
59
38
|
var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => zod.z.object({
|
|
60
39
|
title: zod.z.string().min(1, "components.CreateCampaign.Form.errors.titleRequired" /* TitleRequired */).max(60, "components.CreateCampaign.Form.errors.titleMax" /* TitleMax */),
|
|
61
40
|
subtitle: zod.z.string().min(1, "components.CreateCampaign.Form.errors.subtitleRequired" /* SubtitleRequired */).max(200, "components.CreateCampaign.Form.errors.subtitleMax" /* SubtitleMax */),
|
|
@@ -123,20 +102,62 @@ var PatchCampaignSchema = CreateCampaignSchema.partial().extend({
|
|
|
123
102
|
id: zod.z.string().uuid().optional()
|
|
124
103
|
});
|
|
125
104
|
var DeleteCampaignSchema = zod.z.object({
|
|
126
|
-
|
|
105
|
+
// Soft delete flag
|
|
106
|
+
soft: zod.z.boolean().default(true),
|
|
107
|
+
// Reason for audit
|
|
108
|
+
reason: zod.z.string().trim().optional()
|
|
127
109
|
});
|
|
128
110
|
var QueryCampaignSchema = zod.z.object({
|
|
111
|
+
// Pagination
|
|
112
|
+
page: zod.z.coerce.number().int().positive().default(1),
|
|
113
|
+
limit: zod.z.coerce.number().int().min(1).max(100).default(20),
|
|
114
|
+
// Sorting
|
|
115
|
+
sort_by: zod.z.enum(["title", "funding_target", "created_at", "updated_at"]).default("created_at"),
|
|
116
|
+
sort_order: zod.z.enum(["asc", "desc"]).default("desc"),
|
|
117
|
+
// Filters
|
|
129
118
|
status: zod.z.nativeEnum(CAMPAIGN_STATUS).optional(),
|
|
130
119
|
creator_id: zod.z.string().uuid().optional(),
|
|
131
120
|
sport: zod.z.string().optional(),
|
|
132
121
|
category: zod.z.string().optional(),
|
|
133
122
|
location_region: zod.z.string().optional(),
|
|
134
|
-
|
|
135
|
-
|
|
123
|
+
// Search
|
|
124
|
+
search: zod.z.string().trim().optional()
|
|
125
|
+
});
|
|
126
|
+
var CampaignResponseSchema = zod.z.object({
|
|
127
|
+
id: zod.z.string().uuid(),
|
|
128
|
+
creator_id: zod.z.string().uuid(),
|
|
129
|
+
title: zod.z.string(),
|
|
130
|
+
subtitle: zod.z.string(),
|
|
131
|
+
story: zod.z.string(),
|
|
132
|
+
funding_target: zod.z.number(),
|
|
133
|
+
status: zod.z.nativeEnum(CAMPAIGN_STATUS),
|
|
134
|
+
campaign_images: zod.z.array(zod.z.string()).optional(),
|
|
135
|
+
start_date: zod.z.string().datetime().optional(),
|
|
136
|
+
duration: zod.z.number().optional(),
|
|
137
|
+
location_region: zod.z.string().optional(),
|
|
138
|
+
location_city: zod.z.string().optional(),
|
|
139
|
+
sport: zod.z.string().optional(),
|
|
140
|
+
category: zod.z.string().optional(),
|
|
141
|
+
tags: zod.z.array(zod.z.string()).optional(),
|
|
142
|
+
campaign_videos: zod.z.array(zod.z.string()).optional(),
|
|
143
|
+
first_contribution_at: zod.z.string().datetime().optional(),
|
|
144
|
+
created_at: zod.z.string().datetime(),
|
|
145
|
+
updated_at: zod.z.string().datetime(),
|
|
146
|
+
deleted_at: zod.z.string().datetime().optional()
|
|
147
|
+
});
|
|
148
|
+
var CampaignListResponseSchema = zod.z.object({
|
|
149
|
+
data: zod.z.array(CampaignResponseSchema),
|
|
150
|
+
meta: zod.z.object({
|
|
151
|
+
page: zod.z.number(),
|
|
152
|
+
limit: zod.z.number(),
|
|
153
|
+
total: zod.z.number(),
|
|
154
|
+
total_pages: zod.z.number()
|
|
155
|
+
})
|
|
136
156
|
});
|
|
137
157
|
|
|
138
158
|
exports.CAMPAIGN_STATUS = CAMPAIGN_STATUS;
|
|
139
|
-
exports.
|
|
159
|
+
exports.CampaignListResponseSchema = CampaignListResponseSchema;
|
|
160
|
+
exports.CampaignResponseSchema = CampaignResponseSchema;
|
|
140
161
|
exports.CreateCampaignSchema = CreateCampaignSchema;
|
|
141
162
|
exports.DeleteCampaignSchema = DeleteCampaignSchema;
|
|
142
163
|
exports.MILESTONE_STATUS = MILESTONE_STATUS;
|
|
@@ -1 +1 @@
|
|
|
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});"]}
|
|
1
|
+
{"version":3,"sources":["../../src/campaign/enums.ts","../../src/campaign/schemas.ts"],"names":["CAMPAIGN_STATUS","MILESTONE_TRIGGER_TYPE","MILESTONE_STATUS","z"],"mappings":";;;;;;;;;AAsDO,IAAK,eAAA,qBAAAA,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;;;AC5DL,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;AAAA,EAE3C,IAAA,EAAMA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA;AAAA;AAAA,EAG9B,QAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,QAAA;AAC5B,CAAC;AAKM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA;AAAA,EAE1C,IAAA,EAAMA,KAAA,CAAE,MAAA,CAAO,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,EAClD,KAAA,EAAOA,KAAA,CAAE,MAAA,CAAO,MAAA,GAAS,GAAA,EAAI,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAQ,EAAE,CAAA;AAAA;AAAA,EAGzD,OAAA,EAASA,KAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,gBAAA,EAAkB,YAAA,EAAc,YAAY,CAAC,CAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC7F,UAAA,EAAYA,MAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA;AAAA,EAGlD,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;AAAA,EAGrC,QAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,QAAA;AAC5B,CAAC;AAKM,IAAM,sBAAA,GAAyBA,MAAE,MAAA,CAAO;AAAA,EAC7C,EAAA,EAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK;AAAA,EACpB,UAAA,EAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK;AAAA,EAC5B,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,EACnB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,EAChB,cAAA,EAAgBA,MAAE,MAAA,EAAO;AAAA,EACzB,MAAA,EAAQA,KAAA,CAAE,UAAA,CAAW,eAAe,CAAA;AAAA,EACpC,iBAAiBA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EAC9C,YAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EAC3C,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,eAAA,EAAiBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACrC,aAAA,EAAeA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,MAAMA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACnC,iBAAiBA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EAC9C,uBAAuBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtD,UAAA,EAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,UAAA,EAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,YAAYA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GAAW,QAAA;AACpC,CAAC;AAKM,IAAM,0BAAA,GAA6BA,MAAE,MAAA,CAAO;AAAA,EACjD,IAAA,EAAMA,KAAA,CAAE,KAAA,CAAM,sBAAsB,CAAA;AAAA,EACpC,IAAA,EAAMA,MAAE,MAAA,CAAO;AAAA,IACb,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,IACf,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,IAChB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,IAChB,WAAA,EAAaA,MAAE,MAAA;AAAO,GACvB;AACH,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}\n","/* eslint-disable no-magic-numbers */\nimport { z } from 'zod';\n\nimport { CREATE_CAMPAIGN_ERRORS as ERR, CAMPAIGN_STATUS } 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\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 // Soft delete flag\n soft: z.boolean().default(true),\n\n // Reason for audit\n reason: z.string().trim().optional(),\n});\n\n/**\n * Query campaign schema\n */\nexport const QueryCampaignSchema = z.object({\n // Pagination\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().min(1).max(100).default(20),\n\n // Sorting\n sort_by: z.enum(['title', 'funding_target', 'created_at', 'updated_at']).default('created_at'),\n sort_order: z.enum(['asc', 'desc']).default('desc'),\n\n // Filters\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\n // Search\n search: z.string().trim().optional(),\n});\n\n/**\n * Campaign response schema (API response shape - snake_case)\n */\nexport const CampaignResponseSchema = z.object({\n id: z.string().uuid(),\n creator_id: z.string().uuid(),\n title: z.string(),\n subtitle: z.string(),\n story: z.string(),\n funding_target: z.number(),\n status: z.nativeEnum(CAMPAIGN_STATUS),\n campaign_images: z.array(z.string()).optional(),\n start_date: z.string().datetime().optional(),\n duration: z.number().optional(),\n location_region: z.string().optional(),\n location_city: z.string().optional(),\n sport: z.string().optional(),\n category: z.string().optional(),\n tags: z.array(z.string()).optional(),\n campaign_videos: z.array(z.string()).optional(),\n first_contribution_at: z.string().datetime().optional(),\n created_at: z.string().datetime(),\n updated_at: z.string().datetime(),\n deleted_at: z.string().datetime().optional(),\n});\n\n/**\n * Campaign list response schema with pagination\n */\nexport const CampaignListResponseSchema = z.object({\n data: z.array(CampaignResponseSchema),\n meta: z.object({\n page: z.number(),\n limit: z.number(),\n total: z.number(),\n total_pages: z.number(),\n }),\n});\n\n/**\n * Type inferred from the campaign form schema for form validation\n */\nexport type FormCampaignData = z.infer<ReturnType<typeof formCampaignSchema>>;\n"]}
|
package/dist/campaign/index.d.ts
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Campaign Domain Types & Schemas
|
|
3
|
+
*
|
|
4
|
+
* Campaign types and schemas for the campaign domain.
|
|
5
|
+
* Used by @plyaz/core for campaign management.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import {
|
|
10
|
+
* CreateCampaignSchema,
|
|
11
|
+
* CreateCampaignDTO,
|
|
12
|
+
* CampaignEntity,
|
|
13
|
+
* } from '@plyaz/types/campaign';
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { CreateCampaignSchema, UpdateCampaignSchema, PatchCampaignSchema, QueryCampaignSchema, DeleteCampaignSchema, CampaignResponseSchema, CampaignListResponseSchema, formCampaignSchema, } from './schemas';
|
|
17
|
+
export type { FormCampaignData } from './schemas';
|
|
18
|
+
export { CAMPAIGN_STATUS, MILESTONE_TRIGGER_TYPE, MILESTONE_STATUS } from './enums';
|
|
19
|
+
export type { CreateCampaignDTO, UpdateCampaignDTO, PatchCampaignDTO, QueryCampaignDTO, DeleteCampaignDTO, CampaignResponseDTO, CampaignListResponseDTO, CampaignEntity, CampaignStoreItem, CampaignStoreState, CampaignCreatedPayload, CampaignUpdatedPayload, CampaignDeletedPayload, CampaignValidationFailedPayload, CampaignFrontendStoreData, CampaignFrontendStoreState, CampaignFrontendStoreActions, CampaignFrontendStoreSlice, CampaignFrontendServiceConfig, CampaignFrontendEventType, CampaignDomainServiceConfig, OverviewDataItem, OverviewData, FormCampaignDataInterface, DraftCampaignData, } from './types';
|
package/dist/campaign/index.js
CHANGED
|
@@ -5,29 +5,6 @@ var __defProp = Object.defineProperty;
|
|
|
5
5
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
6
|
|
|
7
7
|
// src/campaign/enums.ts
|
|
8
|
-
var CREATE_CAMPAIGN_ERRORS = /* @__PURE__ */ ((CREATE_CAMPAIGN_ERRORS2) => {
|
|
9
|
-
CREATE_CAMPAIGN_ERRORS2["TitleRequired"] = "components.CreateCampaign.Form.errors.titleRequired";
|
|
10
|
-
CREATE_CAMPAIGN_ERRORS2["TitleMax"] = "components.CreateCampaign.Form.errors.titleMax";
|
|
11
|
-
CREATE_CAMPAIGN_ERRORS2["SubtitleRequired"] = "components.CreateCampaign.Form.errors.subtitleRequired";
|
|
12
|
-
CREATE_CAMPAIGN_ERRORS2["SubtitleMax"] = "components.CreateCampaign.Form.errors.subtitleMax";
|
|
13
|
-
CREATE_CAMPAIGN_ERRORS2["CampaignImageRequired"] = "components.CreateCampaign.Form.errors.campaignImageRequired";
|
|
14
|
-
CREATE_CAMPAIGN_ERRORS2["StartDateRequired"] = "components.CreateCampaign.Form.errors.startDateRequired";
|
|
15
|
-
CREATE_CAMPAIGN_ERRORS2["StartDateInvalid"] = "components.CreateCampaign.Form.errors.startDateInvalid";
|
|
16
|
-
CREATE_CAMPAIGN_ERRORS2["StartDateFuture"] = "components.CreateCampaign.Form.errors.startDateFuture";
|
|
17
|
-
CREATE_CAMPAIGN_ERRORS2["DurationRequired"] = "components.CreateCampaign.Form.errors.durationRequired";
|
|
18
|
-
CREATE_CAMPAIGN_ERRORS2["StoryRequired"] = "components.CreateCampaign.Form.errors.storyRequired";
|
|
19
|
-
CREATE_CAMPAIGN_ERRORS2["StoryMax"] = "components.CreateCampaign.Form.errors.storyMax";
|
|
20
|
-
CREATE_CAMPAIGN_ERRORS2["VideoInvalidProvider"] = "components.CreateCampaign.Form.errors.videoInvalidProvider";
|
|
21
|
-
CREATE_CAMPAIGN_ERRORS2["FundingRequired"] = "components.CreateCampaign.Form.errors.fundingRequired";
|
|
22
|
-
CREATE_CAMPAIGN_ERRORS2["FundingRange"] = "components.CreateCampaign.Form.errors.fundingRange";
|
|
23
|
-
CREATE_CAMPAIGN_ERRORS2["InstagramMax"] = "components.CreateCampaign.Form.errors.instagramMax";
|
|
24
|
-
CREATE_CAMPAIGN_ERRORS2["InstagramInvalid"] = "components.CreateCampaign.Form.errors.instagramInvalid";
|
|
25
|
-
CREATE_CAMPAIGN_ERRORS2["TiktokMax"] = "components.CreateCampaign.Form.errors.tiktokMax";
|
|
26
|
-
CREATE_CAMPAIGN_ERRORS2["TiktokInvalid"] = "components.CreateCampaign.Form.errors.tiktokInvalid";
|
|
27
|
-
CREATE_CAMPAIGN_ERRORS2["YoutubeMax"] = "components.CreateCampaign.Form.errors.youtubeMax";
|
|
28
|
-
CREATE_CAMPAIGN_ERRORS2["YoutubeInvalid"] = "components.CreateCampaign.Form.errors.youtubeInvalid";
|
|
29
|
-
return CREATE_CAMPAIGN_ERRORS2;
|
|
30
|
-
})(CREATE_CAMPAIGN_ERRORS || {});
|
|
31
8
|
var CAMPAIGN_STATUS = /* @__PURE__ */ ((CAMPAIGN_STATUS2) => {
|
|
32
9
|
CAMPAIGN_STATUS2["Draft"] = "DRAFT";
|
|
33
10
|
CAMPAIGN_STATUS2["Pending"] = "PENDING";
|
|
@@ -54,6 +31,8 @@ var MILESTONE_STATUS = /* @__PURE__ */ ((MILESTONE_STATUS2) => {
|
|
|
54
31
|
MILESTONE_STATUS2["Completed"] = "COMPLETED";
|
|
55
32
|
return MILESTONE_STATUS2;
|
|
56
33
|
})(MILESTONE_STATUS || {});
|
|
34
|
+
|
|
35
|
+
// src/campaign/schemas.ts
|
|
57
36
|
var formCampaignSchema = /* @__PURE__ */ __name(({ maxFunding }) => z.object({
|
|
58
37
|
title: z.string().min(1, "components.CreateCampaign.Form.errors.titleRequired" /* TitleRequired */).max(60, "components.CreateCampaign.Form.errors.titleMax" /* TitleMax */),
|
|
59
38
|
subtitle: z.string().min(1, "components.CreateCampaign.Form.errors.subtitleRequired" /* SubtitleRequired */).max(200, "components.CreateCampaign.Form.errors.subtitleMax" /* SubtitleMax */),
|
|
@@ -121,18 +100,59 @@ var PatchCampaignSchema = CreateCampaignSchema.partial().extend({
|
|
|
121
100
|
id: z.string().uuid().optional()
|
|
122
101
|
});
|
|
123
102
|
var DeleteCampaignSchema = z.object({
|
|
124
|
-
|
|
103
|
+
// Soft delete flag
|
|
104
|
+
soft: z.boolean().default(true),
|
|
105
|
+
// Reason for audit
|
|
106
|
+
reason: z.string().trim().optional()
|
|
125
107
|
});
|
|
126
108
|
var QueryCampaignSchema = z.object({
|
|
109
|
+
// Pagination
|
|
110
|
+
page: z.coerce.number().int().positive().default(1),
|
|
111
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
112
|
+
// Sorting
|
|
113
|
+
sort_by: z.enum(["title", "funding_target", "created_at", "updated_at"]).default("created_at"),
|
|
114
|
+
sort_order: z.enum(["asc", "desc"]).default("desc"),
|
|
115
|
+
// Filters
|
|
127
116
|
status: z.nativeEnum(CAMPAIGN_STATUS).optional(),
|
|
128
117
|
creator_id: z.string().uuid().optional(),
|
|
129
118
|
sport: z.string().optional(),
|
|
130
119
|
category: z.string().optional(),
|
|
131
120
|
location_region: z.string().optional(),
|
|
132
|
-
|
|
133
|
-
|
|
121
|
+
// Search
|
|
122
|
+
search: z.string().trim().optional()
|
|
123
|
+
});
|
|
124
|
+
var CampaignResponseSchema = z.object({
|
|
125
|
+
id: z.string().uuid(),
|
|
126
|
+
creator_id: z.string().uuid(),
|
|
127
|
+
title: z.string(),
|
|
128
|
+
subtitle: z.string(),
|
|
129
|
+
story: z.string(),
|
|
130
|
+
funding_target: z.number(),
|
|
131
|
+
status: z.nativeEnum(CAMPAIGN_STATUS),
|
|
132
|
+
campaign_images: z.array(z.string()).optional(),
|
|
133
|
+
start_date: z.string().datetime().optional(),
|
|
134
|
+
duration: z.number().optional(),
|
|
135
|
+
location_region: z.string().optional(),
|
|
136
|
+
location_city: z.string().optional(),
|
|
137
|
+
sport: z.string().optional(),
|
|
138
|
+
category: z.string().optional(),
|
|
139
|
+
tags: z.array(z.string()).optional(),
|
|
140
|
+
campaign_videos: z.array(z.string()).optional(),
|
|
141
|
+
first_contribution_at: z.string().datetime().optional(),
|
|
142
|
+
created_at: z.string().datetime(),
|
|
143
|
+
updated_at: z.string().datetime(),
|
|
144
|
+
deleted_at: z.string().datetime().optional()
|
|
145
|
+
});
|
|
146
|
+
var CampaignListResponseSchema = z.object({
|
|
147
|
+
data: z.array(CampaignResponseSchema),
|
|
148
|
+
meta: z.object({
|
|
149
|
+
page: z.number(),
|
|
150
|
+
limit: z.number(),
|
|
151
|
+
total: z.number(),
|
|
152
|
+
total_pages: z.number()
|
|
153
|
+
})
|
|
134
154
|
});
|
|
135
155
|
|
|
136
|
-
export { CAMPAIGN_STATUS,
|
|
156
|
+
export { CAMPAIGN_STATUS, CampaignListResponseSchema, CampaignResponseSchema, CreateCampaignSchema, DeleteCampaignSchema, MILESTONE_STATUS, MILESTONE_TRIGGER_TYPE, PatchCampaignSchema, QueryCampaignSchema, UpdateCampaignSchema, formCampaignSchema };
|
|
137
157
|
//# sourceMappingURL=index.js.map
|
|
138
158
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"version":3,"sources":["../../src/campaign/enums.ts","../../src/campaign/schemas.ts"],"names":["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}\n","/* eslint-disable no-magic-numbers */\nimport { z } from 'zod';\n\nimport { CREATE_CAMPAIGN_ERRORS as ERR, CAMPAIGN_STATUS } 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\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 // Soft delete flag\n soft: z.boolean().default(true),\n\n // Reason for audit\n reason: z.string().trim().optional(),\n});\n\n/**\n * Query campaign schema\n */\nexport const QueryCampaignSchema = z.object({\n // Pagination\n page: z.coerce.number().int().positive().default(1),\n limit: z.coerce.number().int().min(1).max(100).default(20),\n\n // Sorting\n sort_by: z.enum(['title', 'funding_target', 'created_at', 'updated_at']).default('created_at'),\n sort_order: z.enum(['asc', 'desc']).default('desc'),\n\n // Filters\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\n // Search\n search: z.string().trim().optional(),\n});\n\n/**\n * Campaign response schema (API response shape - snake_case)\n */\nexport const CampaignResponseSchema = z.object({\n id: z.string().uuid(),\n creator_id: z.string().uuid(),\n title: z.string(),\n subtitle: z.string(),\n story: z.string(),\n funding_target: z.number(),\n status: z.nativeEnum(CAMPAIGN_STATUS),\n campaign_images: z.array(z.string()).optional(),\n start_date: z.string().datetime().optional(),\n duration: z.number().optional(),\n location_region: z.string().optional(),\n location_city: z.string().optional(),\n sport: z.string().optional(),\n category: z.string().optional(),\n tags: z.array(z.string()).optional(),\n campaign_videos: z.array(z.string()).optional(),\n first_contribution_at: z.string().datetime().optional(),\n created_at: z.string().datetime(),\n updated_at: z.string().datetime(),\n deleted_at: z.string().datetime().optional(),\n});\n\n/**\n * Campaign list response schema with pagination\n */\nexport const CampaignListResponseSchema = z.object({\n data: z.array(CampaignResponseSchema),\n meta: z.object({\n page: z.number(),\n limit: z.number(),\n total: z.number(),\n total_pages: z.number(),\n }),\n});\n\n/**\n * Type inferred from the campaign form schema for form validation\n */\nexport type FormCampaignData = z.infer<ReturnType<typeof formCampaignSchema>>;\n"]}
|
|
@@ -87,17 +87,91 @@ export declare const PatchCampaignSchema: z.ZodObject<{
|
|
|
87
87
|
* Delete campaign schema
|
|
88
88
|
*/
|
|
89
89
|
export declare const DeleteCampaignSchema: z.ZodObject<{
|
|
90
|
-
|
|
90
|
+
soft: z.ZodDefault<z.ZodBoolean>;
|
|
91
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
91
92
|
}, z.core.$strip>;
|
|
92
93
|
/**
|
|
93
94
|
* Query campaign schema
|
|
94
95
|
*/
|
|
95
96
|
export declare const QueryCampaignSchema: z.ZodObject<{
|
|
97
|
+
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
98
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
99
|
+
sort_by: z.ZodDefault<z.ZodEnum<{
|
|
100
|
+
created_at: "created_at";
|
|
101
|
+
updated_at: "updated_at";
|
|
102
|
+
title: "title";
|
|
103
|
+
funding_target: "funding_target";
|
|
104
|
+
}>>;
|
|
105
|
+
sort_order: z.ZodDefault<z.ZodEnum<{
|
|
106
|
+
asc: "asc";
|
|
107
|
+
desc: "desc";
|
|
108
|
+
}>>;
|
|
96
109
|
status: z.ZodOptional<z.ZodEnum<typeof CAMPAIGN_STATUS>>;
|
|
97
110
|
creator_id: z.ZodOptional<z.ZodString>;
|
|
98
111
|
sport: z.ZodOptional<z.ZodString>;
|
|
99
112
|
category: z.ZodOptional<z.ZodString>;
|
|
100
113
|
location_region: z.ZodOptional<z.ZodString>;
|
|
101
|
-
|
|
102
|
-
offset: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
search: z.ZodOptional<z.ZodString>;
|
|
103
115
|
}, z.core.$strip>;
|
|
116
|
+
/**
|
|
117
|
+
* Campaign response schema (API response shape - snake_case)
|
|
118
|
+
*/
|
|
119
|
+
export declare const CampaignResponseSchema: z.ZodObject<{
|
|
120
|
+
id: z.ZodString;
|
|
121
|
+
creator_id: z.ZodString;
|
|
122
|
+
title: z.ZodString;
|
|
123
|
+
subtitle: z.ZodString;
|
|
124
|
+
story: z.ZodString;
|
|
125
|
+
funding_target: z.ZodNumber;
|
|
126
|
+
status: z.ZodEnum<typeof CAMPAIGN_STATUS>;
|
|
127
|
+
campaign_images: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
128
|
+
start_date: z.ZodOptional<z.ZodString>;
|
|
129
|
+
duration: z.ZodOptional<z.ZodNumber>;
|
|
130
|
+
location_region: z.ZodOptional<z.ZodString>;
|
|
131
|
+
location_city: z.ZodOptional<z.ZodString>;
|
|
132
|
+
sport: z.ZodOptional<z.ZodString>;
|
|
133
|
+
category: z.ZodOptional<z.ZodString>;
|
|
134
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
135
|
+
campaign_videos: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
136
|
+
first_contribution_at: z.ZodOptional<z.ZodString>;
|
|
137
|
+
created_at: z.ZodString;
|
|
138
|
+
updated_at: z.ZodString;
|
|
139
|
+
deleted_at: z.ZodOptional<z.ZodString>;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
/**
|
|
142
|
+
* Campaign list response schema with pagination
|
|
143
|
+
*/
|
|
144
|
+
export declare const CampaignListResponseSchema: z.ZodObject<{
|
|
145
|
+
data: z.ZodArray<z.ZodObject<{
|
|
146
|
+
id: z.ZodString;
|
|
147
|
+
creator_id: z.ZodString;
|
|
148
|
+
title: z.ZodString;
|
|
149
|
+
subtitle: z.ZodString;
|
|
150
|
+
story: z.ZodString;
|
|
151
|
+
funding_target: z.ZodNumber;
|
|
152
|
+
status: z.ZodEnum<typeof CAMPAIGN_STATUS>;
|
|
153
|
+
campaign_images: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
154
|
+
start_date: z.ZodOptional<z.ZodString>;
|
|
155
|
+
duration: z.ZodOptional<z.ZodNumber>;
|
|
156
|
+
location_region: z.ZodOptional<z.ZodString>;
|
|
157
|
+
location_city: z.ZodOptional<z.ZodString>;
|
|
158
|
+
sport: z.ZodOptional<z.ZodString>;
|
|
159
|
+
category: z.ZodOptional<z.ZodString>;
|
|
160
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
161
|
+
campaign_videos: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
162
|
+
first_contribution_at: z.ZodOptional<z.ZodString>;
|
|
163
|
+
created_at: z.ZodString;
|
|
164
|
+
updated_at: z.ZodString;
|
|
165
|
+
deleted_at: z.ZodOptional<z.ZodString>;
|
|
166
|
+
}, z.core.$strip>>;
|
|
167
|
+
meta: z.ZodObject<{
|
|
168
|
+
page: z.ZodNumber;
|
|
169
|
+
limit: z.ZodNumber;
|
|
170
|
+
total: z.ZodNumber;
|
|
171
|
+
total_pages: z.ZodNumber;
|
|
172
|
+
}, z.core.$strip>;
|
|
173
|
+
}, z.core.$strip>;
|
|
174
|
+
/**
|
|
175
|
+
* Type inferred from the campaign form schema for form validation
|
|
176
|
+
*/
|
|
177
|
+
export type FormCampaignData = z.infer<ReturnType<typeof formCampaignSchema>>;
|