summaryrefslogtreecommitdiff
path: root/src/types
diff options
context:
space:
mode:
authorJoe Carstairs <jcarstairs@scottlogic.com>2023-08-07 18:18:22 +0100
committerJoe Carstairs <jcarstairs@scottlogic.com>2023-08-07 18:19:06 +0100
commit2fcbccfbd49c6eaf433272749e32589a6f490200 (patch)
treef8fc429709d66ce96d1f0e8c3812f24c13bf9d18 /src/types
parentd494739e4823424bb54d81e21b57e4725544eb07 (diff)
parent27a25bfdeb07007e06bd4a608cd9953be04271ec (diff)
Merge branch 'master' of https://github.com/jcarstairs-scottlogic/lallans-wabsteid-astro
Diffstat (limited to 'src/types')
-rw-r--r--src/types/Date.d.ts10
-rw-r--r--src/types/Digit.d.ts3
-rw-r--r--src/types/LallansIssue.d.ts23
-rw-r--r--src/types/LallansIssueNumber.d.ts12
-rw-r--r--src/types/Locale.ts2
-rw-r--r--src/types/Price.d.ts5
-rw-r--r--src/types/Scotsoun.d.ts20
-rw-r--r--src/types/TranslationsDictionary.d.ts6
8 files changed, 81 insertions, 0 deletions
diff --git a/src/types/Date.d.ts b/src/types/Date.d.ts
new file mode 100644
index 0000000..5e1df66
--- /dev/null
+++ b/src/types/Date.d.ts
@@ -0,0 +1,10 @@
+type Year = `${19 | 20}${Digit}${Digit}`;
+type Month = '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' | '10' | '11' | '12';
+type Day =
+ '01' | '02' | '03' | '04' | '05' | '06' | '07' | '08' | '09' |
+ '10' | '11' | '12' | '13' | '14' | '15' | '16' | '17' | '18' | '19' |
+ '20' | '21' | '22' | '23' | '24' | '25' | '26' | '27' | '28' | '29' |
+ '30' | '31';
+type Date = `${Year}-${Month}-${Day}`;
+
+export default Date; \ No newline at end of file
diff --git a/src/types/Digit.d.ts b/src/types/Digit.d.ts
new file mode 100644
index 0000000..11c252a
--- /dev/null
+++ b/src/types/Digit.d.ts
@@ -0,0 +1,3 @@
+type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
+
+export default Digit;
diff --git a/src/types/LallansIssue.d.ts b/src/types/LallansIssue.d.ts
new file mode 100644
index 0000000..2f6355d
--- /dev/null
+++ b/src/types/LallansIssue.d.ts
@@ -0,0 +1,23 @@
+import type LallansIssueNumber from './LallansIssueNumber';
+import type Price from './Price';
+
+type LallansIssue = {
+ issueNumber: LallansIssueNumber,
+ issueName: string,
+ price: Price,
+ description: {
+ sco: string,
+ 'en-GB': string,
+ },
+ coverArtist?: string,
+ trackList?: string[],
+} & (
+ { contributors: Contributor[] } |
+ { contributions: Contribution[] } |
+ Record<string, never>
+);
+
+type Contributor = string;
+type Contribution = { author?: string, title: string };
+
+export default LallansIssue; \ No newline at end of file
diff --git a/src/types/LallansIssueNumber.d.ts b/src/types/LallansIssueNumber.d.ts
new file mode 100644
index 0000000..10d068e
--- /dev/null
+++ b/src/types/LallansIssueNumber.d.ts
@@ -0,0 +1,12 @@
+type LallansIssueNumber =
+ 21 | 22 | 23 | 24 | 25 | 27 | 29 |
+ 30 | 33 | 35 | 36 | 38 | 39 |
+ 41 | 42 | 43 | 45 | 46 | 47 | 48 | 49 |
+ 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 59 |
+ 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
+ 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
+ 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
+ 90 | 91 | 92 | 93 | 96 | 97 | 98 | 99 |
+ 100 | 101;
+
+export default LallansIssueNumber;
diff --git a/src/types/Locale.ts b/src/types/Locale.ts
new file mode 100644
index 0000000..2964117
--- /dev/null
+++ b/src/types/Locale.ts
@@ -0,0 +1,2 @@
+type Locale = 'sco' | 'en-GB'
+export default Locale \ No newline at end of file
diff --git a/src/types/Price.d.ts b/src/types/Price.d.ts
new file mode 100644
index 0000000..fc9d9fb
--- /dev/null
+++ b/src/types/Price.d.ts
@@ -0,0 +1,5 @@
+import type Digit from "./Digit";
+
+type Price = `${bigint | ''}.${Digit}${Digit}`;
+
+export default Price;
diff --git a/src/types/Scotsoun.d.ts b/src/types/Scotsoun.d.ts
new file mode 100644
index 0000000..f31a9b5
--- /dev/null
+++ b/src/types/Scotsoun.d.ts
@@ -0,0 +1,20 @@
+import type { defaultLocale } from '../i18n/locales';
+import type Date from './Date';
+import type Locale from './Locale';
+import type Price from './Price';
+
+type Scotsoun = {
+ 'title': string,
+ 'subtitle'?: string,
+ 'long-name': string,
+ 'author'?: string,
+ 'cd-count': number,
+ 'price': Price,
+ 'scotsoun-id': string,
+ 'description'?: { [key in Locale]?: string } & { [key in typeof defaultLocale]: string },
+ 'cover-artist'?: string,
+ 'track-list'?: string[],
+ 'release-date'?: Date,
+};
+
+export default Scotsoun; \ No newline at end of file
diff --git a/src/types/TranslationsDictionary.d.ts b/src/types/TranslationsDictionary.d.ts
new file mode 100644
index 0000000..7ebb952
--- /dev/null
+++ b/src/types/TranslationsDictionary.d.ts
@@ -0,0 +1,6 @@
+import type { defaultLocale } from "../i18n/locales";
+import type Locale from "./Locale";
+
+type TranslationsDictionary<Keys> = {
+ [key in Keys]: { [key in Locale]?: string } & { [key in typeof defaultLocale]: string }
+}; \ No newline at end of file