Skip to content

Commit

Permalink
Upgrade dependencies, Nodejs, Yarn, and fixed duplicate suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
daradermody committed Apr 17, 2023
1 parent 6d19b8a commit b72dff7
Show file tree
Hide file tree
Showing 12 changed files with 1,299 additions and 149,156 deletions.
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
16.17
19.9.0
147,392 changes: 0 additions & 147,392 deletions .yarn/releases/yarn-1.23.0-20210726.1745.cjs

This file was deleted.

873 changes: 873 additions & 0 deletions .yarn/releases/yarn-3.5.0.cjs

Large diffs are not rendered by default.

783 changes: 0 additions & 783 deletions .yarn/releases/yarn-berry.cjs

This file was deleted.

2 changes: 1 addition & 1 deletion .yarnrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
spec: "@yarnpkg/plugin-workspace-tools"

yarnPath: .yarn/releases/yarn-berry.cjs
yarnPath: .yarn/releases/yarn-3.5.0.cjs
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"author": "Dara Dermody",
"description": "Web application that allows people to easily follow their favourite cast and crew in movies",
"license": "MIT",
"packageManager": "yarn@3.1.1",
"packageManager": "yarn@3.5.0",
"workspaces": [
"packages/*"
],
Expand Down
22 changes: 11 additions & 11 deletions packages/backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,25 @@
"cors": "^2.8.5",
"express": "^4.18.2",
"graphql": "^16.6.0",
"jsdom": "^20.0.1",
"moviedb-promise": "^3.3.1"
"jsdom": "^21.1.1",
"moviedb-promise": "^3.4.0"
},
"devDependencies": {
"@graphql-codegen/cli": "2.13.6",
"@graphql-codegen/fragment-matcher": "3.3.1",
"@graphql-codegen/introspection": "2.2.1",
"@graphql-codegen/typescript": "2.7.4",
"@graphql-codegen/typescript-operations": "2.5.4",
"@graphql-codegen/cli": "3.3.0",
"@graphql-codegen/fragment-matcher": "4.0.1",
"@graphql-codegen/introspection": "3.0.1",
"@graphql-codegen/typescript": "3.0.3",
"@graphql-codegen/typescript-operations": "3.0.3",
"@graphql-codegen/typescript-react-apollo": "3.3.7",
"@graphql-codegen/typescript-resolvers": "2.7.4",
"@graphql-codegen/typescript-resolvers": "3.2.0",
"@types/cookie-parser": "^1.4.3",
"@types/jsdom": "^20.0.0",
"@types/jsdom": "^21.1.1",
"@types/node": "^18.15.11",
"esbuild": "^0.15.10",
"esbuild": "^0.17.17",
"graphql-tag": "^2.12.6",
"nodemon": "^2.0.22",
"ts-node": "^10.9.1",
"typescript": "^4.8.4"
"typescript": "^5.0.4"
},
"nodemonConfig": {
"exec": "yarn start",
Expand Down
8 changes: 7 additions & 1 deletion packages/backend/src/resolvers/recommendedMovies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,14 @@ async function getRecommendations(userId: User['id'], numberOfInputs: number) {

const numPeople = Math.round(numberOfInputs + numExtraPeople)
const numMovies = Math.round(numberOfInputs + numExtraMovies)
return (await Promise.all([
const movies = (await Promise.all([
MovieDb.discoverBasedOnPeople(favouritePeople.slice(0, numPeople)),
MovieDb.discoverBasedOnMovies(likedMovies.slice(0, numMovies))
])).flat()

const moviesById: Record<MovieInfo['id'], MovieInfo> = {}
for (const movie of movies) {
moviesById[movie.id] = movie
}
return Object.values(moviesById)
}
23 changes: 8 additions & 15 deletions packages/backend/src/services/MovieDb.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import axios from 'axios'
import * as fs from 'fs'
import { Cast, DiscoverMovieResponse, MovieDb as MovieDbApi, MovieRecommendationsResponse } from 'moviedb-promise'
import { Cast, MovieDb as MovieDbApi } from 'moviedb-promise'
import { Crew, MovieResponse, Person as TmdbPerson, PersonMovieCreditsResponse } from 'moviedb-promise/dist/request-types'
import { CastCredit, CrewCredit, isMovieSearchResult, isPersonSearchResult, Movie, MovieCredit, MovieInfo, Person, PersonWithoutFav } from '../../types'
import getToken from '../utils/getToken'
Expand Down Expand Up @@ -33,9 +32,9 @@ export default class MovieDb {

static async personMovieCredits(id: Person['id']): Promise<Pick<MovieCredit, 'id' | 'title' | 'jobs' | 'character' | 'releaseDate'>[]> {
if (!MovieDb.cache.personMovieCredits[id]) {
const {data} = await axios.get<PersonMovieCreditsResponse>(`https://api.themoviedb.org/3/person/${id}/movie_credits?api_key=${key}`)
const crew = data.crew as Required<NonNullable<PersonMovieCreditsResponse['crew']>[0]>[]
const cast = data.cast as Required<NonNullable<PersonMovieCreditsResponse['cast']>[0]>[]
const response = await this.movieDbApi.personMovieCredits({id})
const cast = response.cast as Required<NonNullable<PersonMovieCreditsResponse['cast']>[0]>[]
const crew = response.crew as Required<NonNullable<PersonMovieCreditsResponse['crew']>[0]>[]
const crewMovies = filterInvalidMovies(crew)
const castMovies = cast.map(c => ({...c, job: 'Actor'}))
const movies = aggregateAndNormalizeJobs([...castMovies, ...crewMovies])
Expand All @@ -61,15 +60,15 @@ export default class MovieDb {

static async personInfo(id: Person['id']): Promise<PersonWithoutFav> {
if (!MovieDb.cache.personInfo[id]) {
const {data: person} = await axios.get(`https://api.themoviedb.org/3/person/${id}?api_key=${key}`)
const person = await this.movieDbApi.personInfo({id})
MovieDb.cache.personInfo[id] = pickPersonProperties(person)
}
return MovieDb.cache.personInfo[id]
}

static async movieInfo(id: Movie['id']): Promise<MovieInfo> {
if (!MovieDb.cache.movieInfo[id]) {
const {data: movie} = await axios.get(`https://api.themoviedb.org/3/movie/${id}?api_key=${key}`)
const movie = await this.movieDbApi.movieInfo({id})
MovieDb.cache.movieInfo[id] = pickMovieProperties(movie)
MovieDb.save()
.catch(console.error)
Expand Down Expand Up @@ -112,10 +111,7 @@ export default class MovieDb {

static async discoverBasedOnPeople(personIds: Person['id'][]): Promise<MovieInfo[]> {
const recommendedMovies = await Promise.all(
personIds.map(async id => {
const {data} = await axios.get<DiscoverMovieResponse>(`https://api.themoviedb.org/3//discover/movie?api_key=${key}&with_people=${id}`)
return data.results!
})
personIds.map(async id => (await this.movieDbApi.discoverMovie({with_people: id})).results!)
)
return recommendedMovies
.flat()
Expand All @@ -124,10 +120,7 @@ export default class MovieDb {

static async discoverBasedOnMovies(movieIds: Movie['id'][]): Promise<MovieInfo[]> {
const recommendedMovies = await Promise.all(
movieIds.map(async id => {
const {data} = await axios.get<MovieRecommendationsResponse>(`https://api.themoviedb.org/3/movie/${id}/recommendations?api_key=${key}`)
return data.results!
})
movieIds.map(async id => (await this.movieDbApi.movieRecommendations({id})).results!)
)
return recommendedMovies
.flat()
Expand Down
10 changes: 5 additions & 5 deletions packages/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@
"@emotion/react": "^11.10.6",
"@emotion/styled": "^11.10.6",
"@mui/icons-material": "^5.11.16",
"@mui/lab": "^5.0.0-alpha.126",
"@mui/material": "^5.12.0",
"@mui/lab": "^5.0.0-alpha.127",
"@mui/material": "^5.12.1",
"@preact/signals": "^1.1.3",
"@react-hook/throttle": "^2.2.0",
"apollo3-cache-persist": "^0.14.1",
"axios": "^1.3.5",
"body-parser": "^1.20.2",
"cookie": "^0.5.0",
"esbuild": "^0.15.10",
"esbuild": "^0.17.17",
"graphql": "^16.6.0",
"js-cookie": "^3.0.1",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"notistack": "alpha",
"preact": "^10.13.2",
"query-string": "^7.1.1",
"query-string": "^8.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.10.0",
Expand All @@ -45,7 +45,7 @@
"@overdb/backend": "workspace:*",
"@types/js-cookie": "^3.0.3",
"@types/node": "^18.15.11",
"esbuild-server": "^0.1.2",
"esbuild-server": "^0.2.0",
"graphql-tag": "^2.12.6",
"typescript": "^5.0.4"
}
Expand Down
2 changes: 1 addition & 1 deletion packages/frontend/src/Login.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React = require('react')
import styled from '@emotion/styled'
import { Alert, Button, TextField } from '@mui/material'
import * as queryString from 'query-string'
import queryString from 'query-string'
import { useEffect, useState } from 'react'
import { useNavigate } from 'react-router-dom'
import PageWrapper from './shared/PageWrapper'
Expand Down
Loading

0 comments on commit b72dff7

Please sign in to comment.