1
1
import Foundation
2
2
3
+ public typealias PluginData = any Sendable
4
+
3
5
// MARK: - ResolveKind
4
6
5
- public enum ESBuildPluginResolveKind : CaseIterable {
7
+ public enum ESBuildPluginResolveKind : CaseIterable , Sendable {
6
8
case entryPoint
7
9
case importStatement
8
10
case requireCall
@@ -11,20 +13,20 @@ public enum ESBuildPluginResolveKind: CaseIterable {
11
13
case importRule
12
14
case composesFrom
13
15
case urlToken
14
-
16
+
15
17
var cValue : Int32 {
16
18
switch self {
17
- case . entryPoint: return 0
18
- case . importStatement: return 1
19
- case . requireCall: return 2
20
- case . dynamicImport: return 3
21
- case . requireResolve: return 4
22
- case . importRule: return 5
23
- case . composesFrom: return 6
24
- case . urlToken: return 7
19
+ case . entryPoint: 0
20
+ case . importStatement: 1
21
+ case . requireCall: 2
22
+ case . dynamicImport: 3
23
+ case . requireResolve: 4
24
+ case . importRule: 5
25
+ case . composesFrom: 6
26
+ case . urlToken: 7
25
27
}
26
28
}
27
-
29
+
28
30
init ? ( cValue: Int32 ) {
29
31
switch cValue {
30
32
case 0 : self = . entryPoint
@@ -42,14 +44,14 @@ public enum ESBuildPluginResolveKind: CaseIterable {
42
44
43
45
// MARK: - Location
44
46
45
- public struct ESBuildPluginLocation {
47
+ public struct ESBuildPluginLocation : Sendable {
46
48
public let file : String
47
49
public let namespace : String
48
50
public let line : Int // 1-based
49
51
public let column : Int // 0-based
50
52
public let length : Int
51
53
public let lineText : String
52
-
54
+
53
55
public init (
54
56
column: Int ,
55
57
file: String ,
@@ -69,11 +71,11 @@ public struct ESBuildPluginLocation {
69
71
70
72
// MARK: - Message
71
73
72
- public struct ESBuildPluginMessage {
74
+ public struct ESBuildPluginMessage : @ unchecked Sendable {
73
75
public let text : String
74
76
public let location : ESBuildPluginLocation ?
75
77
public let detail : Any ?
76
-
78
+
77
79
public init (
78
80
detail: Any ? = nil ,
79
81
location: ESBuildPluginLocation ? = nil ,
@@ -87,21 +89,21 @@ public struct ESBuildPluginMessage {
87
89
88
90
// MARK: - OnResolveArgs
89
91
90
- public struct ESBuildOnResolveArgs {
92
+ public struct ESBuildOnResolveArgs : Sendable {
91
93
public let path : String
92
94
public let importer : String
93
95
public let namespace : String
94
96
public let resolveDir : String
95
97
public let kind : ESBuildPluginResolveKind
96
- public let pluginData : Any ?
98
+ public let pluginData : PluginData ?
97
99
public let with : [ String : String ]
98
-
100
+
99
101
public init (
100
102
importer: String ,
101
103
kind: ESBuildPluginResolveKind ,
102
104
namespace: String ,
103
105
path: String ,
104
- pluginData: Any ? = nil ,
106
+ pluginData: PluginData ? = nil ,
105
107
resolveDir: String ,
106
108
with: [ String : String ] = [ : ]
107
109
) {
@@ -117,17 +119,17 @@ public struct ESBuildOnResolveArgs {
117
119
118
120
// MARK: - OnLoadArgs
119
121
120
- public struct ESBuildOnLoadArgs {
122
+ public struct ESBuildOnLoadArgs : Sendable {
121
123
public let path : String
122
124
public let namespace : String
123
125
public let suffix : String
124
- public let pluginData : Any ?
126
+ public let pluginData : PluginData ?
125
127
public let with : [ String : String ]
126
-
128
+
127
129
public init (
128
130
namespace: String ,
129
131
path: String ,
130
- pluginData: Any ? = nil ,
132
+ pluginData: PluginData ? = nil ,
131
133
suffix: String = " " ,
132
134
with: [ String : String ] = [ : ]
133
135
) {
@@ -141,25 +143,25 @@ public struct ESBuildOnLoadArgs {
141
143
142
144
// MARK: - OnResolveResult
143
145
144
- public struct ESBuildOnResolveResult {
146
+ public struct ESBuildOnResolveResult : Sendable {
145
147
public let path : String ?
146
148
public let namespace : String ?
147
149
public let external : Bool ?
148
150
public let sideEffects : Bool ?
149
151
public let suffix : String ?
150
- public let pluginData : Any ?
152
+ public let pluginData : PluginData ?
151
153
public let pluginName : String ?
152
154
public let errors : [ ESBuildPluginMessage ]
153
155
public let warnings : [ ESBuildPluginMessage ]
154
156
public let watchFiles : [ String ]
155
157
public let watchDirs : [ String ]
156
-
158
+
157
159
public init (
158
160
errors: [ ESBuildPluginMessage ] = [ ] ,
159
161
external: Bool ? = nil ,
160
162
namespace: String ? = nil ,
161
163
path: String ? = nil ,
162
- pluginData: Any ? = nil ,
164
+ pluginData: PluginData ? = nil ,
163
165
pluginName: String ? = nil ,
164
166
sideEffects: Bool ? = nil ,
165
167
suffix: String ? = nil ,
@@ -183,22 +185,22 @@ public struct ESBuildOnResolveResult {
183
185
184
186
// MARK: - OnLoadResult
185
187
186
- public struct ESBuildOnLoadResult {
188
+ public struct ESBuildOnLoadResult : Sendable {
187
189
public let contents : Data ?
188
190
public let loader : ESBuildLoader ?
189
191
public let resolveDir : String ?
190
- public let pluginData : Any ?
192
+ public let pluginData : PluginData ?
191
193
public let pluginName : String ?
192
194
public let errors : [ ESBuildPluginMessage ]
193
195
public let warnings : [ ESBuildPluginMessage ]
194
196
public let watchFiles : [ String ]
195
197
public let watchDirs : [ String ]
196
-
198
+
197
199
public init (
198
200
contents: Data ? = nil ,
199
201
errors: [ ESBuildPluginMessage ] = [ ] ,
200
202
loader: ESBuildLoader ? = nil ,
201
- pluginData: Any ? = nil ,
203
+ pluginData: PluginData ? = nil ,
202
204
pluginName: String ? = nil ,
203
205
resolveDir: String ? = nil ,
204
206
warnings: [ ESBuildPluginMessage ] = [ ] ,
@@ -215,12 +217,12 @@ public struct ESBuildOnLoadResult {
215
217
self . watchDirs = watchDirs
216
218
self . watchFiles = watchFiles
217
219
}
218
-
220
+
219
221
public init (
220
222
contents: String ,
221
223
errors: [ ESBuildPluginMessage ] = [ ] ,
222
224
loader: ESBuildLoader ? = nil ,
223
- pluginData: Any ? = nil ,
225
+ pluginData: PluginData ? = nil ,
224
226
pluginName: String ? = nil ,
225
227
resolveDir: String ? = nil ,
226
228
warnings: [ ESBuildPluginMessage ] = [ ] ,
@@ -243,11 +245,11 @@ public struct ESBuildOnLoadResult {
243
245
244
246
// MARK: - Plugin
245
247
246
- public struct ESBuildPlugin {
248
+ public struct ESBuildPlugin : @ unchecked Sendable {
247
249
public let name : String
248
- public let setup : ( ESBuildPluginBuild ) -> Void
249
-
250
- public init ( name: String , setup: @escaping ( ESBuildPluginBuild ) -> Void ) {
250
+ public let setup : @ Sendable ( ESBuildPluginBuild ) -> Void
251
+
252
+ public init ( name: String , setup: @escaping @ Sendable ( ESBuildPluginBuild ) -> Void ) {
251
253
self . name = name
252
254
self . setup = setup
253
255
}
@@ -259,36 +261,36 @@ public protocol ESBuildPluginBuild {
259
261
func onResolve(
260
262
filter: String ,
261
263
namespace: String ? ,
262
- callback: @escaping ( ESBuildOnResolveArgs ) -> ESBuildOnResolveResult ?
264
+ callback: @escaping @ Sendable ( ESBuildOnResolveArgs) async -> ESBuildOnResolveResult ?
263
265
)
264
-
266
+
265
267
func onLoad(
266
268
filter: String ,
267
269
namespace: String ? ,
268
- callback: @escaping ( ESBuildOnLoadArgs ) -> ESBuildOnLoadResult ?
270
+ callback: @escaping @ Sendable ( ESBuildOnLoadArgs) async -> ESBuildOnLoadResult ?
269
271
)
270
-
271
- func onStart( callback: @escaping ( ) -> Void )
272
- func onEnd( callback: @escaping ( ) -> Void )
272
+
273
+ func onStart( callback: @escaping @ Sendable ( ) async -> Void )
274
+ func onEnd( callback: @escaping @ Sendable ( ) async -> Void )
273
275
func onDispose( callback: @escaping ( ) -> Void )
274
-
276
+
275
277
func resolve( path: String , options: ESBuildResolveOptions ) -> ESBuildResolveResult
276
278
}
277
279
278
280
// MARK: - ResolveOptions
279
281
280
- public struct ESBuildResolveOptions {
282
+ public struct ESBuildResolveOptions : Sendable {
281
283
public let importer : String ?
282
284
public let namespace : String ?
283
285
public let resolveDir : String ?
284
286
public let kind : ESBuildPluginResolveKind ?
285
- public let pluginData : Any ?
286
-
287
+ public let pluginData : PluginData ?
288
+
287
289
public init (
288
290
importer: String ? = nil ,
289
291
kind: ESBuildPluginResolveKind ? = nil ,
290
292
namespace: String ? = nil ,
291
- pluginData: Any ? = nil ,
293
+ pluginData: PluginData ? = nil ,
292
294
resolveDir: String ? = nil
293
295
) {
294
296
self . importer = importer
@@ -301,18 +303,18 @@ public struct ESBuildResolveOptions {
301
303
302
304
// MARK: - Default Plugins
303
305
304
- extension ESBuildPlugin {
305
- public static func reactGlobalTransform( globalName: String = " _FLICKCORE_$REACT " ) -> ESBuildPlugin {
306
- return ESBuildPlugin ( name: " react-global-transform " ) { build in
307
- build. onResolve ( filter: " ^react$ " , namespace: nil ) { args in
308
- return ESBuildOnResolveResult (
306
+ public extension ESBuildPlugin {
307
+ static func reactGlobalTransform( globalName: String = " _FLICKCORE_$REACT " ) -> ESBuildPlugin {
308
+ ESBuildPlugin ( name: " react-global-transform " ) { build in
309
+ build. onResolve ( filter: " ^react$ " , namespace: nil ) { _ in
310
+ ESBuildOnResolveResult (
309
311
namespace: " use-flick-react-global " ,
310
312
path: " react "
311
313
)
312
314
}
313
-
314
- build. onLoad ( filter: " .* " , namespace: " use-flick-react-global " ) { args in
315
- return ESBuildOnLoadResult (
315
+
316
+ build. onLoad ( filter: " .* " , namespace: " use-flick-react-global " ) { _ in
317
+ ESBuildOnLoadResult (
316
318
contents: " module.exports = \( globalName) " ,
317
319
loader: . js
318
320
)
@@ -323,22 +325,22 @@ extension ESBuildPlugin {
323
325
324
326
// MARK: - ResolveResult
325
327
326
- public struct ESBuildResolveResult {
328
+ public struct ESBuildResolveResult : Sendable {
327
329
public let path : String
328
330
public let namespace : String
329
331
public let suffix : String
330
332
public let external : Bool
331
333
public let sideEffects : Bool
332
- public let pluginData : Any ?
334
+ public let pluginData : PluginData ?
333
335
public let errors : [ ESBuildPluginMessage ]
334
336
public let warnings : [ ESBuildPluginMessage ]
335
-
337
+
336
338
public init (
337
339
errors: [ ESBuildPluginMessage ] = [ ] ,
338
340
external: Bool = false ,
339
341
namespace: String = " file " ,
340
342
path: String ,
341
- pluginData: Any ? = nil ,
343
+ pluginData: PluginData ? = nil ,
342
344
sideEffects: Bool = false ,
343
345
suffix: String = " " ,
344
346
warnings: [ ESBuildPluginMessage ] = [ ]
@@ -352,4 +354,4 @@ public struct ESBuildResolveResult {
352
354
self . suffix = suffix
353
355
self . warnings = warnings
354
356
}
355
- }
357
+ }
0 commit comments