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

Bump ldapjs from 2.3.3 to 3.0.0 #76

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

dependabot[bot]
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Feb 27, 2023

Bumps ldapjs from 2.3.3 to 3.0.0.

Release notes

Sourced from ldapjs's releases.

v3.0.0

🎉🎉🎉 Version 3.0.0 Is Here

This release has been in development for many months. The first commit toward this goal happened on 2019-09-01, but work really started with a commit on 2022-03-27.

This is not a trivial release. There are significant changes under the hood. They include:

  • Common modules have been broken out into separate installable modules:
    • @ldapjs/attribute -- a comprehensive implementation of the LDAP attribute spec.
    • @ldapjs/change -- a full implementation of RFC 4511 §4.6.
    • @ldapjs/controls -- specific implementations for all supported controls (with a caveat detailed below) that inherit from a base identifiable object.
    • @ldapjs/dn -- provides DN and RDN objects to represent LDAP distinguished names.
    • @ldapjs/messages -- all supported messages as their own objects with methods and properties matching the specs, including a complete overhaul of the extension (renamed from extended) request and response objects (with added support for several extensions, e.g. "password modify").
    • @ldapjs/protocol -- now with a full suite of operation identifiers, result codes, and search tags.
  • ldap-filter has been forked to @ldapjs/filter. It includes improvements around value escaping, modern method signatures, and identifiable "class" objects. The full set of changes can be reviewed at ldapjs/filter@daa5a5d...v2.0.0
  • asn1 has been forked to @ldapjs/asn1. Methods have been improved, e.g. BerReader.readBoolean now accepts a tag to expect, new ones added, e.g. BerWriter.appendBuffer, unreachable code removed, and bugs fixed. The full set of changes can be reviewed at ldapjs/asn1@bf1bb90...v2.0.0

Additionally, all of the above modules now have complete, 100%, test coverage (except for @ldapjs/filter; PRs are welcome to help out here). They are also comprehensively documented with jsdoc.

We expect there are going to be issues with this release. We worked hard to make sure all of the current tests pass without any changes (or at least none that affect the purpose of the test). But the current test suite is by no means comprehensive, and such sweeping changes as are present in this release are almost guaranteed to introduce new bugs. Please bear with us as we resolve them. Your contributions to fix any such bugs will help greatly.

Even the simple act of opening an issue describing something you've found that should be in these release notes would be a big help. For example, if you have determined that a change in some object API, e.g. the SearchRequest object, should be highlighted, then please open an issue describing the change so that we can add an it to an addendum on these release notes.

The Biggest Change

We think that the most impactful change is going to be the decoupling of the underlying byte arrays from all objects. In v2 and earlier, the client, server, controls, messages, and everything else passed around single byte arrays during the handling of requests. The benefit of this is reduced memory consumption and faster handling of requests. The downside is an extremely difficult to understand and maintain codebase. As part of the work to modularize this codebase, we opted to make byte array processing idempotent in the majority of cases. This will have an impact on performance, but we do not know how much of an impact. We do not have any way to benchmark the before and after of this change. We suspect (hope) that in the majority of cases it will not be noticeable.

VLV Controls

During the development of v3 we were not clear if the VLV implementation that was added to v2 was correct. So we opted to cut it for the release. Shortly after cutting it, we determined that the implementation is very likely correct. You can read about this decision at ldapjs/node-ldapjs#797 and the realization at ldapjs/node-ldapjs#797.

Ultimately, we decided to postpone adding this feature back so that we could get v3 shipped.

Conclusion

A lot of hard work has gone into this release. We think it lays the ground work for a much more maintainable codebase. We envision being able to re-implement the server and client components as @ldapjs/server and @ldapjs/client at some point in the future. We think there is a real opportunity to refactor both components into more modern interfaces with significant improvements (particularly in the form of error handling). No promises are made about when such projects might be undertaken, if ever. But they wouldn't be possible without the work in this v3 release.

In regard to my (James Sumners) personal contributions to this release, please consider using my ❤️ GitHub Sponsor link to show your gratitude. Contributions will be particularly helpful at this time; I was laid off as part of a significant downsizing event at my previous employer and am currently unemployed.

Additionally, a big thank you to @​dirmgr for his willingness to answer general LDAP protocol questions and the abundance of well written documentation he has provided at https://nawilson.com/ldapv3-wire-protocol-reference/ and https://ldap.com/learn-about-ldap/. The help and articles were indispensable in crafting this release.


Known Breaking Changes

Client

  • options.strictDN: removed. All DN parsing is now "strict". It does not make any sense to try and parse DN strings that are not spec compliant.
  • .modify: no longer accepts plain objects as change descriptors. An instance of @ldapjs/change is now required.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [ldapjs](https://github.com/ldapjs/node-ldapjs) from 2.3.3 to 3.0.0.
- [Release notes](https://github.com/ldapjs/node-ldapjs/releases)
- [Changelog](https://github.com/ldapjs/node-ldapjs/blob/master/CHANGES.md)
- [Commits](ldapjs/node-ldapjs@v2.3.3...v3.0.0)

---
updated-dependencies:
- dependency-name: ldapjs
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added the dependencies Pull requests that update a dependency file label Feb 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants