@uptime.app/contracts 1.0.13-rc.0 → 1.0.13

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 (75) hide show
  1. package/dist/cjs/index.d.ts +0 -2
  2. package/dist/cjs/index.d.ts.map +1 -1
  3. package/dist/cjs/index.js +0 -2
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/esm/index.d.ts +0 -2
  6. package/dist/esm/index.d.ts.map +1 -1
  7. package/dist/esm/index.js +0 -2
  8. package/dist/esm/index.js.map +1 -1
  9. package/package.json +2 -2
  10. package/src/access-control/collection-access-control.ts +28 -28
  11. package/src/access-control/hack-access-control.ts +29 -29
  12. package/src/b2b-organisation/b2b-organisation-events.ts +21 -21
  13. package/src/b2b-organisation/b2b-organisation-member-events.ts +21 -21
  14. package/src/b2b-organisation/b2b-organisation-member.ts +8 -8
  15. package/src/b2b-organisation/b2b-organisation.ts +14 -14
  16. package/src/brand/brand-events.ts +21 -21
  17. package/src/brand/brand.ts +8 -8
  18. package/src/distribution/collection-distribution.ts +17 -17
  19. package/src/distribution/distribution-events.ts +61 -61
  20. package/src/distribution/hack-distribution.ts +18 -18
  21. package/src/draft-hack/draft-hack-events.ts +21 -21
  22. package/src/draft-hack/draft-hack.ts +184 -184
  23. package/src/enriched-hack/enriched-hack-events.ts +21 -21
  24. package/src/enriched-hack/enriched-hack.ts +101 -101
  25. package/src/hack/extracted-subject.ts +4 -4
  26. package/src/hack/hack-events.ts +21 -21
  27. package/src/hack/hack-with-voice-events.ts +20 -20
  28. package/src/hack/hack-with-voice.ts +33 -33
  29. package/src/hack/hack.ts +114 -114
  30. package/src/hack-metadata/hack-metadata-events.ts +21 -21
  31. package/src/hack-metadata/hack-metadata.ts +17 -17
  32. package/src/index.ts +61 -64
  33. package/src/knowledge-source/knowledge-source-events.ts +21 -21
  34. package/src/knowledge-source/knowledge-source.ts +43 -43
  35. package/src/localisation/live-locales.ts +32 -32
  36. package/src/localisation/locale-language.ts +4 -4
  37. package/src/localisation/supported-languages.ts +11 -11
  38. package/src/localisation/supported-locales.ts +42 -42
  39. package/src/pending-hack/pending-hack-events.ts +20 -20
  40. package/src/pending-hack/pending-hack-with-voice-events.ts +20 -20
  41. package/src/pending-hack/pending-hack-with-voice.ts +25 -25
  42. package/src/pending-hack/pending-hack.ts +75 -75
  43. package/src/profile/profile-events.ts +41 -41
  44. package/src/profile/profile.ts +27 -27
  45. package/src/profile/translated-profile.ts +13 -13
  46. package/src/segment/segment-commands.ts +70 -70
  47. package/src/segment/segment-with-voice.ts +8 -8
  48. package/src/segment/segment.ts +82 -82
  49. package/src/skin/skin-events.ts +21 -21
  50. package/src/skin/skin.ts +6 -6
  51. package/src/text-to-speech/create-speech-commands.ts +20 -20
  52. package/src/text-to-speech/speech-created-events.ts +11 -11
  53. package/src/text-to-speech/text-segment.ts +29 -29
  54. package/src/theme/theme-events.ts +21 -21
  55. package/src/theme/theme.ts +68 -68
  56. package/tsconfig.cjs.json +7 -7
  57. package/tsconfig.npm.json +21 -21
  58. package/dist/cjs/draft-hack-generation/draft-hack-generation-events.d.ts +0 -36
  59. package/dist/cjs/draft-hack-generation/draft-hack-generation-events.d.ts.map +0 -1
  60. package/dist/cjs/draft-hack-generation/draft-hack-generation-events.js +0 -3
  61. package/dist/cjs/draft-hack-generation/draft-hack-generation-events.js.map +0 -1
  62. package/dist/cjs/draft-hack-generation/draft-hack-generation.d.ts +0 -39
  63. package/dist/cjs/draft-hack-generation/draft-hack-generation.d.ts.map +0 -1
  64. package/dist/cjs/draft-hack-generation/draft-hack-generation.js +0 -3
  65. package/dist/cjs/draft-hack-generation/draft-hack-generation.js.map +0 -1
  66. package/dist/esm/draft-hack-generation/draft-hack-generation-events.d.ts +0 -36
  67. package/dist/esm/draft-hack-generation/draft-hack-generation-events.d.ts.map +0 -1
  68. package/dist/esm/draft-hack-generation/draft-hack-generation-events.js +0 -2
  69. package/dist/esm/draft-hack-generation/draft-hack-generation-events.js.map +0 -1
  70. package/dist/esm/draft-hack-generation/draft-hack-generation.d.ts +0 -39
  71. package/dist/esm/draft-hack-generation/draft-hack-generation.d.ts.map +0 -1
  72. package/dist/esm/draft-hack-generation/draft-hack-generation.js +0 -2
  73. package/dist/esm/draft-hack-generation/draft-hack-generation.js.map +0 -1
  74. package/src/draft-hack-generation/draft-hack-generation-events.ts +0 -42
  75. package/src/draft-hack-generation/draft-hack-generation.ts +0 -38
@@ -1,27 +1,27 @@
1
- import { SupportedLocale } from '../localisation/supported-locales';
2
-
3
- export interface StoredProfile {
4
- id: string;
5
- v: number;
6
- createdAt: string;
7
- updatedAt: string;
8
- avatarUrl: string;
9
- name: string;
10
- owner: string;
11
- handle: string;
12
- _sanitisedHandle?: string; // use to determinate uniqueness for a handle, despite the case of it
13
- headerImageUrl?: string;
14
- tags?: string[];
15
- links?: ProfileLink[];
16
- tagline: string;
17
- description?: string;
18
- /** The locale (language and region) of the draft hack e.g. fr-FR. Mandatory property since 12/05/2023. */
19
- locale: SupportedLocale;
20
- }
21
-
22
- export type Profile = Omit<StoredProfile, '_sanitisedHandle'>;
23
-
24
- export interface ProfileLink {
25
- type: 'Other' | 'Twitter' | 'Facebook' | 'Youtube' | 'Medium' | 'Instagram' | 'Patreon' | 'TikTok' | 'LinkedIn' | 'LinkTree';
26
- url: string;
27
- }
1
+ import { SupportedLocale } from '../localisation/supported-locales';
2
+
3
+ export interface StoredProfile {
4
+ id: string;
5
+ v: number;
6
+ createdAt: string;
7
+ updatedAt: string;
8
+ avatarUrl: string;
9
+ name: string;
10
+ owner: string;
11
+ handle: string;
12
+ _sanitisedHandle?: string; // use to determinate uniqueness for a handle, despite the case of it
13
+ headerImageUrl?: string;
14
+ tags?: string[];
15
+ links?: ProfileLink[];
16
+ tagline: string;
17
+ description?: string;
18
+ /** The locale (language and region) of the draft hack e.g. fr-FR. Mandatory property since 12/05/2023. */
19
+ locale: SupportedLocale;
20
+ }
21
+
22
+ export type Profile = Omit<StoredProfile, '_sanitisedHandle'>;
23
+
24
+ export interface ProfileLink {
25
+ type: 'Other' | 'Twitter' | 'Facebook' | 'Youtube' | 'Medium' | 'Instagram' | 'Patreon' | 'TikTok' | 'LinkedIn' | 'LinkTree';
26
+ url: string;
27
+ }
@@ -1,13 +1,13 @@
1
- import { SupportedLocale } from '../localisation/supported-locales';
2
-
3
- export interface TranslatedProfile {
4
- id: string;
5
- v: number;
6
- createdAt: string;
7
- updatedAt: string;
8
- profileId: string;
9
- locale: SupportedLocale;
10
- tagline: string;
11
- description?: string;
12
- tags?: string[];
13
- }
1
+ import { SupportedLocale } from '../localisation/supported-locales';
2
+
3
+ export interface TranslatedProfile {
4
+ id: string;
5
+ v: number;
6
+ createdAt: string;
7
+ updatedAt: string;
8
+ profileId: string;
9
+ locale: SupportedLocale;
10
+ tagline: string;
11
+ description?: string;
12
+ tags?: string[];
13
+ }
@@ -1,70 +1,70 @@
1
- import { SupportedLocale } from '../localisation/supported-locales';
2
- import { SegmentType } from './segment';
3
-
4
- export interface StandaloneSegmentCard {
5
- markdown: string;
6
- }
7
-
8
- export interface StandaloneSegmentAction {
9
- title: string;
10
- cards: StandaloneSegmentCard[];
11
- }
12
-
13
- export interface StandaloneSegmentSection {
14
- heading?: string;
15
- cards: StandaloneSegmentCard[];
16
- }
17
-
18
- export interface CommandSegment {
19
- type: SegmentType;
20
- // @deprecated use hackTitle, hackType and hackContributors
21
- source?: {
22
- id: string;
23
- type: string;
24
- contributors: {
25
- name: string;
26
- }[];
27
- title: string;
28
- };
29
- hackCoverUrl?: string;
30
- hackId: string;
31
- hackTitle: string;
32
- hackType: 'book' | 'course' | 'documentary' | 'podcast' | 'original';
33
- hackContributors: {
34
- name: string;
35
- }[];
36
- locale: SupportedLocale;
37
- }
38
- export interface StandaloneSegment extends CommandSegment {
39
- title?: string;
40
- keywords?: string[];
41
- sections: StandaloneSegmentSection[];
42
- actions?: StandaloneSegmentAction[];
43
- textSummary?: string;
44
- }
45
-
46
- export interface CompositeSegment extends CommandSegment {
47
- subSegments: StandaloneSegment[];
48
- }
49
-
50
- export interface CreateSegmentCommand {
51
- id: string;
52
- type: 'CreateSegment';
53
- payload: (CompositeSegment | StandaloneSegment);
54
- }
55
-
56
- export interface UpdateSegmentCommand {
57
- id: string;
58
- type: 'UpdateSegment';
59
- payload: (CompositeSegment | StandaloneSegment) & {
60
- segmentId: string;
61
- };
62
- }
63
-
64
- export interface DeleteSegmentCommand {
65
- id: string;
66
- type: 'DeleteSegment';
67
- payload: {
68
- segmentId: string;
69
- };
70
- }
1
+ import { SupportedLocale } from '../localisation/supported-locales';
2
+ import { SegmentType } from './segment';
3
+
4
+ export interface StandaloneSegmentCard {
5
+ markdown: string;
6
+ }
7
+
8
+ export interface StandaloneSegmentAction {
9
+ title: string;
10
+ cards: StandaloneSegmentCard[];
11
+ }
12
+
13
+ export interface StandaloneSegmentSection {
14
+ heading?: string;
15
+ cards: StandaloneSegmentCard[];
16
+ }
17
+
18
+ export interface CommandSegment {
19
+ type: SegmentType;
20
+ // @deprecated use hackTitle, hackType and hackContributors
21
+ source?: {
22
+ id: string;
23
+ type: string;
24
+ contributors: {
25
+ name: string;
26
+ }[];
27
+ title: string;
28
+ };
29
+ hackCoverUrl?: string;
30
+ hackId: string;
31
+ hackTitle: string;
32
+ hackType: 'book' | 'course' | 'documentary' | 'podcast' | 'original';
33
+ hackContributors: {
34
+ name: string;
35
+ }[];
36
+ locale: SupportedLocale;
37
+ }
38
+ export interface StandaloneSegment extends CommandSegment {
39
+ title?: string;
40
+ keywords?: string[];
41
+ sections: StandaloneSegmentSection[];
42
+ actions?: StandaloneSegmentAction[];
43
+ textSummary?: string;
44
+ }
45
+
46
+ export interface CompositeSegment extends CommandSegment {
47
+ subSegments: StandaloneSegment[];
48
+ }
49
+
50
+ export interface CreateSegmentCommand {
51
+ id: string;
52
+ type: 'CreateSegment';
53
+ payload: (CompositeSegment | StandaloneSegment);
54
+ }
55
+
56
+ export interface UpdateSegmentCommand {
57
+ id: string;
58
+ type: 'UpdateSegment';
59
+ payload: (CompositeSegment | StandaloneSegment) & {
60
+ segmentId: string;
61
+ };
62
+ }
63
+
64
+ export interface DeleteSegmentCommand {
65
+ id: string;
66
+ type: 'DeleteSegment';
67
+ payload: {
68
+ segmentId: string;
69
+ };
70
+ }
@@ -1,8 +1,8 @@
1
- import { Segment } from './segment';
2
-
3
- // a segment with audio in a single voice, because having all voices in one segment would make the entity very large
4
- // the only difference is that it includes a voiceIdAndLanguage field, which can be used as a range key to find the segment for a specific voice
5
- // segmentsWithVoice may point to default or non-default voices
6
- export interface SegmentWithVoice extends Segment {
7
- voiceIdAndLanguage: string;
8
- }
1
+ import { Segment } from './segment';
2
+
3
+ // a segment with audio in a single voice, because having all voices in one segment would make the entity very large
4
+ // the only difference is that it includes a voiceIdAndLanguage field, which can be used as a range key to find the segment for a specific voice
5
+ // segmentsWithVoice may point to default or non-default voices
6
+ export interface SegmentWithVoice extends Segment {
7
+ voiceIdAndLanguage: string;
8
+ }
@@ -1,82 +1,82 @@
1
- export interface SegmentVoice {
2
- id: string;
3
- language: string;
4
- name: string;
5
- countryCode: string;
6
- speechProvider: string;
7
- }
8
-
9
- export interface Segment {
10
- id: string;
11
- v: number;
12
- createdAt: string;
13
- updatedAt: string;
14
- hackId: string;
15
- type: SegmentType;
16
- title: string;
17
- sections: SegmentSection[];
18
- keywords: string[];
19
- actions: SegmentAction[];
20
- speech: SegmentSpeech[];
21
- textSummary?: string;
22
- lastUpdatedFromPendingSegmentId?: string;
23
- hackType: string;
24
- /** use @uptime.app/text-to-speech-contracts */
25
- locale: string;
26
- }
27
-
28
- export type SegmentType =
29
- 'overview' | 'favourite-quote' | 'in-a-nutshell' |
30
- 'introduction' | 'here-are-the-insights' |
31
- 'insight-one' | 'insight-two' | 'insight-three' |
32
- 'put-in-action' | 'conclusion' |
33
- 'shareable-overview' | 'download-app-to-see-more';
34
-
35
- export type CardType = 'hack-cover' | 'action';
36
-
37
- export interface SegmentAction {
38
- title: string;
39
- cards: SegmentTextCard[];
40
- }
41
-
42
- export interface SegmentTextCard {
43
- id: string;
44
- markdown: string;
45
- segmentType: SegmentType;
46
- cardType?: CardType;
47
- isTitle?: boolean;
48
- speech?: TextCardSpeech[];
49
- }
50
-
51
- export interface SegmentSection {
52
- heading?: string;
53
- cards: SegmentTextCard[];
54
- }
55
-
56
- export interface SegmentSpeech {
57
- voice: SegmentVoice;
58
- withHeading: {
59
- url: string;
60
- lengthSeconds: number;
61
- };
62
- withoutHeading: {
63
- url: string;
64
- lengthSeconds: number;
65
- };
66
- }
67
-
68
- export interface TextCardSpeech {
69
- voiceId: string;
70
- withHeading: {
71
- timestamps: {
72
- startsAt: number;
73
- endsAt: number;
74
- };
75
- };
76
- withoutHeading: {
77
- timestamps: {
78
- startsAt: number;
79
- endsAt: number;
80
- };
81
- };
82
- }
1
+ export interface SegmentVoice {
2
+ id: string;
3
+ language: string;
4
+ name: string;
5
+ countryCode: string;
6
+ speechProvider: string;
7
+ }
8
+
9
+ export interface Segment {
10
+ id: string;
11
+ v: number;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ hackId: string;
15
+ type: SegmentType;
16
+ title: string;
17
+ sections: SegmentSection[];
18
+ keywords: string[];
19
+ actions: SegmentAction[];
20
+ speech: SegmentSpeech[];
21
+ textSummary?: string;
22
+ lastUpdatedFromPendingSegmentId?: string;
23
+ hackType: string;
24
+ /** use @uptime.app/text-to-speech-contracts */
25
+ locale: string;
26
+ }
27
+
28
+ export type SegmentType =
29
+ 'overview' | 'favourite-quote' | 'in-a-nutshell' |
30
+ 'introduction' | 'here-are-the-insights' |
31
+ 'insight-one' | 'insight-two' | 'insight-three' |
32
+ 'put-in-action' | 'conclusion' |
33
+ 'shareable-overview' | 'download-app-to-see-more';
34
+
35
+ export type CardType = 'hack-cover' | 'action';
36
+
37
+ export interface SegmentAction {
38
+ title: string;
39
+ cards: SegmentTextCard[];
40
+ }
41
+
42
+ export interface SegmentTextCard {
43
+ id: string;
44
+ markdown: string;
45
+ segmentType: SegmentType;
46
+ cardType?: CardType;
47
+ isTitle?: boolean;
48
+ speech?: TextCardSpeech[];
49
+ }
50
+
51
+ export interface SegmentSection {
52
+ heading?: string;
53
+ cards: SegmentTextCard[];
54
+ }
55
+
56
+ export interface SegmentSpeech {
57
+ voice: SegmentVoice;
58
+ withHeading: {
59
+ url: string;
60
+ lengthSeconds: number;
61
+ };
62
+ withoutHeading: {
63
+ url: string;
64
+ lengthSeconds: number;
65
+ };
66
+ }
67
+
68
+ export interface TextCardSpeech {
69
+ voiceId: string;
70
+ withHeading: {
71
+ timestamps: {
72
+ startsAt: number;
73
+ endsAt: number;
74
+ };
75
+ };
76
+ withoutHeading: {
77
+ timestamps: {
78
+ startsAt: number;
79
+ endsAt: number;
80
+ };
81
+ };
82
+ }
@@ -1,21 +1,21 @@
1
- import { Skin } from './skin';
2
-
3
- export interface SkinCreatedEvent {
4
- id: string;
5
- type: 'SkinCreated';
6
- payload: Skin;
7
- }
8
-
9
- export interface SkinUpdatedEvent {
10
- id: string;
11
- type: 'SkinUpdated';
12
- payload: Skin;
13
- }
14
-
15
- export interface SkinDeletedEvent {
16
- id: string;
17
- type: 'SkinDeleted';
18
- payload: Skin;
19
- }
20
-
21
- export type SkinChangedEvent = SkinCreatedEvent | SkinUpdatedEvent | SkinDeletedEvent;
1
+ import { Skin } from './skin';
2
+
3
+ export interface SkinCreatedEvent {
4
+ id: string;
5
+ type: 'SkinCreated';
6
+ payload: Skin;
7
+ }
8
+
9
+ export interface SkinUpdatedEvent {
10
+ id: string;
11
+ type: 'SkinUpdated';
12
+ payload: Skin;
13
+ }
14
+
15
+ export interface SkinDeletedEvent {
16
+ id: string;
17
+ type: 'SkinDeleted';
18
+ payload: Skin;
19
+ }
20
+
21
+ export type SkinChangedEvent = SkinCreatedEvent | SkinUpdatedEvent | SkinDeletedEvent;
package/src/skin/skin.ts CHANGED
@@ -1,7 +1,7 @@
1
-
2
- export interface Skin {
3
- id: string;
4
- v: number;
5
- createdAt: string;
6
- updatedAt: string;
1
+
2
+ export interface Skin {
3
+ id: string;
4
+ v: number;
5
+ createdAt: string;
6
+ updatedAt: string;
7
7
  }
@@ -1,20 +1,20 @@
1
- import { TextSegment, Voice } from './text-segment';
2
-
3
- export interface CreateSpeechFromTextCommand {
4
- id: string;
5
- type: 'CreateSpeechFromText';
6
- payload: {
7
- locale: string;
8
- textSegments: TextSegment[];
9
- };
10
- }
11
-
12
- export interface CreateSpeechWithVoiceCommand {
13
- id: string;
14
- type: 'CreateSpeechWithVoice';
15
- payload: {
16
- locale: string;
17
- textSegments: TextSegment[];
18
- voice: Voice;
19
- };
20
- }
1
+ import { TextSegment, Voice } from './text-segment';
2
+
3
+ export interface CreateSpeechFromTextCommand {
4
+ id: string;
5
+ type: 'CreateSpeechFromText';
6
+ payload: {
7
+ locale: string;
8
+ textSegments: TextSegment[];
9
+ };
10
+ }
11
+
12
+ export interface CreateSpeechWithVoiceCommand {
13
+ id: string;
14
+ type: 'CreateSpeechWithVoice';
15
+ payload: {
16
+ locale: string;
17
+ textSegments: TextSegment[];
18
+ voice: Voice;
19
+ };
20
+ }
@@ -1,11 +1,11 @@
1
- import { TextSegmentWithSpeech } from './text-segment';
2
- import { SupportedLocale } from '../localisation/supported-locales';
3
-
4
- export interface SpeechFromTextCreatedEvent {
5
- id: string;
6
- type: 'SpeechFromTextCreated';
7
- payload: {
8
- locale: SupportedLocale;
9
- textSegments: TextSegmentWithSpeech[];
10
- };
11
- }
1
+ import { TextSegmentWithSpeech } from './text-segment';
2
+ import { SupportedLocale } from '../localisation/supported-locales';
3
+
4
+ export interface SpeechFromTextCreatedEvent {
5
+ id: string;
6
+ type: 'SpeechFromTextCreated';
7
+ payload: {
8
+ locale: SupportedLocale;
9
+ textSegments: TextSegmentWithSpeech[];
10
+ };
11
+ }
@@ -1,29 +1,29 @@
1
- export interface TextSegment {
2
- parentId: string;
3
- textSegmentId: string;
4
- content: string;
5
- }
6
-
7
- export interface TextSegmentWithSpeech extends TextSegment {
8
- speech: Speech[];
9
- /* The speech-friendly version of the "content" field. Trimmed, enrichment links removed, words replaced based on custom dictionary, etc. */
10
- spokenContent: string;
11
- }
12
-
13
- export interface Speech {
14
- voice: Voice;
15
- url: string;
16
- }
17
-
18
- export interface Voice {
19
- id: string;
20
- language: string;
21
- name: string;
22
- countryCode: string;
23
- /** use SupportedSpeechProvider */
24
- speechProvider: string;
25
- }
26
-
27
- export enum SupportedSpeechProvider {
28
- MicrosoftAzure = 'microsoft-azure'
29
- }
1
+ export interface TextSegment {
2
+ parentId: string;
3
+ textSegmentId: string;
4
+ content: string;
5
+ }
6
+
7
+ export interface TextSegmentWithSpeech extends TextSegment {
8
+ speech: Speech[];
9
+ /* The speech-friendly version of the "content" field. Trimmed, enrichment links removed, words replaced based on custom dictionary, etc. */
10
+ spokenContent: string;
11
+ }
12
+
13
+ export interface Speech {
14
+ voice: Voice;
15
+ url: string;
16
+ }
17
+
18
+ export interface Voice {
19
+ id: string;
20
+ language: string;
21
+ name: string;
22
+ countryCode: string;
23
+ /** use SupportedSpeechProvider */
24
+ speechProvider: string;
25
+ }
26
+
27
+ export enum SupportedSpeechProvider {
28
+ MicrosoftAzure = 'microsoft-azure'
29
+ }
@@ -1,21 +1,21 @@
1
- import { Theme } from './theme';
2
-
3
- export interface ThemeCreatedEvent {
4
- id: string;
5
- type: 'ThemeCreated';
6
- payload: Theme;
7
- }
8
-
9
- export interface ThemeUpdatedEvent {
10
- id: string;
11
- type: 'ThemeUpdated';
12
- payload: Theme;
13
- }
14
-
15
- export interface ThemeDeletedEvent {
16
- id: string;
17
- type: 'ThemeDeleted';
18
- payload: Theme;
19
- }
20
-
21
- export type ThemeChangedEvent = ThemeCreatedEvent | ThemeUpdatedEvent | ThemeDeletedEvent;
1
+ import { Theme } from './theme';
2
+
3
+ export interface ThemeCreatedEvent {
4
+ id: string;
5
+ type: 'ThemeCreated';
6
+ payload: Theme;
7
+ }
8
+
9
+ export interface ThemeUpdatedEvent {
10
+ id: string;
11
+ type: 'ThemeUpdated';
12
+ payload: Theme;
13
+ }
14
+
15
+ export interface ThemeDeletedEvent {
16
+ id: string;
17
+ type: 'ThemeDeleted';
18
+ payload: Theme;
19
+ }
20
+
21
+ export type ThemeChangedEvent = ThemeCreatedEvent | ThemeUpdatedEvent | ThemeDeletedEvent;