package catalog import ( "errors" "fmt" "softbox.local/core/internal/canonicaljson" ) func parseRestrictedJSON(data []byte) (any, error) { value, err := canonicaljson.Parse(data) return value, catalogCanonicalError(err) } func canonicalJSON(value any) ([]byte, error) { encoded, err := canonicaljson.Marshal(value) return encoded, catalogCanonicalError(err) } func catalogCanonicalError(err error) error { if err == nil { return nil } switch { case errors.Is(err, canonicaljson.ErrDuplicateField): return fmt.Errorf("%w: canonical JSON", ErrDuplicateField) case errors.Is(err, canonicaljson.ErrUnsupportedNumber): return fmt.Errorf("%w: canonical JSON", ErrUnsupportedNumber) default: return fmt.Errorf("%w: canonical JSON", ErrInvalidDocument) } }