@vicacha-devs/strapi-plugin-calendar 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 (90) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +163 -2
  3. package/dist/admin/CalendarPage-CVqowKst.cjs +1015 -0
  4. package/dist/admin/CalendarPage-Dq6YfSXF.js +1015 -0
  5. package/dist/admin/SettingsPage-7SecVQEi.js +2088 -0
  6. package/dist/admin/SettingsPage-D0aCDb9w.cjs +2088 -0
  7. package/dist/admin/ar-O6QL_nJZ.js +331 -0
  8. package/dist/admin/ar-yKsEpX_y.cjs +331 -0
  9. package/dist/admin/de-BpDxjctz.js +331 -0
  10. package/dist/admin/de-ryVtwWOz.cjs +331 -0
  11. package/dist/admin/en-BHYSUqXv.cjs +331 -0
  12. package/dist/admin/en-BoRq-9QD.js +331 -0
  13. package/dist/admin/es-BZ7WX8Ev.js +331 -0
  14. package/dist/admin/es-T5v93hXW.cjs +331 -0
  15. package/dist/admin/fr-BnDr9DC8.js +331 -0
  16. package/dist/admin/fr-DTdTwx7e.cjs +331 -0
  17. package/dist/admin/index-DO0QbnXX.cjs +3223 -0
  18. package/dist/admin/index-USqxqyAm.js +3216 -0
  19. package/dist/admin/index.cjs +9 -0
  20. package/dist/admin/index.js +9 -0
  21. package/dist/admin/index.mjs +9 -0
  22. package/dist/admin/it-BkJNzy27.cjs +331 -0
  23. package/dist/admin/it-DkdUInap.js +331 -0
  24. package/dist/admin/nl-C2NFORLS.js +331 -0
  25. package/dist/admin/nl-CjnlbeUM.cjs +331 -0
  26. package/dist/admin/pl-BJArPgCQ.cjs +331 -0
  27. package/dist/admin/pl-mv5eXA8W.js +331 -0
  28. package/dist/admin/pt-CSYqSGnz.cjs +331 -0
  29. package/dist/admin/pt-WpvZGj3b.js +331 -0
  30. package/dist/admin/src/components/CalendarSidePanel.d.ts +13 -0
  31. package/dist/admin/src/components/Initializer.d.ts +6 -0
  32. package/dist/admin/src/components/PluginIcon.d.ts +3 -0
  33. package/dist/admin/src/components/RRuleInput.d.ts +20 -0
  34. package/dist/admin/src/components/calendar/CalendarToolbar.d.ts +32 -0
  35. package/dist/admin/src/components/calendar/FullCalendarCanvas.d.ts +21 -0
  36. package/dist/admin/src/components/calendar/FullCalendarDayCell.d.ts +11 -0
  37. package/dist/admin/src/components/calendar/OccurrenceDetailDrawer.d.ts +15 -0
  38. package/dist/admin/src/components/calendar/QuickCreatePanel.d.ts +29 -0
  39. package/dist/admin/src/components/calendar/QuickCreateSubcomponents.d.ts +40 -0
  40. package/dist/admin/src/components/calendar/calendarPageHelpers.d.ts +52 -0
  41. package/dist/admin/src/components/calendar/calendarThemeStyles.d.ts +2 -0
  42. package/dist/admin/src/components/settings/CalendarThemeSection.d.ts +9 -0
  43. package/dist/admin/src/components/settings/CalendarViewsSection.d.ts +10 -0
  44. package/dist/admin/src/components/settings/CollectionSourcesSection.d.ts +12 -0
  45. package/dist/admin/src/components/settings/CompanionSuiteSettingsSection.d.ts +29 -0
  46. package/dist/admin/src/components/settings/SecondaryCalendarsSection.d.ts +11 -0
  47. package/dist/admin/src/fields/rruleField.d.ts +19 -0
  48. package/dist/admin/src/index.d.ts +18 -0
  49. package/dist/admin/src/pages/CalendarPage.d.ts +3 -0
  50. package/dist/admin/src/pages/SettingsPage.d.ts +3 -0
  51. package/dist/admin/src/pages/calendarPageSupport.d.ts +8 -0
  52. package/dist/admin/tr-BhZKvFoK.js +331 -0
  53. package/dist/admin/tr-zUVxuw9X.cjs +331 -0
  54. package/dist/package.json +3 -0
  55. package/dist/server/index.cjs +2585 -0
  56. package/dist/server/index.js +2585 -0
  57. package/dist/server/index.mjs +2585 -0
  58. package/dist/server/src/bootstrap.d.ts +5 -0
  59. package/dist/server/src/config/index.d.ts +7 -0
  60. package/dist/server/src/controllers/admin.d.ts +15 -0
  61. package/dist/server/src/controllers/content-api.d.ts +10 -0
  62. package/dist/server/src/controllers/index.d.ts +21 -0
  63. package/dist/server/src/destroy.d.ts +5 -0
  64. package/dist/server/src/index.d.ts +85 -0
  65. package/dist/server/src/register.d.ts +5 -0
  66. package/dist/server/src/routes/admin.d.ts +17 -0
  67. package/dist/server/src/routes/content-api.d.ts +10 -0
  68. package/dist/server/src/routes/index.d.ts +28 -0
  69. package/dist/server/src/services/builtinSources.d.ts +3 -0
  70. package/dist/server/src/services/ical.d.ts +6 -0
  71. package/dist/server/src/services/index.d.ts +23 -0
  72. package/dist/server/src/services/occurrence.d.ts +6 -0
  73. package/dist/server/src/services/occurrenceDates.d.ts +7 -0
  74. package/dist/server/src/services/quickCreateHelpers.d.ts +20 -0
  75. package/dist/server/src/services/registry.d.ts +19 -0
  76. package/dist/server/src/services/settings.d.ts +6 -0
  77. package/dist/server/src/types.d.ts +98 -0
  78. package/dist/shared/calendarSystems.d.ts +41 -0
  79. package/dist/shared/icalGenerator.d.ts +18 -0
  80. package/dist/shared/index.cjs +1612 -0
  81. package/dist/shared/index.d.ts +6 -0
  82. package/dist/shared/index.js +1612 -0
  83. package/dist/shared/index.mjs +1612 -0
  84. package/dist/shared/localization.d.ts +14 -0
  85. package/dist/shared/pluginId.d.ts +2 -0
  86. package/dist/shared/rruleEngine.d.ts +22 -0
  87. package/dist/shared/themePalettes.d.ts +27 -0
  88. package/dist/shared/themePresets.d.ts +32 -0
  89. package/dist/shared/types.d.ts +311 -0
  90. package/package.json +120 -3
@@ -0,0 +1,5 @@
1
+ import { Core } from '@strapi/strapi';
2
+ declare const _default: ({ strapi }: {
3
+ strapi: Core.Strapi;
4
+ }) => Promise<void>;
5
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { CalendarPluginSettings } from '../../../shared/types';
2
+ export declare const DEFAULT_CALENDAR_SETTINGS: CalendarPluginSettings;
3
+ declare const _default: {
4
+ default: CalendarPluginSettings;
5
+ validator(config: Partial<CalendarPluginSettings>): void;
6
+ };
7
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { CalendarPluginSettings } from '../../../shared/types';
3
+ import { StrapiRouteContext } from '../types';
4
+ declare const _default: ({ strapi }: {
5
+ strapi: Core.Strapi;
6
+ }) => {
7
+ getCalendar(ctx: StrapiRouteContext): Promise<void>;
8
+ reschedule(ctx: StrapiRouteContext): Promise<void>;
9
+ quickCreate(ctx: StrapiRouteContext): Promise<void>;
10
+ getSettings(ctx: StrapiRouteContext): Promise<void>;
11
+ updateSettings(ctx: StrapiRouteContext<Partial<CalendarPluginSettings>>): Promise<void>;
12
+ clearSettings(ctx: StrapiRouteContext): Promise<void>;
13
+ getContentTypes(ctx: StrapiRouteContext): Promise<void>;
14
+ };
15
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { StrapiRouteContext } from '../types';
3
+ declare const _default: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => {
6
+ getOccurrences(ctx: StrapiRouteContext): Promise<void>;
7
+ downloadFeedIcs(ctx: StrapiRouteContext): Promise<void>;
8
+ downloadEventIcs(ctx: StrapiRouteContext): Promise<void>;
9
+ };
10
+ export default _default;
@@ -0,0 +1,21 @@
1
+ declare const _default: {
2
+ admin: ({ strapi }: {
3
+ strapi: import("@strapi/strapi").Core.Strapi;
4
+ }) => {
5
+ getCalendar(ctx: import('../types').StrapiRouteContext): Promise<void>;
6
+ reschedule(ctx: import('../types').StrapiRouteContext): Promise<void>;
7
+ quickCreate(ctx: import('../types').StrapiRouteContext): Promise<void>;
8
+ getSettings(ctx: import('../types').StrapiRouteContext): Promise<void>;
9
+ updateSettings(ctx: import('../types').StrapiRouteContext<Partial<import('../../../shared/types').CalendarPluginSettings>>): Promise<void>;
10
+ clearSettings(ctx: import('../types').StrapiRouteContext): Promise<void>;
11
+ getContentTypes(ctx: import('../types').StrapiRouteContext): Promise<void>;
12
+ };
13
+ "content-api": ({ strapi }: {
14
+ strapi: import("@strapi/strapi").Core.Strapi;
15
+ }) => {
16
+ getOccurrences(ctx: import('../types').StrapiRouteContext): Promise<void>;
17
+ downloadFeedIcs(ctx: import('../types').StrapiRouteContext): Promise<void>;
18
+ downloadEventIcs(ctx: import('../types').StrapiRouteContext): Promise<void>;
19
+ };
20
+ };
21
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import { Core } from '@strapi/strapi';
2
+ declare const _default: ({ strapi: _strapi }: {
3
+ strapi: Core.Strapi;
4
+ }) => void;
5
+ export default _default;
@@ -0,0 +1,85 @@
1
+ declare const _default: {
2
+ register: ({ strapi }: {
3
+ strapi: import("@strapi/strapi").Core.Strapi;
4
+ }) => void;
5
+ bootstrap: ({ strapi }: {
6
+ strapi: import("@strapi/strapi").Core.Strapi;
7
+ }) => Promise<void>;
8
+ destroy: ({ strapi: _strapi }: {
9
+ strapi: import("@strapi/strapi").Core.Strapi;
10
+ }) => void;
11
+ config: {
12
+ default: import('../../shared/types').CalendarPluginSettings;
13
+ validator(config: Partial<import('../../shared/types').CalendarPluginSettings>): void;
14
+ };
15
+ controllers: {
16
+ admin: ({ strapi }: {
17
+ strapi: import("@strapi/strapi").Core.Strapi;
18
+ }) => {
19
+ getCalendar(ctx: import('./types').StrapiRouteContext): Promise<void>;
20
+ reschedule(ctx: import('./types').StrapiRouteContext): Promise<void>;
21
+ quickCreate(ctx: import('./types').StrapiRouteContext): Promise<void>;
22
+ getSettings(ctx: import('./types').StrapiRouteContext): Promise<void>;
23
+ updateSettings(ctx: import('./types').StrapiRouteContext<Partial<import('../../shared/types').CalendarPluginSettings>>): Promise<void>;
24
+ clearSettings(ctx: import('./types').StrapiRouteContext): Promise<void>;
25
+ getContentTypes(ctx: import('./types').StrapiRouteContext): Promise<void>;
26
+ };
27
+ "content-api": ({ strapi }: {
28
+ strapi: import("@strapi/strapi").Core.Strapi;
29
+ }) => {
30
+ getOccurrences(ctx: import('./types').StrapiRouteContext): Promise<void>;
31
+ downloadFeedIcs(ctx: import('./types').StrapiRouteContext): Promise<void>;
32
+ downloadEventIcs(ctx: import('./types').StrapiRouteContext): Promise<void>;
33
+ };
34
+ };
35
+ routes: {
36
+ admin: {
37
+ type: string;
38
+ routes: {
39
+ method: string;
40
+ path: string;
41
+ handler: string;
42
+ config: {
43
+ policies: (string | {
44
+ name: string;
45
+ config: {
46
+ actions: string[];
47
+ };
48
+ })[];
49
+ };
50
+ }[];
51
+ };
52
+ "content-api": {
53
+ type: string;
54
+ routes: {
55
+ method: string;
56
+ path: string;
57
+ handler: string;
58
+ config: {};
59
+ }[];
60
+ };
61
+ };
62
+ services: {
63
+ settings: ({ strapi }: {
64
+ strapi: import("@strapi/strapi").Core.Strapi;
65
+ }) => import('./types').SettingsService;
66
+ registry: ({ strapi: _strapi }: {
67
+ strapi: import("@strapi/strapi").Core.Strapi;
68
+ }) => {
69
+ registerSource(source: import('../../shared/types').CalendarSourceMapping): void;
70
+ unregisterSource(sourceId: string): void;
71
+ getRegisteredSources(): import('../../shared/types').CalendarSourceMapping[];
72
+ registerSecondaryCalendar(calendar: import('../../shared/types').CalendarSystemConfig): void;
73
+ getRegisteredSecondaryCalendars(): import('../../shared/types').CalendarSystemConfig[];
74
+ registerCalendarFormatter(calendarId: string, formatter: import('../../shared/types').CalendarSystemFormatterFn): void;
75
+ unregisterCalendarFormatter(calendarId: string): void;
76
+ };
77
+ occurrence: ({ strapi }: {
78
+ strapi: import("@strapi/strapi").Core.Strapi;
79
+ }) => import('./types').OccurrenceService;
80
+ ical: ({ strapi }: {
81
+ strapi: import("@strapi/strapi").Core.Strapi;
82
+ }) => import('./types').IcalService;
83
+ };
84
+ };
85
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import { Core } from '@strapi/strapi';
2
+ declare const _default: ({ strapi }: {
3
+ strapi: Core.Strapi;
4
+ }) => void;
5
+ export default _default;
@@ -0,0 +1,17 @@
1
+ declare const _default: {
2
+ type: string;
3
+ routes: {
4
+ method: string;
5
+ path: string;
6
+ handler: string;
7
+ config: {
8
+ policies: (string | {
9
+ name: string;
10
+ config: {
11
+ actions: string[];
12
+ };
13
+ })[];
14
+ };
15
+ }[];
16
+ };
17
+ export default _default;
@@ -0,0 +1,10 @@
1
+ declare const _default: {
2
+ type: string;
3
+ routes: {
4
+ method: string;
5
+ path: string;
6
+ handler: string;
7
+ config: {};
8
+ }[];
9
+ };
10
+ export default _default;
@@ -0,0 +1,28 @@
1
+ declare const _default: {
2
+ admin: {
3
+ type: string;
4
+ routes: {
5
+ method: string;
6
+ path: string;
7
+ handler: string;
8
+ config: {
9
+ policies: (string | {
10
+ name: string;
11
+ config: {
12
+ actions: string[];
13
+ };
14
+ })[];
15
+ };
16
+ }[];
17
+ };
18
+ "content-api": {
19
+ type: string;
20
+ routes: {
21
+ method: string;
22
+ path: string;
23
+ handler: string;
24
+ config: {};
25
+ }[];
26
+ };
27
+ };
28
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { CalendarSourceMapping } from '../../../shared/types';
2
+ export declare const BUILTIN_EVENTS_SOURCE: CalendarSourceMapping;
3
+ export declare const BUILTIN_BOOKINGS_SOURCE: CalendarSourceMapping;
@@ -0,0 +1,6 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { IcalService } from '../types';
3
+ declare const _default: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => IcalService;
6
+ export default _default;
@@ -0,0 +1,23 @@
1
+ declare const _default: {
2
+ settings: ({ strapi }: {
3
+ strapi: import("@strapi/strapi").Core.Strapi;
4
+ }) => import('../types').SettingsService;
5
+ registry: ({ strapi: _strapi }: {
6
+ strapi: import("@strapi/strapi").Core.Strapi;
7
+ }) => {
8
+ registerSource(source: import('../../../shared/types').CalendarSourceMapping): void;
9
+ unregisterSource(sourceId: string): void;
10
+ getRegisteredSources(): import('../../../shared/types').CalendarSourceMapping[];
11
+ registerSecondaryCalendar(calendar: import('../../../shared/types').CalendarSystemConfig): void;
12
+ getRegisteredSecondaryCalendars(): import('../../../shared/types').CalendarSystemConfig[];
13
+ registerCalendarFormatter(calendarId: string, formatter: import('../../../shared/types').CalendarSystemFormatterFn): void;
14
+ unregisterCalendarFormatter(calendarId: string): void;
15
+ };
16
+ occurrence: ({ strapi }: {
17
+ strapi: import("@strapi/strapi").Core.Strapi;
18
+ }) => import('../types').OccurrenceService;
19
+ ical: ({ strapi }: {
20
+ strapi: import("@strapi/strapi").Core.Strapi;
21
+ }) => import('../types').IcalService;
22
+ };
23
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { OccurrenceService } from '../types';
3
+ declare const _default: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => OccurrenceService;
6
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import { CalendarItemStatus, CalendarSourceMapping } from '../../../shared/types';
2
+ export declare function resolveStartEndFromDocument(doc: Record<string, unknown>, source: CalendarSourceMapping): {
3
+ startDate: string;
4
+ endDate: string | null;
5
+ allDay: boolean;
6
+ } | null;
7
+ export declare function mapStatus(rawStatus: unknown): CalendarItemStatus;
@@ -0,0 +1,20 @@
1
+ import { CalendarSourceMapping, RRuleFieldValue } from '../../../shared/types';
2
+ import { QuickCreateEntryParams, RescheduleOccurrenceParams } from '../types';
3
+ export interface ContentTypeSchemaShape {
4
+ options?: {
5
+ draftAndPublish?: boolean;
6
+ };
7
+ attributes?: Record<string, {
8
+ type?: string;
9
+ required?: boolean;
10
+ }>;
11
+ }
12
+ export declare function matchesSourceFilter(source: CalendarSourceMapping, filter?: string): boolean;
13
+ export declare function resolveTargetSource(sources: CalendarSourceMapping[], sourceId?: string): CalendarSourceMapping | undefined;
14
+ export declare function isBookingCollectionSource(source: CalendarSourceMapping, schema?: ContentTypeSchemaShape): boolean;
15
+ export declare function buildQuickCreatePayload(params: QuickCreateEntryParams, source: CalendarSourceMapping, defaultTimezone: string, schema?: ContentTypeSchemaShape): {
16
+ data: Record<string, unknown>;
17
+ shouldPublish: boolean;
18
+ };
19
+ export declare function buildDirectUpdatePayload(params: RescheduleOccurrenceParams, source: CalendarSourceMapping, existingDoc?: Record<string, unknown>): Record<string, unknown>;
20
+ export declare function buildRecurrenceOverridePayload(recurrence: RRuleFieldValue, rruleField: string, params: RescheduleOccurrenceParams): Record<string, unknown>;
@@ -0,0 +1,19 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { CalendarSourceMapping, CalendarSystemConfig, CalendarSystemFormatterFn } from '../../../shared/types';
3
+ /**
4
+ * Runtime registry allowing companion plugins (e.g. `@vicacha-devs/strapi-plugin-events`
5
+ * or `@vicacha-devs/strapi-plugin-bookings`) or host applications to programmatically
6
+ * register collection sources and secondary calendar systems.
7
+ */
8
+ declare const _default: ({ strapi: _strapi }: {
9
+ strapi: Core.Strapi;
10
+ }) => {
11
+ registerSource(source: CalendarSourceMapping): void;
12
+ unregisterSource(sourceId: string): void;
13
+ getRegisteredSources(): CalendarSourceMapping[];
14
+ registerSecondaryCalendar(calendar: CalendarSystemConfig): void;
15
+ getRegisteredSecondaryCalendars(): CalendarSystemConfig[];
16
+ registerCalendarFormatter(calendarId: string, formatter: CalendarSystemFormatterFn): void;
17
+ unregisterCalendarFormatter(calendarId: string): void;
18
+ };
19
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { SettingsService } from '../types';
3
+ declare const _default: ({ strapi }: {
4
+ strapi: Core.Strapi;
5
+ }) => SettingsService;
6
+ export default _default;
@@ -0,0 +1,98 @@
1
+ import { Core } from '@strapi/strapi';
2
+ import { CalendarPluginSettings, CalendarSourceMapping, CalendarSystemConfig, CalendarSystemFormatterFn, DiscoveredContentType, ExpandedCalendarOccurrence } from '../../shared/types';
3
+ export interface StrapiRouteContext<TBody = Record<string, unknown>, TQuery = Record<string, string | undefined>, TParams = Record<string, string | undefined>> {
4
+ query?: TQuery;
5
+ params?: TParams;
6
+ request?: {
7
+ body?: TBody;
8
+ };
9
+ status?: number;
10
+ body?: unknown;
11
+ set?: (header: string, value: string) => void;
12
+ }
13
+ export interface RegistryService {
14
+ registerSource(source: CalendarSourceMapping): void;
15
+ unregisterSource(sourceId: string): void;
16
+ getRegisteredSources(): CalendarSourceMapping[];
17
+ registerSecondaryCalendar(calendar: CalendarSystemConfig): void;
18
+ getRegisteredSecondaryCalendars(): CalendarSystemConfig[];
19
+ registerCalendarFormatter(calendarId: string, formatter: CalendarSystemFormatterFn): void;
20
+ unregisterCalendarFormatter(calendarId: string): void;
21
+ }
22
+ export interface SettingsService {
23
+ ensureInitialized(): Promise<CalendarPluginSettings>;
24
+ getSettings(): Promise<CalendarPluginSettings>;
25
+ updateSettings(patch: Partial<CalendarPluginSettings>): Promise<CalendarPluginSettings>;
26
+ clearSettings(): Promise<CalendarPluginSettings>;
27
+ discoverContentTypes(): DiscoveredContentType[];
28
+ }
29
+ export interface OccurrenceQueryParams {
30
+ from?: string;
31
+ to?: string;
32
+ locale?: string;
33
+ category?: string;
34
+ sourceId?: string;
35
+ documentId?: string;
36
+ includeDrafts?: boolean;
37
+ publicOnly?: boolean;
38
+ }
39
+ export interface RescheduleOccurrenceParams {
40
+ sourceId?: string;
41
+ uid?: string;
42
+ documentId: string;
43
+ locale?: string;
44
+ occurrenceDate: string;
45
+ newStartDate: string;
46
+ newEndDate?: string;
47
+ applyToSeries?: boolean;
48
+ cancelOccurrence?: boolean;
49
+ }
50
+ export interface QuickCreateEntryParams {
51
+ sourceId?: string;
52
+ title: string;
53
+ startDate: string;
54
+ endDate?: string;
55
+ location?: string;
56
+ category?: string;
57
+ summary?: string;
58
+ rrule?: string;
59
+ customerName?: string;
60
+ customerEmail?: string;
61
+ customerPhone?: string;
62
+ partySize?: number;
63
+ bookingStatus?: "confirmed" | "pending";
64
+ }
65
+ export interface OccurrenceService {
66
+ registerCalendarFormatter(calendarId: string, formatter: CalendarSystemFormatterFn): void;
67
+ unregisterCalendarFormatter(calendarId: string): void;
68
+ formatDateInCalendarSystem(isoOrDateKey: string, system: CalendarSystemConfig, locale?: string, options?: {
69
+ compact?: boolean;
70
+ }): string;
71
+ getOccurrences(params: OccurrenceQueryParams): Promise<ExpandedCalendarOccurrence[]>;
72
+ rescheduleOccurrence(params: RescheduleOccurrenceParams): Promise<Record<string, unknown>>;
73
+ quickCreateEntry(params: QuickCreateEntryParams): Promise<Record<string, unknown>>;
74
+ }
75
+ export interface IcalService {
76
+ buildFeedIcs(params: {
77
+ from?: string;
78
+ to?: string;
79
+ locale?: string;
80
+ category?: string;
81
+ sourceId?: string;
82
+ publicOnly?: boolean;
83
+ }): Promise<string>;
84
+ buildSingleInviteIcs(params: {
85
+ documentId: string;
86
+ occurrenceDate?: string;
87
+ locale?: string;
88
+ publicOnly?: boolean;
89
+ }): Promise<string>;
90
+ }
91
+ export interface CalendarPluginServiceMap {
92
+ registry: RegistryService;
93
+ settings: SettingsService;
94
+ occurrence: OccurrenceService;
95
+ ical: IcalService;
96
+ }
97
+ export declare function getCalendarService<K extends keyof CalendarPluginServiceMap>(strapi: Core.Strapi, pluginId: string, serviceName: K): CalendarPluginServiceMap[K];
98
+ export declare function formatErrorMessage(err: unknown, fallback: string): string;
@@ -0,0 +1,41 @@
1
+ import { AlternateDateValue, CalendarSourceMapping, CalendarSystemConfig, CalendarSystemFormatterFn } from './types';
2
+ /**
3
+ * Standard Unicode CLDR / @internationalized/date calendar identifiers.
4
+ * Covers global solar, lunar, and lunisolar calendar systems.
5
+ */
6
+ export declare const SUPPORTED_INTL_CALENDARS: ReadonlyArray<{
7
+ id: string;
8
+ intlCalendar: string;
9
+ defaultLabel: string;
10
+ }>;
11
+ export declare function registerCalendarSystemFormatter(calendarId: string, formatter: CalendarSystemFormatterFn): void;
12
+ export declare function unregisterCalendarSystemFormatter(calendarId: string): void;
13
+ export declare function getRegisteredCalendarFormatters(): ReadonlyMap<string, CalendarSystemFormatterFn>;
14
+ export declare function applyDayOffset(date: Date, dayOffset?: number): Date;
15
+ /**
16
+ * Extracts numeric { year, month, day } parts for any Date in any Unicode CLDR calendar
17
+ * (e.g. "islamic-umalqura", "hebrew", "persian", "gregory").
18
+ */
19
+ export declare function extractCalendarParts(date: Date, intlCalendar: string, dayOffset?: number): {
20
+ year: number;
21
+ month: number;
22
+ day: number;
23
+ } | null;
24
+ /**
25
+ * Formats an ISO date or YYYY-MM-DD string into a target CalendarSystemConfig.
26
+ */
27
+ export declare function formatDateInCalendarSystem(isoOrDateKey: string, system: CalendarSystemConfig, locale?: string, options?: {
28
+ compact?: boolean;
29
+ }): string;
30
+ /**
31
+ * Computes all alternate calendar representations for a calendar occurrence.
32
+ */
33
+ export declare function resolveOccurrenceAlternateDates(params: {
34
+ occurrenceDate: string;
35
+ baseDateKey: string;
36
+ isRecurring: boolean;
37
+ doc: Record<string, unknown>;
38
+ source: CalendarSourceMapping;
39
+ secondaryCalendars?: CalendarSystemConfig[];
40
+ locale?: string;
41
+ }): Record<string, AlternateDateValue>;
@@ -0,0 +1,18 @@
1
+ import { CalendarLinkSet, ExpandedCalendarOccurrence } from './types';
2
+ export declare function foldIcsLine(line: string): string;
3
+ export declare function toIcsTimestamp(iso: string, allDay?: boolean): string;
4
+ export declare function buildCalendarLinks(params: {
5
+ documentId: string;
6
+ title: string;
7
+ startDate: string;
8
+ endDate: string;
9
+ allDay?: boolean;
10
+ summary?: string;
11
+ location?: string;
12
+ occurrenceDate?: string;
13
+ }): CalendarLinkSet;
14
+ export declare function generateIcsCalendar(params: {
15
+ calendarTitle: string;
16
+ timezone: string;
17
+ occurrences: ExpandedCalendarOccurrence[];
18
+ }): string;