From 2b7348418e908d019938874016eec05888e6f063 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 25 Mar 2025 23:05:45 -0400 Subject: [PATCH] Add an optional "lenient" access mode for claims Makes #at: return nil for absent keys rather than raising an error, similar to how it works in JavaScript itself --- .../JWTClaimsSet.class/instance/at..st | 7 +++++-- .../JWTClaimsSet.class/instance/beLenient.st | 4 ++++ .../JWTClaimsSet.class/instance/beStrict.st | 4 ++++ .../JWTClaimsSet.class/instance/initialize.st | 3 ++- .../JWTClaimsSet.class/properties.json | 3 ++- 5 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beLenient.st create mode 100644 source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beStrict.st diff --git a/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/at..st b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/at..st index 51ba11a..5f8ae9a 100644 --- a/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/at..st +++ b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/at..st @@ -1,3 +1,6 @@ accessing - basic -at: aString - ^ claims at: aString \ No newline at end of file +at: aString + + ^ strict + ifTrue: [ claims at: aString ] + ifFalse: [ claims at: aString ifAbsent: [ ] ] \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beLenient.st b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beLenient.st new file mode 100644 index 0000000..5172ee4 --- /dev/null +++ b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beLenient.st @@ -0,0 +1,4 @@ +public +beLenient + + strict := false \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beStrict.st b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beStrict.st new file mode 100644 index 0000000..1753298 --- /dev/null +++ b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/beStrict.st @@ -0,0 +1,4 @@ +public +beStrict + + strict := true \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/initialize.st b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/initialize.st index 6a47d9e..82c4c8b 100644 --- a/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/initialize.st +++ b/source/JSONWebToken-Core.package/JWTClaimsSet.class/instance/initialize.st @@ -1,4 +1,5 @@ initialize initialize super initialize. - claims := Dictionary new. \ No newline at end of file + claims := Dictionary new. + strict := true \ No newline at end of file diff --git a/source/JSONWebToken-Core.package/JWTClaimsSet.class/properties.json b/source/JSONWebToken-Core.package/JWTClaimsSet.class/properties.json index a8d7083..7373afc 100644 --- a/source/JSONWebToken-Core.package/JWTClaimsSet.class/properties.json +++ b/source/JSONWebToken-Core.package/JWTClaimsSet.class/properties.json @@ -6,7 +6,8 @@ "pools" : [ ], "classvars" : [ ], "instvars" : [ - "claims" + "claims", + "strict" ], "name" : "JWTClaimsSet", "type" : "normal"