@uptime.app/contracts 3.0.52-rc.0.sso → 3.0.52-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.
Files changed (98) hide show
  1. package/dist/cjs/app-hack/app-hack-metadata.d.ts +1 -0
  2. package/dist/cjs/app-hack/app-hack-metadata.d.ts.map +1 -1
  3. package/dist/cjs/b2b-organisation/b2b-organisation-group-membership.d.ts +0 -6
  4. package/dist/cjs/b2b-organisation/b2b-organisation-group-membership.d.ts.map +1 -1
  5. package/dist/cjs/b2b-organisation/b2b-organisation-group-membership.js +0 -6
  6. package/dist/cjs/b2b-organisation/b2b-organisation-group-membership.js.map +1 -1
  7. package/dist/cjs/b2b-organisation/b2b-organisation-group.d.ts +1 -0
  8. package/dist/cjs/b2b-organisation/b2b-organisation-group.d.ts.map +1 -1
  9. package/dist/cjs/b2b-organisation/b2b-organisation-group.js +23 -1
  10. package/dist/cjs/b2b-organisation/b2b-organisation-group.js.map +1 -1
  11. package/dist/cjs/cms-hack/cms-searchable-hack.d.ts +2 -0
  12. package/dist/cjs/cms-hack/cms-searchable-hack.d.ts.map +1 -1
  13. package/dist/cjs/draft-hack/draft-hack.d.ts +2 -0
  14. package/dist/cjs/draft-hack/draft-hack.d.ts.map +1 -1
  15. package/dist/cjs/enriched-hack/enriched-hack.d.ts +2 -0
  16. package/dist/cjs/enriched-hack/enriched-hack.d.ts.map +1 -1
  17. package/dist/cjs/hack/hack.d.ts +2 -0
  18. package/dist/cjs/hack/hack.d.ts.map +1 -1
  19. package/dist/cjs/hack-mapping/app-hack-metadata.d.ts.map +1 -1
  20. package/dist/cjs/hack-mapping/app-hack-metadata.js +1 -0
  21. package/dist/cjs/hack-mapping/app-hack-metadata.js.map +1 -1
  22. package/dist/cjs/identity-provider/identity-provider.d.ts +0 -4
  23. package/dist/cjs/identity-provider/identity-provider.d.ts.map +1 -1
  24. package/dist/cjs/index.d.ts +2 -0
  25. package/dist/cjs/index.d.ts.map +1 -1
  26. package/dist/cjs/index.js +2 -0
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/pending-hack/pending-hack.d.ts +2 -0
  29. package/dist/cjs/pending-hack/pending-hack.d.ts.map +1 -1
  30. package/dist/cjs/spark/spark.d.ts +1 -1
  31. package/dist/cjs/spark/spark.d.ts.map +1 -1
  32. package/dist/cjs/topics/primary-topic-mapping.d.ts +7 -0
  33. package/dist/cjs/topics/primary-topic-mapping.d.ts.map +1 -0
  34. package/dist/cjs/topics/primary-topic-mapping.js +98 -0
  35. package/dist/cjs/topics/primary-topic-mapping.js.map +1 -0
  36. package/dist/cjs/topics/primary-topic.d.ts +4 -0
  37. package/dist/cjs/topics/primary-topic.d.ts.map +1 -0
  38. package/dist/cjs/topics/primary-topic.js +3 -0
  39. package/dist/cjs/topics/primary-topic.js.map +1 -0
  40. package/dist/esm/app-hack/app-hack-metadata.d.ts +1 -0
  41. package/dist/esm/app-hack/app-hack-metadata.d.ts.map +1 -1
  42. package/dist/esm/b2b-organisation/b2b-organisation-group-membership.d.ts +0 -6
  43. package/dist/esm/b2b-organisation/b2b-organisation-group-membership.d.ts.map +1 -1
  44. package/dist/esm/b2b-organisation/b2b-organisation-group-membership.js +1 -5
  45. package/dist/esm/b2b-organisation/b2b-organisation-group-membership.js.map +1 -1
  46. package/dist/esm/b2b-organisation/b2b-organisation-group.d.ts +1 -0
  47. package/dist/esm/b2b-organisation/b2b-organisation-group.d.ts.map +1 -1
  48. package/dist/esm/b2b-organisation/b2b-organisation-group.js +22 -0
  49. package/dist/esm/b2b-organisation/b2b-organisation-group.js.map +1 -1
  50. package/dist/esm/cms-hack/cms-searchable-hack.d.ts +2 -0
  51. package/dist/esm/cms-hack/cms-searchable-hack.d.ts.map +1 -1
  52. package/dist/esm/draft-hack/draft-hack.d.ts +2 -0
  53. package/dist/esm/draft-hack/draft-hack.d.ts.map +1 -1
  54. package/dist/esm/enriched-hack/enriched-hack.d.ts +2 -0
  55. package/dist/esm/enriched-hack/enriched-hack.d.ts.map +1 -1
  56. package/dist/esm/hack/hack.d.ts +2 -0
  57. package/dist/esm/hack/hack.d.ts.map +1 -1
  58. package/dist/esm/hack-mapping/app-hack-metadata.d.ts.map +1 -1
  59. package/dist/esm/hack-mapping/app-hack-metadata.js +1 -0
  60. package/dist/esm/hack-mapping/app-hack-metadata.js.map +1 -1
  61. package/dist/esm/identity-provider/identity-provider.d.ts +0 -4
  62. package/dist/esm/identity-provider/identity-provider.d.ts.map +1 -1
  63. package/dist/esm/index.d.ts +2 -0
  64. package/dist/esm/index.d.ts.map +1 -1
  65. package/dist/esm/index.js +2 -0
  66. package/dist/esm/index.js.map +1 -1
  67. package/dist/esm/pending-hack/pending-hack.d.ts +2 -0
  68. package/dist/esm/pending-hack/pending-hack.d.ts.map +1 -1
  69. package/dist/esm/spark/spark.d.ts +1 -1
  70. package/dist/esm/spark/spark.d.ts.map +1 -1
  71. package/dist/esm/topics/primary-topic-mapping.d.ts +7 -0
  72. package/dist/esm/topics/primary-topic-mapping.d.ts.map +1 -0
  73. package/dist/esm/topics/primary-topic-mapping.js +94 -0
  74. package/dist/esm/topics/primary-topic-mapping.js.map +1 -0
  75. package/dist/esm/topics/primary-topic.d.ts +4 -0
  76. package/dist/esm/topics/primary-topic.d.ts.map +1 -0
  77. package/dist/esm/topics/primary-topic.js +2 -0
  78. package/dist/esm/topics/primary-topic.js.map +1 -0
  79. package/package.json +2 -2
  80. package/src/app-hack/app-hack-metadata.ts +1 -0
  81. package/src/b2b-organisation/b2b-organisation-group-membership.ts +0 -7
  82. package/src/b2b-organisation/b2b-organisation-group.ts +24 -1
  83. package/src/cms-hack/cms-searchable-hack.ts +3 -0
  84. package/src/draft-hack/draft-hack.ts +2 -0
  85. package/src/enriched-hack/enriched-hack.ts +2 -0
  86. package/src/hack/hack.ts +2 -0
  87. package/src/hack-mapping/app-hack-metadata.ts +1 -0
  88. package/src/hack-mapping/test-data/enriched-hack.json +17 -12
  89. package/src/hack-mapping/test-data/expected-app-full-hack.json +17 -12
  90. package/src/hack-mapping/test-data/expected-app-hack-metadata.json +17 -12
  91. package/src/hack-mapping/test-data/expected-app-restricted-hack.json +17 -12
  92. package/src/identity-provider/identity-provider.ts +1 -5
  93. package/src/index.ts +3 -0
  94. package/src/pending-hack/pending-hack.ts +2 -0
  95. package/src/spark/spark.ts +1 -0
  96. package/src/topics/primary-topic-mapping.test.ts +36 -0
  97. package/src/topics/primary-topic-mapping.ts +110 -0
  98. package/src/topics/primary-topic.ts +3 -0
@@ -2554,22 +2554,27 @@
2554
2554
  },
2555
2555
  "timeSaved": 499,
2556
2556
  "title": "Rich Dad Poor Dad",
2557
- "topics": [
2558
- {
2559
- "name": "Money & Investing"
2560
- },
2561
- {
2562
- "name": "Business"
2557
+ "topics": [
2558
+ {
2559
+ "name": "Money & Investing"
2560
+ },
2561
+ {
2562
+ "name": "Business"
2563
2563
  },
2564
2564
  {
2565
2565
  "name": "Career & Success"
2566
2566
  },
2567
- {
2568
- "name": "Leadership & Entrepreneurship"
2569
- }
2570
- ],
2571
- "type": "book",
2572
- "draftHackId": "3b24ef40-a60c-5767-93b5-f2c9dd94ceed",
2567
+ {
2568
+ "name": "Leadership & Entrepreneurship"
2569
+ }
2570
+ ],
2571
+ "primaryTopics": [
2572
+ {
2573
+ "name": "Money & Investing"
2574
+ }
2575
+ ],
2576
+ "type": "book",
2577
+ "draftHackId": "3b24ef40-a60c-5767-93b5-f2c9dd94ceed",
2573
2578
  "draftHackVersion": 4,
2574
2579
  "updatedAt": "2023-07-21T07:02:16.240Z",
2575
2580
  "v": 402
@@ -2489,21 +2489,26 @@
2489
2489
  },
2490
2490
  "timeSaved": 499,
2491
2491
  "title": "Rich Dad Poor Dad",
2492
- "topics": [
2493
- {
2494
- "name": "Money & Investing"
2495
- },
2496
- {
2497
- "name": "Business"
2492
+ "topics": [
2493
+ {
2494
+ "name": "Money & Investing"
2495
+ },
2496
+ {
2497
+ "name": "Business"
2498
2498
  },
2499
2499
  {
2500
2500
  "name": "Career & Success"
2501
2501
  },
2502
- {
2503
- "name": "Leadership & Entrepreneurship"
2504
- }
2505
- ],
2506
- "type": "book",
2507
- "updatedAt": "2023-07-21T07:02:16.240Z",
2502
+ {
2503
+ "name": "Leadership & Entrepreneurship"
2504
+ }
2505
+ ],
2506
+ "primaryTopics": [
2507
+ {
2508
+ "name": "Money & Investing"
2509
+ }
2510
+ ],
2511
+ "type": "book",
2512
+ "updatedAt": "2023-07-21T07:02:16.240Z",
2508
2513
  "v": 402
2509
2514
  }
@@ -73,21 +73,26 @@
73
73
  "themeId": "34",
74
74
  "timeSaved": 499,
75
75
  "title": "Rich Dad Poor Dad",
76
- "topics": [
77
- {
78
- "name": "Money & Investing"
79
- },
80
- {
81
- "name": "Business"
76
+ "topics": [
77
+ {
78
+ "name": "Money & Investing"
79
+ },
80
+ {
81
+ "name": "Business"
82
82
  },
83
83
  {
84
84
  "name": "Career & Success"
85
85
  },
86
- {
87
- "name": "Leadership & Entrepreneurship"
88
- }
89
- ],
90
- "type": "book",
91
- "updatedAt": "2023-07-21T07:02:16.240Z",
86
+ {
87
+ "name": "Leadership & Entrepreneurship"
88
+ }
89
+ ],
90
+ "primaryTopics": [
91
+ {
92
+ "name": "Money & Investing"
93
+ }
94
+ ],
95
+ "type": "book",
96
+ "updatedAt": "2023-07-21T07:02:16.240Z",
92
97
  "v": 402
93
98
  }
@@ -779,21 +779,26 @@
779
779
  },
780
780
  "timeSaved": 499,
781
781
  "title": "Rich Dad Poor Dad",
782
- "topics": [
783
- {
784
- "name": "Money & Investing"
785
- },
786
- {
787
- "name": "Business"
782
+ "topics": [
783
+ {
784
+ "name": "Money & Investing"
785
+ },
786
+ {
787
+ "name": "Business"
788
788
  },
789
789
  {
790
790
  "name": "Career & Success"
791
791
  },
792
- {
793
- "name": "Leadership & Entrepreneurship"
794
- }
795
- ],
796
- "type": "book",
797
- "updatedAt": "2023-07-21T07:02:16.240Z",
792
+ {
793
+ "name": "Leadership & Entrepreneurship"
794
+ }
795
+ ],
796
+ "primaryTopics": [
797
+ {
798
+ "name": "Money & Investing"
799
+ }
800
+ ],
801
+ "type": "book",
802
+ "updatedAt": "2023-07-21T07:02:16.240Z",
798
803
  "v": 402
799
804
  }
@@ -30,8 +30,6 @@ export interface IdentityProviderConfig {
30
30
  'custom:ext_organisation_id'?: string;
31
31
  'custom:ext_user_id'?: string;
32
32
  'custom:country_code'?: string;
33
- 'custom:team_name'?: string;
34
- 'custom:is_manager'?: string;
35
33
  };
36
34
  }
37
35
 
@@ -46,6 +44,4 @@ export interface IdentityProviderClaims {
46
44
  given_name?: string;
47
45
  externalUserId?: string;
48
46
  countryCode?: string;
49
- teamName?: string;
50
- isManager?: string
51
- }
47
+ }
package/src/index.ts CHANGED
@@ -166,6 +166,9 @@ export * from './text-to-speech/text-segment';
166
166
  export * from './theme/theme';
167
167
  export * from './theme/theme-events';
168
168
 
169
+ export * from './topics/primary-topic';
170
+ export * from './topics/primary-topic-mapping';
171
+
169
172
  export * from './translation/translation-events';
170
173
  export * from './translation/translation';
171
174
 
@@ -2,6 +2,7 @@
2
2
  import { ExtractedSubject } from '../hack/extracted-subject';
3
3
  import { HackAffiliate, HackContributor, HackType, HackSourceData, HackTopic, HackExternalLink } from '../hack/hack';
4
4
  import { Segment } from '../segment/segment';
5
+ import { PrimaryTopic } from '../topics/primary-topic';
5
6
 
6
7
  export interface PendingHack {
7
8
  id: string;
@@ -24,6 +25,7 @@ export interface PendingHack {
24
25
  copyrightFreeCoverUrl?: string;
25
26
  affiliate?: HackAffiliate;
26
27
  topics: HackTopic[];
28
+ primaryTopics: PrimaryTopic[];
27
29
  contributors: HackContributor[];
28
30
  type: HackType;
29
31
  sourceData?: HackSourceData;
@@ -52,6 +52,7 @@ export type SparkHack = Pick<Hack,
52
52
  | 'editorialTags'
53
53
  | 'coverUrl'
54
54
  | 'topics'
55
+ | 'primaryTopics'
55
56
  | 'type'
56
57
  | 'affiliate'
57
58
  | 'contributors'
@@ -0,0 +1,36 @@
1
+ import { mapPrimaryTopicsToOldTopics, OLD_TOPIC_TAGS, VALID_PRIMARY_TOPIC_TAGS } from './primary-topic-mapping';
2
+
3
+ describe('mapPrimaryTopicsToOldTopics', () => {
4
+ test('maps split primary topics back to their old topic', () => {
5
+ expect(mapPrimaryTopicsToOldTopics(['Politics, Law & Economics'])).toEqual(['Culture & Society']);
6
+ expect(mapPrimaryTopicsToOldTopics(['Communication'])).toEqual(['Personal Growth']);
7
+ expect(mapPrimaryTopicsToOldTopics(['AI & Technology'])).toEqual(['Technology & the Future']);
8
+ });
9
+
10
+ test('supports PrimaryTopic objects', () => {
11
+ expect(mapPrimaryTopicsToOldTopics([{ name: 'Career Success' }])).toEqual(['Career & Success']);
12
+ });
13
+
14
+ test('returns undefined for unknown topics', () => {
15
+ expect(mapPrimaryTopicsToOldTopics(['Unknown Topic'])).toEqual([]);
16
+ });
17
+
18
+ test('maps every valid primary topic tag to a known old topic tag', () => {
19
+ for (const primaryTopic of VALID_PRIMARY_TOPIC_TAGS) {
20
+ const oldTopic = mapPrimaryTopicsToOldTopics([primaryTopic])[0];
21
+ expect(oldTopic).toBeDefined();
22
+ expect(OLD_TOPIC_TAGS).toContain(oldTopic);
23
+ }
24
+ });
25
+ test('deduplicates old topics while preserving input order', () => {
26
+ expect(
27
+ mapPrimaryTopicsToOldTopics([
28
+ { name: 'Marketing' },
29
+ { name: 'Sales' },
30
+ { name: 'Biographies' },
31
+ { name: 'Marketing' },
32
+ { name: 'Unknown Topic' }
33
+ ])
34
+ ).toEqual(['Marketing & Sales', 'Biographies']);
35
+ });
36
+ });
@@ -0,0 +1,110 @@
1
+ import { PrimaryTopic } from './primary-topic';
2
+
3
+ export const VALID_PRIMARY_TOPIC_TAGS = [
4
+ 'Arts & Design',
5
+ 'Biographies',
6
+ 'Business',
7
+ 'Career Success',
8
+ 'Communication',
9
+ 'Education & Studying',
10
+ 'Entrepreneurship',
11
+ 'Environment',
12
+ 'Fitness & Sports',
13
+ 'History',
14
+ 'Home & Hobbies',
15
+ 'Humanity & Societies',
16
+ 'Identity & Equality',
17
+ 'Investing',
18
+ 'Leadership & Management',
19
+ 'Marketing',
20
+ 'Media & Entertainment',
21
+ 'Mental Health',
22
+ 'Mindfulness',
23
+ 'Money & Finances',
24
+ 'Neurodiversity',
25
+ 'Nutrition & Health',
26
+ 'Parenting & Family',
27
+ 'Personal Growth',
28
+ 'Politics, Law & Economics',
29
+ 'Psychology & Philosophy',
30
+ 'Relationships',
31
+ 'Religion',
32
+ 'Sales',
33
+ 'Science',
34
+ 'Sex',
35
+ 'AI & Technology'
36
+ ];
37
+
38
+ export const OLD_TOPIC_TAGS = [
39
+ 'Arts & Design',
40
+ 'Biographies',
41
+ 'Business',
42
+ 'Culture & Society',
43
+ 'Career & Success',
44
+ 'Education',
45
+ 'Health & Fitness',
46
+ 'History',
47
+ 'Leadership & Entrepreneurship',
48
+ 'Lifestyle',
49
+ 'Marketing & Sales',
50
+ 'Mind & Philosophy',
51
+ 'Money & Investing',
52
+ 'Parenting & Relationships',
53
+ 'Personal Growth',
54
+ 'Religion & Spirituality',
55
+ 'Science & the Environment',
56
+ 'Technology & the Future'
57
+ ];
58
+
59
+ export type PrimaryTopicTag = (typeof VALID_PRIMARY_TOPIC_TAGS)[number];
60
+ export type OldTopicTag = (typeof OLD_TOPIC_TAGS)[number];
61
+
62
+ const TOPIC_TO_PRIMARY_TOPIC_MAPPING: Record<OldTopicTag, PrimaryTopicTag[]> = {
63
+ 'Arts & Design': ['Arts & Design', 'Media & Entertainment'],
64
+ 'Biographies': ['Biographies'],
65
+ 'Business': ['Business'],
66
+ 'Culture & Society': ['Identity & Equality', 'Politics, Law & Economics', 'Humanity & Societies'],
67
+ 'Career & Success': ['Career Success'],
68
+ 'Education': ['Education & Studying'],
69
+ 'Health & Fitness': ['Nutrition & Health', 'Fitness & Sports', 'Mental Health', 'Neurodiversity'],
70
+ 'History': ['History'],
71
+ 'Leadership & Entrepreneurship': ['Leadership & Management', 'Entrepreneurship'],
72
+ 'Lifestyle': ['Home & Hobbies'],
73
+ 'Marketing & Sales': ['Marketing', 'Sales'],
74
+ 'Mind & Philosophy': ['Mindfulness', 'Psychology & Philosophy'],
75
+ 'Money & Investing': ['Money & Finances', 'Investing'],
76
+ 'Parenting & Relationships': ['Sex', 'Relationships', 'Parenting & Family'],
77
+ 'Personal Growth': ['Personal Growth', 'Communication'],
78
+ 'Religion & Spirituality': ['Religion'],
79
+ 'Science & the Environment': ['Science', 'Environment'],
80
+ 'Technology & the Future': ['AI & Technology']
81
+ };
82
+
83
+ const PRIMARY_TOPIC_TO_OLD_TOPIC_MAPPING = Object.entries(TOPIC_TO_PRIMARY_TOPIC_MAPPING).reduce(
84
+ (mapping, [oldTopic, primaryTopics]) => {
85
+ for (const primaryTopic of primaryTopics) {
86
+ mapping[primaryTopic] = oldTopic as OldTopicTag;
87
+ }
88
+
89
+ return mapping;
90
+ },
91
+ {} as Record<PrimaryTopicTag, OldTopicTag>
92
+ );
93
+
94
+ function primaryTopicNameOf(primaryTopic: PrimaryTopic | string): string {
95
+ return typeof primaryTopic === 'string' ? primaryTopic : primaryTopic.name;
96
+ }
97
+
98
+ function mapPrimaryTopicToOldTopic(primaryTopic: PrimaryTopic | string): OldTopicTag | undefined {
99
+ return PRIMARY_TOPIC_TO_OLD_TOPIC_MAPPING[primaryTopicNameOf(primaryTopic) as PrimaryTopicTag];
100
+ }
101
+
102
+ export function mapPrimaryTopicsToOldTopics(primaryTopics: Array<PrimaryTopic | string>): OldTopicTag[] {
103
+ return [
104
+ ...new Set(
105
+ primaryTopics
106
+ .map(mapPrimaryTopicToOldTopic)
107
+ .filter((oldTopic): oldTopic is OldTopicTag => oldTopic !== undefined)
108
+ )
109
+ ];
110
+ }
@@ -0,0 +1,3 @@
1
+ export interface PrimaryTopic {
2
+ name: string;
3
+ }