@vicacha-devs/strapi-plugin-events 0.0.0-stage → 1.0.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.
Files changed (89) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +121 -2
  3. package/dist/admin/CalendarPage-CwCvPDRx.js +1215 -0
  4. package/dist/admin/CalendarPage-Dz7g19qp.mjs +1215 -0
  5. package/dist/admin/RRuleInput-BQl-siRj.js +11 -0
  6. package/dist/admin/RRuleInput-C8bR37X9.mjs +6 -0
  7. package/dist/admin/SettingsPage-CNG9AEO_.mjs +415 -0
  8. package/dist/admin/SettingsPage-DhjtKDmY.js +415 -0
  9. package/dist/admin/ar-mMKUXxch.js +216 -0
  10. package/dist/admin/ar-tWKEvJLB.mjs +216 -0
  11. package/dist/admin/de-CGk8UZ3W.js +216 -0
  12. package/dist/admin/de-OdbJEFs0.mjs +216 -0
  13. package/dist/admin/en-Dskn9ZPa.mjs +216 -0
  14. package/dist/admin/en-imdSlLhJ.js +216 -0
  15. package/dist/admin/es-DcMsMHrI.mjs +216 -0
  16. package/dist/admin/es-DkqqxUJQ.js +216 -0
  17. package/dist/admin/fr-BTEIPOFw.mjs +216 -0
  18. package/dist/admin/fr-D92B_ZTv.js +216 -0
  19. package/dist/admin/index-BTq_X4uT.js +1005 -0
  20. package/dist/admin/index-BatOiwBu.mjs +1006 -0
  21. package/dist/admin/index.js +6 -0
  22. package/dist/admin/index.mjs +6 -0
  23. package/dist/admin/it-CAxPpL_9.mjs +216 -0
  24. package/dist/admin/it-ClKaSCgv.js +216 -0
  25. package/dist/admin/nl-CS1aUfT7.mjs +216 -0
  26. package/dist/admin/nl-F6FIi7zw.js +216 -0
  27. package/dist/admin/pl-BfmBU9FW.mjs +216 -0
  28. package/dist/admin/pl-p8VLXi02.js +216 -0
  29. package/dist/admin/pt-BUdH0uSw.js +216 -0
  30. package/dist/admin/pt-DdulKcbk.mjs +216 -0
  31. package/dist/admin/src/components/EventSidePanel.d.ts +13 -0
  32. package/dist/admin/src/components/Initializer.d.ts +5 -0
  33. package/dist/admin/src/components/PluginIcon.d.ts +2 -0
  34. package/dist/admin/src/components/RRuleInput.d.ts +3 -0
  35. package/dist/admin/src/components/events/AttendeesManagerPanel.d.ts +15 -0
  36. package/dist/admin/src/components/events/EventsDirectoryPanel.d.ts +11 -0
  37. package/dist/admin/src/components/events/EventsKpiCards.d.ts +16 -0
  38. package/dist/admin/src/components/events/QuickCreateEventPanel.d.ts +21 -0
  39. package/dist/admin/src/components/events/calendarPageHelpers.d.ts +8 -0
  40. package/dist/admin/src/fields/rruleField.d.ts +41 -0
  41. package/dist/admin/src/index.d.ts +15 -0
  42. package/dist/admin/src/pages/CalendarPage.d.ts +3 -0
  43. package/dist/admin/src/pages/SettingsPage.d.ts +3 -0
  44. package/dist/admin/src/permissions.d.ts +15 -0
  45. package/dist/admin/src/translations/cmLabels.d.ts +1 -0
  46. package/dist/admin/src/translations/cmPlaceholders.d.ts +1 -0
  47. package/dist/admin/tr-Bp50qvL8.mjs +216 -0
  48. package/dist/admin/tr-C7G9mPtg.js +216 -0
  49. package/dist/server/index.js +3709 -0
  50. package/dist/server/index.mjs +3705 -0
  51. package/dist/server/src/bootstrap.d.ts +5 -0
  52. package/dist/server/src/config/index.d.ts +7 -0
  53. package/dist/server/src/content-types/event/schema.json.d.ts +279 -0
  54. package/dist/server/src/content-types/index.d.ts +366 -0
  55. package/dist/server/src/content-types/registration/schema.json.d.ts +86 -0
  56. package/dist/server/src/controllers/admin.d.ts +17 -0
  57. package/dist/server/src/controllers/content-api.d.ts +14 -0
  58. package/dist/server/src/controllers/index.d.ts +28 -0
  59. package/dist/server/src/destroy.d.ts +5 -0
  60. package/dist/server/src/index.d.ts +551 -0
  61. package/dist/server/src/middlewares/index.d.ts +2 -0
  62. package/dist/server/src/policies/index.d.ts +2 -0
  63. package/dist/server/src/register.d.ts +5 -0
  64. package/dist/server/src/routes/admin.d.ts +17 -0
  65. package/dist/server/src/routes/content-api.d.ts +12 -0
  66. package/dist/server/src/routes/index.d.ts +30 -0
  67. package/dist/server/src/services/ical.d.ts +18 -0
  68. package/dist/server/src/services/index.d.ts +110 -0
  69. package/dist/server/src/services/occurrence.d.ts +44 -0
  70. package/dist/server/src/services/occurrenceHelpers.d.ts +16 -0
  71. package/dist/server/src/services/occurrencePayloadHelpers.d.ts +30 -0
  72. package/dist/server/src/services/occurrenceRsvpBatch.d.ts +25 -0
  73. package/dist/server/src/services/rsvp.d.ts +51 -0
  74. package/dist/server/src/services/rsvpHelpers.d.ts +52 -0
  75. package/dist/server/src/services/rsvpMutations.d.ts +34 -0
  76. package/dist/server/src/services/rsvpSecurity.d.ts +22 -0
  77. package/dist/server/src/services/settings.d.ts +10 -0
  78. package/dist/server/src/types.d.ts +171 -0
  79. package/dist/shared/calendarSystems.d.ts +6 -0
  80. package/dist/shared/icalGenerator.d.ts +25 -0
  81. package/dist/shared/index.d.ts +6 -0
  82. package/dist/shared/index.js +753 -0
  83. package/dist/shared/index.mjs +727 -0
  84. package/dist/shared/pluginId.d.ts +4 -0
  85. package/dist/shared/rruleEngine.d.ts +20 -0
  86. package/dist/shared/spotlightHelpers.d.ts +17 -0
  87. package/dist/shared/types.d.ts +309 -0
  88. package/dist/shared/urlAndPosterHelpers.d.ts +18 -0
  89. package/package.json +109 -3
@@ -0,0 +1,4 @@
1
+ export declare const PLUGIN_ID = "events";
2
+ export declare const RRULE_CUSTOM_FIELD_UID = "plugin::events.rrule";
3
+ export declare const EVENT_CONTENT_TYPE_UID = "plugin::events.event";
4
+ export declare const REGISTRATION_CONTENT_TYPE_UID = "plugin::events.registration";
@@ -0,0 +1,20 @@
1
+ import { ExpandedSlot, parseRRule } from '../../strapi-plugin-calendar/shared/index.ts';
2
+ import { OccurrenceOverride, ParsedRRule, RRuleFieldValue } from './types';
3
+ export type RawOccurrenceSlot = ExpandedSlot;
4
+ export { parseRRule };
5
+ export declare function isValidCalendarDateKey(dateStr: string): boolean;
6
+ export declare function toDateKey(dateInput: Date | string): string;
7
+ export declare function normalizeRRuleString(raw: string | undefined | null): string;
8
+ export declare function sanitizeOccurrenceOverrides(rawOverrides: Record<string, OccurrenceOverride> | undefined): Record<string, OccurrenceOverride>;
9
+ export declare function sanitizeRRuleFieldValue(rec: RRuleFieldValue | null | undefined, defaultTimezone?: string): RRuleFieldValue;
10
+ export declare function parseRRuleFieldValue(raw: unknown, defaultTimezone?: string): RRuleFieldValue;
11
+ export declare function buildRRule(parsed: Partial<ParsedRRule>): string;
12
+ export declare function describeRRule(rruleString: string | undefined | null): string;
13
+ export declare function expandRuleSlots(options: {
14
+ baseStartDate: string;
15
+ baseEndDate?: string | null;
16
+ recurrence: RRuleFieldValue;
17
+ windowStart: string | Date;
18
+ windowEnd: string | Date;
19
+ maxInstances?: number;
20
+ }): RawOccurrenceSlot[];
@@ -0,0 +1,17 @@
1
+ import { EventLifecycleStatus, EventSourceMapping, EventSpotlightConfig, ExpandedOccurrence } from './types';
2
+ import { isSafeObjectKey, normalizeEventActionLinks, normalizeEventPoster, sanitizeEventUrl, sanitizePlainRecord } from './urlAndPosterHelpers';
3
+ export { isSafeObjectKey, normalizeEventActionLinks, normalizeEventPoster, sanitizeEventUrl, sanitizePlainRecord, };
4
+ export declare function normalizeEventSpotlightConfig(rawConfig: unknown): EventSpotlightConfig | undefined;
5
+ export declare function isEventSpotlightActiveOnDate(params: {
6
+ spotlightConfig?: EventSpotlightConfig;
7
+ eventStartDate: string;
8
+ eventEndDate?: string | null;
9
+ referenceDate?: string | Date;
10
+ }): boolean;
11
+ export declare function deduplicateAndSortSpotlights(occurrences: ExpandedOccurrence[]): ExpandedOccurrence[];
12
+ export declare function resolveStartEndFromDocument(doc: Record<string, unknown>, source: EventSourceMapping): {
13
+ startDate: string;
14
+ endDate: string | null;
15
+ allDay: boolean;
16
+ } | null;
17
+ export declare function mapEventStatus(rawStatus: unknown): EventLifecycleStatus;
@@ -0,0 +1,309 @@
1
+ export type RRuleFrequency = "NONE" | "DAILY" | "WEEKLY" | "MONTHLY" | "YEARLY";
2
+ export type RRuleWeekday = "MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU";
3
+ export type EventLifecycleStatus = "scheduled" | "cancelled" | "postponed" | "rescheduled";
4
+ export type EventLocationType = "in_person" | "online" | "hybrid";
5
+ export type RsvpStatus = "confirmed" | "waitlisted" | "cancelled" | "checked_in";
6
+ export interface OccurrenceOverride {
7
+ /** Original occurrence ISO date (YYYY-MM-DD) */
8
+ originalDate: string;
9
+ /** Whether this specific occurrence is cancelled */
10
+ cancelled?: boolean;
11
+ /** Optional overridden start ISO datetime */
12
+ startDate?: string;
13
+ /** Optional overridden end ISO datetime */
14
+ endDate?: string;
15
+ /** Optional overridden title for this occurrence */
16
+ title?: string;
17
+ /** Optional overridden location for this occurrence */
18
+ location?: string;
19
+ /** Optional note for attendees on this occurrence */
20
+ note?: string;
21
+ }
22
+ export interface RRuleFieldValue {
23
+ /** RFC 5545 RRULE string (e.g. "FREQ=WEEKLY;INTERVAL=1;BYDAY=FR") or empty string for non-recurring */
24
+ rrule: string;
25
+ /** IANA timezone identifier (e.g. "UTC", "America/New_York", "America/Bogota") */
26
+ timezone: string;
27
+ /** Whether the event spans full days */
28
+ allDay?: boolean;
29
+ /** Excluded occurrence dates in YYYY-MM-DD format */
30
+ exdates?: string[];
31
+ /** Per-occurrence overrides keyed by YYYY-MM-DD */
32
+ overrides?: Record<string, OccurrenceOverride>;
33
+ }
34
+ export interface ParsedRRule {
35
+ freq: RRuleFrequency;
36
+ interval: number;
37
+ byDay: RRuleWeekday[];
38
+ byMonthDay?: number;
39
+ count?: number;
40
+ until?: string;
41
+ }
42
+ export interface TimeSlotWindow {
43
+ /** Start time in HH:mm:ss format (e.g. "09:00:00") */
44
+ start: string;
45
+ /** End time in HH:mm:ss format (e.g. "11:00:00") */
46
+ end: string;
47
+ }
48
+ export interface CalendarSystemConfig {
49
+ /** Unique identifier for this calendar system (e.g. "hijri", "hebrew", "persian", "fiscal") */
50
+ id: string;
51
+ /** Human-readable display label (e.g. "Hijri (Umm al-Qura)", "Hebrew", "Persian") */
52
+ label: string;
53
+ /** Unicode BCP 47 calendar identifier (e.g. "islamic-umalqura", "hebrew", "persian", "buddhist", "chinese") or custom formatter ID */
54
+ intlCalendar: string;
55
+ /** Optional BCP 47 locale tag for formatting (defaults to current request/UI locale) */
56
+ locale?: string;
57
+ /** Optional day offset (-2 to +2) for lunar sighting or regional adjustments */
58
+ dayOffset?: number;
59
+ /** Optional document field name that overrides the auto-computed date when non-empty (e.g. "hijriDate") */
60
+ overrideField?: string;
61
+ /** Whether this calendar system is active in the Admin Calendar & Occurrence APIs */
62
+ enabled: boolean;
63
+ }
64
+ export type CalendarSystemFormatterFn = (date: Date, context: {
65
+ locale: string;
66
+ system: CalendarSystemConfig;
67
+ compact: boolean;
68
+ }) => string;
69
+ export interface AlternateDateValue {
70
+ calendarId: string;
71
+ label: string;
72
+ formatted: string;
73
+ compact?: string;
74
+ intlCalendar?: string;
75
+ isOverridden?: boolean;
76
+ }
77
+ export interface EventPosterAsset {
78
+ /** Safe relative or https/http URL to the poster image or document */
79
+ url: string;
80
+ /** Accessible alt text for the poster */
81
+ alt?: string;
82
+ /** MIME type (e.g., "image/webp", "image/jpeg", "application/pdf") */
83
+ mime?: string;
84
+ /** Intrinsic width in pixels if available */
85
+ width?: number;
86
+ /** Intrinsic height in pixels if available */
87
+ height?: number;
88
+ }
89
+ export type EventActionLinkVariant = "primary" | "secondary" | "outline";
90
+ export interface EventActionLink {
91
+ /** Human-readable CTA button or resource link label */
92
+ label: string;
93
+ /** Safe destination URL (https://, http://, mailto:, or relative /path) */
94
+ url: string;
95
+ /** Visual button style variant */
96
+ variant?: EventActionLinkVariant;
97
+ /** Whether the link opens in a new tab with rel="noopener noreferrer" */
98
+ external?: boolean;
99
+ /** Optional icon identifier */
100
+ icon?: string;
101
+ }
102
+ export type EventSpotlightPosition = "bottom-end" | "bottom-start";
103
+ export interface EventSpotlightConfig {
104
+ /** Whether this event is promoted in the floating Spotlight corner dock */
105
+ enabled: boolean;
106
+ /** Optional generic badge label (e.g. "Open Registration", "Featured", "Convocatoria") */
107
+ badgeText?: string;
108
+ /** Sorting priority in the dock when multiple spotlights are active (higher = first) */
109
+ priority?: number;
110
+ /** Logical corner placement (supports LTR and RTL layouts) */
111
+ position?: EventSpotlightPosition;
112
+ /** Whether to display a live remaining-days countdown badge until endAt/endDate */
113
+ showCountdown?: boolean;
114
+ /** Optional ISO date/datetime when the spotlight starts appearing (defaults to startDate) */
115
+ startAt?: string;
116
+ /** Optional ISO date/datetime when the spotlight stops appearing (defaults to endDate) */
117
+ endAt?: string;
118
+ }
119
+ export interface EventSourceMapping {
120
+ /** Unique identifier for this source mapping (e.g. "builtin-events", "workshops", "bookings") */
121
+ id: string;
122
+ /** Human-readable label shown in Calendar filter pills */
123
+ label: string;
124
+ /** Strapi Content-Type UID (e.g. "plugin::events.event", "api::event.event") */
125
+ uid: string;
126
+ /** Hex color used on the calendar grid (e.g. "#0D9488") */
127
+ color: string;
128
+ /** Whether this source is enabled on the calendar & occurrence APIs */
129
+ enabled: boolean;
130
+ /** Field mapping on the target collection type */
131
+ fields: {
132
+ title: string;
133
+ startDate: string;
134
+ endDate?: string;
135
+ rrule?: string;
136
+ location?: string;
137
+ category?: string;
138
+ status?: string;
139
+ summary?: string;
140
+ slug?: string;
141
+ capacity?: string;
142
+ rsvpEnabled?: string;
143
+ timeSlot?: string;
144
+ /** Optional field name for the event poster media or asset object */
145
+ poster?: string;
146
+ /** Optional field name for structured CTA / resource links JSON array */
147
+ actionLinks?: string;
148
+ /** Optional field name for floating corner spotlight configuration JSON */
149
+ spotlightConfig?: string;
150
+ /** Optional mapping of calendar system IDs to document override fields (e.g. { hijri: "hijriDate" }) */
151
+ alternateDateFields?: Record<string, string>;
152
+ /** Optional list of custom document attributes to pass through onto each ExpandedOccurrence */
153
+ customFields?: string[];
154
+ };
155
+ /** Optional custom mapping from timeSlot enum values to start/end times */
156
+ timeSlotMap?: Record<string, TimeSlotWindow>;
157
+ /** Optional category-to-color overrides */
158
+ categoryColors?: Record<string, string>;
159
+ /** Default allDay flag when endDate is omitted and startDate is date-only */
160
+ defaultAllDay?: boolean;
161
+ }
162
+ export interface RecurrencePreset {
163
+ /** Unique identifier for the preset (e.g. "daily", "weekly-fri") */
164
+ id: string;
165
+ /** Human-readable preset label */
166
+ label: string;
167
+ /** RFC 5545 RRULE string */
168
+ rrule: string;
169
+ }
170
+ export interface SchemaExtensionsConfig {
171
+ /** Additional Strapi attributes merged into `plugin::events.event` during register() */
172
+ event?: Record<string, Record<string, unknown>>;
173
+ /** Additional Strapi attributes merged into `plugin::events.registration` during register() */
174
+ registration?: Record<string, Record<string, unknown>>;
175
+ }
176
+ export interface EventsPluginSettings {
177
+ /** Default IANA timezone (e.g. "UTC") */
178
+ defaultTimezone: string;
179
+ /** Optional default locale for querying localized event sources (e.g. "es", "en", "auto") */
180
+ defaultLocale?: string;
181
+ /** Default seat capacity when RSVP is enabled on an event */
182
+ defaultCapacity: number;
183
+ /** Automatically place excess registrations on the waitlist when capacity is full */
184
+ waitlistEnabledByDefault: boolean;
185
+ /** Maximum party size per single registration */
186
+ defaultMaxGuestsPerRegistration: number;
187
+ /** Send confirmation / waitlist promotion emails via Strapi email plugin */
188
+ sendRsvpEmails: boolean;
189
+ /** Public iCal feed calendar name */
190
+ feedTitle: string;
191
+ /** Configured event collection sources */
192
+ sources: EventSourceMapping[];
193
+ /** Optional secondary/alternative calendar systems (e.g. Hijri, Hebrew, Persian, Buddhist, or custom) */
194
+ secondaryCalendars?: CalendarSystemConfig[];
195
+ /** Configurable RRULE recurrence presets shown in Quick-Create & RRuleInput */
196
+ recurrencePresets?: RecurrencePreset[];
197
+ /** Declarative attribute extensions merged into built-in plugin schemas during register() */
198
+ schemaExtensions?: SchemaExtensionsConfig;
199
+ }
200
+ export interface CalendarLinkSet {
201
+ google: string;
202
+ outlook: string;
203
+ yahoo: string;
204
+ icsPath: string;
205
+ }
206
+ export interface RsvpStats {
207
+ eventUid: string;
208
+ eventDocumentId: string;
209
+ occurrenceDate: string | null;
210
+ rsvpEnabled: boolean;
211
+ capacity: number | null;
212
+ waitlistEnabled: boolean;
213
+ confirmedCount: number;
214
+ confirmedSeats: number;
215
+ checkedInSeats: number;
216
+ waitlistedCount: number;
217
+ waitlistedSeats: number;
218
+ cancelledCount: number;
219
+ remainingSeats: number | null;
220
+ isFull: boolean;
221
+ }
222
+ export interface ExpandedOccurrence {
223
+ /** Deterministic ID: `${sourceId}:${documentId}:${occurrenceDate}` */
224
+ occurrenceId: string;
225
+ /** Source mapping ID */
226
+ sourceId: string;
227
+ /** Source display label */
228
+ sourceLabel: string;
229
+ /** Strapi Content-Type UID */
230
+ uid: string;
231
+ /** Strapi v5 documentId */
232
+ documentId: string;
233
+ /** Document locale code when localized via Strapi i18n (e.g. "es", "en") */
234
+ locale?: string;
235
+ /** Occurrence date key (YYYY-MM-DD) */
236
+ occurrenceDate: string;
237
+ /** Effective start ISO timestamp */
238
+ startDate: string;
239
+ /** Effective end ISO timestamp */
240
+ endDate: string;
241
+ /** All-day flag */
242
+ allDay: boolean;
243
+ /** IANA timezone */
244
+ timezone: string;
245
+ /** Event title */
246
+ title: string;
247
+ /** Optional slug */
248
+ slug?: string;
249
+ /** Optional summary */
250
+ summary?: string;
251
+ /** Physical location or venue */
252
+ location?: string;
253
+ /** Virtual meeting URL */
254
+ virtualUrl?: string;
255
+ /** Category string */
256
+ category?: string;
257
+ /** Lifecycle status */
258
+ status: EventLifecycleStatus;
259
+ /** Hex badge color */
260
+ color: string;
261
+ /** Whether generated from an RRULE recurrence */
262
+ isRecurring: boolean;
263
+ /** Raw RRULE string if recurring */
264
+ rrule?: string;
265
+ /** Whether this specific occurrence has an override applied */
266
+ isOverridden?: boolean;
267
+ /** RSVP availability stats */
268
+ rsvp?: RsvpStats;
269
+ /** Add-to-calendar links */
270
+ calendarLinks: CalendarLinkSet;
271
+ /** Alternate calendar representations (e.g., Hijri, Hebrew, Persian, or custom date systems) */
272
+ alternateDates?: Record<string, AlternateDateValue>;
273
+ /** Normalized poster media or asset if configured on the event */
274
+ poster?: EventPosterAsset;
275
+ /** Normalized CTA / resource action links */
276
+ actionLinks?: EventActionLink[];
277
+ /** Normalized floating corner spotlight configuration */
278
+ spotlightConfig?: EventSpotlightConfig;
279
+ /** Custom fields extracted from the source document via `source.fields.customFields` */
280
+ customFields?: Record<string, unknown>;
281
+ }
282
+ export interface RsvpRegistrationInput {
283
+ eventUid?: string;
284
+ occurrenceDate?: string;
285
+ attendeeName: string;
286
+ attendeeEmail: string;
287
+ attendeePhone?: string;
288
+ guestsCount?: number;
289
+ locale?: string;
290
+ notes?: string;
291
+ metadata?: Record<string, unknown>;
292
+ }
293
+ export interface RsvpRegistrationRecord {
294
+ documentId: string;
295
+ eventUid: string;
296
+ eventDocumentId: string;
297
+ eventTitle?: string;
298
+ occurrenceDate: string;
299
+ attendeeName: string;
300
+ attendeeEmail: string;
301
+ attendeePhone?: string;
302
+ guestsCount: number;
303
+ status: RsvpStatus;
304
+ checkInToken?: string;
305
+ checkedInAt?: string | null;
306
+ locale: string;
307
+ notes?: string;
308
+ createdAt?: string;
309
+ }
@@ -0,0 +1,18 @@
1
+ import { EventActionLink, EventPosterAsset } from './types';
2
+ export declare function isSafeObjectKey(key: unknown): key is string;
3
+ export declare function sanitizePlainRecord(raw: unknown, maxDepth?: number): Record<string, unknown> | null;
4
+ /**
5
+ * Validates that a URL is either a safe relative path (`/path`, no `//` or `\`)
6
+ * or uses an allow-listed protocol (`https:`, `http:`, plus `mailto:` unless disabled).
7
+ */
8
+ export declare function sanitizeEventUrl(rawUrl: unknown, options?: {
9
+ allowMailto?: boolean;
10
+ }): string | null;
11
+ export declare function parseJsonIfNeeded(raw: unknown): unknown;
12
+ export declare function getTrimmedString(val: unknown, maxLen?: number): string | undefined;
13
+ /**
14
+ * Normalizes a Strapi Media field value into a unified `EventPosterAsset`.
15
+ * Disallows `mailto:` URLs on poster assets.
16
+ */
17
+ export declare function normalizeEventPoster(rawPoster: unknown, fallbackAlt?: string): EventPosterAsset | undefined;
18
+ export declare function normalizeEventActionLinks(rawLinks: unknown): EventActionLink[] | undefined;
package/package.json CHANGED
@@ -1,6 +1,112 @@
1
1
  {
2
2
  "name": "@vicacha-devs/strapi-plugin-events",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.0.0",
4
+ "description": "Production-grade Strapi v5 Events, RSVP Capacity, Automatic Waitlist Promotion, Attendee Check-In & iCal Plugin powered by @vicacha-devs/strapi-plugin-calendar",
5
+ "keywords": [
6
+ "calendar",
7
+ "events",
8
+ "ical",
9
+ "plugin",
10
+ "rrule",
11
+ "rsvp",
12
+ "strapi",
13
+ "strapi-v5",
14
+ "waitlist"
15
+ ],
16
+ "homepage": "https://github.com/Vicacha-Devs/strapi-v5-extensions/tree/main/packages/strapi-plugin-events#readme",
17
+ "bugs": {
18
+ "url": "https://github.com/Vicacha-Devs/strapi-v5-extensions/issues"
19
+ },
20
+ "license": "MIT",
21
+ "author": "Vicacha Devs",
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/Vicacha-Devs/strapi-v5-extensions.git",
25
+ "directory": "packages/strapi-plugin-events"
26
+ },
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "exports": {
31
+ "./package.json": "./package.json",
32
+ "./strapi-admin": {
33
+ "types": "./dist/admin/src/index.d.ts",
34
+ "source": "./admin/src/index.ts",
35
+ "import": "./dist/admin/index.mjs",
36
+ "require": "./dist/admin/index.js",
37
+ "default": "./dist/admin/index.js"
38
+ },
39
+ "./strapi-server": {
40
+ "types": "./dist/server/src/index.d.ts",
41
+ "source": "./server/src/index.ts",
42
+ "import": "./dist/server/index.mjs",
43
+ "require": "./dist/server/index.js",
44
+ "default": "./dist/server/index.js"
45
+ },
46
+ "./shared": {
47
+ "types": "./dist/shared/index.d.ts",
48
+ "source": "./shared/index.ts",
49
+ "import": "./dist/shared/index.mjs",
50
+ "require": "./dist/shared/index.js",
51
+ "default": "./dist/shared/index.js"
52
+ }
53
+ },
54
+ "publishConfig": {
55
+ "access": "public",
56
+ "provenance": true
57
+ },
58
+ "dependencies": {
59
+ "@strapi/design-system": "2.2.0",
60
+ "@strapi/icons": "2.2.0",
61
+ "react-intl": "8.1.3"
62
+ },
63
+ "devDependencies": {
64
+ "@strapi/sdk-plugin": "6.1.1",
65
+ "@strapi/strapi": "5.39.0",
66
+ "@strapi/typescript-utils": "5.39.0",
67
+ "@types/node": "22.10.2",
68
+ "@types/react": "19.2.14",
69
+ "@types/react-dom": "19.2.3",
70
+ "react": "18.3.1",
71
+ "react-dom": "18.3.1",
72
+ "react-router-dom": "6.30.3",
73
+ "styled-components": "6.3.11",
74
+ "typescript": "5.9.3",
75
+ "@vicacha-devs/eslint-config": "1.0.0",
76
+ "@vicacha-devs/typescript-config": "1.0.0",
77
+ "@vicacha-devs/strapi-plugin-calendar": "1.1.1",
78
+ "@vicacha-devs/plugin-shared": "1.0.0"
79
+ },
80
+ "peerDependencies": {
81
+ "@strapi/design-system": "^2.0.0",
82
+ "@strapi/icons": "^2.0.0",
83
+ "@strapi/sdk-plugin": "^5.0.0 || ^6.0.0",
84
+ "@strapi/strapi": "^5.0.0",
85
+ "@vicacha-devs/strapi-plugin-calendar": "^1.0.0",
86
+ "react": "^18.0.0",
87
+ "react-dom": "^18.0.0",
88
+ "react-router-dom": "^6.0.0",
89
+ "styled-components": "^6.0.0"
90
+ },
91
+ "engines": {
92
+ "node": ">=20.16.0",
93
+ "pnpm": ">=10.0.0"
94
+ },
95
+ "strapi": {
96
+ "kind": "plugin",
97
+ "name": "events",
98
+ "displayName": "Events & RSVPs",
99
+ "description": "Manage recurring events, RSVPs, seat capacity, waitlists, and attendee check-in in Strapi v5 powered by @vicacha-devs/strapi-plugin-calendar"
100
+ },
101
+ "scripts": {
102
+ "build": "strapi-plugin build && node ../../scripts/ensure-dist-types.ts",
103
+ "clean": "rm -rf dist .strapi",
104
+ "test": "node --import ./tests/register-ts-resolver.ts --test tests/*.test.ts",
105
+ "test:ts": "npm run test:ts:front && npm run test:ts:back",
106
+ "test:ts:back": "tsc --noEmit -p server/tsconfig.json",
107
+ "test:ts:front": "tsc --noEmit -p admin/tsconfig.json",
108
+ "verify": "strapi-plugin verify",
109
+ "watch": "strapi-plugin watch",
110
+ "watch:link": "strapi-plugin watch:link"
111
+ }
6
112
  }