@@ -3,12 +3,7 @@ import _CJavaScriptKit
3
3
/// Objects that can be converted to a JavaScript value, preferably in a lossless manner.
4
4
public protocol ConvertibleToJSValue {
5
5
/// 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
12
7
}
13
8
14
9
public typealias JSValueCompatible = ConvertibleToJSValue & ConstructibleFromJSValue
@@ -18,67 +13,67 @@ extension JSValue: JSValueCompatible {
18
13
return value
19
14
}
20
15
21
- public var jsValue : JSValue { self }
16
+ public func jsValue( ) -> JSValue { self }
22
17
}
23
18
24
19
extension Bool : ConvertibleToJSValue {
25
- public var jsValue : JSValue { . boolean( self ) }
20
+ public func jsValue( ) -> JSValue { . boolean( self ) }
26
21
}
27
22
28
23
extension Int : ConvertibleToJSValue {
29
- public var jsValue : JSValue { . number( Double ( self ) ) }
24
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
30
25
}
31
26
32
27
extension UInt : ConvertibleToJSValue {
33
- public var jsValue : JSValue { . number( Double ( self ) ) }
28
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
34
29
}
35
30
36
31
extension Float : ConvertibleToJSValue {
37
- public var jsValue : JSValue { . number( Double ( self ) ) }
32
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
38
33
}
39
34
40
35
extension Double : ConvertibleToJSValue {
41
- public var jsValue : JSValue { . number( self ) }
36
+ public func jsValue( ) -> JSValue { . number( self ) }
42
37
}
43
38
44
39
extension String : ConvertibleToJSValue {
45
- public var jsValue : JSValue { . string( JSString ( self ) ) }
40
+ public func jsValue( ) -> JSValue { . string( JSString ( self ) ) }
46
41
}
47
42
48
43
extension UInt8 : ConvertibleToJSValue {
49
- public var jsValue : JSValue { . number( Double ( self ) ) }
44
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
50
45
}
51
46
52
47
extension UInt16 : ConvertibleToJSValue {
53
- public var jsValue : JSValue { . number( Double ( self ) ) }
48
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
54
49
}
55
50
56
51
extension UInt32 : ConvertibleToJSValue {
57
- public var jsValue : JSValue { . number( Double ( self ) ) }
52
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
58
53
}
59
54
60
55
extension UInt64 : ConvertibleToJSValue {
61
- public var jsValue : JSValue { . number( Double ( self ) ) }
56
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
62
57
}
63
58
64
59
extension Int8 : ConvertibleToJSValue {
65
- public var jsValue : JSValue { . number( Double ( self ) ) }
60
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
66
61
}
67
62
68
63
extension Int16 : ConvertibleToJSValue {
69
- public var jsValue : JSValue { . number( Double ( self ) ) }
64
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
70
65
}
71
66
72
67
extension Int32 : ConvertibleToJSValue {
73
- public var jsValue : JSValue { . number( Double ( self ) ) }
68
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
74
69
}
75
70
76
71
extension Int64 : ConvertibleToJSValue {
77
- public var jsValue : JSValue { . number( Double ( self ) ) }
72
+ public func jsValue( ) -> JSValue { . number( Double ( self ) ) }
78
73
}
79
74
80
75
extension JSString : ConvertibleToJSValue {
81
- public var jsValue : JSValue { . string( self ) }
76
+ public func jsValue( ) -> JSValue { . string( self ) }
82
77
}
83
78
84
79
extension JSObject : JSValueCompatible {
@@ -89,21 +84,17 @@ extension JSObject: JSValueCompatible {
89
84
private let objectConstructor = JSObject . global. Object. function!
90
85
private let arrayConstructor = JSObject . global. Array. function!
91
86
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 ) ( )
99
90
}
100
91
}
101
92
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 {
104
95
let object = objectConstructor. new ( )
105
96
for (key, value) in self {
106
- object [ key] = value. jsValue
97
+ object [ key] = value. jsValue ( )
107
98
}
108
99
return . object( object)
109
100
}
@@ -113,7 +104,7 @@ extension Dictionary: ConstructibleFromJSValue where Value: ConstructibleFromJSV
113
104
public static func construct( from value: JSValue ) -> Self ? {
114
105
guard
115
106
let objectRef = value. object,
116
- let keys: [ String ] = objectConstructor. keys!( objectRef. jsValue) . fromJSValue ( )
107
+ let keys: [ String ] = objectConstructor. keys!( objectRef. jsValue ( ) ) . fromJSValue ( )
117
108
else { return nil }
118
109
119
110
var entries = [ ( String, Value) ] ( )
@@ -140,29 +131,25 @@ extension Optional: ConstructibleFromJSValue where Wrapped: ConstructibleFromJSV
140
131
}
141
132
142
133
extension Optional : ConvertibleToJSValue where Wrapped: ConvertibleToJSValue {
143
- public var jsValue : JSValue {
134
+ public func jsValue( ) -> JSValue {
144
135
switch self {
145
136
case . none: return . null
146
- case let . some( wrapped) : return wrapped. jsValue
137
+ case let . some( wrapped) : return wrapped. jsValue ( )
147
138
}
148
139
}
149
140
}
150
141
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 ) ( )
158
145
}
159
146
}
160
147
161
- extension Array where Element == ConvertibleToJSValue {
162
- public var jsValue : JSValue {
148
+ extension Array : ConvertibleToJSValue where Element == ConvertibleToJSValue {
149
+ public func jsValue( ) -> JSValue {
163
150
let array = arrayConstructor. new ( count)
164
151
for (index, element) in enumerated ( ) {
165
- array [ index] = element. jsValue
152
+ array [ index] = element. jsValue ( )
166
153
}
167
154
return . object( array)
168
155
}
@@ -189,7 +176,7 @@ extension Array: ConstructibleFromJSValue where Element: ConstructibleFromJSValu
189
176
}
190
177
191
178
extension RawJSValue : ConvertibleToJSValue {
192
- public var jsValue : JSValue {
179
+ public func jsValue( ) -> JSValue {
193
180
switch kind {
194
181
case . invalid:
195
182
fatalError ( )
@@ -256,7 +243,7 @@ extension Array where Element == ConvertibleToJSValue {
256
243
_ results: inout [ RawJSValue ] , _ body: ( [ RawJSValue ] ) -> T
257
244
) -> T {
258
245
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
260
247
results. append ( rawValue)
261
248
return _withRawJSValues ( values, index + 1 , & results, body)
262
249
}
0 commit comments