NYPL Remediation Team update
This release includes the minimum updates required for working on Node 20 and patching npm security vulnerablities.
- Added an
.nvmrc
file for node 20 usage. - Added
NODE_OPTIONS=--openssl-legacy-provider
to the npmprod
script command. - Added the following npm packages:
@types/recharts
,sass
,
- Updated Github Actions to use node 20.
- Updated code to conform to updated Typescript version.
- Updated a few unit tests to work with updated drag and drop package.
- Updated the following npm packages:
@babel/present-env
,@babel/preset-react
,@babel/preset-typescript
,@testing-library/jest-dom
,@testing-library/react
,@types/mocha
,@types/node
,@types/prop-types
,@types/react
,@types/react-redux
,@typescript-eslint/eslint-plugin
,babel-jest
,bootstrap
,colors-cli
,css-loader
,draft-convert
,enzyme
,enzyme-adapter-react-16
,eslint
,eslint-config-prettier
,eslint-plugin-jsx-a11y
,eslint-plugin-prettier
,eslint-plugin-react
,fetch-mock
,file-loader
,follow-redirects
,husky
,jest
,jsdom
,lint-staged
,mini-css-extract-plugin
,mocha
,nightwatch
,numeral
,opds-feed-parser
,opds-web-client
,prop-types
,qa
,react
,react-axe
,react-beautiful-dnd
,react-bootstrap
,react-color
,react-dom
,react-redux
,react-router
,redux
,redux-thunk
,request
,sass-lint
,sass-loader
,selenium-standalone
,sinon
,style-loader
,terser-webpack-plugin
,ts-loader
,ts-node
,typedoc
,typescript
,uglifyjs-webpack-plugin
,webpack
,webpack-cli
,webpack-merge
- Removed
tslint-react-a11y
fromtslint
configuration. - Removed eslint config in
lint-staged
command. - Removed the following npm packages:
font-awesome
,isomorphic-fetch
,@babel/core
,eslint-plugin-react-hooks
,json-loader
,node-sass
,tslint-react-a11y
- Added GET requests for updated lists every time a list is updated which allowed for the removal of the draft state.
- Added new Jest/RTL tests to support new functionality.
- Removed the router from the testUtils render function, which was causing testing issues with the RTL/Jest tests.
- Created a new CatalogLink component that doesn't rely on the ContextProvider (related to the issue above). This component is currently only used in the List Manager.
- Wrote tests using RTL for two main components in the List Manager, CustomListEditorHeader and CustomListEditorBody.
- Fixed two bugs: one in which an error message in the List Manager didn't reset when a user moved to a new list, and another in which the updated entry count would not come through for a new list that the user added books to, navigated away from, and then navigated back to.
- Installed Jest and configured it to run alongside Mocha.
- Set up React Testing Library and added a testUtils.jsx file to give tests access to React context.
- Fixed bug that caused deleting books from a list to not function correctly.
- Updated the List Manager so that a POST request is made every time a user saves a title, adds a book, or deletes a book.
- Because of the aforementioned change, the "Save" button is no longer needed, so it has been removed.
- Updated the react-beautiful-dnd library from v2.3.1 to v11.0.2, and made necessary changes to the code and tests.
- Fixed issue where the "View Details" button in the List Manager caused an error.
- Fixed bug wherein if a user added or deleted books from a list, then navigated to a new list without saving, the deletedListEntries and addedListEntries would not be reset to empty and therefore would cause the displayed number of books in a list to be wrong.
- Refactored the
CustomListSearch
component to bring it up-to-date with current best practices. - Added
CustomListSearchFormContent
andCustomListSearchAdvancedOptions
to make components smaller. - Added/edited tests where needed.
- Created reusable component
CustomListBookCard
to reduce repetitive code inCustomListSearchResults
andCustomListEntries
.
- Fixed issue where the "Delete all" button didn't work for new lists.
- Refactored the
CustomListEditor
component to bring it up-to-date with current best practices. AddedCustomListEditorHeader
andCustomListEditorBody
. Added/edited tests where needed. - Refactored the
CustomListEntriesEditor
component to bring it up-to-date with current best practices. AddedCustomListSearchResults
andCustomListEntries
. Added/edited tests where needed. - Renamed
CustomListEntriesEditor
toCustomListBuilder
for increased clarity.
- Refactored the
CustomListPage
component to bring it up-to-date with current best practices. Added/edited tests where needed.
- Updated node-sass and sass-loader dependency versions to reduce the number of high risk vulnerabilities.
- Refactored the
CustomListsSidebar
component to bring it up-to-date with current best practices. Added/edited tests where needed.
- Updated
CustomListEditor
so that the "Save this list" button is disabled if either title or entries are absent, and enabled if both are present. - Updated the book cover editor so that the current cover URL pulls through not as a value in the input (as described in v0.5.3), but as a description beneath the input.
- Updated the version of opds-web-client after successfully testing the version below.
- Updated the version of opds-web-client in order to test a fix for bugs affecting the List Manager.
- Added a value attribute to the book cover URL's
EditableInput
inBookCoverEditor
so that the existing URL pulls through for the user to start. - Addressed linter errors throughout repo and used prettier to format code consistently.
- Prepended all deprecated React lifecycle methods (componentWillMount and componentWillReceiveProps) with UNSAFE_.
- Updated CI from Travis to GitHub Actions.
- Updated the README.
- Added a Github pull request template.
- Made footer consistent across pages.
- Ensured footer was not covering other page elements.
- Updated the opds-web-client to version 0.6.2.
- Updated
opds-web-client
to version^0.6.1
.
- Updated npm packages to fix security issues.
- Minor updates to types to run and build the project.
- Added a custom Mocha reporter so that a formatted list of suites and tests can be generated via the CLI.
- Fixed another footer placement bug.
- Upgraded to v1.3.18 of the reusable components package.
- Stopped hard-coding the "name" and "short name" fields in the library create/edit form.
- Fixed CSS bug that caused the footer to sometimes float in the middle of the screen.
- Fixed data submission bug involving disabled fields.
- Revoked librarians' and library managers' privileges on the "Basic Information" section of the library edit form.
- Fixed bug resulting in blank screen upon form submission
- Reverted accidentally granting privileges for creating individual admins to library managers
- Enabled all admins to access the system configuration section
- Implemented a protocol for disabling specific input fields based on the current admin's permissions level
- Switched from string refs to the React 16 refs API for as many components as are currently compatible with it
- Fixed a bug whereby the InputList wasn't rendering default values from the server
- Fixed a bug resulting in the creation of an extra query string in the URL.
- Fixed a CSS issue whereby text was erroneously styled to look like a link on hover.
- Displayed the current user's level of permissions in the account dropdown.
- Specified that the catalog should request non-cached OPDS feeds.
- Added Prettier for code syntax formatting in a pre-commit hook.
- Clarified name of announcements field to minimize potential user confusion.
- Handled case in which service for self-tests has no name.
- Specified "en-US" locale for date parsing, to resolve a problem with parsing Canadian date strings.
- Fixed a bug involving editing unsaved announcements.
- Implemented a new LibraryEditForm section so that admins can manage library-specific announcements.
- Fixed a bug preventing scrolling through the available lists on the Lanes page.
- Removed a reference to the unused
isActive
property ofopds-web-client
'srouter
context.
- Fixed link construction for book
View Detail
button when creating a list in List Manager. - Fixed a bug which incorrectly disabled the list-saving functionality.
- Updated version of
opds-web-client
to v0.4.0 and changed reliance onBook.getMedium
to importedgetMedium
andgetMediumSVG
. - Instantiates
ActionsCreator
andDataFetcher
locally to be passed in toActionsProvider
to match updated API.
- Made sure the list curation "Load more" button is never hidden.
- Implemented a language filter for search results in the Lists creator.
- Added a message to clarify usage of new sorting feature.
- Implemented sorting functionality for search results in the Lists creator.
- Disabled the "run tests" button in cases in which tests cannot be run.
- Enabled admins to configure the terms of service text and link displayed in the Footer.
- Updated the version of
opds-web-client
to v0.3.4 and added ActionsProvider component wrapper to use the redux actions/dispatch hook.
- Created a PairedMenus component to render a related InputList and dropdown menu and implemented it in the Lanes & Filters section of the Library Edit Form.
- Fixed an issue with button alignment on forms for adding libraries to analytics integrations and collections.
- Added the query param
&language=all
for searches done in the List admin page to allow searches without a language filter.
- Implemented an optional case-insensitive configuration for InputList.
- Fixed a bug that blocked creation of a new local analytics service with disabled patron neighborhood analytics.
- Added "All Ages" and "Research" to the list of audiences for an item's classification.
- Added a Metadata Services tab to the self-tests section of the Troubleshooting page.
- Fixed a display bug on the List Manager page.
- Fixed the display color for the Terms & Conditions link in the footer.
- Fixed a bug where an empty book summary caused creating a DraftJS instance to crash the app.
- Updated the
opds-web-client
package to v0.3.2. - Updated the ContextProvider based on the
opds-web-client
's updated context APIs.
- Fixed accessibility issues found by the
react-axe
package.
- Updated the
opds-web-client
package to v0.3.0. - Updated Typescript to version 3.7.2 and updated other related packages to their latest version.
- Updated npm packages including chai, mocha, and sinon.
- Updated version of Node to run in Travis to Node v10.
- Fixed tests that were passing in Node v8 but failing in Node v10. Specifically, stubbing window.confirm did not work on components that were fully mounted. A shallow mount helped fix this issue, but the tests needed to be updated accordingly.
- Cosmetic fix for InputList items.
- Cosmetic fixes for buttons on the Lists page.
- Added
react-axe
to test for accessibility. - Updated the
opds-web-client
package to version 0.2.10.
- Implemented an automatic search for a title when the link from the book editor Lists tab to the Lists page is used.
- Streamlined the book editor Lists tab by implementing a dropdown menu option on the InputList component.
- Updated the StorageServices component to allow multiple storage services and also displaying each storage's name in the list of services.
- Fixed an alignment issue in the WithRemoveButton component.
- Fixed a bug where Firefox doesn't programmatically click on an anchor element created to download circulation events.
- Fixed a bug where the catalog navigation links were not styled as "active" when they were on the correct page.
- Created a Footer which displays a Terms of Service link.
- Streamlined the interfaces for configuring location analytics.
- Added a date end, event type, and locations input fields to the report form for circulation events in the Dashboard.
- Displayed additional terms-of-service information on the library registration form.
- Updated the catalog book default colors as well as book detail tabs and entrypoint tabs link color.
- Ensured that the Self-tests page updates to display the most recent test results.
- Refactored the BookEditForm code.
- Made styling improvements to Book Details.
- Prevented the addition of blank strings as contributor names.
- Typedoc for generating code documentation.
- Fixed an issue with the alignment of delete buttons in the Classifications Form.
- Created a Troubleshooting page, comprising Diagnostics and Self-tests.
- Made the buttons, icons, and links on the catalog page visually consistent with the rest of the interface.
- Fixed an issue with the alignment of delete buttons in the Input List component.
- Updating the scss files so they better match one-to-one with React component files.
- Using the Button components for elements that should be buttons instead of anchors or divs.
- Styling for the book edit components and related buttons.
- Added a basic WYSIWYG editor to the summary field in the book details form.
- Added
tslint-react-a11y
extension for tslint to fix accessibility issues in the React components.
- Enabled scrolling through search results in the custom list editor.
- Updated Redux to v4, Typescript to v2.9, and the necessary type changes in the code.
- Fixed a minor button styling bug in the Complaints tab.
- Improved formatting of complaint type names.
- Updated the the opds-feed-parser and opds-web-client.
- Integrated the Form component from the https://github.com/NYPL-Simplified/reusable-components package.
- Updated opds-web-client to the latest version, which improves the headings on the book details page.
- Fixed a bug where new lists were unable to save even when new entries were added to them.
- Fixed a bug where saving a newly created list did not redirect to its edit page.
- Deleting a list now also deletes any lanes which contained only that list. Previously, there was no functionality in place to edit or remove any custom lanes when all their custom lists had been deleted.
- Minor styling and bug fixes on the custom list page.
- Fixed a bug involving loading a book cover preview from a URL.
- Using React 16 and Enzyme 3.9.
- Implemented new styling options for the reusable Button component.
- Refactored the Lanes code, and added a button to cancel resetting the lanes.
- Specified the node and npm version in package.json.
- Improved Nightwatch tests with Page Objects.
- Alignment of the global search button and the layout for the complaints tab for a book, including updating an input to a Button component.
- Improved the performance of the custom lists tab by only fetching the full list of custom lists if they have not already been fetched.
- Reintroduced Nightwatch and updated tests.
- Updated
typings
to@types
, updated Typescript, updated Webpack, and updated unit tests with fetch-mock. These updates are needed to import the updatedopds-web-client
package.
- Updated
reusable-components
to v1.3.1, bringing in the reusable Button component. - Implemented the new Panel customization option from v1.3.2 of
reusable-components
.
package-lock.json
was not insynced with the latest build and caused installing and running test issues.
- Removed
nightwatch
temporarily and updatedreusable-components
to v1.3.0.nightwatch
brought in@types
which caused the tests to fail because of compilation issues. Should be brought in soon when other repos have webpack and Typescript updated.
- Displaying a different UI for deleted collections. When marked for deletion, a collection will be deleted in the background and this information needs to be conveyed in the UI.
- Fixed a styling bug affecting the display of exceptions on the Diagnostics page.
- Replaced the Collapsible component with a reusable Panel component.
- Implemented a language autocomplete field in order to make it easier to set the languages for a library.
- Improved the UI for adding multiple inputs in a form.
- Improved the process for specifying a library's service and focus areas.
- Fixed minor bug affecting the display for libraries for which registration has failed.
- Required admins to agree to the terms and conditions before registering or updating a library with a discovery service.
- Added self-tests for patron authentication integrations.
- Added self-tests for the ElasticSearch integration.
- Improved appearance and readability of Diagnostics page.
- Listed Metadata Services by individual name rather than by protocol.
- Created a Diagnostics page so that admins can view the output of log scripts which the server has been running behind the scenes.
- Made it possible to change the order of lanes (within the same parent lane) by dragging and dropping on the lanes page.
- Further clarified wording about resetting Adobe IDs.
- Made it possible for server-side configurations to specify that certain fields should be rendered as textarea elements.
- Displayed initial empty audience and fiction classification values of a book if it didn't have any values. That way, an admin would know that they need to enter values instead of saving and thinking that the book had the correct values.
- Styling on the ClassificationsForm tab for an individual book.
- Documentation for the repo.
- There's been an issue found in this version of the npm package and we recommend not to use this version.
- Implemented a custom number validator for better error handling.
- Further subdivided library form for increased readability.
- Made copy about resetting Adobe IDs more accurate.
- Styling for active header nav link.
- Updating the opds-web-client package to 0.1.27 for global element focus color and updating the header focus ring color to white.
Added a system configuration tab for external catalogs.
- Only showing the "Inherit restrictions from parent lane" setting on the Lane config page when creating child lanes and not a new parent lane.
- Fixing the redirect to the edit Lane form when successfully creating a new Lane.
- Fixing the display message for errors when unsuccessfully creating a new Lane.
- Updated the opds-web-client package and passing down a prop to use all languages when doing submitting a search term.
- Added a welcome message for admins who have no libraries yet.
- Improved the appearance and behavior of the sign-up form.
- Grouped related fields together in order to make forms more readable.
- Fixed a bug which prevented forms containing collapsible elements from being submitted on enter.
- Fixed a bug involving registering libraries with a discovery service: once a library is in the production state, the drop-down menu should not be displayed, i.e. the admin should not be able to change it back to the testing state.
- Fixed the display of success messages on the CDN service form.
- The library registration form now provides links to edit the libraries.
- Updated the form input field labels to explicitly state if an input is required rather than optional. The optional text is now in a field's description. If there are any required fields left blank, they will have an error styling until they are updated. A submitted form with errors will also scroll to the top and focus to the error message so admins know what to fix.
- Checking a flag to see if a setting configuration that supports library registration also supports a staging selection. If the configuration supports staging, the admin can choose between selecting a testing or production stage.
- Fixed a bug involving submitting forms.
- Added success messages to configuration forms.
- Moved long configuration instructions into a collapsible panel component, making the configuration forms easier to read.
- Added a color picker setting type for configuring background and foreground colors for the web catalog.
- Updated how the custom lists in the List admin page are being read. They are now OPDS feeds which help the page load faster. There's now a "Load more" button to fetch more entries in an existing custom list.
- Fixed a bug for new collections that could not correctly fetch self test results.
- Added the ability for an admin to register a library in either the "testing" or "production" stage with the Library Registry.
- Implemented the Patron Manager page, on which admins can look up patrons by their barcode and can reset their Adobe IDs.