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

Update to Node v20.11.1 #2352

Draft
wants to merge 73 commits into
base: main
Choose a base branch
from
Draft

Update to Node v20.11.1 #2352

wants to merge 73 commits into from

Conversation

mau11
Copy link
Member

@mau11 mau11 commented Mar 22, 2024

Fixes # (issue)

Description

Removed

  • Removed recompose entirely. Most changes were to do with compose, which is an export function similar to lodash _.flowRight. Biggest change came from src/containers/hoc/load-data.jsx and its withMutations function needing a full rework (0813151).
  • Removed deprecated @bandwidth/messaging for bandwidth-sdk
  • Removed node-abort-controller in favor of native support
  • Removed deprecated camelcase-keys in favor of humps (already a dependency in Spoke)
  • Removed url-join in favor of native support
  • Removed unused selenium-webdriver
  • Removed the following packages to use Apollo Client v3 and Apollo Server v4 packages, @apollo/client and @apollo/server in their place:
    apollo-cache-inmemory
    apollo-client
    apollo-link
    apollo-link-error
    apollo-link-http
    apollo-server-express
    apollo-utilities
  • Removed graphql-tag to use @apollo/client:
    import gql from "graphql-tag"; => import { gql } from "@apollo/client";
  • Replaced graphql-tools with @graphql-tools/schema
  • Replaced deprecated react-apollo:
    import { ApolloProvider } from "react-apollo"; => import { ApolloProvider } from "@apollo/client";
    import { compose } from "react-apollo"; => import { flowRight as compose } from "lodash";

Upgraded Packages

  • Upgrade webpack-cli 4.7.2 => 4.10.0; removed optional dependency of this, while maintaining it as a main dependency.
  • Upgrade @babel/cli 7.19.3 =>7.24.1
  • Upgrade @babel/core 7.24.0 => 7.24.1
  • Upgraded typescript from 2.71 => 3.2.1
  • Upgraded aws-sdk to V3 and its many supporting packages. This had a codemod which made this process simple.
  • Upgrade enzyme-adapter-react-16 from 1.15.7 => 1.15.8 (WILL LOSE SUPPORT IN react@17, currently running react@16)
  • Upgrade jest-when from 3.5.1 => 3.6.0
  • Upgrade eslint from 8.26.0 => 8.56.0
  • Upgrade google-libphonenumber from 3.0.0 => 3.2.34
  • Upgrade isomorphic-fetch from 2.2.1 => 3.0.0
  • Upgrade data-loader from 1.4.2 => 2.2.2
  • Upgrade twilio from 3.4.0 => 4.23.0
  • Upgrade knex from 2.0.0 => 3.1.0
  • Upgrade pg-query-stream from 1.1.2 => 4.5.3
  • Upgrade redis from 3 => 4.6.13
  • Upgrade query-string from 4.3.4 => 9.0.0
  • Upgrade @babel/eslint from 7.19.1 => 7.24.1
  • Upgrade @babel/plugin-transfrom-runtime from 7.19.6 => 7.24.4
  • Upgrade rollbar from 2.4.4 => 2.26.4
  • Upgrade supertest from 6.2.3 => 6.3.4
  • Upgrade webpack from 5.74.0 => 5.90.1
  • Upgrade moment-timezone from 0.5.14 => 0.5.45
  • Upgrade @babel/preset-env from 7.20.2 => 7.23.9
  • Upgrade pg from 8.0.2 => 8.11.3. Added support for TextDecoder and TextEncoder as this version upgrade of pg dropped support.
  • Upgrade @babel/register from 7.18.9 => 7.23.7
  • Upgrade auth0-js from 9.14.2 => 9.24.1
  • Upgrade cookie-session from 2.0.0-alpha.1 => 2.1.0
  • Upgrade nodemailer from 6.4.16 => 6.9.9
  • Updated graphql packages

Added Packages

Other

  • Updated configs to support ESM
  • Created babel.config.js for ESM support
  • Change createMuiTheme import to createTheme from @material-ui/core/styles package
  • Refactored server/index.js and __test__/ files to work with updated apollo server + graphql packages

Checklist:

  • I have manually tested my changes on desktop and mobile
  • The test suite passes locally with my changes
  • If my change is a UI change, I have attached a screenshot to the description section of this pull request
  • My change is 300 lines of code or less, or has a documented reason in the description why it’s longer
  • I have made any necessary changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • My PR is labeled [WIP] if it is in progress

Arique1104 and others added 16 commits October 5, 2023 11:49
* change mui import

* remove recompose

* remove recompose

* fix minor duplicate style

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* add comment

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* remove second onClick

* remove recompose and moved hook

* remove recompose

* remove recompose

* remove second variant call causing error

* remove recompose

* remove recompose

* remove recompose

* remove recompose

* remove recmpose

* remove recompose

* remove recompose

* remove recomopse

* remove recomopse

* remove recomopse

* remove recomopse

* remove recomopse

* remove recomopse

* remove recompose

* upate proper mui import

* formatting

* adjust export to fix error

* adjust export to match prev. version

* adjust export to match prev version

* adjust export to const

* redo withMutations; removing recomponse funcs

* fix texter-feedback loading error

* remove recompose import

* remove recompose funcs & import

* remove recompose import

* remove recompose dependency

* rowsMax => maxRows

* rowsMax => maxRows

* rowsMax => maxRows

* rowsMax => maxRows

* rowsMax => maxRows

* rowsMax => maxRows

* upgrade webpack-cli

* upgrade webpack-cli optionalDep

* yarn dump

* Ran npm audit and got a yarn.lock update

* npm audit fix yarn.lock update

* added @babel/plugin-syntax-flow@^7.14.5 for react-scripts > eslint-config-react-app > [email protected]

* add unmet @babel/plugin-transform-react-jsx@^7.14.9 for react-scripts > eslint-config-react-app > [email protected]

* yarn add eslint-plugin-react-hooks@^4.3.0 for unmet peer dep eslint-config-airbnb

* add comment explaining SQlite error

* add react-dnd peer dep

* update peerDep typescript

* Adds @babel/[email protected] to dependencies

* Adds @bable/[email protected]

* remove web-cli from optional dep (is in devDeps)

* Adds babel/traverse version 7.23.2 to package and yarn lock

* ran npm audit fix

* adds [email protected]

* Updates mobilecommons-signup to remove aws-sdk which is deprecated

* upgrade typscript from 2.7 to 2.8

* Adds babel/plugin-transform-class-properties to project dependencies

* ran yarn, new yarn.lock

* typescript from =2.8 to ^2.7

* typscript from ^2.8 tp ^3.2.1

* Adds @babel/plugin-transform-nullish-coalescing-operator to project dependencies

* Adds @babel/plugin-transform-optional-chaining into project dependencies

* Upgrade aws-sdk to version 3 standards

* Add @aws-sdk/client-sqs to deps

* Updates jobs.js and s3-pull/index.js to version 3 standards of aws - beginning of breaking change

* Add @aws-skd-/client-lamda to deps

* Adds aws-sdk/s3-request-predesigner to dependencies

* Adds @aws-sdk/client-s3 to project dependencies

* updates lambda-async index.js to use version 3 aws-sdk

* following ariques history, they reinstalled @aws-sdk/client-lambda, and got a new yarn.lock

* Updates server/telemetry.js to v3 of aws-sdk

* Adds aws-sdk/client-cloudwatch to project dependencies

* Adds @aws-sdk/client-cloudwatch-events to project dependencies

* Upgrades lambda.js to v3 of aws-sdk

* upgrade babel/cli from 7.23.9 to 7.24.1

* upgrade csv-s3-upload/index.js from v2 to v3 of aws-sdk

* upgrade enzyme-adapter-react-16 to 1.15.8 from 1.15.7

* upgrade eslint-plugin-import to 2.29.1 from 2.29.0

* upgrade @babel/core to 7.24.1 from 7.24.0

* upgrade jest-when to 3.6.0 from 3.5.2

* upgrade eslint to 8.56.0 from 8.26.0

* upgrade google-libphonenumber to 3.2.34 from 3.0.0

* remove deprecated @bandwidth/messaging for bandwidth-sdk

* adjust badnwidth/messaging.js to bandwidth-sdk

* update configs to support ESM

* upgrade isomorphic-fetch to 3.0.0 from 2.2.1

* remove unused isomophic-fetch import

* remove node-abort-controller in favor of node's native

* ajdust import to match node's native abort controller

* remove camelcase-keys in favore of humps

* remove camelcase keys in favor of humps in bulkSendMessages.js

* import camelizeKeys from humps to fix graphQL error

* upgrade dataloader to 2.2.2 from 1.4.2

* fixed string match that was missing a space

* upgrade twilio to 4.23.0 from 3.4.0, and url-join to 5.0.0 from 4.0.1

* add ESM support for filter-obj and url-join

* remove selenium-webdrive as it is no longer used

* upgrade terser-weback-pluging to 5.3.10 from 4

* removing unused functions

* remove url-join in favor of native options

* upgrade knex to 3.1.0 from 2.0.0

* upgrade pg-query-stream to 4.5.3 from 1.1.2

* upgrade redis to 4.6.13 from 3

* remove bluebird in favor for native support for promises

* upgrade query-string to 9.0.0 form 4.3.4

* update babel.config.js for esm support

* add esm support for decode-uri-component, split-on-first

* upgrade babel-loader to 9.1.3 from 9.1.0

* fix queryString import that caused error in dev mode

* updgrade @bable/eslint-parser to 7.24.1 from 7.19.1

* fix pageinfo limit in CampaignList test that threw errors when yarn test

* upgrade @babel/plugin-transform-runtime to 7.24.3 from 7.19.6

* upgrade rollbar to 2.26.4 from 2.4.4

* upgrade supertest to 6.3.4 from 6.2.3

* upgrade webpack to 5.90.1 from 5.74.0

* upgrade moment-timezone to 0.5.45 from 0.5.14

* upgrade @babel/preset-env to 7.23.9 from 7.20.2

* upgrade pg to 8.11.3 from 8.0.2

* add support for TextEncoder and TextDecoder for pg upgrade that dropped said support

* upgrade @babel/register to 7.23.7 from 7.18.9

* upgrade auth0-js to 9.24.1 from 9.14.3

* upgrade cookie-session to 2.1.0 from 2.0.0-alpha.1

* upgrade nodemailer to 6.9.9 from 6.4.16

* ran npm audit fix, got new yarn.lock
* Update graphql + apollo packages and corresponding tests

* Replace deprecated @bandwidth/messaging with bandwidth-sdk
* Update a test's expectation to align with a change in a Node exception

The failing test was testing a failure caused by trying to parse an
object as if it were a JSON string.

It’s failing because the exception thrown by a JSON parse error
changed between Node versions.

Node 16.18.0
============

```
==> node
Welcome to Node.js v16.18.0.
Type ".help" for more information.
> JSON.parse("{")
Uncaught SyntaxError: Unexpected end of JSON input
> JSON.parse({})
Uncaught SyntaxError: Unexpected token o in JSON at position 1
```

Node 20.11.1
============

```
==> nvm use 20.11.1
Now using node v20.11.1 (npm v10.2.4)
==> node
Welcome to Node.js v20.11.1.
Type ".help" for more information.
> JSON.parse({})
Uncaught SyntaxError: "[object Object]" is not valid JSON

```

* SQLite stores dates as an integer.

You can get the integer from a javascript date with `.getTime()`

* don't pin the version of  -- fix github actions not working with node 20 specified in package.json

* force CI

* try v4 instead of no version specified

* update cache to v4 to get node 20 support

* use node version 20

* Try to pin strip-ansi

* try without caching

* caching is not the problem; let's force strip-ansi to use a non ESM version

* make yarn.lock consistent with pinning strip-ansi
update actions to work with node 20
downgrade axios to the latest v0 release to allow cypress tests to run
stream: require.resolve( "stream-browserify" ),
zlib: require.resolve( "browserify-zlib" ),
vm: require.resolve( "vm-browserify" )
},
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this resolves the error:
Screenshot 2024-03-25 at 4 43 34 PM

engelhartrueben and others added 13 commits March 28, 2024 17:24
* Fix bug - trying to sort a read-only property of array

* Fix spacing

* Fix error where copied nested objects are immutable

* Define how fields should be merged (Apollo InMemoryCache error)

* Parse userId when fetching and updating account

* Linter fix

* Parse user id when getting todos data

* Clean up

* Add try/catch

* Parse buying phone number limit

* Target limit table cell more precisely for integration tests

* Clean up
* The excluded UI tests don't use server components

* We need `@jest-environment jsdom` for testing UI components where we
mount react components but it doesn't include setImmediate. The
Redis client needs setImmediate which is available when we use
`@jest-environment node` but then we can't mount react components.
One size does not fit all!
lperson and others added 30 commits April 28, 2024 16:20
I can't leave it this way but let's see if it works
* docker-compose has been deprecated with docker compose now being used. Reflected in docs and devTools

* add clarifying documentattion about ComposeV2
* add experimental and supporting text

* nodeId is used to create the hierarchy of the script.
By just passed nodeId[0], it was sending the object { id: x }, where "x" is the id number.
nodeId only needs the id value, x, rather than the key value pair.

* fix typos in scrub mobile numbers component

* remove private key from docs (was only for example purposes), but got in the way of gh push protection. replaced with 'aVeryLongPrivateKey'

* change the steps to get Google Docs integration working as it has changed the last 4 years.

* Revert "nodeId is used to create the hierarchy of the script."

This reverts commit 1ac88e1.

* nodeId is used to create the hierarchy of the script.
By just passing nodeId[0], it was sending the object { id: x }, where "x" is the id number.
nodeId only needs the id value, x, rather than the key value pair.
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.

None yet

4 participants