@@ -3,12 +3,7 @@ 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- var jsValue : JSValue { get }
7- }
8-
9- extension ConvertibleToJSValue {
10- @available ( * , deprecated, message: " Use the .jsValue property instead " )
11- public func jsValue( ) -> JSValue { jsValue }
6+ func jsValue( ) -> JSValue
127}
138
149public typealias JSValueCompatible = ConvertibleToJSValue & ConstructibleFromJSValue
@@ -18,67 +13,67 @@ extension JSValue: JSValueCompatible {
1813 return value
1914 }
2015
21- public var jsValue : JSValue { self }
16+ public func jsValue( ) -> JSValue { self }
2217}
2318
2419extension Bool : ConvertibleToJSValue {
25- public var jsValue : JSValue { . boolean( self ) }
20+ public func jsValue( ) -> JSValue { . boolean( self ) }
2621}
2722
2823extension Int : ConvertibleToJSValue {
29- public var jsValue : JSValue { . number( Double ( self ) ) }
24+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
3025}
3126
3227extension UInt : ConvertibleToJSValue {
33- public var jsValue : JSValue { . number( Double ( self ) ) }
28+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
3429}
3530
3631extension Float : ConvertibleToJSValue {
37- public var jsValue : JSValue { . number( Double ( self ) ) }
32+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
3833}
3934
4035extension Double : ConvertibleToJSValue {
41- public var jsValue : JSValue { . number( self ) }
36+ public func jsValue( ) -> JSValue { . number( self ) }
4237}
4338
4439extension String : ConvertibleToJSValue {
45- public var jsValue : JSValue { . string( JSString ( self ) ) }
40+ public func jsValue( ) -> JSValue { . string( JSString ( self ) ) }
4641}
4742
4843extension UInt8 : ConvertibleToJSValue {
49- public var jsValue : JSValue { . number( Double ( self ) ) }
44+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
5045}
5146
5247extension UInt16 : ConvertibleToJSValue {
53- public var jsValue : JSValue { . number( Double ( self ) ) }
48+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
5449}
5550
5651extension UInt32 : ConvertibleToJSValue {
57- public var jsValue : JSValue { . number( Double ( self ) ) }
52+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
5853}
5954
6055extension UInt64 : ConvertibleToJSValue {
61- public var jsValue : JSValue { . number( Double ( self ) ) }
56+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
6257}
6358
6459extension Int8 : ConvertibleToJSValue {
65- public var jsValue : JSValue { . number( Double ( self ) ) }
60+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
6661}
6762
6863extension Int16 : ConvertibleToJSValue {
69- public var jsValue : JSValue { . number( Double ( self ) ) }
64+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
7065}
7166
7267extension Int32 : ConvertibleToJSValue {
73- public var jsValue : JSValue { . number( Double ( self ) ) }
68+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
7469}
7570
7671extension Int64 : ConvertibleToJSValue {
77- public var jsValue : JSValue { . number( Double ( self ) ) }
72+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
7873}
7974
8075extension JSString : ConvertibleToJSValue {
81- public var jsValue : JSValue { . string( self ) }
76+ public func jsValue( ) -> JSValue { . string( self ) }
8277}
8378
8479extension JSObject : JSValueCompatible {
@@ -89,21 +84,17 @@ extension JSObject: JSValueCompatible {
8984private let objectConstructor = JSObject . global. Object. function!
9085private let arrayConstructor = JSObject . global. Array. function!
9186
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)
87+ extension Dictionary where Value: ConvertibleToJSValue , Key == String {
88+ public func jsValue( ) -> JSValue {
89+ Swift . Dictionary < Key , ConvertibleToJSValue > . jsValue ( self ) ( )
9990 }
10091}
10192
102- extension Dictionary : ConvertibleToJSValue where Value: ConvertibleToJSValue , Key == String {
103- public var jsValue : JSValue {
93+ extension Dictionary : ConvertibleToJSValue where Value == ConvertibleToJSValue , Key == String {
94+ public func jsValue( ) -> JSValue {
10495 let object = objectConstructor. new ( )
10596 for (key, value) in self {
106- object [ key] = value. jsValue
97+ object [ key] = value. jsValue ( )
10798 }
10899 return . object( object)
109100 }
@@ -113,7 +104,7 @@ extension Dictionary: ConstructibleFromJSValue where Value: ConstructibleFromJSV
113104 public static func construct( from value: JSValue ) -> Self ? {
114105 guard
115106 let objectRef = value. object,
116- let keys: [ String ] = objectConstructor. keys!( objectRef. jsValue) . fromJSValue ( )
107+ let keys: [ String ] = objectConstructor. keys!( objectRef. jsValue ( ) ) . fromJSValue ( )
117108 else { return nil }
118109
119110 var entries = [ ( String, Value) ] ( )
@@ -140,29 +131,25 @@ extension Optional: ConstructibleFromJSValue where Wrapped: ConstructibleFromJSV
140131}
141132
142133extension Optional : ConvertibleToJSValue where Wrapped: ConvertibleToJSValue {
143- public var jsValue : JSValue {
134+ public func jsValue( ) -> JSValue {
144135 switch self {
145136 case . none: return . null
146- case let . some( wrapped) : return wrapped. jsValue
137+ case let . some( wrapped) : return wrapped. jsValue ( )
147138 }
148139 }
149140}
150141
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)
142+ extension Array where Element: ConvertibleToJSValue {
143+ public func jsValue( ) -> JSValue {
144+ Array < ConvertibleToJSValue > . jsValue ( self ) ( )
158145 }
159146}
160147
161- extension Array where Element == ConvertibleToJSValue {
162- public var jsValue : JSValue {
148+ extension Array : ConvertibleToJSValue where Element == ConvertibleToJSValue {
149+ public func jsValue( ) -> JSValue {
163150 let array = arrayConstructor. new ( count)
164151 for (index, element) in enumerated ( ) {
165- array [ index] = element. jsValue
152+ array [ index] = element. jsValue ( )
166153 }
167154 return . object( array)
168155 }
@@ -189,7 +176,7 @@ extension Array: ConstructibleFromJSValue where Element: ConstructibleFromJSValu
189176}
190177
191178extension RawJSValue : ConvertibleToJSValue {
192- public var jsValue : JSValue {
179+ public func jsValue( ) -> JSValue {
193180 switch kind {
194181 case . invalid:
195182 fatalError ( )
@@ -256,7 +243,7 @@ extension Array where Element == ConvertibleToJSValue {
256243 _ results: inout [ RawJSValue ] , _ body: ( [ RawJSValue ] ) -> T
257244 ) -> T {
258245 if index == values. count { return body ( results) }
259- return values [ index] . jsValue. withRawJSValue { ( rawValue) -> T in
246+ return values [ index] . jsValue ( ) . withRawJSValue { ( rawValue) -> T in
260247 results. append ( rawValue)
261248 return _withRawJSValues ( values, index + 1 , & results, body)
262249 }
0 commit comments