@uptime.app/contracts 3.0.18 → 3.0.19-rc.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/cjs/course-enrollment/course-enrollment.d.ts +1 -0
- package/dist/cjs/course-enrollment/course-enrollment.d.ts.map +1 -1
- package/dist/esm/course-enrollment/course-enrollment.d.ts +1 -0
- package/dist/esm/course-enrollment/course-enrollment.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/access-control/collection-access-control.ts +28 -28
- package/src/access-control/hack-access-control.ts +32 -32
- package/src/access-control/profile-access-control.ts +27 -27
- package/src/app-hack/app-full-hack.ts +9 -9
- package/src/app-hack/app-hack-metadata.ts +61 -61
- package/src/app-hack/app-restricted-hack.ts +22 -22
- package/src/b2b-content-access/b2b-content-access.ts +57 -57
- package/src/b2b-organisation/b2b-carousel.ts +33 -33
- package/src/b2b-organisation/b2b-org-idp-mapping.ts +27 -27
- package/src/b2b-organisation/b2b-organisation-events.ts +21 -21
- package/src/b2b-organisation/b2b-organisation-invitation.ts +45 -45
- package/src/b2b-organisation/b2b-organisation-member-events.ts +21 -21
- package/src/b2b-organisation/b2b-organisation-member.ts +19 -19
- package/src/b2b-organisation/b2b-organisation.ts +35 -35
- package/src/brand/brand-events.ts +21 -21
- package/src/brand/brand.ts +27 -27
- package/src/catalogue/catalogue.ts +147 -147
- package/src/cms-hack/cms-searchable-hack.ts +44 -44
- package/src/collection/collection-events.ts +21 -21
- package/src/collection/collection.ts +57 -57
- package/src/collection/enriched-collection-events.ts +18 -18
- package/src/collection/enriched-collection.ts +61 -61
- package/src/course/course-events.ts +20 -20
- package/src/course/course.ts +25 -25
- package/src/course-enrollment/course-enrollment-events.ts +21 -21
- package/src/course-enrollment/course-enrollment.ts +33 -32
- package/src/creator/creator-events.ts +32 -32
- package/src/creator/creator.ts +7 -7
- package/src/distribution/collection-distribution.ts +17 -17
- package/src/distribution/distribution-events.ts +61 -61
- package/src/distribution/hack-distribution.ts +18 -18
- package/src/draft-hack/draft-hack-events.ts +21 -21
- package/src/draft-hack/draft-hack.ts +190 -190
- package/src/draft-hack-generation/draft-hack-generation-commands.ts +10 -10
- package/src/draft-hack-generation/draft-hack-generation-events.ts +52 -52
- package/src/draft-hack-generation/draft-hack-generation.ts +39 -39
- package/src/enriched-b2b-organisation/enriched-b2b-organisation-events.ts +21 -21
- package/src/enriched-b2b-organisation/enriched-b2b-organisation.ts +37 -37
- package/src/enriched-hack/enriched-hack-events.ts +21 -21
- package/src/enriched-hack/enriched-hack.ts +109 -109
- package/src/enrichment-asset/hack-enrichment-video-events.ts +55 -55
- package/src/enrichment-asset/hack-enrichment-video.ts +40 -40
- package/src/entitlement/user-entitlements-commands.ts +54 -54
- package/src/entitlement/user-entitlements-events.ts +29 -29
- package/src/entitlement/user-entitlements.ts +18 -18
- package/src/flashcard/flashcard-events.ts +85 -85
- package/src/flashcard/flashcard.ts +138 -138
- package/src/hack/extracted-subject.ts +31 -31
- package/src/hack/hack-events.ts +21 -21
- package/src/hack/hack-published.ts +21 -21
- package/src/hack/hack-with-voice-events.ts +20 -20
- package/src/hack/hack-with-voice.ts +36 -36
- package/src/hack/hack.ts +127 -127
- package/src/hack/publish-hack-command.ts +20 -20
- package/src/hack/republish-hack-command.ts +20 -20
- package/src/hack-mapping/access-helper.ts +6 -6
- package/src/hack-mapping/app-full-hack.test.ts +12 -12
- package/src/hack-mapping/app-full-hack.ts +14 -14
- package/src/hack-mapping/app-hack-metadata.test.ts +22 -22
- package/src/hack-mapping/app-hack-metadata.ts +82 -82
- package/src/hack-mapping/app-restricted-hack.test.ts +11 -11
- package/src/hack-mapping/app-restricted-hack.ts +21 -21
- package/src/hack-mapping/remove-undefined-fields.ts +9 -9
- package/src/hack-mapping/test-data/enriched-hack.json +2576 -2576
- package/src/hack-mapping/test-data/expected-app-full-hack.json +2509 -2509
- package/src/hack-mapping/test-data/expected-app-hack-metadata.json +93 -93
- package/src/hack-mapping/test-data/expected-app-restricted-hack.json +799 -799
- package/src/hack-metadata/hack-metadata-events.ts +21 -21
- package/src/hack-metadata/hack-metadata.ts +17 -17
- package/src/hack-of-the-day/hack-of-the-day-events.ts +21 -21
- package/src/hack-of-the-day/hack-of-the-day.ts +13 -13
- package/src/hack-statistics/hack-statistics-events.ts +21 -21
- package/src/hack-statistics/hack-statistics.ts +9 -9
- package/src/hackbot/hack-generation-commands.ts +44 -44
- package/src/hackbot/hack-generation-trigger-events.ts +21 -21
- package/src/hackbot/hack-generation-trigger.ts +56 -56
- package/src/history/history-events.ts +21 -21
- package/src/history/history.ts +46 -46
- package/src/identity-provider/domain-identity-provider-events.ts +20 -20
- package/src/identity-provider/domain-identity-provider.ts +10 -10
- package/src/identity-provider/identity-provider-events.ts +20 -20
- package/src/identity-provider/identity-provider.ts +46 -46
- package/src/index.ts +205 -205
- package/src/interest/interest-events.ts +21 -21
- package/src/interest/interest.ts +15 -15
- package/src/knowledge-source/knowledge-source-events.ts +21 -21
- package/src/knowledge-source/knowledge-source.ts +43 -43
- package/src/knowledge-source-parsing/knowledge-source-metadata.ts +52 -52
- package/src/knowledge-source-parsing/knowledge-source-parsing-commands.ts +41 -41
- package/src/knowledge-source-parsing/knowledge-source-parsing-events.ts +30 -30
- package/src/knowledge-source-parsing/podcast-metadata.ts +44 -44
- package/src/knowledge-source-parsing/podcast-parsing-events.ts +28 -28
- package/src/knowledge-source-parsing/user-hack-generation-options.ts +7 -7
- package/src/learn-upon/get-sqsso-url.ts +13 -13
- package/src/learn-upon/learn-upon-commands.ts +32 -32
- package/src/learn-upon/learn-upon-course-enrollment-events.ts +21 -21
- package/src/learn-upon/learn-upon-course-enrollment.ts +62 -62
- package/src/learn-upon/learn-upon-course-events.ts +21 -21
- package/src/learn-upon/learn-upon-course.ts +105 -105
- package/src/learn-upon/learn-upon-portal-events.ts +20 -20
- package/src/learn-upon/learn-upon-portal.ts +12 -12
- package/src/learn-upon/learn-upon-user-mapping-events.ts +18 -18
- package/src/learn-upon/learn-upon-user-mapping.ts +9 -9
- package/src/learn-upon/learn-upon-webhook-events.ts +80 -80
- package/src/learn-upon/learn-upon-webhook-types.ts +346 -346
- package/src/learn-upon/unenroll.ts +6 -6
- package/src/localisation/live-locales.ts +45 -45
- package/src/localisation/locale-language.ts +4 -4
- package/src/localisation/supported-languages.ts +11 -11
- package/src/localisation/supported-locales.ts +67 -67
- package/src/message-bus/context.ts +7 -7
- package/src/moderation/hack-moderation-result-events.ts +18 -18
- package/src/moderation/hack-moderation-result.ts +27 -27
- package/src/partner/partner-events.ts +21 -21
- package/src/partner/partner.ts +7 -7
- package/src/pending-hack/pending-hack-events.ts +20 -20
- package/src/pending-hack/pending-hack-with-voice-events.ts +20 -20
- package/src/pending-hack/pending-hack-with-voice.ts +25 -25
- package/src/pending-hack/pending-hack.ts +78 -78
- package/src/preferences/preferences-events.ts +15 -15
- package/src/preferences/preferences.ts +35 -35
- package/src/profile/profile-events.ts +41 -41
- package/src/profile/profile.ts +36 -36
- package/src/profile/translated-profile.ts +13 -13
- package/src/referral/referral-events.ts +41 -41
- package/src/referral/referral.ts +76 -76
- package/src/saved/saved-collection-events.ts +19 -19
- package/src/saved/saved-collection.ts +8 -8
- package/src/segment/segment-commands.ts +75 -75
- package/src/segment/segment-events.ts +42 -42
- package/src/segment/segment-with-voice.ts +8 -8
- package/src/segment/segment.ts +82 -82
- package/src/service-simulator/mock-request-response.ts +17 -17
- package/src/skin/skin-events.ts +21 -21
- package/src/skin/skin.ts +6 -6
- package/src/spark/spark-board-read-model.ts +17 -17
- package/src/spark/spark-board.ts +12 -12
- package/src/spark/spark-events.ts +42 -42
- package/src/spark/spark.ts +75 -75
- package/src/text-to-speech/create-speech-commands.ts +22 -22
- package/src/text-to-speech/speech-created-events.ts +10 -10
- package/src/text-to-speech/supported-voices.ts +222 -222
- package/src/text-to-speech/text-segment.ts +29 -29
- package/src/theme/theme-events.ts +21 -21
- package/src/theme/theme.ts +68 -68
- package/src/translation/translation-events.ts +73 -73
- package/src/translation/translation.ts +25 -25
- package/src/trending/trending-events.ts +21 -21
- package/src/trending/trending-hacks.ts +8 -8
- package/src/user/cognito-user-authentication-log.ts +7 -7
- package/src/user/get-user.ts +63 -63
- package/src/user/user-events.ts +32 -32
- package/src/user-context/user-context-events.ts +21 -21
- package/src/user-context/user-context.ts +15 -15
- package/src/user-notification-context/user-notification-context-events.ts +21 -21
- package/src/user-notification-context/user-notification-context.ts +9 -9
- package/src/user-statistics/user-statistics-events.ts +97 -97
- package/src/user-statistics/user-statistics.ts +82 -82
- package/src/video-cropping/video-cropping-events.ts +43 -43
- package/src/video-cropping/video-metadata.ts +12 -12
- package/tsconfig.cjs.json +7 -7
- package/tsconfig.npm.json +22 -22
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { B2BOrganisation } from '../b2b-organisation/b2b-organisation';
|
|
2
|
-
import { SupportedLocale } from '../localisation/supported-locales';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* An enriched model of B2BOrganisation containing data that can be consumed by a public (unauthenticated) endpoint
|
|
6
|
-
*/
|
|
7
|
-
export interface EnrichedB2BOrganisation extends B2BOrganisation {
|
|
8
|
-
identityProviders: EnrichedB2BOrganisationIdentityProvider[];
|
|
9
|
-
skinId?: string;
|
|
10
|
-
brandWebAppDomain?: string;
|
|
11
|
-
brandAppName?: {
|
|
12
|
-
[K in SupportedLocale]?: string
|
|
13
|
-
};
|
|
14
|
-
ssoEnforcement?: SSOEnforcement;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface EnrichedB2BOrganisationIdentityProvider {
|
|
18
|
-
id?: string;
|
|
19
|
-
providerName: string;
|
|
20
|
-
verifiedDomains: string[];
|
|
21
|
-
/** Matching verifiedDomains should require to be authenticated via IdP or not */
|
|
22
|
-
enforceIdpAuth: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export enum SSOEnforcement {
|
|
26
|
-
/**
|
|
27
|
-
* Means that no identity provider is configured for the organisation
|
|
28
|
-
*/
|
|
29
|
-
NONE = 'NONE',
|
|
30
|
-
/**
|
|
31
|
-
* Means that it has at least 1 identity provider but not all identity providers have enforceIdpAuth set to true
|
|
32
|
-
*/
|
|
33
|
-
OPTIONAL = 'OPTIONAL',
|
|
34
|
-
/**
|
|
35
|
-
* Means it has at least 1 identity provider and that all identity providers enforceIdpAuth
|
|
36
|
-
*/
|
|
37
|
-
ENFORCED = 'ENFORCED'
|
|
1
|
+
import { B2BOrganisation } from '../b2b-organisation/b2b-organisation';
|
|
2
|
+
import { SupportedLocale } from '../localisation/supported-locales';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* An enriched model of B2BOrganisation containing data that can be consumed by a public (unauthenticated) endpoint
|
|
6
|
+
*/
|
|
7
|
+
export interface EnrichedB2BOrganisation extends B2BOrganisation {
|
|
8
|
+
identityProviders: EnrichedB2BOrganisationIdentityProvider[];
|
|
9
|
+
skinId?: string;
|
|
10
|
+
brandWebAppDomain?: string;
|
|
11
|
+
brandAppName?: {
|
|
12
|
+
[K in SupportedLocale]?: string
|
|
13
|
+
};
|
|
14
|
+
ssoEnforcement?: SSOEnforcement;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface EnrichedB2BOrganisationIdentityProvider {
|
|
18
|
+
id?: string;
|
|
19
|
+
providerName: string;
|
|
20
|
+
verifiedDomains: string[];
|
|
21
|
+
/** Matching verifiedDomains should require to be authenticated via IdP or not */
|
|
22
|
+
enforceIdpAuth: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export enum SSOEnforcement {
|
|
26
|
+
/**
|
|
27
|
+
* Means that no identity provider is configured for the organisation
|
|
28
|
+
*/
|
|
29
|
+
NONE = 'NONE',
|
|
30
|
+
/**
|
|
31
|
+
* Means that it has at least 1 identity provider but not all identity providers have enforceIdpAuth set to true
|
|
32
|
+
*/
|
|
33
|
+
OPTIONAL = 'OPTIONAL',
|
|
34
|
+
/**
|
|
35
|
+
* Means it has at least 1 identity provider and that all identity providers enforceIdpAuth
|
|
36
|
+
*/
|
|
37
|
+
ENFORCED = 'ENFORCED'
|
|
38
38
|
}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { EnrichedHack } from './enriched-hack';
|
|
2
|
-
|
|
3
|
-
export interface EnrichedHackCreatedEvent {
|
|
4
|
-
id: string;
|
|
5
|
-
type: 'EnrichedHackCreated';
|
|
6
|
-
payload: EnrichedHack;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface EnrichedHackUpdatedEvent {
|
|
10
|
-
id: string;
|
|
11
|
-
type: 'EnrichedHackUpdated';
|
|
12
|
-
payload: EnrichedHack;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface EnrichedHackDeletedEvent {
|
|
16
|
-
id: string;
|
|
17
|
-
type: 'EnrichedHackDeleted';
|
|
18
|
-
payload: EnrichedHack;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export type EnrichedHackChangedEvent = EnrichedHackCreatedEvent | EnrichedHackUpdatedEvent | EnrichedHackDeletedEvent;
|
|
1
|
+
import { EnrichedHack } from './enriched-hack';
|
|
2
|
+
|
|
3
|
+
export interface EnrichedHackCreatedEvent {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'EnrichedHackCreated';
|
|
6
|
+
payload: EnrichedHack;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface EnrichedHackUpdatedEvent {
|
|
10
|
+
id: string;
|
|
11
|
+
type: 'EnrichedHackUpdated';
|
|
12
|
+
payload: EnrichedHack;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface EnrichedHackDeletedEvent {
|
|
16
|
+
id: string;
|
|
17
|
+
type: 'EnrichedHackDeleted';
|
|
18
|
+
payload: EnrichedHack;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type EnrichedHackChangedEvent = EnrichedHackCreatedEvent | EnrichedHackUpdatedEvent | EnrichedHackDeletedEvent;
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
import { HackAffiliate, HackContributor, HackExternalLink, HackSourceData, HackTopic, HackType } from '../hack/hack';
|
|
2
|
-
import { KnowledgeSource } from '../knowledge-source/knowledge-source';
|
|
3
|
-
import { Profile, ProfileMetadata } from '../profile/profile';
|
|
4
|
-
import { Theme } from '../theme/theme';
|
|
5
|
-
import { HackWithVoice } from '../hack/hack-with-voice';
|
|
6
|
-
import { ExtractedSubject } from '../hack/extracted-subject';
|
|
7
|
-
import { SegmentType, SegmentAction, SegmentSpeech, SegmentSection, SegmentTextCard } from '../segment/segment';
|
|
8
|
-
|
|
9
|
-
export interface EnrichedHack {
|
|
10
|
-
/** The hack id */
|
|
11
|
-
id: string;
|
|
12
|
-
/** The hack language e.g. 'fr' if it is French */
|
|
13
|
-
language: string;
|
|
14
|
-
/** The locale (language and region) of the hack e.g. fr-FR. Use @uptime.app/localisation-contracts */
|
|
15
|
-
locale: string;
|
|
16
|
-
/** The id of the hack in its original locale. */
|
|
17
|
-
baseLocaleHackId: string;
|
|
18
|
-
v: number;
|
|
19
|
-
hackVersion: number;
|
|
20
|
-
createdAt: string;
|
|
21
|
-
updatedAt: string;
|
|
22
|
-
|
|
23
|
-
/** introduced Oct 2023 **/
|
|
24
|
-
draftHackId: string;
|
|
25
|
-
draftHackVersion: number;
|
|
26
|
-
|
|
27
|
-
//@todo: Deprecate
|
|
28
|
-
source?: KnowledgeSource;
|
|
29
|
-
owner: string;
|
|
30
|
-
tenant?: string;
|
|
31
|
-
acl: string[];
|
|
32
|
-
theme: Theme;
|
|
33
|
-
title: string;
|
|
34
|
-
isHidden?: boolean;
|
|
35
|
-
editorialTags?: string[];
|
|
36
|
-
coverUrl?: string;
|
|
37
|
-
/** Added in July 2024. This is the URL of the cover image that is free to use without any copyright. */
|
|
38
|
-
copyrightFreeCoverUrl?: string;
|
|
39
|
-
notifications?: EnrichedHackNotifications;
|
|
40
|
-
/* currently contains the inANutshell segment markdown */
|
|
41
|
-
description: string;
|
|
42
|
-
// ...
|
|
43
|
-
|
|
44
|
-
segments: HackWithVoice['segments']; // Use the 'HackWithVoice' type
|
|
45
|
-
affiliate?: HackAffiliate;
|
|
46
|
-
topics: HackTopic[];
|
|
47
|
-
contributors?: HackContributor[];
|
|
48
|
-
type: HackType;
|
|
49
|
-
sourceData?: HackSourceData;
|
|
50
|
-
externalLink?: HackExternalLink;
|
|
51
|
-
profile: EnrichHackProfile;
|
|
52
|
-
|
|
53
|
-
/** added April 2024 */
|
|
54
|
-
// TODO make it mandatory after a republish
|
|
55
|
-
subjects?: EnrichedHackSubjects;
|
|
56
|
-
|
|
57
|
-
// distribution
|
|
58
|
-
includeInEmailNotifications: boolean;
|
|
59
|
-
includeInPushNotifications: boolean;
|
|
60
|
-
includeInRecommendations: boolean;
|
|
61
|
-
includeInSearchResults: boolean;
|
|
62
|
-
includeInTrending: boolean;
|
|
63
|
-
includeInHackOfTheDay: boolean;
|
|
64
|
-
includeInWebsite: boolean;
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Time saved in minutes by consuming the hack rather than the underlying knowledge source.
|
|
68
|
-
* calculated using the knowledge source page count / duration
|
|
69
|
-
* */
|
|
70
|
-
timeSaved?: number;
|
|
71
|
-
/**
|
|
72
|
-
* An estimation of the time saved in minutes when no reliable information is available on the knowledge source.
|
|
73
|
-
*/
|
|
74
|
-
estimatedTimeSaved?: number;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Tenant display name, from the display name of its b2b-organisation, if any
|
|
78
|
-
*/
|
|
79
|
-
tenantDisplayName?: string;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export interface EnrichedHackNotifications {
|
|
83
|
-
aiGeneratedText?: string;
|
|
84
|
-
humanCuratedText?: string;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export interface EnrichedHackSubjects {
|
|
88
|
-
aiGenerated: ExtractedSubject[];
|
|
89
|
-
humanCurated?: ExtractedSubject[];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export interface EnrichedHackSegment {
|
|
93
|
-
id: string;
|
|
94
|
-
createdAt: string;
|
|
95
|
-
updatedAt: string;
|
|
96
|
-
title: string;
|
|
97
|
-
type: SegmentType;
|
|
98
|
-
keywords: string[];
|
|
99
|
-
actions: SegmentAction[];
|
|
100
|
-
speech: SegmentSpeech[];
|
|
101
|
-
sections: SegmentSection[];
|
|
102
|
-
storyMode?: {
|
|
103
|
-
cards: SegmentTextCard[];
|
|
104
|
-
speech: SegmentSpeech[];
|
|
105
|
-
},
|
|
106
|
-
textSummary?: string;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export type EnrichHackProfile = Profile | ProfileMetadata;
|
|
1
|
+
import { HackAffiliate, HackContributor, HackExternalLink, HackSourceData, HackTopic, HackType } from '../hack/hack';
|
|
2
|
+
import { KnowledgeSource } from '../knowledge-source/knowledge-source';
|
|
3
|
+
import { Profile, ProfileMetadata } from '../profile/profile';
|
|
4
|
+
import { Theme } from '../theme/theme';
|
|
5
|
+
import { HackWithVoice } from '../hack/hack-with-voice';
|
|
6
|
+
import { ExtractedSubject } from '../hack/extracted-subject';
|
|
7
|
+
import { SegmentType, SegmentAction, SegmentSpeech, SegmentSection, SegmentTextCard } from '../segment/segment';
|
|
8
|
+
|
|
9
|
+
export interface EnrichedHack {
|
|
10
|
+
/** The hack id */
|
|
11
|
+
id: string;
|
|
12
|
+
/** The hack language e.g. 'fr' if it is French */
|
|
13
|
+
language: string;
|
|
14
|
+
/** The locale (language and region) of the hack e.g. fr-FR. Use @uptime.app/localisation-contracts */
|
|
15
|
+
locale: string;
|
|
16
|
+
/** The id of the hack in its original locale. */
|
|
17
|
+
baseLocaleHackId: string;
|
|
18
|
+
v: number;
|
|
19
|
+
hackVersion: number;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
|
|
23
|
+
/** introduced Oct 2023 **/
|
|
24
|
+
draftHackId: string;
|
|
25
|
+
draftHackVersion: number;
|
|
26
|
+
|
|
27
|
+
//@todo: Deprecate
|
|
28
|
+
source?: KnowledgeSource;
|
|
29
|
+
owner: string;
|
|
30
|
+
tenant?: string;
|
|
31
|
+
acl: string[];
|
|
32
|
+
theme: Theme;
|
|
33
|
+
title: string;
|
|
34
|
+
isHidden?: boolean;
|
|
35
|
+
editorialTags?: string[];
|
|
36
|
+
coverUrl?: string;
|
|
37
|
+
/** Added in July 2024. This is the URL of the cover image that is free to use without any copyright. */
|
|
38
|
+
copyrightFreeCoverUrl?: string;
|
|
39
|
+
notifications?: EnrichedHackNotifications;
|
|
40
|
+
/* currently contains the inANutshell segment markdown */
|
|
41
|
+
description: string;
|
|
42
|
+
// ...
|
|
43
|
+
|
|
44
|
+
segments: HackWithVoice['segments']; // Use the 'HackWithVoice' type
|
|
45
|
+
affiliate?: HackAffiliate;
|
|
46
|
+
topics: HackTopic[];
|
|
47
|
+
contributors?: HackContributor[];
|
|
48
|
+
type: HackType;
|
|
49
|
+
sourceData?: HackSourceData;
|
|
50
|
+
externalLink?: HackExternalLink;
|
|
51
|
+
profile: EnrichHackProfile;
|
|
52
|
+
|
|
53
|
+
/** added April 2024 */
|
|
54
|
+
// TODO make it mandatory after a republish
|
|
55
|
+
subjects?: EnrichedHackSubjects;
|
|
56
|
+
|
|
57
|
+
// distribution
|
|
58
|
+
includeInEmailNotifications: boolean;
|
|
59
|
+
includeInPushNotifications: boolean;
|
|
60
|
+
includeInRecommendations: boolean;
|
|
61
|
+
includeInSearchResults: boolean;
|
|
62
|
+
includeInTrending: boolean;
|
|
63
|
+
includeInHackOfTheDay: boolean;
|
|
64
|
+
includeInWebsite: boolean;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Time saved in minutes by consuming the hack rather than the underlying knowledge source.
|
|
68
|
+
* calculated using the knowledge source page count / duration
|
|
69
|
+
* */
|
|
70
|
+
timeSaved?: number;
|
|
71
|
+
/**
|
|
72
|
+
* An estimation of the time saved in minutes when no reliable information is available on the knowledge source.
|
|
73
|
+
*/
|
|
74
|
+
estimatedTimeSaved?: number;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Tenant display name, from the display name of its b2b-organisation, if any
|
|
78
|
+
*/
|
|
79
|
+
tenantDisplayName?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface EnrichedHackNotifications {
|
|
83
|
+
aiGeneratedText?: string;
|
|
84
|
+
humanCuratedText?: string;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface EnrichedHackSubjects {
|
|
88
|
+
aiGenerated: ExtractedSubject[];
|
|
89
|
+
humanCurated?: ExtractedSubject[];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface EnrichedHackSegment {
|
|
93
|
+
id: string;
|
|
94
|
+
createdAt: string;
|
|
95
|
+
updatedAt: string;
|
|
96
|
+
title: string;
|
|
97
|
+
type: SegmentType;
|
|
98
|
+
keywords: string[];
|
|
99
|
+
actions: SegmentAction[];
|
|
100
|
+
speech: SegmentSpeech[];
|
|
101
|
+
sections: SegmentSection[];
|
|
102
|
+
storyMode?: {
|
|
103
|
+
cards: SegmentTextCard[];
|
|
104
|
+
speech: SegmentSpeech[];
|
|
105
|
+
},
|
|
106
|
+
textSummary?: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export type EnrichHackProfile = Profile | ProfileMetadata;
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { HackEnrichmentVideo, PendingHackEnrichmentVideo } from './hack-enrichment-video';
|
|
2
|
-
|
|
3
|
-
export interface HackEnrichmentVideoCreatedEvent {
|
|
4
|
-
id: string;
|
|
5
|
-
type: 'HackEnrichmentVideoCreated';
|
|
6
|
-
payload: HackEnrichmentVideo;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface HackEnrichmentVideoUpdatedEvent {
|
|
10
|
-
id: string;
|
|
11
|
-
type: 'HackEnrichmentVideoUpdated';
|
|
12
|
-
payload: HackEnrichmentVideo;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface HackEnrichmentVideoDeletedEvent {
|
|
16
|
-
id: string;
|
|
17
|
-
type: 'HackEnrichmentVideoDeleted';
|
|
18
|
-
payload: HackEnrichmentVideo;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface PendingHackEnrichmentVideoCreatedEvent {
|
|
22
|
-
id: string;
|
|
23
|
-
type: 'PendingHackEnrichmentVideoCreated';
|
|
24
|
-
payload: PendingHackEnrichmentVideo;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface PendingHackEnrichmentVideoUpdatedEvent {
|
|
28
|
-
id: string;
|
|
29
|
-
type: 'PendingHackEnrichmentVideoUpdated';
|
|
30
|
-
payload: PendingHackEnrichmentVideo;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface PendingHackEnrichmentVideoDeletedEvent {
|
|
34
|
-
id: string;
|
|
35
|
-
type: 'PendingHackEnrichmentVideoDeleted';
|
|
36
|
-
payload: PendingHackEnrichmentVideo;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export type HackEnrichmentVideoChangedEvent = HackEnrichmentVideoCreatedEvent | HackEnrichmentVideoUpdatedEvent | HackEnrichmentVideoDeletedEvent;
|
|
40
|
-
export type PendingHackEnrichmentVideoChangedEvent = PendingHackEnrichmentVideoCreatedEvent | PendingHackEnrichmentVideoUpdatedEvent | PendingHackEnrichmentVideoDeletedEvent;
|
|
41
|
-
|
|
42
|
-
export interface CreateHackEnrichmentVideoCommandBody {
|
|
43
|
-
// a command needs an id and a version so that it can be more easily replayed
|
|
44
|
-
// for this specific command, the id is the youTubeUrl and the version is a timestamp
|
|
45
|
-
id: string;
|
|
46
|
-
v: number;
|
|
47
|
-
youTubeUrl: string;
|
|
48
|
-
hackId: string;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export interface CreateHackEnrichmentVideoCommand {
|
|
52
|
-
id: string;
|
|
53
|
-
type: 'CreateHackEnrichmentVideoCommand';
|
|
54
|
-
payload: CreateHackEnrichmentVideoCommandBody;
|
|
55
|
-
}
|
|
1
|
+
import { HackEnrichmentVideo, PendingHackEnrichmentVideo } from './hack-enrichment-video';
|
|
2
|
+
|
|
3
|
+
export interface HackEnrichmentVideoCreatedEvent {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'HackEnrichmentVideoCreated';
|
|
6
|
+
payload: HackEnrichmentVideo;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface HackEnrichmentVideoUpdatedEvent {
|
|
10
|
+
id: string;
|
|
11
|
+
type: 'HackEnrichmentVideoUpdated';
|
|
12
|
+
payload: HackEnrichmentVideo;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface HackEnrichmentVideoDeletedEvent {
|
|
16
|
+
id: string;
|
|
17
|
+
type: 'HackEnrichmentVideoDeleted';
|
|
18
|
+
payload: HackEnrichmentVideo;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface PendingHackEnrichmentVideoCreatedEvent {
|
|
22
|
+
id: string;
|
|
23
|
+
type: 'PendingHackEnrichmentVideoCreated';
|
|
24
|
+
payload: PendingHackEnrichmentVideo;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface PendingHackEnrichmentVideoUpdatedEvent {
|
|
28
|
+
id: string;
|
|
29
|
+
type: 'PendingHackEnrichmentVideoUpdated';
|
|
30
|
+
payload: PendingHackEnrichmentVideo;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface PendingHackEnrichmentVideoDeletedEvent {
|
|
34
|
+
id: string;
|
|
35
|
+
type: 'PendingHackEnrichmentVideoDeleted';
|
|
36
|
+
payload: PendingHackEnrichmentVideo;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type HackEnrichmentVideoChangedEvent = HackEnrichmentVideoCreatedEvent | HackEnrichmentVideoUpdatedEvent | HackEnrichmentVideoDeletedEvent;
|
|
40
|
+
export type PendingHackEnrichmentVideoChangedEvent = PendingHackEnrichmentVideoCreatedEvent | PendingHackEnrichmentVideoUpdatedEvent | PendingHackEnrichmentVideoDeletedEvent;
|
|
41
|
+
|
|
42
|
+
export interface CreateHackEnrichmentVideoCommandBody {
|
|
43
|
+
// a command needs an id and a version so that it can be more easily replayed
|
|
44
|
+
// for this specific command, the id is the youTubeUrl and the version is a timestamp
|
|
45
|
+
id: string;
|
|
46
|
+
v: number;
|
|
47
|
+
youTubeUrl: string;
|
|
48
|
+
hackId: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CreateHackEnrichmentVideoCommand {
|
|
52
|
+
id: string;
|
|
53
|
+
type: 'CreateHackEnrichmentVideoCommand';
|
|
54
|
+
payload: CreateHackEnrichmentVideoCommandBody;
|
|
55
|
+
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { VideoMetadata } from '..';
|
|
2
|
-
|
|
3
|
-
export interface HackEnrichmentVideo {
|
|
4
|
-
id: string;
|
|
5
|
-
v: number;
|
|
6
|
-
createdAt: string;
|
|
7
|
-
updatedAt: string;
|
|
8
|
-
youTubeUrl: string;
|
|
9
|
-
hackId: string;
|
|
10
|
-
|
|
11
|
-
youTubeVideoId: string;
|
|
12
|
-
startAtSeconds: number;
|
|
13
|
-
endAtSeconds: number;
|
|
14
|
-
|
|
15
|
-
s3Path: string;
|
|
16
|
-
videoMetadata: VideoMetadata;
|
|
17
|
-
|
|
18
|
-
// Set to true when the original hack still includes the URL of this video, and false when the URL is removed from the hack
|
|
19
|
-
referencedByHack: boolean;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface PendingHackEnrichmentVideo {
|
|
23
|
-
// not used as a key in the dynamo table
|
|
24
|
-
id: string;
|
|
25
|
-
v: number;
|
|
26
|
-
createdAt: string;
|
|
27
|
-
updatedAt: string;
|
|
28
|
-
|
|
29
|
-
// hash and range keys
|
|
30
|
-
youTubeUrl: string;
|
|
31
|
-
hackId: string;
|
|
32
|
-
|
|
33
|
-
hackEnrichmentVideoId: string;
|
|
34
|
-
|
|
35
|
-
status: PendingHackEnrichmentVideoStatus;
|
|
36
|
-
error?: string;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// on success, the pending entity is deleted
|
|
40
|
-
export type PendingHackEnrichmentVideoStatus = 'processing' | 'failed';
|
|
1
|
+
import { VideoMetadata } from '..';
|
|
2
|
+
|
|
3
|
+
export interface HackEnrichmentVideo {
|
|
4
|
+
id: string;
|
|
5
|
+
v: number;
|
|
6
|
+
createdAt: string;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
youTubeUrl: string;
|
|
9
|
+
hackId: string;
|
|
10
|
+
|
|
11
|
+
youTubeVideoId: string;
|
|
12
|
+
startAtSeconds: number;
|
|
13
|
+
endAtSeconds: number;
|
|
14
|
+
|
|
15
|
+
s3Path: string;
|
|
16
|
+
videoMetadata: VideoMetadata;
|
|
17
|
+
|
|
18
|
+
// Set to true when the original hack still includes the URL of this video, and false when the URL is removed from the hack
|
|
19
|
+
referencedByHack: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface PendingHackEnrichmentVideo {
|
|
23
|
+
// not used as a key in the dynamo table
|
|
24
|
+
id: string;
|
|
25
|
+
v: number;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
updatedAt: string;
|
|
28
|
+
|
|
29
|
+
// hash and range keys
|
|
30
|
+
youTubeUrl: string;
|
|
31
|
+
hackId: string;
|
|
32
|
+
|
|
33
|
+
hackEnrichmentVideoId: string;
|
|
34
|
+
|
|
35
|
+
status: PendingHackEnrichmentVideoStatus;
|
|
36
|
+
error?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// on success, the pending entity is deleted
|
|
40
|
+
export type PendingHackEnrichmentVideoStatus = 'processing' | 'failed';
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import { Entitlement, EntitlementName } from './user-entitlements';
|
|
2
|
-
|
|
3
|
-
export interface IssueUserEntitlementCommand {
|
|
4
|
-
id: string;
|
|
5
|
-
type: 'IssueUserEntitlement',
|
|
6
|
-
payload: IssueUserEntitlementCommandPayload
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface IssueUserEntitlementCommandPayload extends Entitlement {
|
|
10
|
-
id: string;
|
|
11
|
-
v: number;
|
|
12
|
-
userId: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface RemoveUserEntitlementCommand {
|
|
16
|
-
id: string;
|
|
17
|
-
type: 'RemoveUserEntitlement',
|
|
18
|
-
payload: RemoveUserEntitlementCommandPayload
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface RemoveUserEntitlementCommandPayload {
|
|
22
|
-
issuer: string;
|
|
23
|
-
entitlement: EntitlementName | string;
|
|
24
|
-
userId: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface RefreshRevenueCatUserStatusCommand {
|
|
28
|
-
id: string;
|
|
29
|
-
type: 'RefreshRevenueCatUserStatus',
|
|
30
|
-
payload: {
|
|
31
|
-
userId: string;
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Ensure the user has the provided entitlements from the given issuer.
|
|
37
|
-
* Will remove any existing entitlements from the issuer that are not specified in the command
|
|
38
|
-
*/
|
|
39
|
-
export interface SetUserEntitlementsFromIssuerCommand {
|
|
40
|
-
id: string;
|
|
41
|
-
type: 'SetUserEntitlementsFromIssuer',
|
|
42
|
-
payload: {
|
|
43
|
-
id: string;
|
|
44
|
-
v: number,
|
|
45
|
-
issuer: string;
|
|
46
|
-
userId: string
|
|
47
|
-
entitlements: {
|
|
48
|
-
entitlement: EntitlementName | string;
|
|
49
|
-
/** leave a undefined to never expire */
|
|
50
|
-
expiresAt?: string
|
|
51
|
-
issuedAt: string;
|
|
52
|
-
}[]
|
|
53
|
-
}
|
|
54
|
-
}
|
|
1
|
+
import { Entitlement, EntitlementName } from './user-entitlements';
|
|
2
|
+
|
|
3
|
+
export interface IssueUserEntitlementCommand {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'IssueUserEntitlement',
|
|
6
|
+
payload: IssueUserEntitlementCommandPayload
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface IssueUserEntitlementCommandPayload extends Entitlement {
|
|
10
|
+
id: string;
|
|
11
|
+
v: number;
|
|
12
|
+
userId: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface RemoveUserEntitlementCommand {
|
|
16
|
+
id: string;
|
|
17
|
+
type: 'RemoveUserEntitlement',
|
|
18
|
+
payload: RemoveUserEntitlementCommandPayload
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface RemoveUserEntitlementCommandPayload {
|
|
22
|
+
issuer: string;
|
|
23
|
+
entitlement: EntitlementName | string;
|
|
24
|
+
userId: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface RefreshRevenueCatUserStatusCommand {
|
|
28
|
+
id: string;
|
|
29
|
+
type: 'RefreshRevenueCatUserStatus',
|
|
30
|
+
payload: {
|
|
31
|
+
userId: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Ensure the user has the provided entitlements from the given issuer.
|
|
37
|
+
* Will remove any existing entitlements from the issuer that are not specified in the command
|
|
38
|
+
*/
|
|
39
|
+
export interface SetUserEntitlementsFromIssuerCommand {
|
|
40
|
+
id: string;
|
|
41
|
+
type: 'SetUserEntitlementsFromIssuer',
|
|
42
|
+
payload: {
|
|
43
|
+
id: string;
|
|
44
|
+
v: number,
|
|
45
|
+
issuer: string;
|
|
46
|
+
userId: string
|
|
47
|
+
entitlements: {
|
|
48
|
+
entitlement: EntitlementName | string;
|
|
49
|
+
/** leave a undefined to never expire */
|
|
50
|
+
expiresAt?: string
|
|
51
|
+
issuedAt: string;
|
|
52
|
+
}[]
|
|
53
|
+
}
|
|
54
|
+
}
|