diff options
| author | Dax Raad <[email protected]> | 2025-10-07 15:51:59 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-10-07 15:51:59 -0400 |
| commit | dca3a5d80d9d22400b48c217098a632d72bf2122 (patch) | |
| tree | ed3ac2f4c601290008a9dc8cffbca563b89a1770 /packages/sdk/go/internal | |
| parent | 508067ba5da9afa82bff401dd8478be2145d61a4 (diff) | |
| download | opencode-dca3a5d80d9d22400b48c217098a632d72bf2122.tar.gz opencode-dca3a5d80d9d22400b48c217098a632d72bf2122.zip | |
fix issue with blank new version popup
Diffstat (limited to 'packages/sdk/go/internal')
| -rw-r--r-- | packages/sdk/go/internal/apijson/decoder.go | 2 | ||||
| -rw-r--r-- | packages/sdk/go/internal/apijson/encoder.go | 14 | ||||
| -rw-r--r-- | packages/sdk/go/internal/apijson/json_test.go | 2 | ||||
| -rw-r--r-- | packages/sdk/go/internal/version.go | 2 |
4 files changed, 10 insertions, 10 deletions
diff --git a/packages/sdk/go/internal/apijson/decoder.go b/packages/sdk/go/internal/apijson/decoder.go index 68b7ed6be..bf01bf6b4 100644 --- a/packages/sdk/go/internal/apijson/decoder.go +++ b/packages/sdk/go/internal/apijson/decoder.go @@ -224,7 +224,7 @@ func (d *decoderBuilder) newUnionDecoder(t reflect.Type) decoderFunc { } if len(unionEntry.discriminatorKey) != 0 { - discriminatorValue := n.Get(unionEntry.discriminatorKey).Value() + discriminatorValue := n.Get(EscapeSJSONKey(unionEntry.discriminatorKey)).Value() if discriminatorValue == variant.DiscriminatorValue { inner := reflect.New(variant.Type).Elem() err := decoder(n, inner, state) diff --git a/packages/sdk/go/internal/apijson/encoder.go b/packages/sdk/go/internal/apijson/encoder.go index 0e5f89e17..66b319b66 100644 --- a/packages/sdk/go/internal/apijson/encoder.go +++ b/packages/sdk/go/internal/apijson/encoder.go @@ -18,6 +18,10 @@ import ( var encoders sync.Map // map[encoderEntry]encoderFunc +// If we want to set a literal key value into JSON using sjson, we need to make sure it doesn't have +// special characters that sjson interprets as a path. +var EscapeSJSONKey = strings.NewReplacer("\\", "\\\\", "|", "\\|", "#", "\\#", "@", "\\@", "*", "\\*", ".", "\\.", ":", "\\:", "?", "\\?").Replace + func Marshal(value interface{}) ([]byte, error) { e := &encoder{dateFormat: time.RFC3339} return e.marshal(value) @@ -276,7 +280,7 @@ func (e *encoder) newStructTypeEncoder(t reflect.Type) encoderFunc { if encoded == nil { continue } - json, err = sjson.SetRawBytes(json, ef.tag.name, encoded) + json, err = sjson.SetRawBytes(json, EscapeSJSONKey(ef.tag.name), encoded) if err != nil { return nil, err } @@ -354,7 +358,7 @@ func (e *encoder) encodeMapEntries(json []byte, v reflect.Value) ([]byte, error) } encodedKeyString = string(encodedKeyBytes) } - encodedKey := []byte(sjsonReplacer.Replace(encodedKeyString)) + encodedKey := []byte(encodedKeyString) pairs = append(pairs, mapPair{key: encodedKey, value: iter.Value()}) } @@ -372,7 +376,7 @@ func (e *encoder) encodeMapEntries(json []byte, v reflect.Value) ([]byte, error) if len(encodedValue) == 0 { continue } - json, err = sjson.SetRawBytes(json, string(p.key), encodedValue) + json, err = sjson.SetRawBytes(json, EscapeSJSONKey(string(p.key)), encodedValue) if err != nil { return nil, err } @@ -392,7 +396,3 @@ func (e *encoder) newMapEncoder(t reflect.Type) encoderFunc { return json, nil } } - -// If we want to set a literal key value into JSON using sjson, we need to make sure it doesn't have -// special characters that sjson interprets as a path. -var sjsonReplacer *strings.Replacer = strings.NewReplacer(".", "\\.", ":", "\\:", "*", "\\*") diff --git a/packages/sdk/go/internal/apijson/json_test.go b/packages/sdk/go/internal/apijson/json_test.go index e6563448f..d4c628359 100644 --- a/packages/sdk/go/internal/apijson/json_test.go +++ b/packages/sdk/go/internal/apijson/json_test.go @@ -362,7 +362,7 @@ var tests = map[string]struct { "date_time_nano_missing_t_coerce": {`"2007-03-01 13:03:05.123456789Z"`, time.Date(2007, time.March, 1, 13, 3, 5, 123456789, time.UTC)}, "map_string": {`{"foo":"bar"}`, map[string]string{"foo": "bar"}}, - "map_string_with_sjson_path_chars": {`{":a.b.c*:d*-1e.f":"bar"}`, map[string]string{":a.b.c*:d*-1e.f": "bar"}}, + "map_string_with_sjson_path_chars": {`{":a.b.c*:d*-1e.f@g?h":"bar"}`, map[string]string{":a.b.c*:d*-1e.f@g?h": "bar"}}, "map_interface": {`{"a":1,"b":"str","c":false}`, map[string]interface{}{"a": float64(1), "b": "str", "c": false}}, "primitive_struct": { diff --git a/packages/sdk/go/internal/version.go b/packages/sdk/go/internal/version.go index 1f338c33e..93a271b9e 100644 --- a/packages/sdk/go/internal/version.go +++ b/packages/sdk/go/internal/version.go @@ -2,4 +2,4 @@ package internal -const PackageVersion = "0.15.0" // x-release-please-version +const PackageVersion = "0.16.2" // x-release-please-version |
