@@ -3,7 +3,12 @@ import _CJavaScriptKit
33/// Objects that can be converted to a JavaScript value, preferably in a lossless manner.
44public protocol ConvertibleToJSValue {
55 /// Create a JSValue that represents this object
6- func jsValue( ) -> JSValue
6+ var jsValue : JSValue { get }
7+ }
8+
9+ extension ConvertibleToJSValue {
10+ @available ( * , deprecated, message: " Use the .jsValue property instead " )
11+ public func jsValue( ) -> JSValue { jsValue }
712}
813
914public typealias JSValueCompatible = ConvertibleToJSValue & ConstructibleFromJSValue
@@ -13,67 +18,67 @@ extension JSValue: JSValueCompatible {
1318 return value
1419 }
1520
16- public func jsValue( ) -> JSValue { self }
21+ public var jsValue : JSValue { self }
1722}
1823
1924extension Bool : ConvertibleToJSValue {
20- public func jsValue( ) -> JSValue { . boolean( self ) }
25+ public var jsValue : JSValue { . boolean( self ) }
2126}
2227
2328extension Int : ConvertibleToJSValue {
24- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
29+ public var jsValue : JSValue { . number( Double ( self ) ) }
2530}
2631
2732extension UInt : ConvertibleToJSValue {
28- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
33+ public var jsValue : JSValue { . number( Double ( self ) ) }
2934}
3035
3136extension Float : ConvertibleToJSValue {
32- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
37+ public var jsValue : JSValue { . number( Double ( self ) ) }
3338}
3439
3540extension Double : ConvertibleToJSValue {
36- public func jsValue( ) -> JSValue { . number( self ) }
41+ public var jsValue : JSValue { . number( self ) }
3742}
3843
3944extension String : ConvertibleToJSValue {
40- public func jsValue( ) -> JSValue { . string( JSString ( self ) ) }
45+ public var jsValue : JSValue { . string( JSString ( self ) ) }
4146}
4247
4348extension UInt8 : ConvertibleToJSValue {
44- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
49+ public var jsValue : JSValue { . number( Double ( self ) ) }
4550}
4651
4752extension UInt16 : ConvertibleToJSValue {
48- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
53+ public var jsValue : JSValue { . number( Double ( self ) ) }
4954}
5055
5156extension UInt32 : ConvertibleToJSValue {
52- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
57+ public var jsValue : JSValue { . number( Double ( self ) ) }
5358}
5459
5560extension UInt64 : ConvertibleToJSValue {
56- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
61+ public var jsValue : JSValue { . number( Double ( self ) ) }
5762}
5863
5964extension Int8 : ConvertibleToJSValue {
60- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
65+ public var jsValue : JSValue { . number( Double ( self ) ) }
6166}
6267
6368extension Int16 : ConvertibleToJSValue {
64- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
69+ public var jsValue : JSValue { . number( Double ( self ) ) }
6570}
6671
6772extension Int32 : ConvertibleToJSValue {
68- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
73+ public var jsValue : JSValue { . number( Double ( self ) ) }
6974}
7075
7176extension Int64 : ConvertibleToJSValue {
72- public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
77+ public var jsValue : JSValue { . number( Double ( self ) ) }
7378}
7479
7580extension JSString : ConvertibleToJSValue {
76- public func jsValue( ) -> JSValue { . string( self ) }
81+ public var jsValue : JSValue { . string( self ) }
7782}
7883
7984extension JSObject : JSValueCompatible {
@@ -84,17 +89,21 @@ extension JSObject: JSValueCompatible {
8489private let objectConstructor = JSObject . global. Object. function!
8590private let arrayConstructor = JSObject . global. Array. function!
8691
87- extension Dictionary where Value: ConvertibleToJSValue , Key == String {
88- public func jsValue( ) -> JSValue {
89- Swift . Dictionary < Key , ConvertibleToJSValue > . jsValue ( self ) ( )
92+ extension Dictionary where Value == ConvertibleToJSValue , Key == String {
93+ public var jsValue : JSValue {
94+ let object = objectConstructor. new ( )
95+ for (key, value) in self {
96+ object [ key] = value. jsValue
97+ }
98+ return . object( object)
9099 }
91100}
92101
93- extension Dictionary : ConvertibleToJSValue where Value == ConvertibleToJSValue , Key == String {
94- public func jsValue( ) -> JSValue {
102+ extension Dictionary : ConvertibleToJSValue where Value: ConvertibleToJSValue , Key == String {
103+ public var jsValue : JSValue {
95104 let object = objectConstructor. new ( )
96105 for (key, value) in self {
97- object [ key] = value. jsValue ( )
106+ object [ key] = value. jsValue
98107 }
99108 return . object( object)
100109 }
@@ -104,7 +113,7 @@ extension Dictionary: ConstructibleFromJSValue where Value: ConstructibleFromJSV
104113 public static func construct( from value: JSValue ) -> Self ? {
105114 guard
106115 let objectRef = value. object,
107- let keys: [ String ] = objectConstructor. keys!( objectRef. jsValue ( ) ) . fromJSValue ( )
116+ let keys: [ String ] = objectConstructor. keys!( objectRef. jsValue) . fromJSValue ( )
108117 else { return nil }
109118
110119 var entries = [ ( String, Value) ] ( )
@@ -131,25 +140,29 @@ extension Optional: ConstructibleFromJSValue where Wrapped: ConstructibleFromJSV
131140}
132141
133142extension Optional : ConvertibleToJSValue where Wrapped: ConvertibleToJSValue {
134- public func jsValue( ) -> JSValue {
143+ public var jsValue : JSValue {
135144 switch self {
136145 case . none: return . null
137- case let . some( wrapped) : return wrapped. jsValue ( )
146+ case let . some( wrapped) : return wrapped. jsValue
138147 }
139148 }
140149}
141150
142- extension Array where Element: ConvertibleToJSValue {
143- public func jsValue( ) -> JSValue {
144- Array < ConvertibleToJSValue > . jsValue ( self ) ( )
151+ extension Array : ConvertibleToJSValue where Element: ConvertibleToJSValue {
152+ public var jsValue : JSValue {
153+ let array = arrayConstructor. new ( count)
154+ for (index, element) in enumerated ( ) {
155+ array [ index] = element. jsValue
156+ }
157+ return . object( array)
145158 }
146159}
147160
148- extension Array : ConvertibleToJSValue where Element == ConvertibleToJSValue {
149- public func jsValue( ) -> JSValue {
161+ extension Array where Element == ConvertibleToJSValue {
162+ public var jsValue : JSValue {
150163 let array = arrayConstructor. new ( count)
151164 for (index, element) in enumerated ( ) {
152- array [ index] = element. jsValue ( )
165+ array [ index] = element. jsValue
153166 }
154167 return . object( array)
155168 }
@@ -176,7 +189,7 @@ extension Array: ConstructibleFromJSValue where Element: ConstructibleFromJSValu
176189}
177190
178191extension RawJSValue : ConvertibleToJSValue {
179- public func jsValue( ) -> JSValue {
192+ public var jsValue : JSValue {
180193 switch kind {
181194 case . invalid:
182195 fatalError ( )
@@ -243,7 +256,7 @@ extension Array where Element == ConvertibleToJSValue {
243256 _ results: inout [ RawJSValue ] , _ body: ( [ RawJSValue ] ) -> T
244257 ) -> T {
245258 if index == values. count { return body ( results) }
246- return values [ index] . jsValue ( ) . withRawJSValue { ( rawValue) -> T in
259+ return values [ index] . jsValue. withRawJSValue { ( rawValue) -> T in
247260 results. append ( rawValue)
248261 return _withRawJSValues ( values, index + 1 , & results, body)
249262 }
0 commit comments