Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: 依存関係の更新 (2023-09-05) #997

Merged
merged 9 commits into from
Oct 19, 2023
Merged

Conversation

kou029w
Copy link

@kou029w kou029w commented Sep 5, 2023

TODO

  • build: 依存関係の更新 (2023-09-05)
  • test: Define ts-jest config under globals is deprecated.
  • Docker images
    • mariadb:10.11.2-jammy → 11.1.2-jammy
    • bitnami/moodle:4.1.2-debian-11-r6 → LTSのままにしておく
    • postgres:15.2-alpine3.17 → 15.4-alpine3.18
    • node:18.15.0-alpine3.17 → 18.17.1-alpine3.18
  • GitHub Actions
  • Lint
    • components/organisms/BookForm.tsx
    • components/organisms/ContentPreview.stories.tsx:24
    • components/organisms/ContentPreview.stories.tsx:35
    • components/organisms/Video/VideoJs.tsx:60
    • components/organisms/Video/index.tsx:220
    • components/organisms/Video/index.tsx:279
    • components/templates/Books.tsx:91
    • components/templates/BooksImport.tsx:96
    • components/templates/DeepLinkBooks.tsx:95
    • components/templates/TopicImport.tsx:90
    • components/templates/Topics.tsx:159
    • pages/topics/edit.tsx:43
    • server/utils/zoom/api.ts:1
    • server/utils/zoom/api.ts:2
    • server/utils/zoom/import.ts:4
    • utils/eventLogger/playerTracker.ts:102
    • utils/eventLogger/playerTracker.ts:114
    • utils/playbackRate.ts:44
    • utils/useVolume.ts:61
    • utils/useVolume.ts:61
    • utils/videoJsDurationChangeShims.ts:18
    • utils/youtubePlayedShims.ts:16
    • utils/youtubePlayedShims.ts:38
    • utils/youtubePlayedShims.ts:38
    • utils/youtubePlayedShims.ts:41
    • utils/youtubePlayedShims.ts:41
    • utils/youtubePlayedShims.ts:46
    • utils/youtubePlayedShims.ts:46

@ties-makimura
Copy link

他のPRの変更とconflictする恐れがあるのでWIP

現時点での他PRのマージ完了

client

 @emotion/css                                 ^11.10.6  →          ^11.11.2
 @emotion/react                               ^11.10.6  →          ^11.11.1
 @emotion/styled                              ^11.10.6  →          ^11.11.0
 @mui/icons-material                          ^5.11.11  →           ^5.14.7
 @mui/lab                             ^5.0.0-alpha.124  →  ^5.0.0-alpha.142
 @mui/material                                ^5.11.15  →           ^5.14.7
 @mui/styles                                  ^5.11.13  →           ^5.14.7
 @mui/x-date-pickers                            ^6.0.3  →           ^6.12.1
 @openapitools/openapi-generator-cli            ^2.5.2  →            ^2.7.0
 @storybook/addon-a11y                 ^6.5.17-alpha.0  →            ^7.4.0
 @storybook/addon-essentials           ^6.5.17-alpha.0  →            ^7.4.0
 @storybook/builder-webpack5           ^6.5.17-alpha.0  →            ^7.4.0
 @storybook/react                      ^6.5.17-alpha.0  →            ^7.4.0
 @types/jest                                   ^29.5.0  →           ^29.5.4
 @types/node                                 ^18.15.11  →           ^20.5.9
 @types/react                                 ^18.0.31  →          ^18.2.21
 @types/vimeo__player                          ^2.16.3  →           ^2.18.0
 @typescript-eslint/eslint-plugin              ^5.57.0  →            ^6.6.0
 @typescript-eslint/parser                     ^5.57.0  →            ^6.6.0
 @vimeo/player                                 ^2.18.0  →           ^2.20.1
 clsx                                           ^1.2.1  →            ^2.0.0
 date-fns                                      ^2.29.3  →           ^2.30.0
 eslint                                        ^8.37.0  →           ^8.48.0
 eslint-config-next                            ^13.2.4  →          ^13.4.19
 eslint-config-prettier                         ^8.8.0  →            ^9.0.0
 eslint-plugin-react                           ^7.32.2  →           ^7.33.2
 eslint-plugin-storybook                       ^0.6.11  →           ^0.6.13
 glob                                           ^9.3.2  →           ^10.3.4
 iso-639-1                                     ^2.1.15  →            ^3.0.1
 jest                                          ^29.5.0  →           ^29.6.4
 jotai                                          ^2.0.3  →            ^2.4.1
 next                                          ^13.2.4  →          ^13.4.19
 pathpida                                      ^0.20.1  →           ^0.22.0
 prettier                                       ^2.8.7  →            ^3.0.3
 react-hook-form                               ^7.43.8  →           ^7.46.1
 react-markdown                                 ^8.0.6  →            ^8.0.7
 remark-breaks                                  ^3.0.2  →            ^3.0.3
 strip-markdown                                 ^5.0.0  →            ^5.0.1
 swr                                            ^2.1.1  →            ^2.2.2
 ts-jest                                       ^29.0.5  →           ^29.1.1
 typescript                                     ^5.0.2  →            ^5.2.2
 use-debounce                                   ^9.0.3  →            ^9.0.4
 video.js                                       ^8.0.4  →            ^8.5.2
 videojs-youtube                                ^3.0.0  →            ^3.0.1

server

 @fastify/auth                  ^4.2.0  →   ^4.3.0
 @fastify/cookie                ^8.3.0  →   ^9.0.4
 @fastify/cors                  ^8.2.1  →   ^8.3.0
 @fastify/helmet               ^10.1.0  →  ^11.0.0
 @fastify/multipart             ^7.5.0  →   ^7.7.3
 @fastify/session              ^10.2.0  →  ^10.4.0
 @fastify/swagger               ^8.3.1  →   ^8.9.0
 @fastify/swagger-ui            ^1.6.0  →   ^1.9.3
 @prisma/client                ^4.12.0  →   ^5.2.0
 @quixo3/prisma-session-store  ^3.1.11  →  ^3.1.13
 @types/jest                   ^29.5.0  →  ^29.5.4
 @types/jsonwebtoken            ^9.0.1  →   ^9.0.2
 @types/unzipper               ^0.10.5  →  ^0.10.7
 date-fns                      ^2.29.3  →  ^2.30.0
 fastify                       ^4.15.0  →  ^4.22.2
 got                           ^12.6.0  →  ^13.0.0
 jest                          ^29.5.0  →  ^29.6.4
 json-schema-to-ts              ^2.7.2  →   ^2.9.2
 jsonwebtoken                   ^9.0.0  →   ^9.0.2
 node-fetch                     ^3.3.1  →   ^3.3.2
 node-ssh                      ^13.0.1  →  ^13.1.0
 openid-client                  ^5.4.0  →   ^5.4.3
 pino-pretty                   ^10.0.0  →  ^10.2.0
 prisma                        ^4.12.0  →   ^5.2.0
 ts-jest                       ^29.0.5  →  ^29.1.1
 tsup                           ^6.7.0  →   ^7.2.0
Docker images

- mariadb:10.11.2-jammy → 11.1.2-jammy
- bitnami/moodle:4.1.2-debian-11-r6 → 4.1.5-debian-11-r18 (LTSのままにしておく)
- postgres:15.2-alpine3.17 → 15.4-alpine3.18
- node:18.15.0-alpine3.17 → 18.17.1-alpine3.18

server/README.md 動作確認環境を Docker v24 に更新し、docker-compose.yml ではなくなっているので compose.yml を使用
@kou029w
Copy link
Author

kou029w commented Sep 26, 2023

$ eslint --ext .js,.jsx,.ts,.tsx .

/home/nebel/chibichilo/server/utils/zoom/api.ts
  1:17  error  Cannot find module 'got' or its corresponding type declarations  tsc/config
  2:29  error  Cannot find module 'got' or its corresponding type declarations  tsc/config

/home/nebel/chibichilo/server/utils/zoom/import.ts
  4:17  error  Cannot find module 'got' or its corresponding type declarations  tsc/config

使用しているパッケージ got に関する TypeScript 型検査でのエラー。
Got v13 の変更によって "module": "node16", "moduleResolution": "node16" へのコンパイルオプションの変更が必要。変更することによる影響範囲が広いので悩ましい。

sindresorhus/got@v12.6.1...v13.0.0#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519R10

依存関係の更新によりTypeScriptの型検査に失敗した下記の実装を変更し適切に扱えるように修正します。

- components/organisms/BookForm.tsx
- components/organisms/ContentPreview.stories.tsx:24
- components/organisms/ContentPreview.stories.tsx:35
- components/organisms/Video/VideoJs.tsx:60
- components/organisms/Video/index.tsx:220
- components/organisms/Video/index.tsx:279
- components/templates/Books.tsx:91
- components/templates/BooksImport.tsx:96
- components/templates/DeepLinkBooks.tsx:95
- components/templates/TopicImport.tsx:90
- components/templates/Topics.tsx:159
- pages/topics/edit.tsx:43
- utils/eventLogger/playerTracker.ts:102
- utils/eventLogger/playerTracker.ts:114
- utils/playbackRate.ts:44
- utils/useVolume.ts:61
- utils/useVolume.ts:61
- utils/videoJsDurationChangeShims.ts:18
- utils/youtubePlayedShims.ts:16
- utils/youtubePlayedShims.ts:38
- utils/youtubePlayedShims.ts:38
- utils/youtubePlayedShims.ts:41
- utils/youtubePlayedShims.ts:41
- utils/youtubePlayedShims.ts:46
- utils/youtubePlayedShims.ts:46
使用しているパッケージ got を廃止します。代わりに undici fetch() を使うように変更します。got に関する TypeScript 型検査でのエラーは出ないようになります。
@kou029w kou029w marked this pull request as ready for review October 2, 2023 05:32
@kou029w
Copy link
Author

kou029w commented Oct 2, 2023

Got v13 の変更によって "module": "node16", "moduleResolution": "node16" へのコンパイルオプションの変更が必要。

Gotを取り除き、代わりにfetch()を使うように書き換えました。


また、package.json のバージョンを、リリースに合わせて v2.5.0 に更新しました:

"version": "2.5.0",

@ties-makimura
Copy link

  • Zoomインポートを行うと,Zoomからのビデオ取得・ブックとトピックの作成され,機能自体は一見問題ないように見えるが,ログにSyntaxErrorが記録される.
2023-10-13 12:00:00 INFO begin zoom import... ZoomImportLog
2023-10-13 12:00:04 ERROR SyntaxError: Unexpected end of JSON input: email:*** ZoomImportLog
SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at parseJSONFromBytes (/home/nodejs/chibichilo/server/dist/index.js:134145:19)
    at successSteps (/home/nodejs/chibichilo/server/dist/index.js:134119:27)
    at specConsumeBody (/home/nodejs/chibichilo/server/dist/index.js:134125:9)
    at _Response.json (/home/nodejs/chibichilo/server/dist/index.js:134015:18)
    at jsonFetcher (/home/nodejs/chibichilo/server/dist/index.js:161918:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async zoomRequest (/home/nodejs/chibichilo/server/dist/index.js:161950:10)
    at async ZoomImport.importBooks (/home/nodejs/chibichilo/server/dist/index.js:162052:9)
    at async zoomImport (/home/nodejs/chibichilo/server/dist/index.js:161993:5)
    at async Job.job (/home/nodejs/chibichilo/server/dist/index.js:162215:7)
2023-10-13 12:00:04 INFO end zoom import... ZoomImportLog
  • Videojsプレイヤーにある早送りと巻き戻しのアイコンが●になっている.クリックすると機能自体は正常に動作する.
    • master ブランチ
      image
    • update-2023-09-05 ブランチ
      image

@kou029w
Copy link
Author

kou029w commented Oct 13, 2023

確認ありがとうございます!

前者は 9d261e1#diff-7e10cf8f5de0e980a47897beee74486e28d43d4b9caf85bba4a3a5693b06a0b7L385 にあったcontent-typeヘッダーが抜け落ちている差分を見つけたのでこれは変更してヘッダーを与えてみてもう少し調査してみます

後者は予想外でしたがまず再現するか調査してみます

@kou029w
Copy link
Author

kou029w commented Oct 16, 2023

SyntaxErrorの件はレコーディングの削除後のレスポンスが空のケースで動作上も問題なくcontent-typeは関係無さそうでした

        await zoomRequest(
          `/meetings/${deletemeeting}/recordings`,
          { action: "trash" },
          "DELETE"
        );

しかしエラーではないにもかかわらずエラーメッセージを出すのは運用上は適さないかと思うのでレコーディングの削除処理については Response.json() メソッドを呼ばない fetcher を使用するという対処が考えられます。

@kou029w
Copy link
Author

kou029w commented Oct 17, 2023

videojs-seek-buttonsについては mister-ben/videojs-seek-buttons#130 に同様の課題を発見しました。
v4.0.3 アップデート後:
image

レコーディングの削除処理のなかでレスポンスが空で得られるエンドポイントへのリクエストがあり、そこで呼ばれる Response.json() メソッドからパース時に SyntaxError が出力される問題がありました。レコーディングの削除処理については Response.json() メソッドを呼ばない fetcher を使用するように変更しこの問題を解決します。
@kou029w
Copy link
Author

kou029w commented Oct 17, 2023

しかしエラーではないにもかかわらずエラーメッセージを出すのは運用上は適さないかと思うのでレコーディングの削除処理については Response.json() メソッドを呼ばない fetcher を使用するという対処が考えられます。

JSONのパースを行わないリクエストを行うための zoomRequestWithoutParse() 関数を実装し、レコーディングの削除処理の中でこれを呼ぶように変更しました。

@ties-makimura
Copy link

  • Zoomでエラーログ出ないことを確認
2023-10-18 17:45:00 INFO begin zoom import... ZoomImportLog
2023-10-18 17:45:04 INFO end zoom import... ZoomImportLog
  • 早送りと巻き戻しのアイコンが直っていることを確認
    image

@ties-makimura ties-makimura merged commit dab0f7b into master Oct 19, 2023
2 checks passed
@ties-makimura ties-makimura deleted the update-2023-09-05 branch October 19, 2023 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants