@clickview/ship-it 0.0.53 → 0.0.54
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/.claude/settings.local.json +11 -0
- package/dist/P3/P3 Notes Audit.csv +49 -0
- package/dist/R1/R1 Notes Audit.csv +117 -0
- package/dist/S3/S3 Notes Audit.csv +13 -0
- package/dist/W2/W2 Notes Audit.csv +57 -0
- package/lib/src/index.js +0 -0
- package/lib/src/tasks/InstallPackagesTask.js +204 -61
- package/package.json +2 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(grep -r release /Users/varun.singh/Desktop/cv-projects/ship-it --include=*.ts --include=*.js)",
|
|
5
|
+
"Bash(ls /Users/varun.singh/Desktop/cv-projects/ship-it/config*)",
|
|
6
|
+
"Bash(ls /Users/varun.singh/Desktop/cv-projects/ship-it/*.json)",
|
|
7
|
+
"Bash(grep -E \"^\\(axios|node-fetch|got|undici\\)$\")",
|
|
8
|
+
"Bash(git checkout *)"
|
|
9
|
+
]
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
projectName,mrTitle,mrAuthor,mrAssignee,mrUrl,notes
|
|
2
|
+
clickview,Lite: Incremental exports for Marc,Shale Kuzmanovski,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5708,"# Lite
|
|
3
|
+
- Added a link to our KB article about exporting libraries to the export libraries settings page.
|
|
4
|
+
- When selecting the `MARC 21 V2` or `MARC XML` library export formats. Admins can now additionally select from which date they would like the export to start from. Implements INBOX-9351.
|
|
5
|
+
|
|
6
|
+
"
|
|
7
|
+
clickview,Lite: SearchV2 - Enable public access,Nischal Shrestha,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5699,"# Lite
|
|
8
|
+
* Enable new search for public access."
|
|
9
|
+
clickview,Player: Fix captions bug with theatre mode,Shale Kuzmanovski,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5690,"# Player
|
|
10
|
+
- Fixed a bug where captions wouldn't reposition when toggling between theatre mode and default mode. Fixes INBOX-9276."
|
|
11
|
+
clickview,User man - Super admin support,Nan Chen,Joshua Taylor,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5687,"# Lite
|
|
12
|
+
- In the Curator user manager, a super admin account can be created and edited:
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+

|
|
17
|
+
- For a Super Admin account, they can create/edit another Super Admin staff account:
|
|
18
|
+

|
|
19
|
+
- For an ordinary Admin, they cannot create/edit a Super Admin staff:
|
|
20
|
+

|
|
21
|
+
- In Lite, a non-super admin cannot update a super admin account (edit, deactivate, remove etc.)
|
|
22
|
+
"
|
|
23
|
+
clickview,User man - Support superAdmin badge,Nan Chen,Joshua Taylor,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5671,"# Lite
|
|
24
|
+
* If a user is a Super Admin, it should display a badge to differentiate from an Admin. For AU/UK it's called `Org Admin`, for US it's `District Admin`.
|
|
25
|
+

|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
# Curator
|
|
29
|
+
* If a user is a Super Admin, it should display a badge to differentiate from an Admin. For AU/UK it's called `Org Admin`, for US it's `District Admin`.
|
|
30
|
+

|
|
31
|
+
"
|
|
32
|
+
clickview,Player: Allow looping videos,Shale Kuzmanovski,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5666,"# Player
|
|
33
|
+
- The player now provides the option for the video to be looped. Note: Turning on play next video will turn off loop video, and vice versa. Implements PLAY-243.
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+
- Fix the casing of the player's menu items."
|
|
37
|
+
clickview,Curator: POI form safeguard,Joshua Taylor,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5665,"# Curator
|
|
38
|
+
- In the Points of Interest form in the content pipeline, if you manually add/edit a POI and accidentally click on the ""X"", you are shown a warning then asked to click X again before actually closing the form."
|
|
39
|
+
clickview,Player: Captions indicator,Shale Kuzmanovski,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5663,"# Player
|
|
40
|
+
- The player will now indicate if captions and theatre mode are switched on. Implements INBOX-8757.
|
|
41
|
+
|
|
42
|
+
"
|
|
43
|
+
clickview,Shared - Fix img overflow issue,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5661,"# Lite
|
|
44
|
+
- Fix an issue where the images start to overflow the containers on the login page.
|
|
45
|
+
"
|
|
46
|
+
File.Api,Support utf8 file name,Ryan Wang,Prad Nepal,https://gitlab.cvinternal.net/clickview/back-end/File.Api/-/merge_requests/65,* Fixed an issue where file uploaded with UTF-8 characters file name have these characters stripped when downloading them. Closes INBOX-9210
|
|
47
|
+
Tv.Web,"Add 7twoHd Perth small channel logo, partially implements INBOX-9165",Wei Zong,Ryan Wang,https://gitlab.cvinternal.net/clickview/back-end/tv/Tv.Web/-/merge_requests/255,"* Customer shoud see the new 7twoHD channels in 5 AU resions. The old `7two` channel should be disabled
|
|
48
|
+
* Rename `ABC Entertains` to `ABC Entertains HD`
|
|
49
|
+
* Rename `ABC News 24` to `ABC News HD`"
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
projectName,mrTitle,mrAuthor,mrAssignee,mrUrl,notes
|
|
2
|
+
ClickView.Curator,Remove audience validation,Jorge Arai,Prad Nepal,https://gitlab.cvinternal.net/clickview/front-end/ClickView.Curator/-/merge_requests/1757,- Audiences shouldn't be validated anymore as this would be auto-synced in Subjects.Api
|
|
3
|
+
Master.Auth,IP Auth,Cameron Hill,Ryan Wang,https://gitlab.cvinternal.net/clickview/back-end/Master.Auth/-/merge_requests/760,- Added new IP Authentication feature
|
|
4
|
+
Image.Api,Updating the no website image placeholder,Shale Kuzmanovski,Kevin Wellalagodage,https://gitlab.cvinternal.net/clickview/back-end/Image.Api/-/merge_requests/157,"- Updating the placeholder image for a website. Partially implements INBOX-9665.
|
|
5
|
+
|
|
6
|
+
"
|
|
7
|
+
clickview,Auth: Adding basic support for logging in as guests,Boris Berak,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5837,"# Auth
|
|
8
|
+
- When users are logging into the product from a school that has been configured with IP Auth, they will have to option to quickly sign-in as a guest. This means staff and students will have the option to bypass logging in with a username and password. **Note: this feature is currently not even in Early Access, so most customers will not see it yet. We also want to do a proper go to market before giving this to actual customers.**
|
|
9
|
+
- "
|
|
10
|
+
clickview,Curator - Add a warning for ai dashboard creation modal,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5836,"# Curator
|
|
11
|
+
- Added a warning in creating an AI-generated dashboard modal if a topic has more than 30 videos.
|
|
12
|
+
- "
|
|
13
|
+
clickview,Shared: Basic IP Auth Support,Boris Berak,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5833,"# Shared
|
|
14
|
+
- Schools that have been configured with IP authentication will now allow staff and students to log into ClickView as ""guests"".
|
|
15
|
+
- Guest accounts are easy to use because they don't require a username or password to log in and watch content. However, the experience is limited compared to regular accounts.
|
|
16
|
+
- Specifically - guests will not be able to upload content; create clips or interactives; use playlists; favourite videos; share videos; access classrooms; access settings. The experience is very-much read only.
|
|
17
|
+
- Note: this is an early preview of the IP Auth feature which will require a proper GTM before being rolled out to customers.
|
|
18
|
+
- How the product looks when signed in as a guest: 
|
|
19
|
+
- How the play page looks with a guest account: 
|
|
20
|
+
- The user drop-down menu is quite limited for guests: "
|
|
21
|
+
clickview,Lite: New _canBeConsumed error code for students,Shale Kuzmanovski,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5832,"# Lite
|
|
22
|
+
- Added a new error for students who directly visit the url of a video they cannot access (For example exchange video urls). Implements INBOX-9610.
|
|
23
|
+
|
|
24
|
+
"
|
|
25
|
+
clickview,Curator - Update video curated toics table,Nan Chen,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5831,"# Curator
|
|
26
|
+
- Moved the video curated topics table to a new tab. A presentation filter dropdown was added.
|
|
27
|
+
- {width=""1201"" height=""529""}"
|
|
28
|
+
clickview,Lite: Sign up improvements,Shale Kuzmanovski,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5830,"# Lite
|
|
29
|
+
- Adding ""Business Manager"" as a job title for AU sign ups. Partially implements INBOX-9628.
|
|
30
|
+
- Fixed a bug where clicking ""Update email address"" in the confirmation step of a sign up could send a student back to the start of the sign up flow, but as a teacher.
|
|
31
|
+
- Increased the cut off age for sign ups to 16 years of age. This change is being made to adhere with requests from ERA."
|
|
32
|
+
clickview,Lite: Share 2.0 Feedback,Shale Kuzmanovski,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5829,"# Lite
|
|
33
|
+
- When viewing student results for share links and assignments, students names are now split into First name and Last name, and can be sorted independently. This is both in the interactive student list, and in the heatmap.
|
|
34
|
+
|
|
35
|
+

|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
- When viewing an open classroom, the ClickView logo in the top left is disabled, so that younger learners do not navigate away from their shared video and start browsing M+TV.
|
|
39
|
+
- Reworked the status indicators at the top of the insights pages, based on feedback that the previous version looked clickable.
|
|
40
|
+
|
|
41
|
+

|
|
42
|
+
- Added the ability to assign a video to another classroom in the success popup when assigning. This change comes from feedback that some teachers assign the same video to multiple classrooms.
|
|
43
|
+
|
|
44
|
+

|
|
45
|
+
- Updated the breadcrumbs for classroom assignment insights, which will now show the classroom the assignment is assigned to.
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
- Added the ability to see other assignments created for a video directly from the insights page. Again this comes from feedback that some teachers assign the same video to multiple classrooms.
|
|
49
|
+
|
|
50
|
+

|
|
51
|
+
|
|
52
|
+

|
|
53
|
+
- Shares and assignments will now be sorted by the date that they were last shared. Sharing includes
|
|
54
|
+
- Creating a new share link or assign
|
|
55
|
+
- Copying a share link or embed code
|
|
56
|
+
- Embedding a share into a plugin
|
|
57
|
+
- Copying a join code or presenting a join code in full screen
|
|
58
|
+
- Printing, downloading or presenting a QR code in full screen
|
|
59
|
+
- All teachers that are assigned to a classroom can now view all assignments and results for that classroom, previously only the teacher who assigned to video could see them.
|
|
60
|
+
- The status tooltip text has been updated when there is no usage on the share or assignment yet.
|
|
61
|
+
|
|
62
|
+

|
|
63
|
+
- The empty state for shares and assignments has been updated:
|
|
64
|
+
- The CTA now matches the button in the header
|
|
65
|
+
- There is now a link to a KB article
|
|
66
|
+
- Fixed an issue where the status tooltip was not correctly identifying shares and assignments that require marking.
|
|
67
|
+
|
|
68
|
+

|
|
69
|
+
- Fixed an issue where the ""marking required"" status indicator would should incorrectly if you shared the same interactive multiple times"
|
|
70
|
+
clickview,Crm studio - Support editing org rostering school mappings,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5827,"# Curator
|
|
71
|
+
* Implemented the `Edit school mapping` feature. When there's no running sync job, the rostering mapping can be edited.
|
|
72
|
+
"
|
|
73
|
+
clickview,Content pipeline - Leaf topic only in the edit topic form,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5822,"# Curator
|
|
74
|
+
* Only show the leaf topic path in the content pipeline 'Topics' form.
|
|
75
|
+
*
|
|
76
|
+
| Before | After |
|
|
77
|
+
|--------|-------|
|
|
78
|
+
|  |  |"
|
|
79
|
+
clickview,Curator - Allow publishing top level topic dashboard outside content pipeline,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5820,"# Curator
|
|
80
|
+
* Allow publishing the top-level topic dashboard outside the content pipeline.
|
|
81
|
+
| Before | After |
|
|
82
|
+
|--------|-------|
|
|
83
|
+
|  |  |"
|
|
84
|
+
clickview,Content pipeline - Make audiences column read-only,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5819,"# Curator
|
|
85
|
+
* As the backend will automatically populate audiences for video, manual input is not required, so we make the column read-only.
|
|
86
|
+
* 
|
|
87
|
+
* When a video is attached to a topic, the audience will be automatically added."
|
|
88
|
+
clickview,Curator - Bulk remove videos from classification,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5816,"# Curator
|
|
89
|
+
- In the classification videos tab, you can bulk select videos to remove them from the classification.
|
|
90
|
+
- "
|
|
91
|
+
clickview,Content pipeline - Publish dashboard bypassing resources & thumbnail stage validation,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5811,"# Curator
|
|
92
|
+
* We allow the curator team to publish the dashboard when some of the videos fail to pass validation in tags, resources, curated_thumbnail, thumbnail_review, and the glance and tags stages.
|
|
93
|
+
* "
|
|
94
|
+
clickview,Lite: Resource image fallback,Shale Kuzmanovski,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5806,"# Lite
|
|
95
|
+
- Updating the way the fallback image for resources looks. Partially implements INBOX-9665.
|
|
96
|
+
|
|
97
|
+
"
|
|
98
|
+
clickview,Shared - Update badge style,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5804,"# Lite
|
|
99
|
+
- Updated year group and admin badge in user manager to match our DS.
|
|
100
|
+
- 
|
|
101
|
+
- 
|
|
102
|
+
|
|
103
|
+
# Exchange
|
|
104
|
+
- Updated TV program time badge style to match our DS.
|
|
105
|
+
- "
|
|
106
|
+
Share.Api,Adding date shared to shares,Shale Kuzmanovski,Prad Nepal,https://gitlab.cvinternal.net/clickview/back-end/share.api/-/merge_requests/161,"- Shares will now be sorted by the date that they were last shared. Sharing includes
|
|
107
|
+
- Crating a new share link or assign
|
|
108
|
+
- Copying a share link or embed code
|
|
109
|
+
- Embedding a share into a plugin
|
|
110
|
+
- Copying a join code or presenting a join code in full screen
|
|
111
|
+
- Printing, downloading or presenting a QR code in full screen"
|
|
112
|
+
Share.Api,Allow classroom teachers to see all shares.,Shale Kuzmanovski,Prad Nepal,https://gitlab.cvinternal.net/clickview/back-end/share.api/-/merge_requests/160,"- Teachers can now see all shares made to a classroom.
|
|
113
|
+
- Fixed a bug that was preventing teachers from accessing My Videos content shared to their classroom by other teachers.
|
|
114
|
+
- Allow classroom teachers to delete shares"
|
|
115
|
+
VideoProcessorService,Update logic for GetAvailableConversionProfiles to fix vertical videos,Cameron Hill,Ryan Wang,https://gitlab.cvinternal.net/clickview/back-end/VideoProcessorService/-/merge_requests/124,- Fix vertical videos not processing to the correct resolutions. Fixes INBOX-9762
|
|
116
|
+
Braze Client,Data fixes,Nischal Shrestha,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/braze-client/-/merge_requests/47,"* Throw if `source` is not provided in custom user attributes.
|
|
117
|
+
* Validate `account_address` field before appending it to custom user attributes."
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
projectName,mrTitle,mrAuthor,mrAssignee,mrUrl,notes
|
|
2
|
+
Discover.Api,Use objects.api GetCollectionVideos in curated series,Jorge Arai,Prad Nepal,https://gitlab.cvinternal.net/clickview/back-end/discover.api/-/merge_requests/425,- N/A
|
|
3
|
+
ClickView.Curator,Fix region flag is not shown in Content page,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/ClickView.Curator/-/merge_requests/1790,"- Fix an issue where the Curator region flag is not shown.
|
|
4
|
+
- "
|
|
5
|
+
clickview,Curator - Show exchange & LE based on cft info,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5914,"# Curator
|
|
6
|
+
* Display available products for a customer based on the current customer's CFT in CRM studio Customer \> Products page.
|
|
7
|
+
* {width=491 height=343}"
|
|
8
|
+
clickview,Curator - Fix clip resource saving infinite spinner,Nan Chen,Michael McDonnell,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5913,"# Curator
|
|
9
|
+
* Fix an issue when saving resources for a clip, where an infinite loading spinner appears."
|
|
10
|
+
clickview,Lite: Updating copy around join codes,Shale Kuzmanovski,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/5901,"# Lite
|
|
11
|
+
- Improving copy around join codes in Share 2.0. Implements INBOX-10282."
|
|
12
|
+
Integrations.Api,stop sending activation email for rostered users without sso setup,Ryan Wang,Cameron Hill,https://gitlab.cvinternal.net/clickview/front-end/integrations.api/-/merge_requests/273,* Stop sending the activation email for rostered users even if they don't have SSO setup. Closes INBOX-10048
|
|
13
|
+
Integrations.Api,Improve points of interesting generation for longer videos,Jorge Arai,Prad Nepal,https://gitlab.cvinternal.net/clickview/front-end/integrations.api/-/merge_requests/272,- AI-generated points of interest should consider the entire length of the video
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
projectName,mrTitle,mrAuthor,mrAssignee,mrUrl,notes
|
|
2
|
+
clickview,Lite: Fix classroom avatars in the insights heatmap,Shale Kuzmanovski,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6273,"# Lite
|
|
3
|
+
- Fix classroom avatars in the insights heatmap. Partially addresses INBOX-11438."
|
|
4
|
+
clickview,Player: Fix missing qualities,Shale Kuzmanovski,Cameron Hill,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6271,"# Player
|
|
5
|
+
- Fixed a bug that was preventing the last quality level from showing. Fixes TEST-357."
|
|
6
|
+
clickview,Lite - Temporary use hardcoded presentation cover,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6262,"# Lite
|
|
7
|
+
- Update cover for US High presentation to use photo-style cover when the customer has the preferred theme set to be `photo`.
|
|
8
|
+
- 
|
|
9
|
+
- "
|
|
10
|
+
clickview,Curator: Displays presentation last updated information,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6258,"# Curator
|
|
11
|
+
* Displays the last updated time for presentations in the list view, providing users with a clear indicator of a presentation's freshness. Hovering over the time will show the exact date. Implements CC-1351."
|
|
12
|
+
clickview,Fix - Update video status OGQL when fetching playlist,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6256,"# Lite
|
|
13
|
+
* Fix an issue when the count on the playlist tile on `/playlists` does not match the number of videos on the playlist page. Fixes INBOX-11120"
|
|
14
|
+
clickview,Lite: Search - Fixes search-in tags flakey visibility,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6244,"# Lite
|
|
15
|
+
* Users will experience more reliable display of the ""Search in X"" tag when navigating to scoped search results, preventing instances where the tag might incorrectly disappear."
|
|
16
|
+
clickview,Curator - Support remove video banner for a content partner,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6240,"# Curator
|
|
17
|
+
- Now you can remove the video banner for a content partner. And the Replace video button icon is replaced with an upload icon.
|
|
18
|
+
- "
|
|
19
|
+
clickview,Curator: Channels - Videos view,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6238,"# Curator
|
|
20
|
+
* Add a tab in manage channels where users can view all videos for that channel. Implements CC-1358.
|
|
21
|
+
* Ability to add new videos to the channel
|
|
22
|
+
* Ability to delete video(s) in the channel"
|
|
23
|
+
clickview,Lite: Tutorial Videos,Vincent Sit,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6237,"# Lite
|
|
24
|
+
This change should only be visible to users who are new to ClickView (accounts created less than 14 days ago). They will see an additional bar in the dashboard page that features a series of tutorial videos from ClickView. Implements LTE-3240
|
|
25
|
+
Before: 
|
|
26
|
+
After: ↵ ↵ 
|
|
27
|
+
The user can dismiss the tutorial video panel through the 'Hide' text button on the top right hand corner. Otherwise, once 14 days have lapsed since account creation, the panel will not be displayed."
|
|
28
|
+
clickview,Shared - Fix visible svg icon id collision issue,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6229,"# Curator
|
|
29
|
+
- Fixed the visible-on and visible-off icons are not being shown correctly. Fixes INBOX-11338"
|
|
30
|
+
clickview,Lite - Fix playlist member count not matching issue,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6228,"# Lite
|
|
31
|
+
- Fix an issue when the count on the playlist tile on `/playlists` does not match the number of videos on the playlist page. Fixes INBOX-11120"
|
|
32
|
+
clickview,Improve the names generated from the anonymise name function,Cameron Hill,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6227,"# Shared
|
|
33
|
+
- Improve the names used for ""anonymise names"". Closes INBOX-10122"
|
|
34
|
+
clickview,Player - Extend volume slider hit area to cover the full hover zone,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6226,"# Player
|
|
35
|
+
- Increase the hit area for the player volume bar."
|
|
36
|
+
clickview,Lite: aligns classroom staff role pill design,Nischal Shrestha,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6224,"# Lite
|
|
37
|
+
* Updates the visual design of the ""Admin"" and ""Owner"" role pills displayed next to teacher names in the classroom management view. Fixes INBOX-9615.
|
|
38
|
+
| Before | After |
|
|
39
|
+
|--------|-------|
|
|
40
|
+
| {width=1113 height=368} | {width=1142 height=367} |"
|
|
41
|
+
clickview,Lite - Add theme setting,Nan Chen,Nischal Shrestha,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6219,"# Lite
|
|
42
|
+
- Added new Appearance setting for admin and it's only for customer who has US high presentation.
|
|
43
|
+
- 
|
|
44
|
+
- Admin can toggle theme for topic assets in the Appearance setting page:
|
|
45
|
+
- "
|
|
46
|
+
clickview,Curator: Channels - Enables delete for read-only 'all videos' widget,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6218,"# Curator
|
|
47
|
+
* Users can now delete specific read-only widgets, such as 'all videos' widgets in channels, from their dashboards. Implements CC-1357."
|
|
48
|
+
clickview,Crm studio - IDP form update,Nan Chen,Boris Berak,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6216,"# Curator
|
|
49
|
+
- Now in the IDP details section in the create IDP form, only the IDP name is required:
|
|
50
|
+
- 
|
|
51
|
+
- Removed the default value for the displayed name for Microsoft.
|
|
52
|
+
- "
|
|
53
|
+
clickview,Lite - Fix player is rendered in hover mode on play page,Nan Chen,Shale Kuzmanovski,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6214,"# Lite
|
|
54
|
+
* Fixes an issue when hovering on a pop-up video to preview the video, then clicking on the title in the pop-up card to go to the video play page. The play page is showing a non-interactive player. (no control bar)."
|
|
55
|
+
clickview,Lite: Channels - Enables parent editing for channels,Nischal Shrestha,Nan Chen,https://gitlab.cvinternal.net/clickview/front-end/clickview/-/merge_requests/6211,"# Curator
|
|
56
|
+
* Users can now update the parent of an existing content partner, as the selection field is no longer disabled during the editing process. Implements CC-1356."
|
|
57
|
+
Master.Auth,Legacy saml check fixes,Cameron Hill,Kevin Wellalagodage,https://gitlab.cvinternal.net/clickview/back-end/Master.Auth/-/merge_requests/842,- Fix some SSO setups redirecting to the wrong SAML IDP on login. Fixes INBOX-11324
|
package/lib/src/index.js
CHANGED
|
File without changes
|
|
@@ -59,6 +59,7 @@ var semver_1 = __importDefault(require("semver"));
|
|
|
59
59
|
var child_process_1 = __importDefault(require("child_process"));
|
|
60
60
|
var types_1 = require("../types");
|
|
61
61
|
var services_1 = require("../services");
|
|
62
|
+
var errors_1 = require("../errors");
|
|
62
63
|
var utils_1 = require("../utils");
|
|
63
64
|
var MonorepoPackageJsonFiles_1 = require("../constants/MonorepoPackageJsonFiles");
|
|
64
65
|
var ROOT_DIRECTORIES = {
|
|
@@ -79,22 +80,34 @@ var ROOT_DIRECTORIES = {
|
|
|
79
80
|
// Streamable learning
|
|
80
81
|
1144: 'src/StreamableLearning.Web'
|
|
81
82
|
};
|
|
83
|
+
/**
|
|
84
|
+
* npm accepts a publish before the version can be resolved from the registry. Large packages get
|
|
85
|
+
* queued for background processing ("Your package is being processed and may take a few minutes to
|
|
86
|
+
* become available"), so we poll for up to 5 minutes.
|
|
87
|
+
*/
|
|
88
|
+
var PUBLISH_POLL_ATTEMPTS = 20;
|
|
89
|
+
var PUBLISH_POLL_INTERVAL_MS = 15000;
|
|
82
90
|
var InstallPackagesTask = /** @class */ (function () {
|
|
83
91
|
function InstallPackagesTask(service) {
|
|
92
|
+
/**
|
|
93
|
+
* Versions are release wide, so consuming projects share packages. Remember the ones we have
|
|
94
|
+
* confirmed to avoid polling for the same version again for every project
|
|
95
|
+
*/
|
|
96
|
+
this.publishedPackages = new Set();
|
|
84
97
|
this.service = service;
|
|
85
98
|
}
|
|
86
99
|
InstallPackagesTask.prototype.run = function (options) {
|
|
87
100
|
return __awaiter(this, void 0, void 0, function () {
|
|
88
|
-
var targetBranch, projectId, project, versions_1, folderName,
|
|
89
|
-
return __generator(this, function (
|
|
90
|
-
switch (
|
|
101
|
+
var targetBranch, projectId, project, versions_1, folderName, updatedPackages, error_1, milestone, projects, monorepo, consumingProjects, _a, monorepoBranch, monorepoBranchName, versions, failedProjects, _i, consumingProjects_1, project, _b, branch, branchName, updatedPackages, error_2;
|
|
102
|
+
return __generator(this, function (_c) {
|
|
103
|
+
switch (_c.label) {
|
|
91
104
|
case 0:
|
|
92
105
|
utils_1.Logger.logTask('Installing npm packages');
|
|
93
106
|
if (!options.monorepoBranchName && !options.milestone) {
|
|
94
107
|
utils_1.Logger.logError('Please provide either a milestone or branch name argument.');
|
|
95
108
|
return [2 /*return*/, false];
|
|
96
109
|
}
|
|
97
|
-
if (!(options.targetBranchName && options.monorepoBranchName && options.projectIds)) return [3 /*break*/,
|
|
110
|
+
if (!(options.targetBranchName && options.monorepoBranchName && options.projectIds)) return [3 /*break*/, 9];
|
|
98
111
|
targetBranch = options.targetBranchName;
|
|
99
112
|
if (targetBranch.startsWith('release') && !options.monorepoBranchName.startsWith('release')) {
|
|
100
113
|
utils_1.Logger.logError('Attempting to target release with non release branch.');
|
|
@@ -111,65 +124,77 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
111
124
|
projectId = options.projectIds[0];
|
|
112
125
|
return [4 /*yield*/, this.service.getProject(projectId)];
|
|
113
126
|
case 1:
|
|
114
|
-
project =
|
|
127
|
+
project = _c.sent();
|
|
115
128
|
return [4 /*yield*/, this.getPackageVersions(options.monorepoBranchName)];
|
|
116
129
|
case 2:
|
|
117
|
-
versions_1 =
|
|
130
|
+
versions_1 = _c.sent();
|
|
118
131
|
folderName = 'hotfix';
|
|
119
132
|
utils_1.Logger.logMessage("Versions identified for ".concat(options.monorepoBranchName));
|
|
120
133
|
Object.keys(versions_1).forEach(function (key) {
|
|
121
134
|
utils_1.Logger.logMessage("- [".concat(key, "]: ").concat(versions_1[key]));
|
|
122
135
|
});
|
|
123
|
-
|
|
136
|
+
_c.label = 3;
|
|
124
137
|
case 3:
|
|
125
|
-
|
|
138
|
+
_c.trys.push([3, 7, , 8]);
|
|
126
139
|
return [4 /*yield*/, this.updateAndSavePackageFiles(project, folderName, targetBranch, versions_1)];
|
|
127
140
|
case 4:
|
|
128
|
-
|
|
141
|
+
updatedPackages = _c.sent();
|
|
129
142
|
/**
|
|
130
143
|
* If there are no changes to the versions, we're done here
|
|
131
144
|
*/
|
|
132
|
-
if (!
|
|
145
|
+
if (!updatedPackages.length) {
|
|
133
146
|
utils_1.Logger.logWarning("[".concat(project.title, "]: [").concat(targetBranch, "] does not require any updates"));
|
|
134
147
|
return [2 /*return*/, true];
|
|
135
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* The versions come from git, so they can be ahead of the registry. Wait for them to become
|
|
151
|
+
* installable before npm tries to resolve them
|
|
152
|
+
*/
|
|
153
|
+
return [4 /*yield*/, this.waitForPublishedVersions(project, updatedPackages)];
|
|
154
|
+
case 5:
|
|
155
|
+
/**
|
|
156
|
+
* The versions come from git, so they can be ahead of the registry. Wait for them to become
|
|
157
|
+
* installable before npm tries to resolve them
|
|
158
|
+
*/
|
|
159
|
+
_c.sent();
|
|
136
160
|
/**
|
|
137
161
|
* Run npm i to update our package log file
|
|
138
162
|
*/
|
|
139
|
-
utils_1.Logger.logInfo("[".concat(project.title, "]: Running npm i --package-lock-only --verbose"));
|
|
163
|
+
utils_1.Logger.logInfo("[".concat(project.title, "]: Running npm i --package-lock-only --prefer-online --verbose"));
|
|
140
164
|
this.npmInstall(project, folderName);
|
|
141
165
|
utils_1.Logger.logInfo('\n');
|
|
142
166
|
/**
|
|
143
167
|
* Commit our updated package.json and package-lock.json
|
|
144
168
|
*/
|
|
145
169
|
return [4 /*yield*/, this.commitUpdatedFiles(project, folderName, targetBranch)];
|
|
146
|
-
case
|
|
170
|
+
case 6:
|
|
147
171
|
/**
|
|
148
172
|
* Commit our updated package.json and package-lock.json
|
|
149
173
|
*/
|
|
150
|
-
|
|
174
|
+
_c.sent();
|
|
151
175
|
utils_1.Logger.logMessage("[".concat(project.title, "]: File changes committed"));
|
|
152
|
-
return [3 /*break*/,
|
|
153
|
-
case
|
|
154
|
-
error_1 =
|
|
176
|
+
return [3 /*break*/, 8];
|
|
177
|
+
case 7:
|
|
178
|
+
error_1 = _c.sent();
|
|
155
179
|
utils_1.Logger.logError("[".concat(project.title, "]: Something went wrong while attempting to install packages. Please manually check if this project should have any monorepo packages installed."));
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
case 8:
|
|
180
|
+
utils_1.Logger.logError(this.getErrorMessage(error_1));
|
|
181
|
+
return [2 /*return*/, false];
|
|
182
|
+
case 8: return [2 /*return*/, true];
|
|
183
|
+
case 9:
|
|
159
184
|
milestone = options.milestone;
|
|
160
|
-
if (!!milestone) return [3 /*break*/,
|
|
185
|
+
if (!!milestone) return [3 /*break*/, 11];
|
|
161
186
|
utils_1.Logger.logInfo("Searching for a merge request in project \"monorepo\" with branch name \"".concat(options.monorepoBranchName, "\"..."));
|
|
162
187
|
return [4 /*yield*/, this.service.getMilestoneByBranchName(utils_1.ProjectIds.MONOREPO_PROJECT_ID, options.monorepoBranchName)];
|
|
163
|
-
case 9:
|
|
164
|
-
milestone = _d.sent();
|
|
165
|
-
_d.label = 10;
|
|
166
188
|
case 10:
|
|
189
|
+
milestone = _c.sent();
|
|
190
|
+
_c.label = 11;
|
|
191
|
+
case 11:
|
|
167
192
|
if (!milestone)
|
|
168
193
|
return [2 /*return*/, false];
|
|
169
194
|
utils_1.Logger.logInfo("Found milestone \"".concat(milestone, "\". Proceeding to install packages in consuming projects..."));
|
|
170
195
|
return [4 /*yield*/, this.service.getReleaseProjects(milestone, options.projectIds, options.omittedProjectIds, options.sourceBranch)];
|
|
171
|
-
case
|
|
172
|
-
projects =
|
|
196
|
+
case 12:
|
|
197
|
+
projects = _c.sent();
|
|
173
198
|
monorepo = projects.find(function (p) { return p.id.toString() === utils_1.ProjectIds.MONOREPO_PROJECT_ID; });
|
|
174
199
|
consumingProjects = projects.filter(function (p) { return p.id.toString() !== utils_1.ProjectIds.MONOREPO_PROJECT_ID; });
|
|
175
200
|
if (!monorepo) {
|
|
@@ -181,74 +206,101 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
181
206
|
return [2 /*return*/, false];
|
|
182
207
|
}
|
|
183
208
|
return [4 /*yield*/, this.service.getNextBranchInfo(monorepo.id, options.version)];
|
|
184
|
-
case
|
|
185
|
-
_a =
|
|
209
|
+
case 13:
|
|
210
|
+
_a = _c.sent(), monorepoBranch = _a.branch, monorepoBranchName = _a.branchName;
|
|
186
211
|
if (!monorepoBranch) {
|
|
187
212
|
utils_1.Logger.logError("[".concat(monorepo.title, "]: [").concat(monorepoBranchName, "] branch does not exist"));
|
|
188
213
|
return [2 /*return*/, false];
|
|
189
214
|
}
|
|
190
215
|
return [4 /*yield*/, this.getPackageVersions(monorepoBranchName)];
|
|
191
|
-
case
|
|
192
|
-
versions =
|
|
216
|
+
case 14:
|
|
217
|
+
versions = _c.sent();
|
|
193
218
|
utils_1.Logger.logMessage("Versions identified for ".concat(monorepoBranchName));
|
|
194
219
|
Object.keys(versions).forEach(function (key) {
|
|
195
220
|
utils_1.Logger.logMessage("- [".concat(key, "]: ").concat(versions[key]));
|
|
196
221
|
});
|
|
197
222
|
utils_1.Logger.logMessage('\nInstalling packages:\n');
|
|
223
|
+
failedProjects = [];
|
|
198
224
|
_i = 0, consumingProjects_1 = consumingProjects;
|
|
199
|
-
|
|
200
|
-
case 14:
|
|
201
|
-
if (!(_i < consumingProjects_1.length)) return [3 /*break*/, 21];
|
|
202
|
-
project = consumingProjects_1[_i];
|
|
203
|
-
_d.label = 15;
|
|
225
|
+
_c.label = 15;
|
|
204
226
|
case 15:
|
|
205
|
-
|
|
206
|
-
|
|
227
|
+
if (!(_i < consumingProjects_1.length)) return [3 /*break*/, 23];
|
|
228
|
+
project = consumingProjects_1[_i];
|
|
229
|
+
_c.label = 16;
|
|
207
230
|
case 16:
|
|
208
|
-
|
|
231
|
+
_c.trys.push([16, 21, , 22]);
|
|
232
|
+
return [4 /*yield*/, this.service.getNextBranchInfo(project.id, options.version)];
|
|
233
|
+
case 17:
|
|
234
|
+
_b = _c.sent(), branch = _b.branch, branchName = _b.branchName;
|
|
209
235
|
if (!branch) {
|
|
210
236
|
utils_1.Logger.logError("[".concat(project.title, "]: [").concat(branchName, "] does not exist"));
|
|
211
|
-
return [3 /*break*/,
|
|
237
|
+
return [3 /*break*/, 22];
|
|
212
238
|
}
|
|
213
239
|
return [4 /*yield*/, this.updateAndSavePackageFiles(project, milestone, branchName, versions)];
|
|
214
|
-
case
|
|
215
|
-
|
|
240
|
+
case 18:
|
|
241
|
+
updatedPackages = _c.sent();
|
|
216
242
|
/**
|
|
217
243
|
* If there are no changes to the versions, we're done here
|
|
218
244
|
*/
|
|
219
|
-
if (!
|
|
245
|
+
if (!updatedPackages.length) {
|
|
220
246
|
utils_1.Logger.logWarning("[".concat(project.title, "]: [").concat(branchName, "] does not require any updates"));
|
|
221
|
-
return [3 /*break*/,
|
|
247
|
+
return [3 /*break*/, 22];
|
|
222
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* The versions come from git, so they can be ahead of the registry. Wait for them to become
|
|
251
|
+
* installable before npm tries to resolve them
|
|
252
|
+
*/
|
|
253
|
+
return [4 /*yield*/, this.waitForPublishedVersions(project, updatedPackages)];
|
|
254
|
+
case 19:
|
|
255
|
+
/**
|
|
256
|
+
* The versions come from git, so they can be ahead of the registry. Wait for them to become
|
|
257
|
+
* installable before npm tries to resolve them
|
|
258
|
+
*/
|
|
259
|
+
_c.sent();
|
|
223
260
|
/**
|
|
224
261
|
* Run npm i to update our package log file
|
|
225
262
|
*/
|
|
226
|
-
utils_1.Logger.logInfo("[".concat(project.title, "]: Running npm i --package-lock-only --verbose"));
|
|
263
|
+
utils_1.Logger.logInfo("[".concat(project.title, "]: Running npm i --package-lock-only --prefer-online --verbose"));
|
|
227
264
|
this.npmInstall(project, milestone);
|
|
228
265
|
utils_1.Logger.logInfo('\n');
|
|
229
266
|
/**
|
|
230
267
|
* Commit our updated package.json and package-lock.json
|
|
231
268
|
*/
|
|
232
269
|
return [4 /*yield*/, this.commitUpdatedFiles(project, milestone, branchName)];
|
|
233
|
-
case
|
|
270
|
+
case 20:
|
|
234
271
|
/**
|
|
235
272
|
* Commit our updated package.json and package-lock.json
|
|
236
273
|
*/
|
|
237
|
-
|
|
274
|
+
_c.sent();
|
|
238
275
|
utils_1.Logger.logMessage("[".concat(project.title, "]: File changes committed"));
|
|
239
|
-
return [3 /*break*/,
|
|
240
|
-
case
|
|
241
|
-
|
|
276
|
+
return [3 /*break*/, 22];
|
|
277
|
+
case 21:
|
|
278
|
+
error_2 = _c.sent();
|
|
242
279
|
utils_1.Logger.logError("[".concat(project.title, "]: Something went wrong while attempting to install packages. Please manually check if this project should have any monorepo packages installed."));
|
|
243
|
-
|
|
244
|
-
|
|
280
|
+
utils_1.Logger.logError(this.getErrorMessage(error_2));
|
|
281
|
+
failedProjects.push(project.title);
|
|
282
|
+
return [3 /*break*/, 22];
|
|
283
|
+
case 22:
|
|
245
284
|
_i++;
|
|
246
|
-
return [3 /*break*/,
|
|
247
|
-
case
|
|
285
|
+
return [3 /*break*/, 15];
|
|
286
|
+
case 23:
|
|
287
|
+
/**
|
|
288
|
+
* One project failing shouldn't stop the others, but the command still needs to fail so the
|
|
289
|
+
* pipeline goes red rather than leaving a project silently behind
|
|
290
|
+
*/
|
|
291
|
+
if (failedProjects.length) {
|
|
292
|
+
utils_1.Logger.logError("\nFailed to install packages in ".concat(failedProjects.length, " of ") +
|
|
293
|
+
"".concat(consumingProjects.length, " projects: ").concat(failedProjects.join(', ')));
|
|
294
|
+
return [2 /*return*/, false];
|
|
295
|
+
}
|
|
296
|
+
return [2 /*return*/, true];
|
|
248
297
|
}
|
|
249
298
|
});
|
|
250
299
|
});
|
|
251
300
|
};
|
|
301
|
+
InstallPackagesTask.prototype.getErrorMessage = function (error) {
|
|
302
|
+
return error instanceof Error ? error.message : String(error);
|
|
303
|
+
};
|
|
252
304
|
InstallPackagesTask.prototype.commitUpdatedFiles = function (project, folderName, branchName) {
|
|
253
305
|
return __awaiter(this, void 0, void 0, function () {
|
|
254
306
|
var rootDir, outputPath, commitFiles, _a;
|
|
@@ -280,23 +332,104 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
280
332
|
});
|
|
281
333
|
});
|
|
282
334
|
};
|
|
335
|
+
/**
|
|
336
|
+
* We read versions out of the monorepo package.json files in git, so a version can be bumped and
|
|
337
|
+
* published while npm is still processing it in the background. Installing during that window
|
|
338
|
+
* fails with ETARGET, so wait for each version to become resolvable first.
|
|
339
|
+
*/
|
|
340
|
+
InstallPackagesTask.prototype.waitForPublishedVersions = function (project, packages) {
|
|
341
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
342
|
+
var _i, packages_1, pkg;
|
|
343
|
+
return __generator(this, function (_a) {
|
|
344
|
+
switch (_a.label) {
|
|
345
|
+
case 0:
|
|
346
|
+
_i = 0, packages_1 = packages;
|
|
347
|
+
_a.label = 1;
|
|
348
|
+
case 1:
|
|
349
|
+
if (!(_i < packages_1.length)) return [3 /*break*/, 4];
|
|
350
|
+
pkg = packages_1[_i];
|
|
351
|
+
return [4 /*yield*/, this.waitForPublishedVersion(project, pkg)];
|
|
352
|
+
case 2:
|
|
353
|
+
_a.sent();
|
|
354
|
+
_a.label = 3;
|
|
355
|
+
case 3:
|
|
356
|
+
_i++;
|
|
357
|
+
return [3 /*break*/, 1];
|
|
358
|
+
case 4: return [2 /*return*/];
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
};
|
|
363
|
+
InstallPackagesTask.prototype.waitForPublishedVersion = function (project, pkg) {
|
|
364
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
365
|
+
var attempt;
|
|
366
|
+
return __generator(this, function (_a) {
|
|
367
|
+
switch (_a.label) {
|
|
368
|
+
case 0:
|
|
369
|
+
if (this.publishedPackages.has(pkg))
|
|
370
|
+
return [2 /*return*/];
|
|
371
|
+
attempt = 1;
|
|
372
|
+
_a.label = 1;
|
|
373
|
+
case 1:
|
|
374
|
+
if (!(attempt <= PUBLISH_POLL_ATTEMPTS)) return [3 /*break*/, 4];
|
|
375
|
+
if (this.isVersionPublished(pkg)) {
|
|
376
|
+
this.publishedPackages.add(pkg);
|
|
377
|
+
utils_1.Logger.logInfo("[".concat(project.title, "]: ").concat(pkg, " is available on npm"));
|
|
378
|
+
return [2 /*return*/];
|
|
379
|
+
}
|
|
380
|
+
if (!(attempt < PUBLISH_POLL_ATTEMPTS)) return [3 /*break*/, 3];
|
|
381
|
+
utils_1.Logger.logWarning("[".concat(project.title, "]: ").concat(pkg, " is not available on npm yet, waiting ") +
|
|
382
|
+
"".concat(PUBLISH_POLL_INTERVAL_MS / 1000, "s (attempt ").concat(attempt, "/").concat(PUBLISH_POLL_ATTEMPTS, ")"));
|
|
383
|
+
return [4 /*yield*/, this.delay(PUBLISH_POLL_INTERVAL_MS)];
|
|
384
|
+
case 2:
|
|
385
|
+
_a.sent();
|
|
386
|
+
_a.label = 3;
|
|
387
|
+
case 3:
|
|
388
|
+
attempt++;
|
|
389
|
+
return [3 /*break*/, 1];
|
|
390
|
+
case 4: throw new errors_1.ShipItError("[".concat(project.title, "]: ").concat(pkg, " did not become available on npm after ") +
|
|
391
|
+
"".concat(((PUBLISH_POLL_ATTEMPTS - 1) * PUBLISH_POLL_INTERVAL_MS) / 1000, "s. Check that it published successfully."));
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
};
|
|
396
|
+
InstallPackagesTask.prototype.isVersionPublished = function (pkg) {
|
|
397
|
+
try {
|
|
398
|
+
/**
|
|
399
|
+
* --prefer-online revalidates the cached metadata. The CI npm cache is restored between jobs,
|
|
400
|
+
* so without it npm can serve back a copy from before the version was published
|
|
401
|
+
*/
|
|
402
|
+
var output = child_process_1.default.execFileSync('npm', ['view', pkg, 'version', '--prefer-online'], { stdio: 'pipe' });
|
|
403
|
+
return output.toString().trim() !== '';
|
|
404
|
+
}
|
|
405
|
+
catch (_a) {
|
|
406
|
+
// npm exits non-zero when the version does not exist yet
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
InstallPackagesTask.prototype.delay = function (ms) {
|
|
411
|
+
return new Promise(function (resolve) { return setTimeout(resolve, ms); });
|
|
412
|
+
};
|
|
283
413
|
InstallPackagesTask.prototype.npmInstall = function (project, folderName) {
|
|
284
414
|
var outputPath = this.getOutputPath(project, folderName);
|
|
285
|
-
child_process_1.default.execSync('npm i --package-lock-only --verbose', {
|
|
415
|
+
child_process_1.default.execSync('npm i --package-lock-only --prefer-online --verbose', {
|
|
286
416
|
cwd: outputPath,
|
|
287
417
|
// Uncomment if we want to silence
|
|
288
418
|
// stdio: 'pipe'
|
|
289
419
|
});
|
|
290
420
|
};
|
|
421
|
+
/**
|
|
422
|
+
* Returns the packages whose versions changed, as "name@version" strings
|
|
423
|
+
*/
|
|
291
424
|
InstallPackagesTask.prototype.updateAndSavePackageFiles = function (project, folderName, branchName, versions) {
|
|
292
425
|
return __awaiter(this, void 0, void 0, function () {
|
|
293
|
-
var rootDir, packageJson, packageLock, packageJsonObj,
|
|
426
|
+
var rootDir, packageJson, packageLock, packageJsonObj, updatedPackages, outputPath;
|
|
294
427
|
return __generator(this, function (_a) {
|
|
295
428
|
switch (_a.label) {
|
|
296
429
|
case 0:
|
|
297
430
|
rootDir = ROOT_DIRECTORIES[project.id];
|
|
298
431
|
if (!rootDir)
|
|
299
|
-
return [2 /*return*/,
|
|
432
|
+
return [2 /*return*/, []];
|
|
300
433
|
return [4 /*yield*/, this.getFileText(project.id, branchName, "".concat(rootDir, "/package.json"))];
|
|
301
434
|
case 1:
|
|
302
435
|
packageJson = _a.sent();
|
|
@@ -304,16 +437,16 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
304
437
|
case 2:
|
|
305
438
|
packageLock = _a.sent();
|
|
306
439
|
packageJsonObj = JSON.parse(packageJson);
|
|
307
|
-
|
|
440
|
+
updatedPackages = [];
|
|
308
441
|
utils_1.Logger.logMessage(project.title);
|
|
309
442
|
/**
|
|
310
443
|
* Annoyingly some projects have clickview packages sitting in dependencies
|
|
311
444
|
* and others have it in devDependencies
|
|
312
445
|
*/
|
|
313
446
|
if (packageJsonObj.dependencies)
|
|
314
|
-
packageJson = this.replaceVersions(packageJson, versions, packageJsonObj.dependencies);
|
|
447
|
+
packageJson = this.replaceVersions(packageJson, versions, packageJsonObj.dependencies, updatedPackages);
|
|
315
448
|
if (packageJsonObj.devDependencies)
|
|
316
|
-
packageJson = this.replaceVersions(packageJson, versions, packageJsonObj.devDependencies);
|
|
449
|
+
packageJson = this.replaceVersions(packageJson, versions, packageJsonObj.devDependencies, updatedPackages);
|
|
317
450
|
outputPath = this.getOutputPath(project, folderName);
|
|
318
451
|
return [4 /*yield*/, fs_extra_1.default.outputFile("".concat(outputPath, "/package.json"), packageJson, { encoding: 'utf8' })];
|
|
319
452
|
case 3:
|
|
@@ -321,12 +454,12 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
321
454
|
return [4 /*yield*/, fs_extra_1.default.outputFile("".concat(outputPath, "/package-lock.json"), packageLock, { encoding: 'utf8' })];
|
|
322
455
|
case 4:
|
|
323
456
|
_a.sent();
|
|
324
|
-
return [2 /*return*/,
|
|
457
|
+
return [2 /*return*/, updatedPackages];
|
|
325
458
|
}
|
|
326
459
|
});
|
|
327
460
|
});
|
|
328
461
|
};
|
|
329
|
-
InstallPackagesTask.prototype.replaceVersions = function (packageJson, versions, deps) {
|
|
462
|
+
InstallPackagesTask.prototype.replaceVersions = function (packageJson, versions, deps, updatedPackages) {
|
|
330
463
|
Object.keys(deps).forEach(function (key) {
|
|
331
464
|
if (!key.startsWith('@clickview'))
|
|
332
465
|
return;
|
|
@@ -342,7 +475,17 @@ var InstallPackagesTask = /** @class */ (function () {
|
|
|
342
475
|
utils_1.Logger.logError("- [".concat(key, "]: ").concat(deps[key], " -> ").concat(versions[key], " downgrade detected"));
|
|
343
476
|
return;
|
|
344
477
|
}
|
|
345
|
-
|
|
478
|
+
var updated = packageJson.replace("\"".concat(key, "\": \"").concat(deps[key], "\""), "\"".concat(key, "\": \"").concat(versions[key], "\""));
|
|
479
|
+
/**
|
|
480
|
+
* The dependency is not formatted the way we expect, so we found nothing to replace. Bail out
|
|
481
|
+
* rather than reporting an update we did not make
|
|
482
|
+
*/
|
|
483
|
+
if (updated === packageJson) {
|
|
484
|
+
utils_1.Logger.logWarning("- [".concat(key, "]: could not find \"").concat(key, "\": \"").concat(deps[key], "\" in package.json"));
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
packageJson = updated;
|
|
488
|
+
updatedPackages.push("".concat(key, "@").concat(newVersion));
|
|
346
489
|
utils_1.Logger.logMessage("- [".concat(key, "]: ").concat(deps[key], " -> ").concat(versions[key]));
|
|
347
490
|
});
|
|
348
491
|
return packageJson;
|
package/package.json
CHANGED