|
1 | 1 | import Foundation |
2 | 2 |
|
3 | | -#if swift(>=6.0) |
4 | 3 | public extension DefferedTask { |
5 | 4 | func on<Response, Error: Swift.Error>(success: @escaping @Sendable (_ result: Response) -> Void, |
6 | 5 | fail: @escaping @Sendable (_ error: Error) -> Void) |
@@ -252,256 +251,3 @@ public extension DefferedTask { |
252 | 251 | } |
253 | 252 | } |
254 | 253 | } |
255 | | -#else |
256 | | -public extension DefferedTask { |
257 | | - func on<Response, Error: Swift.Error>(success: @escaping (_ result: Response) -> Void, |
258 | | - fail: @escaping (_ error: Error) -> Void) |
259 | | - where ResultType == Result<Response, Error> { |
260 | | - onComplete { result in |
261 | | - switch result { |
262 | | - case .success(let response): |
263 | | - success(response) |
264 | | - case .failure(let error): |
265 | | - fail(error) |
266 | | - } |
267 | | - } |
268 | | - } |
269 | | - |
270 | | - // MARK: - convenience init |
271 | | - |
272 | | - convenience init<Response, Error>(success result: @escaping () -> Response) |
273 | | - where ResultType == Result<Response, Error> { |
274 | | - self.init(execute: { |
275 | | - let result = result() |
276 | | - $0(.success(result)) |
277 | | - }) |
278 | | - } |
279 | | - |
280 | | - convenience init<Response, Error>(failure result: @escaping () -> Error) |
281 | | - where ResultType == Result<Response, Error> { |
282 | | - self.init(execute: { |
283 | | - let result = result() |
284 | | - $0(.failure(result)) |
285 | | - }) |
286 | | - } |
287 | | - |
288 | | - convenience init<Response, Error>(success result: @escaping @autoclosure () -> Response) |
289 | | - where ResultType == Result<Response, Error> { |
290 | | - self.init(execute: { |
291 | | - let result = result() |
292 | | - $0(.success(result)) |
293 | | - }) |
294 | | - } |
295 | | - |
296 | | - convenience init<Response, Error>(failure result: @escaping @autoclosure () -> Error) |
297 | | - where ResultType == Result<Response, Error> { |
298 | | - self.init(execute: { |
299 | | - let result = result() |
300 | | - $0(.failure(result)) |
301 | | - }) |
302 | | - } |
303 | | - |
304 | | - static func success<Response, Error>(_ result: @escaping @autoclosure () -> Response) -> DefferedResult<Response, Error> |
305 | | - where ResultType == Result<Response, Error> { |
306 | | - return .init { |
307 | | - return .success(result()) |
308 | | - } |
309 | | - } |
310 | | - |
311 | | - static func failure<Response, Error>(_ result: @escaping @autoclosure () -> Error) -> DefferedResult<Response, Error> |
312 | | - where ResultType == Result<Response, Error> { |
313 | | - return .init { |
314 | | - return .failure(result()) |
315 | | - } |
316 | | - } |
317 | | - |
318 | | - // MARK: - map |
319 | | - |
320 | | - func map<NewResponse, Response, Error: Swift.Error>(_ mapper: @escaping (_ value: Response) -> NewResponse) -> DefferedResult<NewResponse, Error> |
321 | | - where ResultType == Result<Response, Error> { |
322 | | - return flatMap { |
323 | | - return $0.map(mapper) |
324 | | - } |
325 | | - } |
326 | | - |
327 | | - func mapError<Response, Error: Swift.Error, NewError: Swift.Error>(_ mapper: @escaping (_ error: Error) -> NewError) -> DefferedResult<Response, NewError> |
328 | | - where ResultType == Result<Response, Error> { |
329 | | - return flatMap { |
330 | | - return $0.mapError(mapper) |
331 | | - } |
332 | | - } |
333 | | - |
334 | | - func compactMap<NewResponse, Response, Error: Swift.Error>(_ mapper: @escaping (_ value: Response) -> NewResponse?) -> DefferedResult<[NewResponse], Error> |
335 | | - where ResultType == Result<[Response], Error> { |
336 | | - return flatMap { |
337 | | - return $0.map { |
338 | | - return $0.compactMap(mapper) |
339 | | - } |
340 | | - } |
341 | | - } |
342 | | - |
343 | | - func tryMap<NewResponse, Response, Error: Swift.Error>(_ mapper: @escaping (_ value: Response) throws -> NewResponse) -> DefferedResult<NewResponse, Swift.Error> |
344 | | - where ResultType == Result<Response, Error> { |
345 | | - return flatMap { |
346 | | - do { |
347 | | - switch $0 { |
348 | | - case .success(let response): |
349 | | - return try .success(mapper(response)) |
350 | | - case .failure(let error): |
351 | | - return .failure(error) |
352 | | - } |
353 | | - } catch { |
354 | | - return .failure(error) |
355 | | - } |
356 | | - } |
357 | | - } |
358 | | - |
359 | | - // MARK: - before |
360 | | - |
361 | | - @discardableResult |
362 | | - func beforeSuccess<Response, Error: Swift.Error>(_ success: @escaping (_ value: Response) -> Void) -> Self |
363 | | - where ResultType == Result<Response, Error> { |
364 | | - return beforeComplete { result in |
365 | | - switch result { |
366 | | - case .success(let response): |
367 | | - success(response) |
368 | | - case .failure: |
369 | | - break |
370 | | - } |
371 | | - } |
372 | | - } |
373 | | - |
374 | | - @discardableResult |
375 | | - func beforeFail<Response, Error: Swift.Error>(_ fail: @escaping (_ error: Error) -> Void) -> Self |
376 | | - where ResultType == Result<Response, Error> { |
377 | | - return beforeComplete { result in |
378 | | - switch result { |
379 | | - case .success: |
380 | | - break |
381 | | - case .failure(let error): |
382 | | - fail(error) |
383 | | - } |
384 | | - } |
385 | | - } |
386 | | - |
387 | | - // MARK: - defer |
388 | | - |
389 | | - @discardableResult |
390 | | - func afterSuccess<Response, Error: Swift.Error>(_ success: @escaping (_ value: Response) -> Void) -> Self |
391 | | - where ResultType == Result<Response, Error> { |
392 | | - return afterComplete { result in |
393 | | - switch result { |
394 | | - case .success(let response): |
395 | | - success(response) |
396 | | - case .failure: |
397 | | - break |
398 | | - } |
399 | | - } |
400 | | - } |
401 | | - |
402 | | - @discardableResult |
403 | | - func afterFail<Response, Error: Swift.Error>(_ fail: @escaping (_ error: Error) -> Void) -> Self |
404 | | - where ResultType == Result<Response, Error> { |
405 | | - return afterComplete { result in |
406 | | - switch result { |
407 | | - case .success: |
408 | | - break |
409 | | - case .failure(let error): |
410 | | - fail(error) |
411 | | - } |
412 | | - } |
413 | | - } |
414 | | - |
415 | | - // MARK: - recover |
416 | | - |
417 | | - func recover<Response, Error: Swift.Error>(_ mapper: @escaping (_ error: Error) -> Response) -> DefferedTask<Response> |
418 | | - where ResultType == Result<Response, Error> { |
419 | | - return flatMap { |
420 | | - switch $0 { |
421 | | - case .success(let v): |
422 | | - return v |
423 | | - case .failure(let e): |
424 | | - return mapper(e) |
425 | | - } |
426 | | - } |
427 | | - } |
428 | | - |
429 | | - func recover<Response, Error: Swift.Error>(_ recovered: @escaping () -> Response) -> DefferedTask<Response> |
430 | | - where ResultType == Result<Response, Error> { |
431 | | - return flatMap { |
432 | | - switch $0 { |
433 | | - case .success(let v): |
434 | | - return v |
435 | | - case .failure: |
436 | | - return recovered() |
437 | | - } |
438 | | - } |
439 | | - } |
440 | | - |
441 | | - func recover<Response, Error: Swift.Error>(with recovered: @escaping @autoclosure () -> Response) -> DefferedTask<Response> |
442 | | - where ResultType == Result<Response, Error> { |
443 | | - return flatMap { |
444 | | - switch $0 { |
445 | | - case .success(let v): |
446 | | - return v |
447 | | - case .failure: |
448 | | - return recovered() |
449 | | - } |
450 | | - } |
451 | | - } |
452 | | - |
453 | | - // MARK: - nil |
454 | | - |
455 | | - func nilIfFailure<Response, Error: Swift.Error>() -> DefferedTask<Response?> |
456 | | - where ResultType == Result<Response, Error> { |
457 | | - return flatMap { |
458 | | - switch $0 { |
459 | | - case .success(let v): |
460 | | - return v |
461 | | - case .failure: |
462 | | - return nil |
463 | | - } |
464 | | - } |
465 | | - } |
466 | | - |
467 | | - // MARK: - unwrap |
468 | | - |
469 | | - func unwrap<Response, Error: Swift.Error>(with value: @escaping @autoclosure () -> Response) -> DefferedResult<Response, Error> |
470 | | - where ResultType == Result<Response?, Error> { |
471 | | - return flatMap { |
472 | | - switch $0 { |
473 | | - case .success(let v): |
474 | | - return .success(v ?? value()) |
475 | | - case .failure(let error): |
476 | | - return .failure(error) |
477 | | - } |
478 | | - } |
479 | | - } |
480 | | - |
481 | | - func unwrap<Response, Error: Swift.Error>(_ value: @escaping () -> Response) -> DefferedResult<Response, Error> |
482 | | - where ResultType == Result<Response?, Error> { |
483 | | - return flatMap { |
484 | | - switch $0 { |
485 | | - case .success(let v): |
486 | | - return .success(v ?? value()) |
487 | | - case .failure(let error): |
488 | | - return .failure(error) |
489 | | - } |
490 | | - } |
491 | | - } |
492 | | - |
493 | | - func unwrap<Response, Error: Swift.Error>(orThrow newError: @escaping @autoclosure () -> Error) -> DefferedResult<Response, Error> |
494 | | - where ResultType == Result<Response?, Error> { |
495 | | - return flatMap { |
496 | | - switch $0 { |
497 | | - case .success(.none): |
498 | | - return .failure(newError()) |
499 | | - case .success(.some(let v)): |
500 | | - return .success(v) |
501 | | - case .failure(let error): |
502 | | - return .failure(error) |
503 | | - } |
504 | | - } |
505 | | - } |
506 | | -} |
507 | | -#endif |
0 commit comments