Skip to content

Releases: Breus/json-masker

v1.0.1

02 May 08:44
7bc09ac
Compare
Choose a tag to compare

What's Changed

This is a patch release for version 1.0.0 and includes a couple small bug fixes for edge cases and several backward compatible API improvements.

Bug fixes

Backward compatible API improvements

Chores

Full Changelog: v1.0.0...v1.0.1

v1.0.0

09 Apr 07:30
c0e63df
Compare
Choose a tag to compare

What's Changed

This is the first major release of the json-masker library after 3 release candidates for 1.0.0, and multiple pre-releases. 🎉
This release introduces several additional convenience APIs and a performance enhancement in JsonPATH look-up. Nonetheless, no backward compatible changes were introduced with this release compared to the latest release candidate.

Additional features

  • Add actual withTextFunction that decodes / encodes JSON values by @gavlyukovskiy in #104
  • Allow overriding masking config for more specific keys for jsonpath by @donavdey in #119
  • Add eachDigitWith(String value) to allow repeating each digit of a number with an asterisk out-of-the-box by @Breus in #108

Performance enhancements

  • Optimize json path lookup by avoiding traversing the trie from the ro… by @donavdey in #116

Chores

Full Changelog: v1.0.0-rc3...v1.0.0

v1.0.0-rc3

28 Mar 07:40
5bad296
Compare
Choose a tag to compare
v1.0.0-rc3 Pre-release
Pre-release

What's Changed

This release introduces the ValueMasker interface, allowing users to configure virtually any custom value masking strategy for specific target keys or JSON types.

var jsonMasker = JsonMasker.getMasker(
        JsonMaskingConfig.builder()
                .maskKeys(Set.of("maskMe"))
                .maskStringsWith(ValueMaskers.withRawValueFunction(value -> value.startsWith("\"secret:") ? "\"***\"" : value))
                .build()
);

String maskedJson = jsonMasker.mask(json);

see more usage examples in README

We expect this to be the last Release Candidate before the 1.0.0 release.

Bug fixes

  • Fix cases when JsonMasker can get in infinite loop when processing invalid json by @gavlyukovskiy in #97

Functional changes

  • Introduce ValueMasker and refactor all value masking through a unified interface by @gavlyukovskiy in #96
  • Change runtime exception to InvalidJsonException by @Breus in #99
  • Refactor withTextFunction to indicate that the value received is a raw JSON literal by @gavlyukovskiy in #103

Chores

  • Fix wildcard usage in jsonpath usage examples by @donavdey in #93
  • Create ADR for jsonpath support by @donavdey in #95
  • Make LICENSE file markdown by @Breus in #102
  • Create SECURITY.md by @Breus in #100
  • Create CONTRIBUTING.md by @Breus in #101
  • Create ADR-0004 to support custom value masking strategies by @Breus in #89

Full Changelog: v1.0.0-rc2...v1.0.0-rc3

v1.0.0-rc2

13 Mar 17:30
5b13781
Compare
Choose a tag to compare
v1.0.0-rc2 Pre-release
Pre-release

What's Changed

This release does not contain backward incompatible changes besides some bug fixes for edge cases which are extremely unlikely someone would depend on. Furthermore, it adds several additional features for JsonPath support and some performance improvements.

Because of the bug fixes it is recommended to bump from version 1.0.0-rc1 to 1.0.0-rc2.

Finally, in this release the source code is rewritten in way which makes it much easier to read, debug and maintain.

Bug fixes

  • Fix ArrayIndexOutOfBoundsException when skipping allowed string value with escaped escape character by @gavlyukovskiy in #92
  • Change MIN_MASKABLE_JSON_LENGTH for actual minimum with a number by @Breus in #61

Functional changes (only additional features)

Performance improvements

Chores

New Contributors

Full Changelog: v1.0.0-rc1...v1.0.0-rc2

v1.0.0-rc1

22 Feb 15:16
Compare
Choose a tag to compare
v1.0.0-rc1 Pre-release
Pre-release

What's Changed

This release contains backward incompatible changes to refine and extend the API with additional configuration features. This is the first release candidate for the 1.0.0 release which is meant to be the first stable release of the library.

For this release, a discussion will be opened to provide feedback to the API before the final 1.0.0 release. Please feel free to provide your feedback.

Backward incompatible API changes

  • Added ADR and implementation containing multiple configuration API related changes by @gavlyukovskiy in #47

The API changes are explained and discussed in ADR-2: API design for JSON masking configurations.

Functional changes

  • Added limited support for JSONPaths as targets by @donavdey in #45

Chores

Full Changelog: v0.2.1...v1.0.0-rc1

New Contributors

v0.2.1

06 Jan 22:35
7466f7c
Compare
Choose a tag to compare

What's Changed

This release contains a performance improvements for up to 20 times faster in cases when masking cannot be done in place (json with non-ascii characters, enabling length obfuscation).

Functional changes

  • None

Performance improvements

Chores

  • Use link with filter on master branch by @gavlyukovskiy in #36
  • Added benchmark history entry and updated README for v0.2.0 by @Breus in #32
  • Changed Gradle DSL from Groovy to Kotlin by @Breus in #37
  • Replaced jUnit assertions with Assertj assertions by @Breus in #38
  • Add Sonarqube codecoverage by @gavlyukovskiy in #35
  • Attempt to fix sonar code coverage by @Breus in #39
  • Removed ignore paths README by @Breus in #42
  • Add sonar badges by @Breus in #40
  • Sonar skip compilation by @Breus in #41
  • Remove vulnerabilities README badge and add correct SonarCloud links by @Breus in #43

Full Changelog: v0.2.0...v0.2.1

v0.2.0

02 Jan 12:26
Compare
Choose a tag to compare

What's Changed

Note: This release is backward incompatible with v0.1.0!

Compared to v0.1.0, everything that used to be masked is still masked, but since v0.2.0 adds support for array/object masking, additional values might be masked. Concretely, (nested) array elements and all values in a (nested) JSON object are masked if the array/object corresponds to a target JSON key.

Nonetheless, since this is a 0.x release, this won't result in a new major release.

Functional changes

  • Add support for array and object masking by @Breus in #18

Performance improvements

Correctness (tests and small bug fixes)

(Additional) benchmarks

Code clean-up

  • Moving SingleTargetMasker to tests by @gavlyukovskiy in #13
  • Split Trie from KeyContainsMasker, added tests and docs by @Breus in #20

Dependency-related changes

  • Make JSR-305 dependency compileOnly and specify UTF-8 encoding for Ja… by @Breus in #7
  • Bump me.champeau.jmh from 0.7.1 to 0.7.2 by @dependabot in #9
  • Bump com.fasterxml.jackson.core:jackson-databind from 2.15.1 to 2.15.3 by @dependabot in #10
  • Bump jUnitVersion from 5.10.0 to 5.10.1 by @dependabot in #8
  • Added feature capability for nullability annotations to mark them as optional in POM by @gavlyukovskiy in #11
  • Updated Gradle version to 8.4 by @Breus in #12
  • Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0 by @dependabot in #16
  • Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1 by @dependabot in #31

Full Changelog: v0.1.0...v0.2.0

v0.1.0

08 Oct 18:57
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release

First alpha release of JSON masker to check

What's Changed

New Contributors

Full Changelog: https://github.com/Breus/json-masker/commits/v0.1.0