@uptime.app/contracts 1.0.4 → 1.0.5-rc.2
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/hack-metadata/hack-metadata-events.d.ts +18 -0
- package/dist/cjs/hack-metadata/hack-metadata-events.d.ts.map +1 -0
- package/dist/cjs/hack-metadata/hack-metadata-events.js +3 -0
- package/dist/cjs/hack-metadata/hack-metadata-events.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/hack-metadata/hack-metadata-events.d.ts +18 -0
- package/dist/esm/hack-metadata/hack-metadata-events.d.ts.map +1 -0
- package/dist/esm/hack-metadata/hack-metadata-events.js +2 -0
- package/dist/esm/hack-metadata/hack-metadata-events.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +2 -2
- package/src/hack/extracted-subject.ts +4 -4
- package/src/hack/hack-events.ts +21 -21
- package/src/hack/hack-with-voice-events.ts +20 -20
- package/src/hack/hack-with-voice.ts +33 -33
- package/src/hack/hack.ts +114 -114
- package/src/hack-metadata/hack-metadata-events.ts +21 -0
- package/src/hack-metadata/hack-metadata.ts +17 -17
- package/src/index.ts +26 -25
- package/src/localisation/live-locales.ts +32 -32
- package/src/localisation/locale-language.ts +4 -4
- package/src/localisation/supported-languages.ts +11 -11
- package/src/localisation/supported-locales.ts +42 -42
- 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 +75 -75
- package/src/segment/segment-commands.ts +70 -70
- package/src/segment/segment-with-voice.ts +8 -8
- package/src/segment/segment.ts +82 -82
- package/src/text-to-speech/create-speech-commands.ts +20 -20
- package/src/text-to-speech/speech-created-events.ts +11 -11
- package/src/text-to-speech/text-segment.ts +29 -29
- package/tsconfig.cjs.json +7 -7
- package/tsconfig.npm.json +21 -21
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import { DEFAULT_LOCALE, SupportedLocale } from './supported-locales';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* All locale codes that are live and in use in the app
|
|
5
|
-
*/
|
|
6
|
-
export function allLiveLocaleCodes(): SupportedLocale[] {
|
|
7
|
-
return [
|
|
8
|
-
SupportedLocale.enGB,
|
|
9
|
-
SupportedLocale.enUS,
|
|
10
|
-
SupportedLocale.ptBR,
|
|
11
|
-
SupportedLocale.es,
|
|
12
|
-
SupportedLocale.frFR,
|
|
13
|
-
SupportedLocale.itIT,
|
|
14
|
-
SupportedLocale.nlNL,
|
|
15
|
-
SupportedLocale.deDE,
|
|
16
|
-
SupportedLocale.frCA,
|
|
17
|
-
SupportedLocale.plPL,
|
|
18
|
-
SupportedLocale.svSE,
|
|
19
|
-
SupportedLocale.trTR
|
|
20
|
-
];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function localeCodeIsLive(localeCode: string) {
|
|
24
|
-
return allLiveLocaleCodes().includes(localeCode as SupportedLocale);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function liveLocaleFrom(localeCode?: string): SupportedLocale {
|
|
28
|
-
const locale = allLiveLocaleCodes().find(liveLocale => liveLocale == localeCode);
|
|
29
|
-
if (!locale) {
|
|
30
|
-
return DEFAULT_LOCALE;
|
|
31
|
-
}
|
|
32
|
-
return locale;
|
|
1
|
+
import { DEFAULT_LOCALE, SupportedLocale } from './supported-locales';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* All locale codes that are live and in use in the app
|
|
5
|
+
*/
|
|
6
|
+
export function allLiveLocaleCodes(): SupportedLocale[] {
|
|
7
|
+
return [
|
|
8
|
+
SupportedLocale.enGB,
|
|
9
|
+
SupportedLocale.enUS,
|
|
10
|
+
SupportedLocale.ptBR,
|
|
11
|
+
SupportedLocale.es,
|
|
12
|
+
SupportedLocale.frFR,
|
|
13
|
+
SupportedLocale.itIT,
|
|
14
|
+
SupportedLocale.nlNL,
|
|
15
|
+
SupportedLocale.deDE,
|
|
16
|
+
SupportedLocale.frCA,
|
|
17
|
+
SupportedLocale.plPL,
|
|
18
|
+
SupportedLocale.svSE,
|
|
19
|
+
SupportedLocale.trTR
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function localeCodeIsLive(localeCode: string) {
|
|
24
|
+
return allLiveLocaleCodes().includes(localeCode as SupportedLocale);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function liveLocaleFrom(localeCode?: string): SupportedLocale {
|
|
28
|
+
const locale = allLiveLocaleCodes().find(liveLocale => liveLocale == localeCode);
|
|
29
|
+
if (!locale) {
|
|
30
|
+
return DEFAULT_LOCALE;
|
|
31
|
+
}
|
|
32
|
+
return locale;
|
|
33
33
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function languageOf(locale: string): string {
|
|
2
|
-
if (!locale) return ''; // temp: defend against an undefined locale
|
|
3
|
-
return locale.split('-')[0];
|
|
4
|
-
}
|
|
1
|
+
export function languageOf(locale: string): string {
|
|
2
|
+
if (!locale) return ''; // temp: defend against an undefined locale
|
|
3
|
+
return locale.split('-')[0];
|
|
4
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { allSupportedLocaleCodes } from './supported-locales';
|
|
2
|
-
|
|
3
|
-
export function allSupportedLanguageCodes(): string[] {
|
|
4
|
-
const languageCodes = allSupportedLocaleCodes().map(locale => locale.split('-')[0]);
|
|
5
|
-
const uniqueLanguageCodes = [...new Set(languageCodes)];
|
|
6
|
-
|
|
7
|
-
return uniqueLanguageCodes;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const ENGLISH_LANGUAGE = 'en';
|
|
11
|
-
export const DEFAULT_LANGUAGE = ENGLISH_LANGUAGE;
|
|
1
|
+
import { allSupportedLocaleCodes } from './supported-locales';
|
|
2
|
+
|
|
3
|
+
export function allSupportedLanguageCodes(): string[] {
|
|
4
|
+
const languageCodes = allSupportedLocaleCodes().map(locale => locale.split('-')[0]);
|
|
5
|
+
const uniqueLanguageCodes = [...new Set(languageCodes)];
|
|
6
|
+
|
|
7
|
+
return uniqueLanguageCodes;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const ENGLISH_LANGUAGE = 'en';
|
|
11
|
+
export const DEFAULT_LANGUAGE = ENGLISH_LANGUAGE;
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
export enum SupportedLocale {
|
|
2
|
-
/** English (United Kingdom) */
|
|
3
|
-
enGB = 'en-GB',
|
|
4
|
-
/** English (United States) */
|
|
5
|
-
enUS = 'en-US',
|
|
6
|
-
/** Portuguese (Brazil) */
|
|
7
|
-
ptBR = 'pt-BR',
|
|
8
|
-
/** Spanish (International) */
|
|
9
|
-
es = 'es',
|
|
10
|
-
/** French (France) */
|
|
11
|
-
frFR = 'fr-FR',
|
|
12
|
-
/** Italian */
|
|
13
|
-
itIT = 'it-IT',
|
|
14
|
-
/** Dutch */
|
|
15
|
-
nlNL = 'nl-NL',
|
|
16
|
-
/** German */
|
|
17
|
-
deDE = 'de-DE',
|
|
18
|
-
/** Polish */
|
|
19
|
-
plPL = 'pl-PL',
|
|
20
|
-
/** Swedish */
|
|
21
|
-
svSE = 'sv-SE',
|
|
22
|
-
/** Turkish */
|
|
23
|
-
trTR = 'tr-TR',
|
|
24
|
-
/** Canadian French */
|
|
25
|
-
frCA = 'fr-CA',
|
|
26
|
-
/** Traditional Chinese */
|
|
27
|
-
zhTW = 'zh-TW',
|
|
28
|
-
/** Simplified Chinese */
|
|
29
|
-
zhCN = 'zh-CN',
|
|
30
|
-
/** Malaysian Malay */
|
|
31
|
-
msMY = 'ms-MY'
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* All supported locale codes. Use allLiveLocaleCodes() instead when checking for locale codes supported by the app
|
|
37
|
-
*/
|
|
38
|
-
export function allSupportedLocaleCodes(): string[] {
|
|
39
|
-
return Object.values(SupportedLocale);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const DEFAULT_LOCALE = SupportedLocale.enUS;
|
|
1
|
+
export enum SupportedLocale {
|
|
2
|
+
/** English (United Kingdom) */
|
|
3
|
+
enGB = 'en-GB',
|
|
4
|
+
/** English (United States) */
|
|
5
|
+
enUS = 'en-US',
|
|
6
|
+
/** Portuguese (Brazil) */
|
|
7
|
+
ptBR = 'pt-BR',
|
|
8
|
+
/** Spanish (International) */
|
|
9
|
+
es = 'es',
|
|
10
|
+
/** French (France) */
|
|
11
|
+
frFR = 'fr-FR',
|
|
12
|
+
/** Italian */
|
|
13
|
+
itIT = 'it-IT',
|
|
14
|
+
/** Dutch */
|
|
15
|
+
nlNL = 'nl-NL',
|
|
16
|
+
/** German */
|
|
17
|
+
deDE = 'de-DE',
|
|
18
|
+
/** Polish */
|
|
19
|
+
plPL = 'pl-PL',
|
|
20
|
+
/** Swedish */
|
|
21
|
+
svSE = 'sv-SE',
|
|
22
|
+
/** Turkish */
|
|
23
|
+
trTR = 'tr-TR',
|
|
24
|
+
/** Canadian French */
|
|
25
|
+
frCA = 'fr-CA',
|
|
26
|
+
/** Traditional Chinese */
|
|
27
|
+
zhTW = 'zh-TW',
|
|
28
|
+
/** Simplified Chinese */
|
|
29
|
+
zhCN = 'zh-CN',
|
|
30
|
+
/** Malaysian Malay */
|
|
31
|
+
msMY = 'ms-MY'
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* All supported locale codes. Use allLiveLocaleCodes() instead when checking for locale codes supported by the app
|
|
37
|
+
*/
|
|
38
|
+
export function allSupportedLocaleCodes(): string[] {
|
|
39
|
+
return Object.values(SupportedLocale);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const DEFAULT_LOCALE = SupportedLocale.enUS;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { PendingHack } from './pending-hack';
|
|
2
|
-
|
|
3
|
-
export interface PendingHackCreatedEvent {
|
|
4
|
-
id: string;
|
|
5
|
-
type: 'PendingHackCreated';
|
|
6
|
-
payload: PendingHack;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface PendingHackUpdatedEvent {
|
|
10
|
-
id: string;
|
|
11
|
-
type: 'PendingHackUpdated';
|
|
12
|
-
payload: PendingHack;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface PendingHackDeletedEvent {
|
|
16
|
-
id: string;
|
|
17
|
-
type: 'PendingHackDeleted';
|
|
18
|
-
payload: PendingHack;
|
|
19
|
-
}
|
|
20
|
-
|
|
1
|
+
import { PendingHack } from './pending-hack';
|
|
2
|
+
|
|
3
|
+
export interface PendingHackCreatedEvent {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'PendingHackCreated';
|
|
6
|
+
payload: PendingHack;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface PendingHackUpdatedEvent {
|
|
10
|
+
id: string;
|
|
11
|
+
type: 'PendingHackUpdated';
|
|
12
|
+
payload: PendingHack;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface PendingHackDeletedEvent {
|
|
16
|
+
id: string;
|
|
17
|
+
type: 'PendingHackDeleted';
|
|
18
|
+
payload: PendingHack;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
21
|
export type PendingHackChangedEvent = PendingHackCreatedEvent | PendingHackUpdatedEvent | PendingHackDeletedEvent;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { PendingHackWithVoice } from './pending-hack-with-voice';
|
|
2
|
-
|
|
3
|
-
export interface PendingHackWithVoiceCreatedEvent {
|
|
4
|
-
id: string;
|
|
5
|
-
type: 'PendingHackWithVoiceCreated';
|
|
6
|
-
payload: PendingHackWithVoice;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export interface PendingHackWithVoiceUpdatedEvent {
|
|
10
|
-
id: string;
|
|
11
|
-
type: 'PendingHackWithVoiceUpdated';
|
|
12
|
-
payload: PendingHackWithVoice;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface PendingHackWithVoiceDeletedEvent {
|
|
16
|
-
id: string;
|
|
17
|
-
type: 'PendingHackWithVoiceDeleted';
|
|
18
|
-
payload: PendingHackWithVoice;
|
|
19
|
-
}
|
|
20
|
-
|
|
1
|
+
import { PendingHackWithVoice } from './pending-hack-with-voice';
|
|
2
|
+
|
|
3
|
+
export interface PendingHackWithVoiceCreatedEvent {
|
|
4
|
+
id: string;
|
|
5
|
+
type: 'PendingHackWithVoiceCreated';
|
|
6
|
+
payload: PendingHackWithVoice;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface PendingHackWithVoiceUpdatedEvent {
|
|
10
|
+
id: string;
|
|
11
|
+
type: 'PendingHackWithVoiceUpdated';
|
|
12
|
+
payload: PendingHackWithVoice;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface PendingHackWithVoiceDeletedEvent {
|
|
16
|
+
id: string;
|
|
17
|
+
type: 'PendingHackWithVoiceDeleted';
|
|
18
|
+
payload: PendingHackWithVoice;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
21
|
export type PendingHackWithVoiceChangedEvent = PendingHackWithVoiceCreatedEvent | PendingHackWithVoiceUpdatedEvent | PendingHackWithVoiceDeletedEvent;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
-
import { Segment } from '../segment/segment';
|
|
3
|
-
import { CompletePendingHack, PendingHack } from './pending-hack';
|
|
4
|
-
|
|
5
|
-
export interface PendingHackWithVoice {
|
|
6
|
-
id: string;
|
|
7
|
-
v: number;
|
|
8
|
-
createdAt: string;
|
|
9
|
-
updatedAt: string;
|
|
10
|
-
voiceId: string;
|
|
11
|
-
isDefaultVoice: boolean;
|
|
12
|
-
hackId: string;
|
|
13
|
-
baseLocaleHackId: string;
|
|
14
|
-
segments: PendingHack['segments'];
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface CompletePendingHackWithVoice extends PendingHackWithVoice {
|
|
18
|
-
segments: CompletePendingHack['segments'];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export type CompletePendingHackWithVoiceWithPutInAction = CompletePendingHackWithVoice & {
|
|
22
|
-
segments: {
|
|
23
|
-
putInAction: Segment;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
import { Segment } from '../segment/segment';
|
|
3
|
+
import { CompletePendingHack, PendingHack } from './pending-hack';
|
|
4
|
+
|
|
5
|
+
export interface PendingHackWithVoice {
|
|
6
|
+
id: string;
|
|
7
|
+
v: number;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
updatedAt: string;
|
|
10
|
+
voiceId: string;
|
|
11
|
+
isDefaultVoice: boolean;
|
|
12
|
+
hackId: string;
|
|
13
|
+
baseLocaleHackId: string;
|
|
14
|
+
segments: PendingHack['segments'];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface CompletePendingHackWithVoice extends PendingHackWithVoice {
|
|
18
|
+
segments: CompletePendingHack['segments'];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type CompletePendingHackWithVoiceWithPutInAction = CompletePendingHackWithVoice & {
|
|
22
|
+
segments: {
|
|
23
|
+
putInAction: Segment;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
-
import { ExtractedSubject } from '../hack/extracted-subject';
|
|
3
|
-
import { HackAffiliate, HackContributor, HackType, HackSourceData, HackTopic, HackExternalLink } from '../hack/hack';
|
|
4
|
-
import { Segment } from '../segment/segment';
|
|
5
|
-
|
|
6
|
-
export interface PendingHack {
|
|
7
|
-
id: string;
|
|
8
|
-
/** use @uptime.app/localisation-contracts */
|
|
9
|
-
locale: string;
|
|
10
|
-
baseLocaleHackId: string;
|
|
11
|
-
v: number;
|
|
12
|
-
createdAt: string;
|
|
13
|
-
updatedAt: string;
|
|
14
|
-
owner?: string;
|
|
15
|
-
draftHackId: string;
|
|
16
|
-
draftHackVersion: number;
|
|
17
|
-
hackId: string;
|
|
18
|
-
sourceId?: string;
|
|
19
|
-
title: string;
|
|
20
|
-
themeId: string;
|
|
21
|
-
coverUrl?: string;
|
|
22
|
-
affiliate?: HackAffiliate;
|
|
23
|
-
topics: HackTopic[];
|
|
24
|
-
contributors: HackContributor[];
|
|
25
|
-
type: HackType;
|
|
26
|
-
sourceData?: HackSourceData;
|
|
27
|
-
notifications?: {
|
|
28
|
-
aiGeneratedText?: string;
|
|
29
|
-
humanCuratedText?: string;
|
|
30
|
-
};
|
|
31
|
-
segments: {
|
|
32
|
-
favouriteQuote: Segment | {};
|
|
33
|
-
inANutshell: Segment | {};
|
|
34
|
-
introduction: Segment | {};
|
|
35
|
-
insights: [
|
|
36
|
-
(Segment | {}),
|
|
37
|
-
(Segment | {}),
|
|
38
|
-
(Segment | {})
|
|
39
|
-
];
|
|
40
|
-
conclusion: Segment | {};
|
|
41
|
-
// composite segments
|
|
42
|
-
overview: Segment | {};
|
|
43
|
-
shareableOverview: Segment | {};
|
|
44
|
-
hereAreTheInsights: Segment | {};
|
|
45
|
-
putInAction?: Segment | {};
|
|
46
|
-
};
|
|
47
|
-
externalLink?: HackExternalLink;
|
|
48
|
-
subjects?: ExtractedSubject[];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export interface CompletePendingHack extends PendingHack {
|
|
52
|
-
segments: {
|
|
53
|
-
favouriteQuote: Segment;
|
|
54
|
-
inANutshell: Segment;
|
|
55
|
-
introduction: Segment;
|
|
56
|
-
insights: [
|
|
57
|
-
Segment,
|
|
58
|
-
Segment,
|
|
59
|
-
Segment
|
|
60
|
-
];
|
|
61
|
-
conclusion: Segment;
|
|
62
|
-
// composite segments
|
|
63
|
-
overview: Segment;
|
|
64
|
-
shareableOverview: Segment;
|
|
65
|
-
hereAreTheInsights: Segment;
|
|
66
|
-
putInAction?: Segment;
|
|
67
|
-
};
|
|
68
|
-
subjects: ExtractedSubject[];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export type CompletePendingHackWithPutInAction = CompletePendingHack & {
|
|
72
|
-
segments: {
|
|
73
|
-
putInAction: Segment;
|
|
74
|
-
}
|
|
75
|
-
};
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
import { ExtractedSubject } from '../hack/extracted-subject';
|
|
3
|
+
import { HackAffiliate, HackContributor, HackType, HackSourceData, HackTopic, HackExternalLink } from '../hack/hack';
|
|
4
|
+
import { Segment } from '../segment/segment';
|
|
5
|
+
|
|
6
|
+
export interface PendingHack {
|
|
7
|
+
id: string;
|
|
8
|
+
/** use @uptime.app/localisation-contracts */
|
|
9
|
+
locale: string;
|
|
10
|
+
baseLocaleHackId: string;
|
|
11
|
+
v: number;
|
|
12
|
+
createdAt: string;
|
|
13
|
+
updatedAt: string;
|
|
14
|
+
owner?: string;
|
|
15
|
+
draftHackId: string;
|
|
16
|
+
draftHackVersion: number;
|
|
17
|
+
hackId: string;
|
|
18
|
+
sourceId?: string;
|
|
19
|
+
title: string;
|
|
20
|
+
themeId: string;
|
|
21
|
+
coverUrl?: string;
|
|
22
|
+
affiliate?: HackAffiliate;
|
|
23
|
+
topics: HackTopic[];
|
|
24
|
+
contributors: HackContributor[];
|
|
25
|
+
type: HackType;
|
|
26
|
+
sourceData?: HackSourceData;
|
|
27
|
+
notifications?: {
|
|
28
|
+
aiGeneratedText?: string;
|
|
29
|
+
humanCuratedText?: string;
|
|
30
|
+
};
|
|
31
|
+
segments: {
|
|
32
|
+
favouriteQuote: Segment | {};
|
|
33
|
+
inANutshell: Segment | {};
|
|
34
|
+
introduction: Segment | {};
|
|
35
|
+
insights: [
|
|
36
|
+
(Segment | {}),
|
|
37
|
+
(Segment | {}),
|
|
38
|
+
(Segment | {})
|
|
39
|
+
];
|
|
40
|
+
conclusion: Segment | {};
|
|
41
|
+
// composite segments
|
|
42
|
+
overview: Segment | {};
|
|
43
|
+
shareableOverview: Segment | {};
|
|
44
|
+
hereAreTheInsights: Segment | {};
|
|
45
|
+
putInAction?: Segment | {};
|
|
46
|
+
};
|
|
47
|
+
externalLink?: HackExternalLink;
|
|
48
|
+
subjects?: ExtractedSubject[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface CompletePendingHack extends PendingHack {
|
|
52
|
+
segments: {
|
|
53
|
+
favouriteQuote: Segment;
|
|
54
|
+
inANutshell: Segment;
|
|
55
|
+
introduction: Segment;
|
|
56
|
+
insights: [
|
|
57
|
+
Segment,
|
|
58
|
+
Segment,
|
|
59
|
+
Segment
|
|
60
|
+
];
|
|
61
|
+
conclusion: Segment;
|
|
62
|
+
// composite segments
|
|
63
|
+
overview: Segment;
|
|
64
|
+
shareableOverview: Segment;
|
|
65
|
+
hereAreTheInsights: Segment;
|
|
66
|
+
putInAction?: Segment;
|
|
67
|
+
};
|
|
68
|
+
subjects: ExtractedSubject[];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type CompletePendingHackWithPutInAction = CompletePendingHack & {
|
|
72
|
+
segments: {
|
|
73
|
+
putInAction: Segment;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
@@ -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
|
+
}
|