3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_ExampleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_ExampleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_Example {
2 | umbrella header "Pods-Example-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/FWDebug.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug.gif
--------------------------------------------------------------------------------
/FWDebug/Assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Assets/.gitkeep
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Assets/GCDWebUploader.bundle/Contents/Info.plist
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/css/jquery.fileupload.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | /*
3 | * jQuery File Upload Plugin CSS 1.3.0
4 | * https://github.com/blueimp/jQuery-File-Upload
5 | *
6 | * Copyright 2013, Sebastian Tschan
7 | * https://blueimp.net
8 | *
9 | * Licensed under the MIT license:
10 | * http://www.opensource.org/licenses/MIT
11 | */
12 |
13 | .fileinput-button {
14 | position: relative;
15 | overflow: hidden;
16 | }
17 | .fileinput-button input {
18 | position: absolute;
19 | top: 0;
20 | right: 0;
21 | margin: 0;
22 | opacity: 0;
23 | -ms-filter: 'alpha(opacity=0)';
24 | font-size: 200px;
25 | direction: ltr;
26 | cursor: pointer;
27 | }
28 |
29 | /* Fixes for IE < 8 */
30 | @media screen\9 {
31 | .fileinput-button input {
32 | filter: alpha(opacity=0);
33 | font-size: 100%;
34 | height: 100%;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "PROLOGUE" = "Drag & drop files on this window or use the \"Upload Files…\" button to upload new files.
";
2 | "EPILOGUE" = "";
3 | "FOOTER_FORMAT" = "%@ %@";
4 |
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/FWDebug/Assets/GCDWebUploader.bundle/Contents/Resources/js/tmpl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){"use strict";var b=function(a,c){var d=/[^\w\-\.:]/.test(a)?new Function(b.arg+",tmpl","var _e=tmpl.encode"+b.helper+",_s='"+a.replace(b.regexp,b.func)+"';return _s;"):b.cache[a]=b.cache[a]||b(b.load(a));return c?d(c,b):function(a){return d(a,b)}};b.cache={},b.load=function(a){return document.getElementById(a).innerHTML},b.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,b.func=function(a,b,c,d,e,f){return b?{"\n":"\\n","\r":"\\r"," ":"\\t"," ":" "}[b]||"\\"+b:c?"="===c?"'+_e("+d+")+'":"'+("+d+"==null?'':"+d+")+'":e?"';":f?"_s+='":void 0},b.encReg=/[<>&"'\x00]/g,b.encMap={"<":"<",">":">","&":"&",'"':""","'":"'"},b.encode=function(a){return(null==a?"":""+a).replace(b.encReg,function(a){return b.encMap[a]||""})},b.arg="o",b.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return b}):a.tmpl=b}(this);
--------------------------------------------------------------------------------
/FWDebug/Classes/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Classes/.gitkeep
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FBRetainCycleDetector/FBRetainCycleDetector+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FBRetainCycleDetector+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2017/12/4.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FBRetainCycleDetector.h"
10 |
11 | @interface FBRetainCycleDetector (FWDebug)
12 |
13 | + (void)fwDebugLaunch;
14 |
15 | + (NSSet *)fwDebugRetainCycleWithObject:(id)object;
16 |
17 | + (NSSet *)fwDebugRetainCycleWithObjects:(NSArray *)objects;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FBRetainCycleDetector/FBRetainCycleDetector+FWDebug.m:
--------------------------------------------------------------------------------
1 | //
2 | // FBRetainCycleDetector+FWDebug.m
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2017/12/4.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FBRetainCycleDetector+FWDebug.h"
10 | #import "FWDebugAppConfig.h"
11 | #import "FWDebugManager.h"
12 |
13 | @implementation FBRetainCycleDetector (FWDebug)
14 |
15 | + (void)fwDebugLaunch
16 | {
17 | [FBAssociationManager hook];
18 | }
19 |
20 | + (NSSet *)fwDebugRetainCycleWithObject:(id)object
21 | {
22 | if (!object) {
23 | return nil;
24 | }
25 |
26 | FBRetainCycleDetector *detector = [[FBRetainCycleDetector alloc] init];
27 | [detector addCandidate:object];
28 | return [detector findRetainCyclesWithMaxCycleLength:[FWDebugAppConfig retainCycleDepth]];
29 | }
30 |
31 | + (NSSet *)fwDebugRetainCycleWithObjects:(NSArray *)objects
32 | {
33 | if (objects.count == 0) {
34 | return nil;
35 | }
36 |
37 | FBRetainCycleDetector *detector = [[FBRetainCycleDetector alloc] init];
38 | for (id object in objects) {
39 | [detector addCandidate:object];
40 | }
41 | return [detector findRetainCyclesWithMaxCycleLength:[FWDebugAppConfig retainCycleDepth]];
42 | }
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FBRetainCycleDetector/FWDebugRetainCycle.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugRetainCycle.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2017/12/4.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FWDebugRetainCycle : FLEXTableViewController
12 |
13 | @property (nonatomic, strong) NSArray *retainCycles;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXExplorerToolbar+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXExplorerToolbar+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/27.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXExplorerToolbar.h"
10 | #import "FLEXExplorerToolbarItem.h"
11 |
12 | @class FWDebugFpsData;
13 |
14 | @interface FLEXExplorerToolbar (FWDebug)
15 |
16 | + (void)fwDebugLoad;
17 |
18 | - (FLEXExplorerToolbarItem *)fwDebugFpsItem;
19 |
20 | @end
21 |
22 | @interface FLEXExplorerToolbarItem (FWDebug)
23 |
24 | @property (nonatomic, assign) BOOL fwDebugShowRuler;
25 | @property (nonatomic, assign) BOOL fwDebugIsRuler;
26 |
27 | - (void)setFpsData:(FWDebugFpsData *)fpsData;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXExplorerViewController+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXExplorerViewController+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2022/4/25.
6 | //
7 |
8 | #import "FLEXExplorerViewController.h"
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface FLEXExplorerViewController (FWDebug)
13 |
14 | + (void)fwDebugLoad;
15 |
16 | - (BOOL)fwDebugRemoveOverlay;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXFileBrowserController+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXFileBrowserController+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/24.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXFileBrowserController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXFileBrowserController (FWDebug)
14 |
15 | + (void)fwDebugLoad;
16 |
17 | @end
18 |
19 | @interface UINavigationController (FWDebug)
20 |
21 | @property (nonatomic, copy, nullable) BOOL (^fwDebugFileHandler)(FLEXFileBrowserController *fileBrowser, NSString *filePath);
22 |
23 | @end
24 |
25 | NS_ASSUME_NONNULL_END
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXManager+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXManager+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/28.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXManager.h"
10 | #import "FWDebugFpsInfo.h"
11 |
12 | @interface FLEXManager (FWDebug)
13 |
14 | + (void)fwDebugLoad;
15 |
16 | + (void)fwDebugLaunch;
17 |
18 | + (BOOL)fwDebugVisible;
19 |
20 | - (FWDebugFpsData *)fwDebugFpsData;
21 |
22 | + (void)fwDebugOpenUrl:(NSString *)text;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXOSLogController+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXOSLogController+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 21/5/26.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXOSLogController.h"
10 |
11 | @interface FLEXOSLogController (FWDebug)
12 |
13 | + (void)fwDebugLoad;
14 |
15 | + (void)swizzleSystemLog;
16 |
17 | + (void)appendMessage:(NSString *)msg;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXObjectExplorerViewController+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXObjectExplorerViewController+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/23.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXObjectExplorerViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXObjectExplorerViewController (FWDebug)
14 |
15 | + (void)fwDebugLoad;
16 |
17 | + (void)fwDebugRegisterEntry:(NSString *)entryName title:(NSString *)title filter:(nullable BOOL (^)(id object))filter actionBlock:(void (^)(__kindof UIViewController *viewController, id object))actionBlock;
18 |
19 | + (void)fwDebugRemoveEntry:(NSString *)entryName;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FLEXObjectListViewController+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXObjectListViewController+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2018/1/4.
6 | // Copyright © 2018年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXObjectListViewController.h"
10 |
11 | @interface FLEXObjectListViewController (FWDebug)
12 |
13 | + (void)fwDebugLoad;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FWDebugAppConfig.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugAppSecret.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2017/7/4.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FWDebugAppConfig : FLEXTableViewController
12 |
13 | + (void)fwDebugLoad;
14 |
15 | + (void)fwDebugLaunch;
16 |
17 | + (BOOL)isAppLocked;
18 |
19 | + (BOOL)filterSystemLog;
20 |
21 | + (BOOL)hookSystemLog;
22 |
23 | + (BOOL)traceVCLife;
24 |
25 | + (BOOL)traceVCRequest;
26 |
27 | + (NSString *)traceVCUrls;
28 |
29 | + (NSInteger)retainCycleDepth;
30 |
31 | + (void)webViewInjectJavascript;
32 |
33 | + (void)logFile:(NSString *)message;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FWDebugFakeLocation.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugFakeLocation.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2017/7/4.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FWDebugFakeLocation : FLEXTableViewController
12 |
13 | + (void)fwDebugLoad;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FWDebugFakeNotification.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugFakeNotification.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2019/4/13.
6 | // Copyright © 2019 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FWDebugFakeNotification : FLEXTableViewController
12 |
13 | + (void)fwDebugLaunch;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FWDebugFpsInfo.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugFpsInfo.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/28.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "FBRetainCycleDetector.h"
12 |
13 | @interface FWDebugFpsData : NSObject
14 |
15 | // FPS,取整数:(int)round(fps)
16 | @property (nonatomic, assign) float fps;
17 |
18 | // 占用内存,单位MB
19 | @property (nonatomic, assign) float memory;
20 |
21 | // CPU占比,0-100
22 | @property (nonatomic, assign) float cpu;
23 |
24 | // FPS结果,1好 0警告 -1不好
25 | @property (nonatomic, assign) NSInteger fpsState;
26 |
27 | // 占用内存结果,1好 0警告 -1不好
28 | @property (nonatomic, assign) NSInteger memoryState;
29 |
30 | // CPU占比结果,1好 0警告 -1不好
31 | @property (nonatomic, assign) NSInteger cpuState;
32 |
33 | @end
34 |
35 | @protocol FWDebugFpsInfoDelegate
36 |
37 | - (void)fwDebugFpsInfoChanged:(FWDebugFpsData *)fpsData;
38 |
39 | @end
40 |
41 | @interface FWDebugFpsInfo : NSObject
42 |
43 | @property (nonatomic, weak) id delegate;
44 |
45 | @property (nonatomic, strong, readonly) FWDebugFpsData *fpsData;
46 |
47 | - (void)start;
48 |
49 | - (void)stop;
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FWDebugSystemInfo.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugDeviceInfo.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/23.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FWDebugSystemInfo : FLEXTableViewController
14 |
15 | + (void)fwDebugLoad;
16 |
17 | + (void)registerEntry:(NSString *)entryName entryBlock:(NSString * _Nullable (^)(void))entryBlock;
18 |
19 | + (void)removeEntry:(NSString *)entryName;
20 |
21 | @end
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/FLEX/FWDebugTimeProfiler.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugTimeProfiler.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2020/5/18.
6 | // Copyright © 2020 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FWDebugTimeProfiler : FLEXTableViewController
14 |
15 | - (instancetype)initWithObject:(id)object;
16 |
17 | + (void)fwDebugLoad;
18 |
19 | + (void)enableTraceVCLife;
20 |
21 | + (void)enableTraceVCRequest;
22 |
23 | + (double)currentTime;
24 |
25 | + (NSTimeInterval)appLaunchedTime;
26 |
27 | + (void)recordEvent:(NSString *)event object:(id)object userInfo:(nullable id)userInfo;
28 |
29 | @end
30 |
31 | NS_ASSUME_NONNULL_END
32 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/GCDWebServer/FWDebugWebServer.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugGCDWebServer.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/22.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FWDebugWebServer : FLEXTableViewController
12 |
13 | + (void)fwDebugLaunch;
14 |
15 | + (void)fwDebugEnableLog;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/KSCrash/FWDebugKSCrashInstallationFile.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugKSCrashInstallationFile.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/23.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KSCrashInstallation.h"
11 |
12 | @interface FWDebugKSCrashInstallationFile : KSCrashInstallation
13 |
14 | @property(nonatomic, assign) BOOL printAppleFormat;
15 |
16 | + (instancetype)sharedInstance;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/KSCrash/FWDebugKSCrashReportSinkFile.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugKSCrashReportSinkFile.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/23.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "KSCrashReportFilter.h"
11 |
12 | @interface FWDebugKSCrashReportSinkFile : NSObject
13 |
14 | + (FWDebugKSCrashReportSinkFile *)filter;
15 |
16 | - (id )defaultCrashReportFilterSet;
17 |
18 | - (id )defaultCrashReportFilterSetAppleFmt;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/KSCrash/KSCrash+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // KSCrash+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/28.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "KSCrash.h"
10 |
11 | @interface KSCrash (FWDebug)
12 |
13 | + (void)fwDebugLaunch;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/Manager/FWDebugManager+FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugManager+FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 2018/1/4.
6 | // Copyright © 2018年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FWDebugManager.h"
10 | #import
11 |
12 | @interface FWDebugManager (FWDebug)
13 |
14 | + (BOOL)swizzleMethod:(SEL)originalSelector in:(Class)originalClass withBlock:(id (^)(__unsafe_unretained Class targetClass, SEL originalCMD, IMP (^originalIMP)(void)))block;
15 |
16 | + (BOOL)swizzleMethodOnce:(SEL)originalSelector in:(Class)originalClass withBlock:(id (^)(__unsafe_unretained Class targetClass, SEL originalCMD, IMP (^originalIMP)(void)))block;
17 |
18 | + (void)showPrompt:(UIViewController *)viewController security:(BOOL)security title:(NSString *)title message:(NSString *)message text:(NSString *)text block:(void (^)(BOOL confirm, NSString *text))block;
19 |
20 | + (void)showConfirm:(UIViewController *)viewController title:(NSString *)title message:(NSString *)message block:(void (^)(BOOL confirm))block;
21 |
22 | + (UIViewController *)topViewController;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Private/RuntimeBrowser/FWDebugRuntimeBrowser.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebugRuntimeBrowser.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/22.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FWDebugRuntimeBrowser : UIViewController
12 |
13 | - (instancetype)initWithClassName:(NSString *)className;
14 |
15 | - (instancetype)initWithProtocolName:(NSString *)protocolName;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Public/FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/20.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FWDebugManager.h"
10 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/CEcho/Builtins.def:
--------------------------------------------------------------------------------
1 | //
2 | // Builtins.def
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2020 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | #ifndef BUILTIN
10 | #define BUILTIN(NAME, SYMBOL)
11 | #endif
12 |
13 | BUILTIN(Int1, Bi1_)
14 | BUILTIN(Int7, Bi7_)
15 | BUILTIN(Int8, Bi8_)
16 | BUILTIN(Int16, Bi16_)
17 | BUILTIN(Int32, Bi32_)
18 | BUILTIN(Int64, Bi64_)
19 | BUILTIN(Int128, Bi128_)
20 | BUILTIN(Int256, Bi256_)
21 | BUILTIN(Int512, Bi512_)
22 |
23 | BUILTIN(Word, Bw)
24 |
25 | BUILTIN(FPIEE16, Bf16_)
26 | BUILTIN(FPIEE32, Bf32_)
27 | BUILTIN(FPIEE64, Bf64_)
28 | BUILTIN(FPIEE80, Bf80_)
29 | BUILTIN(FPIEE128, Bf128_)
30 |
31 | BUILTIN(NativeObject, Bo)
32 | BUILTIN(BridgeObject, Bb)
33 | BUILTIN(RawPointer, Bp)
34 | BUILTIN(UnsafeValueBuffer, BB)
35 |
36 | BUILTIN(UnknownObject, BO)
37 |
38 | #undef BUILTIN
39 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/CEcho/CallAccessor.h:
--------------------------------------------------------------------------------
1 | //
2 | // CallAccessor.h
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | #ifndef CALL_ACCESSOR_H
10 | #define CALL_ACCESSOR_H
11 |
12 | #include
13 |
14 | typedef struct CMetadataResponse {
15 | const void *Metadata;
16 | size_t State;
17 | } CMetadataResponse;
18 |
19 | const CMetadataResponse echo_callAccessor0(const void *ptr, size_t request);
20 |
21 | const CMetadataResponse echo_callAccessor1(const void *ptr, size_t request,
22 | const void *arg0);
23 |
24 | const CMetadataResponse echo_callAccessor2(const void *ptr, size_t request,
25 | const void *arg0, const void *arg1);
26 |
27 | const CMetadataResponse echo_callAccessor3(const void *ptr, size_t request,
28 | const void *arg0, const void *arg1,
29 | const void *arg2);
30 |
31 | // Where args is a list of pointers.
32 | const CMetadataResponse echo_callAccessor(const void *ptr, size_t request,
33 | const void *args);
34 |
35 | #endif /* CALL_ACCESSOR_H */
36 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/CEcho/Functions.c:
--------------------------------------------------------------------------------
1 | //
2 | // Functions.c
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | #include "Functions.h"
10 |
11 | #if defined(__arm64e__)
12 | #include
13 |
14 | const void *__ptrauth_strip_asda(const void *ptr) {
15 | return ptrauth_strip(ptr, ptrauth_key_asda);
16 | }
17 |
18 | #endif
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/CEcho/ImageInspectionMachO.c:
--------------------------------------------------------------------------------
1 | //
2 | // ImageInspectionMachO.c
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | #if defined(__MACH__)
10 |
11 | #include "ImageInspection.h"
12 |
13 | #endif
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/CEcho/KnownMetadata.c:
--------------------------------------------------------------------------------
1 | //
2 | // KnownMetadata.c
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2020 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | #include "KnownMetadata.h"
10 |
11 | // Grab the metadata pointer that's appropriate for Swift. By default,
12 | // getting the address of the reference type metadata points to the full
13 | // metadata which points to the value witness table rather than the kind.
14 | // Move the pointer down one word to be correct.
15 | #define BUILTIN(NAME, SYMBOL) \
16 | void *getBuiltin##NAME##Metadata() { \
17 | return &$s##SYMBOL##N + sizeof(void*); \
18 | }
19 | #include "Builtins.def"
20 |
21 | #undef BUILTIN
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/ContextDescriptor/ExtensionDescriptor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ExtensionDescriptor.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// An extension descriptor that describes some extension context.
10 | ///
11 | /// ABI Stability: Stable since the following
12 | ///
13 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
14 | /// |-------|----------|---------|-------|---------|
15 | /// | 10.14 | 12.2 | 5.2 | NA | NA |
16 | ///
17 | public struct ExtensionDescriptor: ContextDescriptor, LayoutWrapper {
18 | typealias Layout = _ExtensionDescriptor
19 |
20 | /// Backing context descriptor pointer.
21 | public let ptr: UnsafeRawPointer
22 |
23 | /// The mangled name which this extension extends.
24 | /// Ex. If this extension extends Int, this mangled name might be
25 | /// Si or some symbolic reference to Int's context descriptor.
26 | public var extendedContext: UnsafeRawPointer {
27 | address(for: \._extendedContext)
28 | }
29 | }
30 |
31 | extension ExtensionDescriptor: Equatable {}
32 |
33 | struct _ExtensionDescriptor {
34 | let _base: _ContextDescriptor
35 | let _extendedContext: RelativeDirectPointer
36 | }
37 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/ContextDescriptor/ModuleDescriptor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ModuleDescriptor.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2020 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// A module descriptor that describes some Swift module.
10 | ///
11 | /// ABI Stability: Stable since the following
12 | ///
13 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
14 | /// |-------|----------|---------|-------|---------|
15 | /// | 10.14 | 12.2 | 5.2 | NA | NA |
16 | ///
17 | public struct ModuleDescriptor: ContextDescriptor, LayoutWrapper {
18 | typealias Layout = _ModuleDescriptor
19 |
20 | /// Backing context descriptor pointer.
21 | public let ptr: UnsafeRawPointer
22 |
23 | /// The name of the compiled Swift module.
24 | public var name: String {
25 | address(for: \._name).string
26 | }
27 | }
28 |
29 | extension ModuleDescriptor: Equatable {}
30 |
31 | struct _ModuleDescriptor {
32 | let _base: _ContextDescriptor
33 | let _name: RelativeDirectPointer
34 | }
35 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Metadata/EnumMetadata.swift:
--------------------------------------------------------------------------------
1 | //
2 | // EnumMetadata.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// The metadata structure that represents an `enum` type in Swift.
10 | ///
11 | /// ABI Stability: Stable since the following
12 | ///
13 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
14 | /// |-------|----------|---------|-------|---------|
15 | /// | 10.14 | 12.2 | 5.2 | NA | NA |
16 | ///
17 | public struct EnumMetadata: TypeMetadata, LayoutWrapper {
18 | typealias Layout = _EnumMetadata
19 |
20 | /// Backing enum metadata pointer.
21 | public let ptr: UnsafeRawPointer
22 |
23 | /// The enum context descriptor that describes this enum.
24 | public var descriptor: EnumDescriptor! {
25 | EnumDescriptor(ptr: layout._descriptor.signed)
26 | }
27 | }
28 |
29 | extension EnumMetadata: Equatable {}
30 |
31 | struct _EnumMetadata {
32 | let _kind: Int
33 | let _descriptor: SignedPointer
34 | }
35 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Metadata/ForeignClassMetadata.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ForeignClassMetadata.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2020 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// The metadata structure that represents a foreign reference counted object
10 | /// from another language that Swift observes.
11 | public struct ForeignClassMetadata: Metadata, LayoutWrapper {
12 | typealias Layout = _ForeignClassMetadata
13 |
14 | /// Backing foreign class metadata pointer.
15 | public let ptr: UnsafeRawPointer
16 | }
17 |
18 | extension ForeignClassMetadata: Equatable {}
19 |
20 | struct _ForeignClassMetadata {
21 | let _kind: Int
22 | let _descriptor: ClassDescriptor
23 | let _superclass: Any.Type?
24 | }
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Metadata/HeapLocalVariableMetadata.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HeapLocalVariableMetadata.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2020 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// The metadata structure that represents local variables that are heap
10 | /// allocated.
11 | ///
12 | /// ABI Stability: Unstable across all platforms
13 | ///
14 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
15 | /// |-------|----------|---------|-------|---------|
16 | /// | NA | NA | NA | NA | NA |
17 | ///
18 | public struct HeapLocalVariableMetadata: Metadata, LayoutWrapper {
19 | typealias Layout = _HeapLocalVariableMetadata
20 |
21 | /// Backing heap local variable metadata pointer.
22 | public let ptr: UnsafeRawPointer
23 |
24 | public var offsetToFirstCapture: Int {
25 | Int(layout._offsetToFirstCapture)
26 | }
27 |
28 | public var captureDescription: UnsafePointer {
29 | layout._captureDescription
30 | }
31 | }
32 |
33 | extension HeapLocalVariableMetadata: Equatable {}
34 |
35 | struct _HeapLocalVariableMetadata {
36 | let _kind: Int
37 | let _offsetToFirstCapture: UInt32
38 | let _captureDescription: UnsafePointer
39 | }
40 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Metadata/MetatypeMetadata.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MetatypeMetadata.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// The metadata structure that represents a metatype wrapping some instance
10 | /// type.
11 | ///
12 | /// ABI Stability: Unstable across all platforms
13 | ///
14 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
15 | /// |-------|----------|---------|-------|---------|
16 | /// | NA | NA | NA | NA | NA |
17 | ///
18 | public struct MetatypeMetadata: Metadata, LayoutWrapper {
19 | typealias Layout = _MetatypeMetadata
20 |
21 | /// Backing metatype metadata pointer.
22 | public let ptr: UnsafeRawPointer
23 |
24 | /// The instance type that this metatype wraps.
25 | public var instanceType: Any.Type {
26 | layout._instanceType
27 | }
28 |
29 | /// The metadata for the instance type this metatype wraps.
30 | public var instanceMetadata: Metadata {
31 | reflect(instanceType)
32 | }
33 | }
34 |
35 | extension MetatypeMetadata: Equatable {}
36 |
37 | struct _MetatypeMetadata {
38 | let _kind: Int
39 | let _instanceType: Any.Type
40 | }
41 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Metadata/OpaqueMetadata.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OpaqueMetadata.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// The metadata structure that represents some opaque type in Swift. An opaque
10 | /// type might include a private structure, or perhaps some metadata for the
11 | /// various Builtin types in Swift.
12 | ///
13 | /// ABI Stability: Stable since the following
14 | ///
15 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
16 | /// |-------|----------|---------|-------|---------|
17 | /// | 10.14 | 12.2 | 5.2 | NA | NA |
18 | ///
19 | public struct OpaqueMetadata: Metadata {
20 | /// Backing opaque metadata pointer.
21 | public let ptr: UnsafeRawPointer
22 | }
23 |
24 | extension OpaqueMetadata: Equatable {}
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Runtime/HeapObject.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HeapObject.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | /// Some object whose value is being stored on the heap and is being reference
10 | /// counted by the Swift runtime.
11 | ///
12 | /// ABI Stability: Stable since the following
13 | ///
14 | /// | macOS | iOS/tvOS | watchOS | Linux | Windows |
15 | /// |-------|----------|---------|-------|---------|
16 | /// | 10.14 | 12.2 | 5.2 | NA | NA |
17 | ///
18 | public struct HeapObject {
19 | /// The type being stored in this heap object.
20 | public let type: Any.Type
21 |
22 | /// This isn't exposed because I haven't created the structure that
23 | /// correctly represents a heap objects ref count yet.
24 | let _refCount: UInt64
25 |
26 | /// The metadata for the type being stored in this heap object.
27 | public var metadata: Metadata {
28 | reflect(type)
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Utils/FieldType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FieldType.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | // This isn't used anywhere yet... ?
10 | struct FieldType {
11 | let bits: UInt
12 |
13 | var isIndirect: Bool {
14 | bits & 0x1 != 0
15 | }
16 |
17 | var isWeak: Bool {
18 | bits & 0x2 != 0
19 | }
20 |
21 | var metadata: Metadata {
22 | reflect(type)
23 | }
24 |
25 | var type: Any.Type {
26 | let typeMask = UInt.max & ~UInt(MemoryLayout.alignment - 1)
27 | let address = UnsafeRawPointer(bitPattern: bits & typeMask)!
28 | return unsafeBitCast(address, to: Any.Type.self)
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Utils/RelativeDirectPointer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RelativeDirectPointer.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | struct RelativeDirectPointer: RelativePointer {
10 | let offset: Int32
11 |
12 | func pointee(from ptr: UnsafeRawPointer) -> Pointee? {
13 | if isNull {
14 | return nil
15 | }
16 |
17 | return address(from: ptr).load(as: Pointee.self)
18 | }
19 | }
20 |
21 | extension UnsafeRawPointer {
22 | func relativeDirectAddress(as type: T.Type) -> UnsafeRawPointer {
23 | let relativePointer = RelativeDirectPointer(
24 | offset: load(as: Int32.self)
25 | )
26 | return relativePointer.address(from: self)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Utils/RelativeIndirectPointer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RelativeIndirectPointer.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | struct RelativeIndirectPointer: RelativePointer {
10 | typealias Pointee = UnsafePointer
11 |
12 | let offset: Int32
13 |
14 | func pointee(from ptr: UnsafeRawPointer) -> Pointee? {
15 | if isNull {
16 | return nil
17 | }
18 |
19 | return address(from: ptr).load(as: Pointee.self)
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Utils/RelativeIndirectablePointer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RelativeIndirectablePointer.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2019 - 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | struct RelativeIndirectablePointer: RelativePointer {
10 | let offset: Int32
11 |
12 | func address(from ptr: UnsafeRawPointer) -> UnsafeRawPointer {
13 | let start = ptr + Int(Int(offset) & ~1)
14 |
15 | if Int(offset) & 1 == 1 {
16 | return start.load(as: UnsafeRawPointer.self)
17 | } else {
18 | return start
19 | }
20 | }
21 |
22 | func pointee(from ptr: UnsafeRawPointer) -> Pointee? {
23 | if isNull {
24 | return nil
25 | }
26 |
27 | return address(from: ptr).load(as: Pointee.self)
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Echo/Echo/Utils/SignedPointer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SignedPointer.swift
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | // A wrapper around a pointer who will return the signed version of the wrapped
12 | // pointer through the `signed` property.
13 | struct SignedPointer {
14 | var ptr: UnsafeRawPointer!
15 |
16 | var signed: UnsafeRawPointer! {
17 | ptr
18 | }
19 | }
20 |
21 | // Swift type descriptors are signed with the process independent data key.
22 | #if _ptrauth(_arm64e)
23 | extension SignedPointer where Pointee == ProtocolDescriptor {
24 | var signed: UnsafeRawPointer {
25 | __ptrauth_strip_asda(ptr)!
26 | }
27 | }
28 |
29 | extension SignedPointer where Pointee: TypeContextDescriptor {
30 | var signed: UnsafeRawPointer {
31 | __ptrauth_strip_asda(ptr)!
32 | }
33 | }
34 |
35 | extension SignedPointer where Pointee == ValueWitnessTable {
36 | var signed: UnsafeRawPointer {
37 | __ptrauth_strip_asda(ptr)!
38 | }
39 | }
40 | #endif
41 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Associations/FBAssociationManager.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | /**
12 | FBAssociationManager is a tracker of object associations. For given object it can return all objects that
13 | are being retained by this object with objc_setAssociatedObject & retain policy.
14 | */
15 | @interface FBAssociationManager : NSObject
16 |
17 | /**
18 | Start tracking associations. It will use fishhook to swizzle C methods:
19 | objc_(set/remove)AssociatedObject and inject some tracker code.
20 | */
21 | + (void)hook;
22 |
23 | /**
24 | Stop tracking associations, fishhooks.
25 | */
26 | + (void)unhook;
27 |
28 | /**
29 | For given object return all objects that are retained by it using associated objects.
30 |
31 | @return NSArray of objects associated with given object
32 | */
33 | + (nullable NSArray *)associationsForObject:(nullable id)object;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Associations/Internal/FBAssociationManager+Internal.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import "FBAssociationManager.h"
10 | #import "FBRetainCycleDetector.h"
11 |
12 | #if _INTERNAL_RCD_ENABLED
13 |
14 | namespace FB { namespace AssociationManager {
15 |
16 | void _threadUnsafeResetAssociationAtKey(id object, void *key);
17 | void _threadUnsafeSetStrongAssociation(id object, void *key, id value);
18 | void _threadUnsafeRemoveAssociations(id object);
19 |
20 | NSArray *associations(id object);
21 |
22 | } }
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Detector/FBNodeEnumerator.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | @class FBObjectiveCGraphElement;
12 |
13 | /**
14 | FBNodeEnumerator wraps any object graph element (FBObjectiveCGraphElement) and lets you enumerate over its
15 | retained references
16 | */
17 | @interface FBNodeEnumerator : NSEnumerator
18 |
19 | /**
20 | Designated initializer
21 | */
22 | - (nonnull instancetype)initWithObject:(nonnull FBObjectiveCGraphElement *)object;
23 |
24 | - (nullable FBNodeEnumerator *)nextObject;
25 |
26 | @property (nonatomic, strong, readonly, nonnull) FBObjectiveCGraphElement *object;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Detector/FBRetainCycleDetector+Internal.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import "FBRetainCycleDetector.h"
10 |
11 | @interface FBRetainCycleDetector ()
12 |
13 | // Unit tests
14 | - (NSArray *)_shiftToUnifiedCycle:(NSArray *)array;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Graph/FBObjectiveCBlock.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import "FBObjectiveCGraphElement.h"
12 |
13 | @class FBGraphEdgeFilterProvider;
14 |
15 | /**
16 | Object Graph element representing block.
17 | */
18 | @interface FBObjectiveCBlock : FBObjectiveCGraphElement
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Graph/FBObjectiveCObject.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import "FBObjectiveCGraphElement.h"
12 |
13 | @class FBGraphEdgeFilterProvider;
14 |
15 | /**
16 | FBObjectiveCGraphElement specialization that can gather all references kept in ivars, as part of collection
17 | etc.
18 | */
19 | @interface FBObjectiveCObject : FBObjectiveCGraphElement
20 | @end
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Graph/Internal/FBObjectiveCGraphElement+Internal.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import "FBObjectiveCGraphElement.h"
12 |
13 | @interface FBObjectiveCGraphElement ()
14 |
15 | - (instancetype)initWithObject:(id)object;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Graph/Specialization/FBObjectiveCNSCFTimer.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import "FBObjectiveCObject.h"
12 |
13 | /**
14 | Specialization of FBObjectiveCObject for NSTimer.
15 | Standard methods that FBObjectiveCObject uses will not fetch us all objects retained by NSTimer.
16 | One good example is target of NSTimer.
17 | */
18 | @interface FBObjectiveCNSCFTimer : FBObjectiveCObject
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Blocks/FBBlockStrongLayout.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #ifdef __cplusplus
12 | extern "C" {
13 | #endif
14 |
15 | /**
16 | Returns an array of id objects that will have only those references
17 | that are retained by block.
18 | */
19 | NSArray *_Nullable FBGetBlockStrongReferences(void *_Nonnull block);
20 |
21 | BOOL FBObjectIsBlock(void *_Nullable object);
22 |
23 | #ifdef __cplusplus
24 | }
25 | #endif
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Blocks/FBBlockStrongRelationDetector.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #if __has_feature(objc_arc)
10 | #error This file must be compiled with MRR. Use -fno-objc-arc flag.
11 | #endif
12 |
13 | #import "FBBlockStrongRelationDetector.h"
14 |
15 | #import
16 |
17 | static void byref_keep_nop(struct _block_byref_block *dst, struct _block_byref_block *src) {}
18 | static void byref_dispose_nop(struct _block_byref_block *param) {}
19 |
20 | @implementation FBBlockStrongRelationDetector
21 |
22 | - (oneway void)release
23 | {
24 | _strong = YES;
25 | }
26 |
27 | - (id)retain
28 | {
29 | return self;
30 | }
31 |
32 | + (id)alloc
33 | {
34 | FBBlockStrongRelationDetector *obj = [super alloc];
35 |
36 | // Setting up block fakery
37 | obj->forwarding = obj;
38 | obj->byref_keep = byref_keep_nop;
39 | obj->byref_dispose = byref_dispose_nop;
40 |
41 | return obj;
42 | }
43 |
44 | - (oneway void)trueRelease
45 | {
46 | [super release];
47 | }
48 |
49 | - (void *)forwarding
50 | {
51 | return self->forwarding;
52 | }
53 |
54 | @end
55 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/FBClassStrongLayout.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #ifdef __cplusplus
12 | extern "C" {
13 | #endif
14 |
15 | @protocol FBObjectReference;
16 | /**
17 | @return An array of id objects that will have *all* references
18 | the object has (also not retained ivars, structs etc.)
19 | */
20 | NSArray> *_Nonnull FBGetClassReferences(__unsafe_unretained Class _Nullable aCls);
21 |
22 | /**
23 | @return An array of id objects that will have only those references
24 | that are retained by the object. It also goes through parent classes.
25 | */
26 | NSArray> *_Nonnull FBGetObjectStrongReferences(id _Nullable obj,
27 | NSMutableDictionary> *> *_Nullable layoutCache);
28 |
29 | #ifdef __cplusplus
30 | }
31 | #endif
32 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/FBClassStrongLayoutHelpers.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | /**
18 | Returns object on given index for obj in its ivar layout.
19 | It will try to map the object to an Objective-C object, so if the index
20 | is invalid it will crash with BAD_ACCESS.
21 |
22 | It cannot be called under ARC.
23 | */
24 | id FBExtractObjectByOffset(id obj, NSUInteger index);
25 |
26 | #ifdef __cplusplus
27 | }
28 | #endif
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/FBClassStrongLayoutHelpers.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #if __has_feature(objc_arc)
10 | #error This file must be compiled with MRR. Use -fno-objc-arc flag.
11 | #endif
12 |
13 | #import "FBClassStrongLayoutHelpers.h"
14 |
15 | id FBExtractObjectByOffset(id obj, NSUInteger index) {
16 | id *idx = (id *)((uintptr_t)obj + (index * sizeof(void *)));
17 |
18 | return *idx;
19 | }
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/Parser/BaseType.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import
12 |
13 | namespace FB { namespace RetainCycleDetector { namespace Parser {
14 | class BaseType {
15 | public:
16 | virtual ~BaseType() {}
17 | };
18 |
19 | class Unresolved: public BaseType {
20 | public:
21 | std::string value;
22 | Unresolved(std::string value): value(value) {}
23 | Unresolved(Unresolved&&) = default;
24 | Unresolved &operator=(Unresolved&&) = default;
25 |
26 | Unresolved(const Unresolved&) = delete;
27 | Unresolved &operator=(const Unresolved&) = delete;
28 | };
29 | } } }
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/Parser/Type.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import
12 | #import
13 | #import
14 |
15 | #import "BaseType.h"
16 |
17 | namespace FB { namespace RetainCycleDetector { namespace Parser {
18 | class Type: public BaseType {
19 | public:
20 | const std::string name;
21 | const std::string typeEncoding;
22 |
23 | Type(const std::string &name,
24 | const std::string &typeEncoding): name(name), typeEncoding(typeEncoding) {}
25 | Type(Type&&) = default;
26 |
27 | Type(const Type&) = delete;
28 | Type &operator=(const Type&) = delete;
29 |
30 | virtual void passTypePath(std::vector typePath) {
31 | this->typePath = typePath;
32 | }
33 |
34 | std::vector typePath;
35 | };
36 | } } }
37 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/Reference/FBIvarReference.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import
12 |
13 | #import "FBObjectReference.h"
14 |
15 | typedef NS_ENUM(NSUInteger, FBType) {
16 | FBObjectType,
17 | FBBlockType,
18 | FBStructType,
19 | FBUnknownType,
20 | };
21 |
22 | @interface FBIvarReference : NSObject
23 |
24 | @property (nonatomic, copy, readonly, nullable) NSString *name;
25 | @property (nonatomic, readonly) FBType type;
26 | @property (nonatomic, readonly) ptrdiff_t offset;
27 | @property (nonatomic, readonly) NSUInteger index;
28 | @property (nonatomic, readonly, nonnull) Ivar ivar;
29 |
30 | - (nonnull instancetype)initWithIvar:(nonnull Ivar)ivar;
31 |
32 | @end
33 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/Reference/FBObjectInStructReference.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import
10 |
11 | #import "FBObjectReference.h"
12 |
13 | /**
14 | Struct object is an Objective-C object that is created inside
15 | a struct. In Objective-C++ that object will be retained
16 | by an object owning the struct, therefore will be listed in
17 | ivar layout for the class.
18 | */
19 |
20 | @interface FBObjectInStructReference : NSObject
21 |
22 | - (nonnull instancetype)initWithIndex:(NSUInteger)index
23 | namePath:(nullable NSArray *)namePath;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FBRetainCycleDetector/Layout/Classes/Reference/FBObjectInStructReference.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2016-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 |
9 | #import "FBObjectInStructReference.h"
10 |
11 | #import "FBClassStrongLayoutHelpers.h"
12 |
13 | @implementation FBObjectInStructReference
14 | {
15 | NSUInteger _index;
16 | NSArray *_namePath;
17 | }
18 |
19 | - (instancetype)initWithIndex:(NSUInteger)index
20 | namePath:(NSArray *)namePath
21 | {
22 | if (self = [super init]) {
23 | _index = index;
24 | _namePath = namePath;
25 | }
26 |
27 | return self;
28 | }
29 |
30 | - (NSString *)description
31 | {
32 | return [NSString stringWithFormat:@"[in_struct; index: %td]", _index];
33 | }
34 |
35 | #pragma mark - FBObjectReference
36 |
37 | - (id)objectReferenceFromObject:(id)object
38 | {
39 | return FBExtractObjectByOffset(object, _index);
40 | }
41 |
42 | - (NSUInteger)indexInIvarLayout
43 | {
44 | return _index;
45 | }
46 |
47 | - (NSArray *)namePath
48 | {
49 | return _namePath;
50 | }
51 |
52 | @end
53 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Controllers/FLEXNavigationController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNavigationController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 1/30/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXNavigationController : UINavigationController
14 |
15 | + (instancetype)withRootViewController:(UIViewController *)rootVC;
16 |
17 | @end
18 |
19 | @interface UINavigationController (FLEXObjectExploring)
20 |
21 | /// Push an object explorer view controller onto the navigation stack
22 | - (void)pushExplorerForObject:(id)object;
23 | /// Push an object explorer view controller onto the navigation stack
24 | - (void)pushExplorerForObject:(id)object animated:(BOOL)animated;
25 |
26 | @end
27 |
28 | NS_ASSUME_NONNULL_END
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/FLEXSingleRowSection.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSingleRowSection.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 9/25/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewSection.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// A section providing a specific single row.
14 | ///
15 | /// You may optionally provide a view controller to push when the row
16 | /// is selected, or an action to perform when it is selected.
17 | /// Which one is used first is up to the table view data source.
18 | @interface FLEXSingleRowSection : FLEXTableViewSection
19 |
20 | /// @param reuseIdentifier if nil, kFLEXDefaultCell is used.
21 | + (instancetype)title:(nullable NSString *)sectionTitle
22 | reuse:(nullable NSString *)reuseIdentifier
23 | cell:(void(^)(__kindof UITableViewCell *cell))cellConfiguration;
24 |
25 | @property (nullable, nonatomic) UIViewController *pushOnSelection;
26 | @property (nullable, nonatomic) void (^selectionAction)(UIViewController *host);
27 | /// Called to determine whether the single row should display itself or not.
28 | @property (nonatomic) BOOL (^filterMatcher)(NSString *filterText);
29 |
30 | @end
31 |
32 | NS_ASSUME_NONNULL_END
33 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Carousel/FLEXCarouselCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXCarouselCell.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 7/17/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXCarouselCell : UICollectionViewCell
12 |
13 | @property (nonatomic, copy) NSString *title;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Carousel/FLEXScopeCarousel.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXScopeCarousel.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 7/17/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /// Only use on iOS 10 and up. Requires iOS 10 APIs for calculating row sizes.
12 | @interface FLEXScopeCarousel : UIControl
13 |
14 | @property (nonatomic, copy) NSArray *items;
15 | @property (nonatomic) NSInteger selectedIndex;
16 | @property (nonatomic) void(^selectedIndexChangedAction)(NSInteger idx);
17 |
18 | - (void)registerBlockForDynamicTypeChanges:(void(^)(FLEXScopeCarousel *))handler;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXCodeFontCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXCodeFontCell.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 12/27/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXMultilineTableViewCell.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXCodeFontCell : FLEXMultilineDetailTableViewCell
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXCodeFontCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXCodeFontCell.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 12/27/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXCodeFontCell.h"
10 | #import "UIFont+FLEX.h"
11 |
12 | @implementation FLEXCodeFontCell
13 |
14 | - (void)postInit {
15 | [super postInit];
16 |
17 | self.titleLabel.font = UIFont.flex_codeFont;
18 | self.subtitleLabel.font = UIFont.flex_codeFont;
19 |
20 | self.titleLabel.adjustsFontSizeToFitWidth = YES;
21 | self.titleLabel.minimumScaleFactor = 0.9;
22 | self.subtitleLabel.adjustsFontSizeToFitWidth = YES;
23 | self.subtitleLabel.minimumScaleFactor = 0.75;
24 |
25 | // Disable mutli-line pre iOS 11
26 | if (@available(iOS 11, *)) {
27 | self.subtitleLabel.numberOfLines = 5;
28 | } else {
29 | self.titleLabel.numberOfLines = 1;
30 | self.subtitleLabel.numberOfLines = 1;
31 | }
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXKeyValueTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXKeyValueTableViewCell.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/23/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewCell.h"
10 |
11 | @interface FLEXKeyValueTableViewCell : FLEXTableViewCell
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXKeyValueTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXKeyValueTableViewCell.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/23/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXKeyValueTableViewCell.h"
10 |
11 | @implementation FLEXKeyValueTableViewCell
12 |
13 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
14 | return [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier];
15 | }
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXMultilineTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMultilineTableViewCell.h
3 | // FLEX
4 | //
5 | // Created by Ryan Olson on 2/13/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewCell.h"
10 |
11 | /// A cell with both labels set to be multi-line capable.
12 | @interface FLEXMultilineTableViewCell : FLEXTableViewCell
13 |
14 | + (CGFloat)preferredHeightWithAttributedText:(NSAttributedString *)attributedText
15 | maxWidth:(CGFloat)contentViewWidth
16 | style:(UITableViewStyle)style
17 | showsAccessory:(BOOL)showsAccessory;
18 |
19 | @end
20 |
21 | /// A \c FLEXMultilineTableViewCell initialized with \c UITableViewCellStyleSubtitle
22 | @interface FLEXMultilineDetailTableViewCell : FLEXMultilineTableViewCell
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXSubtitleTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSubtitleTableViewCell.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 4/17/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewCell.h"
10 |
11 | /// A cell initialized with \c UITableViewCellStyleSubtitle
12 | @interface FLEXSubtitleTableViewCell : FLEXTableViewCell
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXSubtitleTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSubtitleTableViewCell.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 4/17/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXSubtitleTableViewCell.h"
10 |
11 | @implementation FLEXSubtitleTableViewCell
12 |
13 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
14 | return [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];
15 | }
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Core/Views/Cells/FLEXTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXTableViewCell.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 4/17/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXTableViewCell : UITableViewCell
12 |
13 | /// Use this instead of .textLabel
14 | @property (nonatomic, readonly) UILabel *titleLabel;
15 | /// Use this instead of .detailTextLabel
16 | @property (nonatomic, readonly) UILabel *subtitleLabel;
17 |
18 | /// Subclasses can override this instead of initializers to
19 | /// perform additional initialization without lots of boilerplate.
20 | /// Remember to call super!
21 | - (void)postInit;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputColorView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputColorView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/30/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputView.h"
10 |
11 | @interface FLEXArgumentInputColorView : FLEXArgumentInputView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputDateView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputDataView.h
3 | // Flipboard
4 | //
5 | // Created by Daniel Rodriguez Troitino on 2/14/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputView.h"
10 |
11 | @interface FLEXArgumentInputDateView : FLEXArgumentInputView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputFontView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputFontView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/28/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputView.h"
10 |
11 | @interface FLEXArgumentInputFontView : FLEXArgumentInputView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputFontsPickerView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputFontsPickerView.h
3 | // FLEX
4 | //
5 | // Created by 啟倫 陳 on 2014/7/27.
6 | // Copyright (c) 2014年 f. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputTextView.h"
10 |
11 | @interface FLEXArgumentInputFontsPickerView : FLEXArgumentInputTextView
12 | @end
13 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputNotSupportedView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputNotSupportedView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/18/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputTextView.h"
10 |
11 | @interface FLEXArgumentInputNotSupportedView : FLEXArgumentInputTextView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputNotSupportedView.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputNotSupportedView.m
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/18/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputNotSupportedView.h"
10 | #import "FLEXColor.h"
11 |
12 | @implementation FLEXArgumentInputNotSupportedView
13 |
14 | - (instancetype)initWithArgumentTypeEncoding:(const char *)typeEncoding {
15 | self = [super initWithArgumentTypeEncoding:typeEncoding];
16 | if (self) {
17 | self.inputTextView.userInteractionEnabled = NO;
18 | self.inputTextView.backgroundColor = [FLEXColor secondaryGroupedBackgroundColorWithAlpha:0.5];
19 | self.inputPlaceholderText = @"nil (type not supported)";
20 | self.targetSize = FLEXArgumentInputViewSizeSmall;
21 | }
22 | return self;
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputNumberView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputNumberView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/15/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputTextView.h"
10 |
11 | @interface FLEXArgumentInputNumberView : FLEXArgumentInputTextView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputObjectView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputObjectView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/15/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputTextView.h"
10 |
11 | @interface FLEXArgumentInputObjectView : FLEXArgumentInputTextView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputStringView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputStringView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/28/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputTextView.h"
10 |
11 | @interface FLEXArgumentInputStringView : FLEXArgumentInputTextView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputStructView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputStructView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/16/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputView.h"
10 |
11 | @interface FLEXArgumentInputStructView : FLEXArgumentInputView
12 |
13 | /// Enable displaying ivar names for custom struct types
14 | + (void)registerFieldNames:(NSArray *)names forTypeEncoding:(NSString *)typeEncoding;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputSwitchView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputSwitchView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/16/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXArgumentInputView.h"
10 |
11 | @interface FLEXArgumentInputSwitchView : FLEXArgumentInputView
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/ArgumentInputViews/FLEXArgumentInputTextView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputTextView.h
3 | // FLEXInjected
4 | //
5 | // Created by Ryan Olson on 6/15/14.
6 | //
7 | //
8 |
9 | #import "FLEXArgumentInputView.h"
10 |
11 | @interface FLEXArgumentInputTextView : FLEXArgumentInputView
12 |
13 | // For subclass eyes only
14 |
15 | @property (nonatomic, readonly) UITextView *inputTextView;
16 | @property (nonatomic) NSString *inputPlaceholderText;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/FLEXArgumentInputViewFactory.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXArgumentInputViewFactory.h
3 | // FLEXInjected
4 | //
5 | // Created by Ryan Olson on 6/15/14.
6 | //
7 | //
8 |
9 | #import
10 | #import "FLEXArgumentInputSwitchView.h"
11 |
12 | @interface FLEXArgumentInputViewFactory : NSObject
13 |
14 | /// Forwards to argumentInputViewForTypeEncoding:currentValue: with a nil currentValue.
15 | + (FLEXArgumentInputView *)argumentInputViewForTypeEncoding:(const char *)typeEncoding;
16 |
17 | /// The main factory method for making argument input view subclasses that are the best fit for the type.
18 | + (FLEXArgumentInputView *)argumentInputViewForTypeEncoding:(const char *)typeEncoding currentValue:(id)currentValue;
19 |
20 | /// A way to check if we should try editing a filed given its type encoding and value.
21 | /// Useful when deciding whether to edit or explore a property, ivar, or NSUserDefaults value.
22 | + (BOOL)canEditFieldWithTypeEncoding:(const char *)typeEncoding currentValue:(id)currentValue;
23 |
24 | /// Enable displaying ivar names for custom struct types
25 | + (void)registerFieldNames:(NSArray *)names forTypeEncoding:(NSString *)typeEncoding;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/FLEXDefaultEditorViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXDefaultEditorViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 5/23/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXFieldEditorViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXDefaultEditorViewController : FLEXVariableEditorViewController
14 |
15 | + (instancetype)target:(NSUserDefaults *)defaults key:(NSString *)key commitHandler:(void(^_Nullable)(void))onCommit;
16 |
17 | + (BOOL)canEditDefaultWithValue:(nullable id)currentValue;
18 |
19 | @end
20 |
21 | NS_ASSUME_NONNULL_END
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/FLEXFieldEditorView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXFieldEditorView.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 5/16/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class FLEXArgumentInputView;
12 |
13 | @interface FLEXFieldEditorView : UIView
14 |
15 | @property (nonatomic, copy) NSString *targetDescription;
16 | @property (nonatomic, copy) NSString *fieldDescription;
17 |
18 | @property (nonatomic, copy) NSArray *argumentInputViews;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/FLEXFieldEditorViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXFieldEditorViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 11/22/18.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXVariableEditorViewController.h"
10 | #import "FLEXProperty.h"
11 | #import "FLEXIvar.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface FLEXFieldEditorViewController : FLEXVariableEditorViewController
16 |
17 | /// @return nil if the property is readonly or if the type is unsupported
18 | + (nullable instancetype)target:(id)target property:(FLEXProperty *)property commitHandler:(void(^_Nullable)(void))onCommit;
19 | /// @return nil if the ivar type is unsupported
20 | + (nullable instancetype)target:(id)target ivar:(FLEXIvar *)ivar commitHandler:(void(^_Nullable)(void))onCommit;
21 |
22 | /// Subclasses can change the button title via the \c title property
23 | @property (nonatomic, readonly) UIBarButtonItem *getterButton;
24 |
25 | - (void)getterButtonPressed:(id)sender;
26 |
27 | @end
28 |
29 | NS_ASSUME_NONNULL_END
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Editing/FLEXMethodCallingViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMethodCallingViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 5/23/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXVariableEditorViewController.h"
10 | #import "FLEXMethod.h"
11 |
12 | @interface FLEXMethodCallingViewController : FLEXVariableEditorViewController
13 |
14 | + (instancetype)target:(id)target method:(FLEXMethod *)method;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/Bookmarks/FLEXBookmarkManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXBookmarkManager.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/6/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXBookmarkManager : NSObject
14 |
15 | @property (nonatomic, readonly, class) NSMutableArray *bookmarks;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/Bookmarks/FLEXBookmarkManager.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXBookmarkManager.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/6/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXBookmarkManager.h"
10 |
11 | static NSMutableArray *kFLEXBookmarkManagerBookmarks = nil;
12 |
13 | @implementation FLEXBookmarkManager
14 |
15 | + (void)initialize {
16 | if (self == [FLEXBookmarkManager class]) {
17 | kFLEXBookmarkManagerBookmarks = [NSMutableArray new];
18 | }
19 | }
20 |
21 | + (NSMutableArray *)bookmarks {
22 | return kFLEXBookmarkManagerBookmarks;
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/Bookmarks/FLEXBookmarksViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXBookmarksViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/6/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXBookmarksViewController : FLEXTableViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/FLEXViewControllersViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXViewControllersViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 2/13/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXFilteringTableViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXViewControllersViewController : FLEXFilteringTableViewController
14 |
15 | + (instancetype)controllersForViews:(NSArray *)views;
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/FLEXWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXWindow.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 4/13/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @protocol FLEXWindowEventDelegate
12 |
13 | - (BOOL)shouldHandleTouchAtPoint:(CGPoint)pointInWindow;
14 | - (BOOL)canBecomeKeyWindow;
15 |
16 | @end
17 |
18 | #pragma mark -
19 | @interface FLEXWindow : UIWindow
20 |
21 | @property (nonatomic, weak) id eventDelegate;
22 |
23 | /// Tracked so we can restore the key window after dismissing a modal.
24 | /// We need to become key after modal presentation so we can correctly capture input.
25 | /// If we're just showing the toolbar, we want the main app's window to remain key
26 | /// so that we don't interfere with input, status bar, etc.
27 | @property (nonatomic, readonly) UIWindow *previousKeyWindow;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/FLEXWindowManagerController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXWindowManagerController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/6/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FLEXWindowManagerController : FLEXTableViewController
14 |
15 | @end
16 |
17 | NS_ASSUME_NONNULL_END
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ExplorerInterface/Tabs/FLEXTabsViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXTabsViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/4/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FLEXTabsViewController : FLEXTableViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/FLEX-Categories.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEX-Categories.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/12/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "UIBarButtonItem+FLEX.h"
10 | #import "CALayer+FLEX.h"
11 | #import "UIFont+FLEX.h"
12 | #import "UIGestureRecognizer+Blocks.h"
13 | #import "UIPasteboard+FLEX.h"
14 | #import "UIMenu+FLEX.h"
15 | #import "UITextField+Range.h"
16 |
17 | #import "NSObject+FLEX_Reflection.h"
18 | #import "NSArray+FLEX.h"
19 | #import "NSUserDefaults+FLEX.h"
20 | #import "NSTimer+FLEX.h"
21 | #import "NSDateFormatter+FLEX.h"
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/FLEX-Core.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEX-Core.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/11/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXFilteringTableViewController.h"
10 | #import "FLEXNavigationController.h"
11 | #import "FLEXTableViewController.h"
12 | #import "FLEXTableView.h"
13 |
14 | #import "FLEXSingleRowSection.h"
15 | #import "FLEXTableViewSection.h"
16 |
17 | #import "FLEXCodeFontCell.h"
18 | #import "FLEXSubtitleTableViewCell.h"
19 | #import "FLEXTableViewCell.h"
20 | #import "FLEXMultilineTableViewCell.h"
21 | #import "FLEXKeyValueTableViewCell.h"
22 |
23 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/FLEX-ObjectExploring.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEX-ObjectExploring.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/11/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXObjectExplorerFactory.h"
10 | #import "FLEXObjectExplorerViewController.h"
11 |
12 | #import "FLEXObjectExplorer.h"
13 |
14 | #import "FLEXShortcut.h"
15 | #import "FLEXShortcutsSection.h"
16 |
17 | #import "FLEXCollectionContentSection.h"
18 | #import "FLEXColorPreviewSection.h"
19 | #import "FLEXDefaultsContentSection.h"
20 | #import "FLEXMetadataSection.h"
21 | #import "FLEXMutableListSection.h"
22 | #import "FLEXObjectInfoSection.h"
23 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/FLEX-Runtime.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEX-Runtime.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/11/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXObjcInternal.h"
10 | #import "FLEXSwiftInternal.h"
11 | #import "FLEXRuntimeSafety.h"
12 | #import "FLEXBlockDescription.h"
13 | #import "FLEXTypeEncodingParser.h"
14 |
15 | #import "FLEXMirror.h"
16 | #import "FLEXProtocol.h"
17 | #import "FLEXProperty.h"
18 | #import "FLEXIvar.h"
19 | #import "FLEXMethodBase.h"
20 | #import "FLEXMethod.h"
21 | #import "FLEXPropertyAttributes.h"
22 | #import "FLEXRuntime+Compare.h"
23 | #import "FLEXRuntime+UIKitHelpers.h"
24 | #import "FLEXMetadataExtras.h"
25 |
26 | #import "FLEXProtocolBuilder.h"
27 | #import "FLEXClassBuilder.h"
28 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEX.h
3 | // FLEX
4 | //
5 | // Created by Eric Horacek on 7/18/15.
6 | // Modified by Tanner Bennett on 3/12/20.
7 | // Copyright (c) 2020 FLEX Team. All rights reserved.
8 | //
9 |
10 | #import "FLEXManager.h"
11 | #import "FLEXManager+Extensibility.h"
12 | #import "FLEXManager+Networking.h"
13 |
14 | #import "FLEXExplorerToolbar.h"
15 | #import "FLEXExplorerToolbarItem.h"
16 | #import "FLEXGlobalsEntry.h"
17 |
18 | #import "FLEX-Core.h"
19 | #import "FLEX-Runtime.h"
20 | #import "FLEX-Categories.h"
21 | #import "FLEX-ObjectExploring.h"
22 |
23 | #import "FLEXMacros.h"
24 | #import "FLEXAlert.h"
25 | #import "FLEXResources.h"
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXDBQueryRowCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXDBQueryRowCell.h
3 | // FLEX
4 | //
5 | // Created by Peng Tao on 15/11/24.
6 | // Copyright © 2015年 f. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class FLEXDBQueryRowCell;
12 |
13 | extern NSString * const kFLEXDBQueryRowCellReuse;
14 |
15 | @protocol FLEXDBQueryRowCellLayoutSource
16 |
17 | - (CGFloat)dbQueryRowCell:(FLEXDBQueryRowCell *)dbQueryRowCell minXForColumn:(NSUInteger)column;
18 | - (CGFloat)dbQueryRowCell:(FLEXDBQueryRowCell *)dbQueryRowCell widthForColumn:(NSUInteger)column;
19 |
20 | @end
21 |
22 | @interface FLEXDBQueryRowCell : UITableViewCell
23 |
24 | /// An array of NSString, NSNumber, or NSData objects
25 | @property (nonatomic) NSArray *data;
26 | @property (nonatomic, weak) id layoutSource;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXDatabaseManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // PTDatabaseManager.h
3 | // Derived from:
4 | //
5 | // FMDatabase.h
6 | // FMDB( https://github.com/ccgus/fmdb )
7 | //
8 | // Created by Peng Tao on 15/11/23.
9 | //
10 | // Licensed to Flying Meat Inc. under one or more contributor license agreements.
11 | // See the LICENSE file distributed with this work for the terms under
12 | // which Flying Meat Inc. licenses this file to you.
13 |
14 | #import
15 | #import "FLEXSQLResult.h"
16 |
17 | /// Conformers should automatically open and close the database
18 | @protocol FLEXDatabaseManager
19 |
20 | @required
21 |
22 | /// @return \c nil if the database couldn't be opened
23 | + (instancetype)managerForDatabase:(NSString *)path;
24 |
25 | /// @return a list of all table names
26 | - (NSArray *)queryAllTables;
27 | - (NSArray *)queryAllColumnsOfTable:(NSString *)tableName;
28 | - (NSArray *)queryAllDataInTable:(NSString *)tableName;
29 |
30 | @optional
31 |
32 | - (NSArray *)queryRowIDsInTable:(NSString *)tableName;
33 | - (FLEXSQLResult *)executeStatement:(NSString *)SQLStatement;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXRealmDatabaseManager.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRealmDatabaseManager.h
3 | // FLEX
4 | //
5 | // Created by Tim Oliver on 28/01/2016.
6 | // Copyright © 2016 Realm. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "FLEXDatabaseManager.h"
11 |
12 | @interface FLEXRealmDatabaseManager : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXTableColumnHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXTableContentHeaderCell.h
3 | // FLEX
4 | //
5 | // Created by Peng Tao on 15/11/26.
6 | // Copyright © 2015年 f. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef NS_ENUM(NSUInteger, FLEXTableColumnHeaderSortType) {
12 | FLEXTableColumnHeaderSortTypeNone = 0,
13 | FLEXTableColumnHeaderSortTypeAsc,
14 | FLEXTableColumnHeaderSortTypeDesc,
15 | };
16 |
17 | NS_INLINE FLEXTableColumnHeaderSortType FLEXNextTableColumnHeaderSortType(
18 | FLEXTableColumnHeaderSortType current) {
19 | switch (current) {
20 | case FLEXTableColumnHeaderSortTypeAsc:
21 | return FLEXTableColumnHeaderSortTypeDesc;
22 | case FLEXTableColumnHeaderSortTypeNone:
23 | case FLEXTableColumnHeaderSortTypeDesc:
24 | return FLEXTableColumnHeaderSortTypeAsc;
25 | }
26 |
27 | return FLEXTableColumnHeaderSortTypeNone;
28 | }
29 |
30 | @interface FLEXTableColumnHeader : UIView
31 |
32 | @property (nonatomic) NSInteger index;
33 | @property (nonatomic, readonly) UILabel *titleLabel;
34 |
35 | @property (nonatomic) FLEXTableColumnHeaderSortType sortType;
36 |
37 | @end
38 |
39 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXTableLeftCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXTableLeftCell.h
3 | // FLEX
4 | //
5 | // Created by Peng Tao on 15/11/24.
6 | // Copyright © 2015年 f. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXTableLeftCell : UITableViewCell
12 |
13 | @property (nonatomic) UILabel *titlelabel;
14 |
15 | + (instancetype)cellWithTableView:(UITableView *)tableView;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXTableLeftCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXTableLeftCell.m
3 | // FLEX
4 | //
5 | // Created by Peng Tao on 15/11/24.
6 | // Copyright © 2015年 f. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableLeftCell.h"
10 |
11 | @implementation FLEXTableLeftCell
12 |
13 | + (instancetype)cellWithTableView:(UITableView *)tableView {
14 | static NSString *identifier = @"FLEXTableLeftCell";
15 | FLEXTableLeftCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
16 |
17 | if (!cell) {
18 | cell = [[FLEXTableLeftCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
19 | UILabel *textLabel = [UILabel new];
20 | textLabel.textAlignment = NSTextAlignmentCenter;
21 | textLabel.font = [UIFont systemFontOfSize:13.0];
22 | [cell.contentView addSubview:textLabel];
23 | cell.titlelabel = textLabel;
24 | }
25 |
26 | return cell;
27 | }
28 |
29 | - (void)layoutSubviews {
30 | [super layoutSubviews];
31 | self.titlelabel.frame = self.contentView.frame;
32 | }
33 | @end
34 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXTableListViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PTTableListViewController.h
3 | // PTDatabaseReader
4 | //
5 | // Created by Peng Tao on 15/11/23.
6 | // Copyright © 2015年 Peng Tao. All rights reserved.
7 | //
8 |
9 | #import "FLEXFilteringTableViewController.h"
10 |
11 | @interface FLEXTableListViewController : FLEXFilteringTableViewController
12 |
13 | + (BOOL)supportsExtension:(NSString *)extension;
14 | - (instancetype)initWithPath:(NSString *)path;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/FLEXTableRowDataViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXTableRowDataViewController.h
3 | // FLEX
4 | //
5 | // Created by Chaoshuai Lu on 7/8/20.
6 | //
7 |
8 | #import "FLEXFilteringTableViewController.h"
9 |
10 | @interface FLEXTableRowDataViewController : FLEXFilteringTableViewController
11 |
12 | + (instancetype)rows:(NSDictionary *)rowData;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/DatabaseBrowser/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | FMDB
3 | Copyright (c) 2008-2014 Flying Meat Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FLEXAPNSViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXAPNSViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 6/28/22.
6 | // Copyright © 2022 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXGlobalsEntry.h"
10 | #import "FLEXFilteringTableViewController.h"
11 |
12 | @interface FLEXAPNSViewController : FLEXFilteringTableViewController
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FLEXAddressExplorerCoordinator.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXAddressExplorerCoordinator.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 7/10/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXGlobalsEntry.h"
10 |
11 | @interface FLEXAddressExplorerCoordinator : NSObject
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FLEXCookiesViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXCookiesViewController.h
3 | // FLEX
4 | //
5 | // Created by Rich Robinson on 19/10/2015.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXGlobalsEntry.h"
10 | #import "FLEXFilteringTableViewController.h"
11 |
12 | @interface FLEXCookiesViewController : FLEXFilteringTableViewController
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FLEXLiveObjectsController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXLiveObjectsController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 5/28/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 | #import "FLEXGlobalsEntry.h"
11 |
12 | @interface FLEXLiveObjectsController : FLEXTableViewController
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FLEXObjectListViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXObjectListViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 5/28/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXFilteringTableViewController.h"
10 |
11 | @interface FLEXObjectListViewController : FLEXFilteringTableViewController
12 |
13 | /// This will either return a list of the instances, or take you straight
14 | /// to the explorer itself if there is only one instance.
15 | + (UIViewController *)instancesOfClassWithName:(NSString *)className retained:(BOOL)retain;
16 | + (instancetype)subclassesOfClassWithName:(NSString *)className;
17 | + (instancetype)objectsWithReferencesToObject:(id)object retained:(BOOL)retain;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FLEXWebViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXWebViewController.m
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/10/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXWebViewController : UIViewController
12 |
13 | - (id)initWithURL:(NSURL *)url;
14 | - (id)initWithText:(NSString *)text;
15 |
16 | + (BOOL)supportsPathExtension:(NSString *)extension;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FileBrowser/FLEXActivityViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXActivityViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 5/26/22.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | /// Wraps UIActivityViewController so that it can't dismiss other view controllers
13 | @interface FLEXActivityViewController : UIActivityViewController
14 |
15 | /// @param source A \c UIVIew, \c UIBarButtonItem, or \c NSValue representing a source rect.
16 | + (id)sharing:(NSArray *)items source:(nullable id)source;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FileBrowser/FLEXFileBrowserController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXFileBrowserController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/9/14.
6 | // Based on previous work by Evan Doll
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 | #import "FLEXGlobalsEntry.h"
11 | #import "FLEXFileBrowserSearchOperation.h"
12 |
13 | @interface FLEXFileBrowserController : FLEXTableViewController
14 |
15 | + (instancetype)path:(NSString *)path;
16 | - (id)initWithPath:(NSString *)path;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/FileBrowser/FLEXFileBrowserSearchOperation.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXFileBrowserSearchOperation.h
3 | // FLEX
4 | //
5 | // Created by 啟倫 陳 on 2014/8/4.
6 | // Copyright (c) 2014年 f. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @protocol FLEXFileBrowserSearchOperationDelegate;
12 |
13 | @interface FLEXFileBrowserSearchOperation : NSOperation
14 |
15 | @property (nonatomic, weak) id delegate;
16 |
17 | - (id)initWithPath:(NSString *)currentPath searchString:(NSString *)searchString;
18 |
19 | @end
20 |
21 | @protocol FLEXFileBrowserSearchOperationDelegate
22 |
23 | - (void)fileBrowserSearchOperationResult:(NSArray *)searchResult size:(uint64_t)size;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/Globals/FLEXGlobalsSection.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXGlobalsSection.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 7/11/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewSection.h"
10 | #import "FLEXGlobalsEntry.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface FLEXGlobalsSection : FLEXTableViewSection
15 |
16 | + (instancetype)title:(NSString *)title rows:(NSArray *)rows;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/Globals/FLEXGlobalsViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXGlobalsViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 2014-05-03.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXFilteringTableViewController.h"
10 | @protocol FLEXGlobalsTableViewControllerDelegate;
11 |
12 | typedef NS_ENUM(NSUInteger, FLEXGlobalsSectionKind) {
13 | FLEXGlobalsSectionCustom,
14 | /// NSProcessInfo, Network history, system log,
15 | /// heap, address explorer, libraries, app classes
16 | FLEXGlobalsSectionProcessAndEvents,
17 | /// Browse container, browse bundle, NSBundle.main,
18 | /// NSUserDefaults.standard, UIApplication,
19 | /// app delegate, key window, root VC, cookies
20 | FLEXGlobalsSectionAppShortcuts,
21 | /// UIPasteBoard.general, UIScreen, UIDevice
22 | FLEXGlobalsSectionMisc,
23 | FLEXGlobalsSectionCount
24 | };
25 |
26 | @interface FLEXGlobalsViewController : FLEXFilteringTableViewController
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/Keychain/FLEXKeychainViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXKeychainViewController.h
3 | // FLEX
4 | //
5 | // Created by ray on 2019/8/17.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXGlobalsEntry.h"
10 | #import "FLEXFilteringTableViewController.h"
11 |
12 | @interface FLEXKeychainViewController : FLEXFilteringTableViewController
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/Keychain/SSKeychain_LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010-2012 Sam Soffes.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/DataSources/FLEXRuntimeExporter.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRuntimeExporter.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 3/26/20.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// A class for exporting all runtime metadata to an SQLite database.
14 | //API_AVAILABLE(ios(10.0))
15 | @interface FLEXRuntimeExporter : NSObject
16 |
17 | + (void)createRuntimeDatabaseAtPath:(NSString *)path
18 | progressHandler:(void(^)(NSString *status))progress
19 | completion:(void(^)(NSString *_Nullable error))completion;
20 |
21 | + (void)createRuntimeDatabaseAtPath:(NSString *)path
22 | forImages:(nullable NSArray *)images
23 | progressHandler:(void(^)(NSString *status))progress
24 | completion:(void(^)(NSString *_Nullable error))completion;
25 |
26 |
27 | @end
28 |
29 | NS_ASSUME_NONNULL_END
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/FLEXKBToolbarButton.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXKBToolbarButton.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 6/11/17.
6 | // Copyright © 2017 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef void (^FLEXKBToolbarAction)(NSString *buttonTitle, BOOL isSuggestion);
12 |
13 |
14 | @interface FLEXKBToolbarButton : UIButton
15 |
16 | /// Set to `default` to use the system appearance on iOS 13+
17 | @property (nonatomic) UIKeyboardAppearance appearance;
18 |
19 | + (instancetype)buttonWithTitle:(NSString *)title;
20 | + (instancetype)buttonWithTitle:(NSString *)title action:(FLEXKBToolbarAction)eventHandler;
21 | + (instancetype)buttonWithTitle:(NSString *)title action:(FLEXKBToolbarAction)action forControlEvents:(UIControlEvents)controlEvents;
22 |
23 | /// Adds the event handler for the button.
24 | ///
25 | /// @param eventHandler The event handler block.
26 | /// @param controlEvents The type of event.
27 | - (void)addEventHandler:(FLEXKBToolbarAction)eventHandler forControlEvents:(UIControlEvents)controlEvents;
28 |
29 | @end
30 |
31 | @interface FLEXKBToolbarSuggestedButton : FLEXKBToolbarButton @end
32 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/FLEXKeyboardToolbar.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXKeyboardToolbar.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 6/11/17.
6 | // Copyright © 2017 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | #import "FLEXKBToolbarButton.h"
10 |
11 | @interface FLEXKeyboardToolbar : UIView
12 |
13 | + (instancetype)toolbarWithButtons:(NSArray *)buttons;
14 |
15 | @property (nonatomic) NSArray *buttons;
16 | @property (nonatomic) UIKeyboardAppearance appearance;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/FLEXObjcRuntimeViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXObjcRuntimeViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/23/17.
6 | // Copyright © 2017 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 | #import "FLEXGlobalsEntry.h"
11 |
12 | @interface FLEXObjcRuntimeViewController : FLEXTableViewController
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/FLEXRuntimeBrowserToolbar.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRuntimeBrowserToolbar.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 6/11/17.
6 | // Copyright © 2017 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | #import "FLEXKeyboardToolbar.h"
10 | #import "FLEXRuntimeKeyPath.h"
11 |
12 | @interface FLEXRuntimeBrowserToolbar : FLEXKeyboardToolbar
13 |
14 | + (instancetype)toolbarWithHandler:(FLEXKBToolbarAction)tapHandler suggestions:(NSArray *)suggestions;
15 |
16 | - (void)setKeyPath:(FLEXRuntimeKeyPath *)keyPath suggestions:(NSArray *)suggestions;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/FLEXRuntimeKeyPathTokenizer.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRuntimeKeyPathTokenizer.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/22/17.
6 | // Copyright © 2017 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | #import "FLEXRuntimeKeyPath.h"
10 |
11 | @interface FLEXRuntimeKeyPathTokenizer : NSObject
12 |
13 | + (NSUInteger)tokenCountOfString:(NSString *)userInput;
14 | + (FLEXRuntimeKeyPath *)tokenizeString:(NSString *)userInput;
15 |
16 | + (BOOL)allowedInKeyPath:(NSString *)text;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/RuntimeBrowser/FLEXSearchToken.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSearchToken.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/22/17.
6 | // Copyright © 2017 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef NS_OPTIONS(NSUInteger, TBWildcardOptions) {
12 | TBWildcardOptionsNone = 0,
13 | TBWildcardOptionsAny = 1,
14 | TBWildcardOptionsPrefix = 1 << 1,
15 | TBWildcardOptionsSuffix = 1 << 2,
16 | };
17 |
18 | /// A token may contain wildcards at one or either end,
19 | /// but not in the middle of the token (as of now).
20 | @interface FLEXSearchToken : NSObject
21 |
22 | + (instancetype)any;
23 | + (instancetype)string:(NSString *)string options:(TBWildcardOptions)options;
24 |
25 | /// Will not contain the wildcard (*) symbol
26 | @property (nonatomic, readonly) NSString *string;
27 | @property (nonatomic, readonly) TBWildcardOptions options;
28 |
29 | /// Opposite of "is ambiguous"
30 | @property (nonatomic, readonly) BOOL isAbsolute;
31 | @property (nonatomic, readonly) BOOL isAny;
32 | /// Still \c isAny, but checks that the string is empty
33 | @property (nonatomic, readonly) BOOL isEmpty;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/SystemLog/FLEXASLLogController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXASLLogController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/14/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXLogController.h"
10 |
11 | @interface FLEXASLLogController : NSObject
12 |
13 | /// Guaranteed to call back on the main thread.
14 | + (instancetype)withUpdateHandler:(void(^)(NSArray *newMessages))newMessagesHandler;
15 |
16 | - (BOOL)startMonitoring;
17 |
18 | @end
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/SystemLog/FLEXLogController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXLogController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/17/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "FLEXSystemLogMessage.h"
11 |
12 | @protocol FLEXLogController
13 |
14 | /// Guaranteed to call back on the main thread.
15 | + (instancetype)withUpdateHandler:(void(^)(NSArray *newMessages))newMessagesHandler;
16 |
17 | - (BOOL)startMonitoring;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/SystemLog/FLEXOSLogController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXOSLogController.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 12/19/18.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXLogController.h"
10 |
11 | #define FLEXOSLogAvailable() (NSProcessInfo.processInfo.operatingSystemVersion.majorVersion >= 10)
12 |
13 | /// The log controller used for iOS 10 and up.
14 | @interface FLEXOSLogController : NSObject
15 |
16 | + (instancetype)withUpdateHandler:(void(^)(NSArray *newMessages))newMessagesHandler;
17 |
18 | - (BOOL)startMonitoring;
19 |
20 | /// Whether log messages are to be recorded and kept in-memory in the background.
21 | /// You do not need to initialize this value, only change it.
22 | @property (nonatomic) BOOL persistent;
23 | /// Used mostly internally, but also used by the log VC to persist messages
24 | /// that were created prior to enabling persistence.
25 | @property (nonatomic) NSMutableArray *messages;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/SystemLog/FLEXSystemLogCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSystemLogCell.h
3 | // FLEX
4 | //
5 | // Created by Ryan Olson on 1/25/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewCell.h"
10 |
11 | @class FLEXSystemLogMessage;
12 |
13 | extern NSString *const kFLEXSystemLogCellIdentifier;
14 |
15 | @interface FLEXSystemLogCell : FLEXTableViewCell
16 |
17 | @property (nonatomic) FLEXSystemLogMessage *logMessage;
18 | @property (nonatomic, copy) NSString *highlightedText;
19 |
20 | + (NSString *)displayedTextForLogMessage:(FLEXSystemLogMessage *)logMessage;
21 | + (CGFloat)preferredHeightForLogMessage:(FLEXSystemLogMessage *)logMessage inWidth:(CGFloat)width;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/SystemLog/FLEXSystemLogMessage.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSystemLogMessage.h
3 | // FLEX
4 | //
5 | // Created by Ryan Olson on 1/25/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "ActivityStreamAPI.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | @interface FLEXSystemLogMessage : NSObject
16 |
17 | + (instancetype)logMessageFromASLMessage:(aslmsg)aslMessage;
18 | + (instancetype)logMessageFromDate:(NSDate *)date text:(NSString *)text;
19 |
20 | // ASL specific properties
21 | @property (nonatomic, readonly, nullable) NSString *sender;
22 | @property (nonatomic, readonly, nullable) aslmsg aslMessage;
23 |
24 | @property (nonatomic, readonly) NSDate *date;
25 | @property (nonatomic, readonly) NSString *messageText;
26 | @property (nonatomic, readonly) long long messageID;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/GlobalStateExplorers/SystemLog/FLEXSystemLogViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSystemLogViewController.h
3 | // FLEX
4 | //
5 | // Created by Ryan Olson on 1/19/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXFilteringTableViewController.h"
10 | #import "FLEXGlobalsEntry.h"
11 |
12 | @interface FLEXSystemLogViewController : FLEXFilteringTableViewController
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Manager/Private/FLEXManager+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXManager+Private.h
3 | // PebbleApp
4 | //
5 | // Created by Javier Soto on 7/26/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXManager.h"
10 | #import "FLEXWindow.h"
11 |
12 | @class FLEXGlobalsEntry, FLEXExplorerViewController;
13 |
14 | @interface FLEXManager (Private)
15 |
16 | @property (nonatomic, readonly) FLEXWindow *explorerWindow;
17 | @property (nonatomic, readonly) FLEXExplorerViewController *explorerViewController;
18 |
19 | /// An array of FLEXGlobalsEntry objects that have been registered by the user.
20 | @property (nonatomic, readonly) NSMutableArray *userGlobalEntries;
21 | @property (nonatomic, readonly) NSMutableDictionary *customContentTypeViewers;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/FLEXHTTPTransactionDetailController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXHTTPTransactionDetailController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 2/10/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class FLEXHTTPTransaction;
12 |
13 | @interface FLEXHTTPTransactionDetailController : UITableViewController
14 |
15 | + (instancetype)withTransaction:(FLEXHTTPTransaction *)transaction;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/FLEXMITMDataSource.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMITMDataSource.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/22/21.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface FLEXMITMDataSource<__covariant TransactionType> : NSObject
13 |
14 | + (instancetype)dataSourceWithProvider:(NSArray *(^)(void))future;
15 |
16 | /// Whether or not the data in \c transactions and \c bytesReceived are actually filtered yet or not
17 | @property (nonatomic, readonly) BOOL isFiltered;
18 |
19 | /// The content of this array is filtered to match the input of \c filter:completion:
20 | @property (nonatomic, readonly) NSArray *transactions;
21 | @property (nonatomic, readonly) NSArray *allTransactions;
22 |
23 | /// The content of this array is filtered to match the input of \c filter:completion:
24 | @property (nonatomic) NSInteger bytesReceived;
25 | @property (nonatomic) NSInteger totalBytesReceived;
26 |
27 | - (void)reloadByteCounts;
28 | - (void)reloadData:(void (^_Nullable)(FLEXMITMDataSource *dataSource))completion;
29 | - (void)filter:(NSString *)searchString completion:(void(^_Nullable)(FLEXMITMDataSource *dataSource))completion;
30 |
31 | @end
32 |
33 | NS_ASSUME_NONNULL_END
34 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/FLEXNetworkCurlLogger.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXCurlLogger.h
3 | //
4 | //
5 | // Created by Ji Pei on 07/27/16
6 | //
7 |
8 | #import
9 |
10 | @interface FLEXNetworkCurlLogger : NSObject
11 |
12 | /**
13 | * Generates a cURL command equivalent to the given request.
14 | *
15 | * @param request The request to be translated
16 | */
17 | + (NSString *)curlCommandString:(NSURLRequest *)request;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/FLEXNetworkMITMViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNetworkMITMViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 2/8/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 | #import "FLEXGlobalsEntry.h"
11 |
12 | /// The main screen for the network observer, which displays a list of network transactions.
13 | @interface FLEXNetworkMITMViewController : FLEXTableViewController
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/FLEXNetworkSettingsController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNetworkSettingsController.h
3 | // FLEXInjected
4 | //
5 | // Created by Ryan Olson on 2/20/15.
6 | //
7 |
8 | #import "FLEXTableViewController.h"
9 |
10 | @interface FLEXNetworkSettingsController : FLEXTableViewController
11 |
12 | @end
13 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/FLEXNetworkTransactionCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNetworkTransactionCell.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 2/8/15.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @class FLEXNetworkTransaction;
12 |
13 | @interface FLEXNetworkTransactionCell : UITableViewCell
14 |
15 | @property (nonatomic) FLEXNetworkTransaction *transaction;
16 |
17 | @property (nonatomic, readonly, class) NSString *reuseID;
18 | @property (nonatomic, readonly, class) CGFloat preferredCellHeight;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/OSCache/LICENSE.md:
--------------------------------------------------------------------------------
1 | OSCache
2 | version 1.2.1, Decembet 18th, 2015
3 |
4 | Copyright (C) 2014 Charcoal Design
5 |
6 | This software is provided 'as-is', without any express or implied
7 | warranty. In no event will the authors be held liable for any damages
8 | arising from the use of this software.
9 |
10 | Permission is granted to anyone to use this software for any purpose,
11 | including commercial applications, and to alter it and redistribute it
12 | freely, subject to the following restrictions:
13 |
14 | 1. The origin of this software must not be misrepresented; you must not
15 | claim that you wrote the original software. If you use this software
16 | in a product, an acknowledgment in the product documentation would be
17 | appreciated but is not required.
18 | 2. Altered source versions must be plainly marked as such, and must not be
19 | misrepresented as being the original software.
20 | 3. This notice may not be removed or altered from any source distribution.
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/PonyDebugger/FLEXNetworkObserver.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNetworkObserver.h
3 | // Derived from:
4 | //
5 | // PDAFNetworkDomainController.h
6 | // PonyDebugger
7 | //
8 | // Created by Mike Lewis on 2/27/12.
9 | //
10 | // Licensed to Square, Inc. under one or more contributor license agreements.
11 | // See the LICENSE file distributed with this work for the terms under
12 | // which Square, Inc. licenses this file to you.
13 | //
14 |
15 | #import
16 |
17 | FOUNDATION_EXTERN NSString *const kFLEXNetworkObserverEnabledStateChangedNotification;
18 |
19 | /// This class swizzles NSURLConnection and NSURLSession delegate methods to observe events in the URL loading system.
20 | /// High level network events are sent to the default FLEXNetworkRecorder instance which maintains the request history and caches response bodies.
21 | @interface FLEXNetworkObserver : NSObject
22 |
23 | /// Swizzling occurs when the observer is enabled for the first time.
24 | /// This reduces the impact of FLEX if network debugging is not desired.
25 | /// NOTE: this setting persists between launches of the app.
26 | @property (nonatomic, class, getter=isEnabled) BOOL enabled;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Network/PonyDebugger/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | PonyDebugger
3 | Copyright 2012 Square Inc.
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 |
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/FLEXObjectExplorerFactory.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXObjectExplorerFactory.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 5/15/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXGlobalsEntry.h"
10 |
11 | #ifndef _FLEXObjectExplorerViewController_h
12 | #import "FLEXObjectExplorerViewController.h"
13 | #else
14 | @class FLEXObjectExplorerViewController;
15 | #endif
16 |
17 | NS_ASSUME_NONNULL_BEGIN
18 |
19 | @interface FLEXObjectExplorerFactory : NSObject
20 |
21 | + (nullable FLEXObjectExplorerViewController *)explorerViewControllerForObject:(nullable id)object;
22 |
23 | /// Register a specific explorer view controller class to be used when exploring
24 | /// an object of a specific class. Calls will overwrite existing registrations.
25 | /// Sections must be initialized using \c forObject: like
26 | + (void)registerExplorerSection:(Class)sectionClass forClass:(Class)objectClass;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/FLEXColorPreviewSection.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXColorPreviewSection.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/12/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXSingleRowSection.h"
10 | #import "FLEXObjectInfoSection.h"
11 |
12 | @interface FLEXColorPreviewSection : FLEXSingleRowSection
13 |
14 | + (instancetype)forObject:(UIColor *)color;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/FLEXColorPreviewSection.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXColorPreviewSection.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/12/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXColorPreviewSection.h"
10 |
11 | @implementation FLEXColorPreviewSection
12 |
13 | + (instancetype)forObject:(UIColor *)color {
14 | return [self title:@"Color" reuse:nil cell:^(__kindof UITableViewCell *cell) {
15 | cell.backgroundColor = color;
16 | }];
17 | }
18 |
19 | - (BOOL)canSelectRow:(NSInteger)row {
20 | return NO;
21 | }
22 |
23 | - (BOOL (^)(NSString *))filterMatcher {
24 | return ^BOOL(NSString *filterText) {
25 | // Hide when searching
26 | return !filterText.length;
27 | };
28 | }
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/FLEXDefaultsContentSection.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXDefaultsContentSection.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/28/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXCollectionContentSection.h"
10 | #import "FLEXObjectInfoSection.h"
11 |
12 | @interface FLEXDefaultsContentSection : FLEXCollectionContentSection
13 |
14 | /// Uses \c NSUserDefaults.standardUserDefaults
15 | + (instancetype)standard;
16 | + (instancetype)forDefaults:(NSUserDefaults *)userDefaults;
17 |
18 | /// Whether or not to filter out keys not present in the app's user defaults file.
19 | ///
20 | /// This is useful for filtering out some useless keys that seem to appear
21 | /// in every app's defaults but are never actually used or touched by the app.
22 | /// Only applies to instances using \c NSUserDefaults.standardUserDefaults.
23 | /// This is the default for any instance using \c standardUserDefaults, so
24 | /// you must opt-out in those instances if you don't want this behavior.
25 | @property (nonatomic) BOOL onlyShowKeysForAppPrefs;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/FLEXObjectInfoSection.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXObjectInfoSection.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/28/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /// \c FLEXTableViewSection itself doesn't know about the object being explored.
12 | /// Subclasses might need this info to provide useful information about the object. Instead
13 | /// of adding an abstract class to the class hierarchy, subclasses can conform to this protocol
14 | /// to indicate that the only info they need to be initialized is the object being explored.
15 | @protocol FLEXObjectInfoSection
16 |
17 | + (instancetype)forObject:(id)object;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXBlockShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXBlockShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 1/30/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// Provides a description of the block's signature
14 | /// and access to an NSMethodSignature of the block
15 | @interface FLEXBlockShortcuts : FLEXShortcutsSection
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXBundleShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXBundleShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/12/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// Provides a "Browse Bundle Directory" action
14 | @interface FLEXBundleShortcuts : FLEXShortcutsSection
15 |
16 | @end
17 |
18 | NS_ASSUME_NONNULL_END
19 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXClassShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXClassShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 11/22/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | /// Provides handy shortcuts for class objects.
12 | /// This is the default section used for all class objects.
13 | @interface FLEXClassShortcuts : FLEXShortcutsSection
14 |
15 | + (instancetype)forObject:(Class)cls;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXImageShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXImageShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/29/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | /// Provides "view image" and "save image" shortcuts for UIImage objects
12 | @interface FLEXImageShortcuts : FLEXShortcutsSection
13 |
14 | + (instancetype)forObject:(UIImage *)image;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXLayerShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXLayerShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/12/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | @interface FLEXLayerShortcuts : FLEXShortcutsSection
12 |
13 | + (instancetype)forObject:(CALayer *)layer;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXLayerShortcuts.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXLayerShortcuts.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/12/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXLayerShortcuts.h"
10 | #import "FLEXShortcut.h"
11 | #import "FLEXImagePreviewViewController.h"
12 |
13 | @implementation FLEXLayerShortcuts
14 |
15 | + (instancetype)forObject:(CALayer *)layer {
16 | return [self forObject:layer additionalRows:@[
17 | [FLEXActionShortcut title:@"Preview Image" subtitle:nil
18 | viewer:^UIViewController *(CALayer *layer) {
19 | return [FLEXImagePreviewViewController previewForLayer:layer];
20 | }
21 | accessoryType:^UITableViewCellAccessoryType(CALayer *layer) {
22 | return CGRectIsEmpty(layer.bounds) ? UITableViewCellAccessoryNone : UITableViewCellAccessoryDisclosureIndicator;
23 | }
24 | ]
25 | ]];
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXNSDataShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNSDataShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/29/21.
6 | //
7 |
8 | #import "FLEXShortcutsSection.h"
9 |
10 | /// Adds a "UTF-8 String" shortcut
11 | @interface FLEXNSDataShortcuts : FLEXShortcutsSection
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXNSStringShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNSStringShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/29/21.
6 | //
7 |
8 | #import "FLEXShortcutsSection.h"
9 |
10 | /// Adds a "UTF-8 Data" shortcut
11 | @interface FLEXNSStringShortcuts : FLEXShortcutsSection
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXNSStringShortcuts.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXNSStringShortcuts.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/29/21.
6 | //
7 |
8 | #import "FLEXNSStringShortcuts.h"
9 | #import "FLEXObjectExplorerFactory.h"
10 | #import "FLEXShortcut.h"
11 |
12 | @implementation FLEXNSStringShortcuts
13 |
14 | + (instancetype)forObject:(NSString *)string {
15 | NSUInteger length = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
16 | NSData *data = [NSData dataWithBytesNoCopy:(void *)string.UTF8String length:length freeWhenDone:NO];
17 |
18 | return [self forObject:string additionalRows:@[
19 | [FLEXActionShortcut title:@"UTF-8 Data" subtitle:^NSString *(id _) {
20 | return data.description;
21 | } viewer:^UIViewController *(id _) {
22 | return [FLEXObjectExplorerFactory explorerViewControllerForObject:data];
23 | } accessoryType:^UITableViewCellAccessoryType(id _) {
24 | return UITableViewCellAccessoryDisclosureIndicator;
25 | }]
26 | ]];
27 | }
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXShortcutsFactory+Defaults.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXShortcutsFactory+Defaults.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/29/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | @interface FLEXShortcutsFactory (UIApplication) @end
12 |
13 | @interface FLEXShortcutsFactory (Views) @end
14 |
15 | @interface FLEXShortcutsFactory (ViewControllers) @end
16 |
17 | @interface FLEXShortcutsFactory (UIImage) @end
18 |
19 | @interface FLEXShortcutsFactory (NSBundle) @end
20 |
21 | @interface FLEXShortcutsFactory (Classes) @end
22 |
23 | @interface FLEXShortcutsFactory (Activities) @end
24 |
25 | @interface FLEXShortcutsFactory (Blocks) @end
26 |
27 | @interface FLEXShortcutsFactory (Foundation) @end
28 |
29 | @interface FLEXShortcutsFactory (WebKit_Safari) @end
30 |
31 | @interface FLEXShortcutsFactory (Pasteboard) @end
32 |
33 | @interface FLEXShortcutsFactory (FirebaseFirestore) @end
34 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXUIAppShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXUIAppShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 5/25/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | @interface FLEXUIAppShortcuts : FLEXShortcutsSection
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXViewControllerShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXViewControllerShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/12/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | @interface FLEXViewControllerShortcuts : FLEXShortcutsSection
12 |
13 | + (instancetype)forObject:(UIViewController *)viewController;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXViewShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXViewShortcuts.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/11/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXShortcutsSection.h"
10 |
11 | /// Adds "Nearest View Controller" and "Preview Image" shortcuts to all views
12 | @interface FLEXViewShortcuts : FLEXShortcutsSection
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXWindowShortcuts.h
3 | // FLEX
4 | //
5 | // Created by AnthoPak on 26/09/2022.
6 | //
7 |
8 | #import "FLEXShortcutsSection.h"
9 |
10 | /// Adds "Animations Speed" shortcut for all windows
11 | @interface FLEXWindowShortcuts : FLEXShortcutsSection
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/CALayer+FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // CALayer+FLEX.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/28/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CALayer (FLEX)
12 |
13 | @property (nonatomic) BOOL flex_continuousCorners;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/CALayer+FLEX.m:
--------------------------------------------------------------------------------
1 | //
2 | // CALayer+FLEX.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 2/28/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "CALayer+FLEX.h"
10 |
11 | @interface CALayer (Private)
12 | @property (nonatomic) BOOL continuousCorners;
13 | @end
14 |
15 | @implementation CALayer (FLEX)
16 |
17 | static BOOL respondsToContinuousCorners = NO;
18 |
19 | + (void)load {
20 | respondsToContinuousCorners = [CALayer
21 | instancesRespondToSelector:@selector(setContinuousCorners:)
22 | ];
23 | }
24 |
25 | - (BOOL)flex_continuousCorners {
26 | if (respondsToContinuousCorners) {
27 | return self.continuousCorners;
28 | }
29 |
30 | return NO;
31 | }
32 |
33 | - (void)setFlex_continuousCorners:(BOOL)enabled {
34 | if (respondsToContinuousCorners) {
35 | if (@available(iOS 13, *)) {
36 | self.cornerCurve = kCACornerCurveContinuous;
37 | } else {
38 | self.continuousCorners = enabled;
39 | // self.masksToBounds = NO;
40 | // self.allowsEdgeAntialiasing = YES;
41 | // self.edgeAntialiasingMask = kCALayerLeftEdge | kCALayerRightEdge | kCALayerTopEdge | kCALayerBottomEdge;
42 | }
43 | }
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/FLEXRuntime+Compare.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRuntime+Compare.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/28/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "FLEXProperty.h"
11 | #import "FLEXIvar.h"
12 | #import "FLEXMethodBase.h"
13 | #import "FLEXProtocol.h"
14 |
15 | @interface FLEXProperty (Compare)
16 | - (NSComparisonResult)compare:(FLEXProperty *)other;
17 | @end
18 |
19 | @interface FLEXIvar (Compare)
20 | - (NSComparisonResult)compare:(FLEXIvar *)other;
21 | @end
22 |
23 | @interface FLEXMethodBase (Compare)
24 | - (NSComparisonResult)compare:(FLEXMethodBase *)other;
25 | @end
26 |
27 | @interface FLEXProtocol (Compare)
28 | - (NSComparisonResult)compare:(FLEXProtocol *)other;
29 | @end
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/FLEXRuntime+Compare.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRuntime+Compare.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 8/28/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXRuntime+Compare.h"
10 |
11 | @implementation FLEXProperty (Compare)
12 |
13 | - (NSComparisonResult)compare:(FLEXProperty *)other {
14 | NSComparisonResult r = [self.name caseInsensitiveCompare:other.name];
15 | if (r == NSOrderedSame) {
16 | // TODO make sure empty image name sorts above an image name
17 | return [self.imageName ?: @"" compare:other.imageName];
18 | }
19 |
20 | return r;
21 | }
22 |
23 | @end
24 |
25 | @implementation FLEXIvar (Compare)
26 |
27 | - (NSComparisonResult)compare:(FLEXIvar *)other {
28 | return [self.name caseInsensitiveCompare:other.name];
29 | }
30 |
31 | @end
32 |
33 | @implementation FLEXMethodBase (Compare)
34 |
35 | - (NSComparisonResult)compare:(FLEXMethodBase *)other {
36 | return [self.name caseInsensitiveCompare:other.name];
37 | }
38 |
39 | @end
40 |
41 | @implementation FLEXProtocol (Compare)
42 |
43 | - (NSComparisonResult)compare:(FLEXProtocol *)other {
44 | return [self.name caseInsensitiveCompare:other.name];
45 | }
46 |
47 | @end
48 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/NSDateFormatter+FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDateFormatter+FLEX.h
3 | // libflex:FLEX
4 | //
5 | // Created by Tanner Bennett on 7/24/22.
6 | // Copyright © 2022 Flipboard. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef NS_ENUM(NSUInteger, FLEXDateFormat) {
12 | // hour:minute [AM|PM]
13 | FLEXDateFormatClock,
14 | // hour:minute:second [AM|PM]
15 | FLEXDateFormatPreciseClock,
16 | // year-month-day hour:minute:second.millisecond
17 | FLEXDateFormatVerbose,
18 | };
19 |
20 | @interface NSDateFormatter (FLEX)
21 |
22 | + (NSString *)flex_stringFrom:(NSDate *)date format:(FLEXDateFormat)format;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/NSDateFormatter+FLEX.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSDateFormatter+FLEX.m
3 | // libflex:FLEX
4 | //
5 | // Created by Tanner Bennett on 7/24/22.
6 | // Copyright © 2022 Flipboard. All rights reserved.
7 | //
8 |
9 | #import "NSDateFormatter+FLEX.h"
10 |
11 | @implementation NSDateFormatter (FLEX)
12 |
13 | + (NSString *)flex_stringFrom:(NSDate *)date format:(FLEXDateFormat)format {
14 | static NSDateFormatter *formatter = nil;
15 | if (!formatter) {
16 | formatter = [NSDateFormatter new];
17 | }
18 |
19 | switch (format) {
20 | case FLEXDateFormatClock:
21 | formatter.dateFormat = @"h:mm a";
22 | break;
23 | case FLEXDateFormatPreciseClock:
24 | formatter.dateFormat = @"h:mm:ss a";
25 | break;
26 | case FLEXDateFormatVerbose:
27 | formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss.SSS";
28 | break;
29 | }
30 |
31 | return [formatter stringFromDate:date];
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/NSTimer+FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSTimer+Blocks.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/23/17.
6 | //
7 |
8 | #import
9 |
10 | typedef void (^VoidBlock)(void);
11 |
12 | @interface NSTimer (Blocks)
13 |
14 | + (instancetype)flex_fireSecondsFromNow:(NSTimeInterval)delay block:(VoidBlock)block;
15 |
16 | // Forward declaration
17 | //+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer *timer))block;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/NSTimer+FLEX.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSTimer+Blocks.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/23/17.
6 | //
7 |
8 | #import "NSTimer+FLEX.h"
9 |
10 | @interface Block : NSObject
11 | - (void)invoke;
12 | @end
13 |
14 | #pragma clang diagnostic ignored "-Wincomplete-implementation"
15 | @implementation NSTimer (Blocks)
16 |
17 | + (instancetype)flex_fireSecondsFromNow:(NSTimeInterval)delay block:(VoidBlock)block {
18 | if (@available(iOS 10, *)) {
19 | return [self scheduledTimerWithTimeInterval:delay repeats:NO block:(id)block];
20 | } else {
21 | return [self scheduledTimerWithTimeInterval:delay target:block selector:@selector(invoke) userInfo:nil repeats:NO];
22 | }
23 | }
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/Cocoa+FLEXShortcuts.h:
--------------------------------------------------------------------------------
1 | //
2 | // Cocoa+FLEXShortcuts.h
3 | // Pods
4 | //
5 | // Created by Tanner on 2/24/21.
6 | //
7 | //
8 |
9 | #import
10 |
11 | @interface UIAlertAction (FLEXShortcuts)
12 | @property (nonatomic, readonly) NSString *flex_styleName;
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/Cocoa+FLEXShortcuts.m:
--------------------------------------------------------------------------------
1 | //
2 | // Cocoa+FLEXShortcuts.m
3 | // Pods
4 | //
5 | // Created by Tanner on 2/24/21.
6 | //
7 | //
8 |
9 | #import "Cocoa+FLEXShortcuts.h"
10 |
11 | @implementation UIAlertAction (FLEXShortcuts)
12 | - (NSString *)flex_styleName {
13 | switch (self.style) {
14 | case UIAlertActionStyleDefault:
15 | return @"Default style";
16 | case UIAlertActionStyleCancel:
17 | return @"Cancel style";
18 | case UIAlertActionStyleDestructive:
19 | return @"Destructive style";
20 |
21 | default:
22 | return [NSString stringWithFormat:@"Unknown (%@)", @(self.style)];
23 | }
24 | }
25 | @end
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/NSDictionary+ObjcRuntime.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+ObjcRuntime.h
3 | // FLEX
4 | //
5 | // Derived from MirrorKit.
6 | // Created by Tanner on 7/5/15.
7 | // Copyright (c) 2020 FLEX Team. All rights reserved.
8 | //
9 |
10 | #import
11 | #import
12 |
13 | @interface NSDictionary (ObjcRuntime)
14 |
15 | /// \c kFLEXPropertyAttributeKeyTypeEncoding is the only required key.
16 | /// Keys representing a boolean value should have a value of \c YES instead of an empty string.
17 | - (NSString *)propertyAttributesString;
18 |
19 | + (instancetype)attributesDictionaryForProperty:(objc_property_t)property;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/NSMapTable+FLEX_Subscripting.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSMapTable+FLEX_Subscripting.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/9/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface NSMapTable (FLEX_Subscripting)
14 |
15 | - (nullable ObjectType)objectForKeyedSubscript:(KeyType)key;
16 | - (void)setObject:(nullable ObjectType)obj forKeyedSubscript:(KeyType )key;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/NSMapTable+FLEX_Subscripting.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSMapTable+FLEX_Subscripting.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/9/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "NSMapTable+FLEX_Subscripting.h"
10 |
11 | @implementation NSMapTable (FLEX_Subscripting)
12 |
13 | - (id)objectForKeyedSubscript:(id)key {
14 | return [self objectForKey:key];
15 | }
16 |
17 | - (void)setObject:(id)obj forKeyedSubscript:(id)key {
18 | [self setObject:obj forKey:key];
19 | }
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/NSString+ObjcRuntime.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+ObjcRuntime.h
3 | // FLEX
4 | //
5 | // Derived from MirrorKit.
6 | // Created by Tanner on 7/1/15.
7 | // Copyright (c) 2020 FLEX Team. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface NSString (Utilities)
13 |
14 | /// A dictionary of property attributes if the receiver is a valid property attributes string.
15 | /// Values are either a string or \c YES. Boolean attributes which are false will not be
16 | /// present in the dictionary. See this link on how to construct a proper attributes string:
17 | /// https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html
18 | ///
19 | /// Note: this method doesn't work properly for certain type encodings, and neither does
20 | /// the property_copyAttributeValue function in the runtime itself. Radar: FB7499230
21 | - (NSDictionary *)propertyAttributes;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/Private/UIView+FLEX_Layout.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+FLEX_Layout.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 7/18/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #define Padding(p) UIEdgeInsetsMake(p, p, p, p)
12 |
13 | @interface UIView (FLEX_Layout)
14 |
15 | - (void)flex_centerInView:(UIView *)view;
16 | - (void)flex_pinEdgesTo:(UIView *)view;
17 | - (void)flex_pinEdgesTo:(UIView *)view withInsets:(UIEdgeInsets)insets;
18 | - (void)flex_pinEdgesToSuperview;
19 | - (void)flex_pinEdgesToSuperviewWithInsets:(UIEdgeInsets)insets;
20 | - (void)flex_pinEdgesToSuperviewWithInsets:(UIEdgeInsets)insets aboveView:(UIView *)sibling;
21 | - (void)flex_pinEdgesToSuperviewWithInsets:(UIEdgeInsets)insets belowView:(UIView *)sibling;
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIFont+FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIFont+FLEX.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/20/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIFont (FLEX)
12 |
13 | @property (nonatomic, readonly, class) UIFont *flex_defaultTableCellFont;
14 | @property (nonatomic, readonly, class) UIFont *flex_codeFont;
15 | @property (nonatomic, readonly, class) UIFont *flex_smallCodeFont;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIGestureRecognizer+Blocks.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIGestureRecognizer+Blocks.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/20/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef void (^GestureBlock)(UIGestureRecognizer *gesture);
12 |
13 |
14 | @interface UIGestureRecognizer (Blocks)
15 |
16 | + (instancetype)flex_action:(GestureBlock)action;
17 |
18 | @property (nonatomic, setter=flex_setAction:) GestureBlock flex_action;
19 |
20 | @end
21 |
22 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIGestureRecognizer+Blocks.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIGestureRecognizer+Blocks.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/20/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "UIGestureRecognizer+Blocks.h"
10 | #import
11 |
12 |
13 | @implementation UIGestureRecognizer (Blocks)
14 |
15 | static void * actionKey;
16 |
17 | + (instancetype)flex_action:(GestureBlock)action {
18 | UIGestureRecognizer *gesture = [[self alloc] initWithTarget:nil action:nil];
19 | [gesture addTarget:gesture action:@selector(flex_invoke)];
20 | gesture.flex_action = action;
21 | return gesture;
22 | }
23 |
24 | - (void)flex_invoke {
25 | self.flex_action(self);
26 | }
27 |
28 | - (GestureBlock)flex_action {
29 | return objc_getAssociatedObject(self, &actionKey);
30 | }
31 |
32 | - (void)flex_setAction:(GestureBlock)action {
33 | objc_setAssociatedObject(self, &actionKey, action, OBJC_ASSOCIATION_COPY);
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIMenu+FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIMenu+FLEX.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 1/28/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIMenu (FLEX)
12 |
13 | + (instancetype)flex_inlineMenuWithTitle:(NSString *)title
14 | image:(UIImage *)image
15 | children:(NSArray *)children;
16 |
17 | - (instancetype)flex_collapsed;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIMenu+FLEX.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIMenu+FLEX.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 1/28/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "UIMenu+FLEX.h"
10 |
11 | @implementation UIMenu (FLEX)
12 |
13 | + (instancetype)flex_inlineMenuWithTitle:(NSString *)title image:(UIImage *)image children:(NSArray *)children {
14 | return [UIMenu
15 | menuWithTitle:title
16 | image:image
17 | identifier:nil
18 | options:UIMenuOptionsDisplayInline
19 | children:children
20 | ];
21 | }
22 |
23 | - (instancetype)flex_collapsed {
24 | return [UIMenu
25 | menuWithTitle:@""
26 | image:nil
27 | identifier:nil
28 | options:UIMenuOptionsDisplayInline
29 | children:@[[UIMenu
30 | menuWithTitle:self.title
31 | image:self.image
32 | identifier:self.identifier
33 | options:0
34 | children:self.children
35 | ]]
36 | ];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIPasteboard+FLEX.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIPasteboard+FLEX.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/9/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface UIPasteboard (FLEX)
12 |
13 | /// For copying an object which could be a string, data, or number
14 | - (void)flex_copy:(id)unknownType;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UIPasteboard+FLEX.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIPasteboard+FLEX.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 12/9/19.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "UIPasteboard+FLEX.h"
10 |
11 | @implementation UIPasteboard (FLEX)
12 |
13 | - (void)flex_copy:(id)object {
14 | if (!object) {
15 | return;
16 | }
17 |
18 | if ([object isKindOfClass:[NSString class]]) {
19 | UIPasteboard.generalPasteboard.string = object;
20 | } else if([object isKindOfClass:[NSData class]]) {
21 | [UIPasteboard.generalPasteboard setData:object forPasteboardType:@"public.data"];
22 | } else if ([object isKindOfClass:[NSNumber class]]) {
23 | UIPasteboard.generalPasteboard.string = [object stringValue];
24 | } else {
25 | // TODO: make this an alert instead of an exception
26 | [NSException raise:NSInternalInconsistencyException
27 | format:@"Tried to copy unsupported type: %@", [object class]];
28 | }
29 | }
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UITextField+Range.h:
--------------------------------------------------------------------------------
1 | //
2 | // UITextField+Range.h
3 | // FLEX
4 | //
5 | // Created by Tanner on 6/13/17.
6 | //
7 |
8 | #import
9 |
10 | @interface UITextField (Range)
11 |
12 | @property (nonatomic, readonly) NSRange flex_selectedRange;
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Categories/UITextField+Range.m:
--------------------------------------------------------------------------------
1 | //
2 | // UITextField+Range.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 6/13/17.
6 | //
7 |
8 | #import "UITextField+Range.h"
9 |
10 | @implementation UITextField (Range)
11 |
12 | - (NSRange)flex_selectedRange {
13 | UITextRange *r = self.selectedTextRange;
14 | if (r) {
15 | NSInteger loc = [self offsetFromPosition:self.beginningOfDocument toPosition:r.start];
16 | NSInteger len = [self offsetFromPosition:r.start toPosition:r.end];
17 | return NSMakeRange(loc, len);
18 | }
19 |
20 | return NSMakeRange(NSNotFound, 0);
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Keyboard/FLEXKeyboardHelpViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXKeyboardHelpViewController.h
3 | // FLEX
4 | //
5 | // Created by Ryan Olson on 9/19/15.
6 | // Copyright © 2015 f. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXKeyboardHelpViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Runtime/Objc/FLEXRuntimeConstants.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXRuntimeConstants.m
3 | // FLEX
4 | //
5 | // Created by Tanner on 3/11/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXRuntimeConstants.h"
10 |
11 | const unsigned int kFLEXNumberOfImplicitArgs = 2;
12 |
13 | NSString *const kFLEXPropertyAttributeKeyTypeEncoding = @"T";
14 | NSString *const kFLEXPropertyAttributeKeyBackingIvarName = @"V";
15 | NSString *const kFLEXPropertyAttributeKeyReadOnly = @"R";
16 | NSString *const kFLEXPropertyAttributeKeyCopy = @"C";
17 | NSString *const kFLEXPropertyAttributeKeyRetain = @"&";
18 | NSString *const kFLEXPropertyAttributeKeyNonAtomic = @"N";
19 | NSString *const kFLEXPropertyAttributeKeyCustomGetter = @"G";
20 | NSString *const kFLEXPropertyAttributeKeyCustomSetter = @"S";
21 | NSString *const kFLEXPropertyAttributeKeyDynamic = @"D";
22 | NSString *const kFLEXPropertyAttributeKeyWeak = @"W";
23 | NSString *const kFLEXPropertyAttributeKeyGarbageCollectable = @"P";
24 | NSString *const kFLEXPropertyAttributeKeyOldStyleTypeEncoding = @"t";
25 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Runtime/Objc/FLEXSwiftInternal.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSwiftInternal.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 10/28/21.
6 | // Copyright © 2021 Flipboard. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | BOOL FLEXIsSwiftObjectOrClass(id objOrClass);
18 |
19 | #ifdef __cplusplus
20 | }
21 | #endif
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Runtime/Objc/Reflection/FLEXMetadataExtras.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMetadataExtras.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 4/26/22.
6 | //
7 |
8 | #import
9 | #import "FLEXMethodBase.h"
10 | #import "FLEXProperty.h"
11 | #import "FLEXIvar.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | /// A dictionary mapping type encoding strings to an array of field titles
16 | extern NSString * const FLEXAuxiliarynfoKeyFieldLabels;
17 |
18 | @protocol FLEXMetadataAuxiliaryInfo
19 |
20 | /// Used to supply arbitrary additional data that need not be exposed by their own properties
21 | - (nullable id)auxiliaryInfoForKey:(NSString *)key;
22 |
23 | @end
24 |
25 | @interface FLEXMethodBase (Auxiliary) @end
26 | @interface FLEXProperty (Auxiliary) @end
27 | @interface FLEXIvar (Auxiliary) @end
28 |
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/Utility/Runtime/Objc/Reflection/FLEXMetadataExtras.m:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMetadataExtras.m
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 4/26/22.
6 | //
7 |
8 | #import "FLEXMetadataExtras.h"
9 |
10 | NSString * const FLEXAuxiliarynfoKeyFieldLabels = @"FLEXAuxiliarynfoKeyFieldLabels";
11 |
12 | @implementation FLEXMethodBase (Auxiliary)
13 | - (id)auxiliaryInfoForKey:(NSString *)key { return nil; }
14 | @end
15 |
16 | @implementation FLEXProperty (Auxiliary)
17 | - (id)auxiliaryInfoForKey:(NSString *)key { return nil; }
18 | @end
19 |
20 | @implementation FLEXIvar (Auxiliary)
21 | - (id)auxiliaryInfoForKey:(NSString *)key { return nil; }
22 | @end
23 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/FLEXHierarchyViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXHierarchyViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/9/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXNavigationController.h"
10 |
11 | @protocol FLEXHierarchyDelegate
12 | - (void)viewHierarchyDidDismiss:(UIView *)selectedView;
13 | @end
14 |
15 | /// A navigation controller which manages two child view controllers:
16 | /// a 3D Reveal-like hierarchy explorer, and a 2D tree-list hierarchy explorer.
17 | @interface FLEXHierarchyViewController : FLEXNavigationController
18 |
19 | + (instancetype)delegate:(id)delegate;
20 | + (instancetype)delegate:(id)delegate
21 | viewsAtTap:(NSArray *)viewsAtTap
22 | selectedView:(UIView *)selectedView;
23 |
24 | - (void)toggleHierarchyMode;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/FLEXImagePreviewViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXImagePreviewViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 6/12/14.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXImagePreviewViewController : UIViewController
12 |
13 | + (instancetype)previewForView:(UIView *)view;
14 | + (instancetype)previewForLayer:(CALayer *)layer;
15 | + (instancetype)forImage:(UIImage *)image;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/SnapshotExplorer/FHSRangeSlider.h:
--------------------------------------------------------------------------------
1 | //
2 | // FHSRangeSlider.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/7/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FHSRangeSlider : UIControl
14 |
15 | @property (nonatomic) CGFloat allowedMinValue;
16 | @property (nonatomic) CGFloat allowedMaxValue;
17 | @property (nonatomic) CGFloat minValue;
18 | @property (nonatomic) CGFloat maxValue;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/SnapshotExplorer/FHSView.h:
--------------------------------------------------------------------------------
1 | //
2 | // FHSView.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/6/20.
6 | //
7 |
8 | #import
9 |
10 | @interface FHSView : NSObject {
11 | @private
12 | BOOL _inScrollView;
13 | }
14 |
15 | + (instancetype)forView:(UIView *)view isInScrollView:(BOOL)inScrollView;
16 |
17 | /// Intentionally not weak
18 | @property (nonatomic, readonly) UIView *view;
19 | @property (nonatomic, readonly) NSString *identifier;
20 |
21 | @property (nonatomic, readonly) NSString *title;
22 | /// Whether or not this view item should be visually distinguished
23 | @property (nonatomic, readwrite) BOOL important;
24 |
25 | @property (nonatomic, readonly) CGRect frame;
26 | @property (nonatomic, readonly) BOOL hidden;
27 | @property (nonatomic, readonly) UIImage *snapshotImage;
28 |
29 | @property (nonatomic, readonly) NSArray *children;
30 | @property (nonatomic, readonly) NSString *summary;
31 |
32 | /// @return importantAttr if .important, otherwise normalAttr
33 | //- (id)ifImportant:(id)importantAttr ifNormal:(id)normalAttr;
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/SnapshotExplorer/FHSViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FHSViewController.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/6/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// The view controller
14 | /// "FHS" stands for "FLEX (view) hierarchy snapshot"
15 | @interface FHSViewController : UIViewController
16 |
17 | /// Use this when you want to snapshot a set of windows.
18 | + (instancetype)snapshotWindows:(NSArray *)windows;
19 | /// Use this when you want to snapshot a specific slice of the view hierarchy.
20 | + (instancetype)snapshotView:(UIView *)view;
21 | /// Use this when you want to emphasize specific views on the screen.
22 | /// These views must all be in the same window as the selected view.
23 | + (instancetype)snapshotViewsAtTap:(NSArray *)viewsAtTap selectedView:(UIView *)view;
24 |
25 | @property (nonatomic, nullable) UIView *selectedView;
26 |
27 | @end
28 |
29 | NS_ASSUME_NONNULL_END
30 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/SnapshotExplorer/FHSViewSnapshot.h:
--------------------------------------------------------------------------------
1 | //
2 | // FHSViewSnapshot.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/9/20.
6 | // Copyright © 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FHSView.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface FHSViewSnapshot : NSObject
14 |
15 | + (instancetype)snapshotWithView:(FHSView *)view;
16 |
17 | @property (nonatomic, readonly) FHSView *view;
18 |
19 | @property (nonatomic, readonly) NSString *title;
20 | /// Whether or not this view item should be visually distinguished
21 | @property (nonatomic, readwrite) BOOL important;
22 |
23 | @property (nonatomic, readonly) CGRect frame;
24 | @property (nonatomic, readonly) BOOL hidden;
25 | @property (nonatomic, readonly) UIImage *snapshotImage;
26 |
27 | @property (nonatomic, readonly) NSArray *children;
28 | @property (nonatomic, readonly) NSString *summary;
29 |
30 | /// Returns a different color based on whether or not the view is important
31 | @property (nonatomic, readonly) UIColor *headerColor;
32 |
33 | - (FHSViewSnapshot *)snapshotForView:(UIView *)view;
34 |
35 | @end
36 |
37 | NS_ASSUME_NONNULL_END
38 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/SnapshotExplorer/Scene/FHSSnapshotNodes.h:
--------------------------------------------------------------------------------
1 | //
2 | // FHSSnapshotNodes.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 1/7/20.
6 | //
7 |
8 | #import "FHSViewSnapshot.h"
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /// Container that holds references to the SceneKit nodes associated with a snapshot.
14 | @interface FHSSnapshotNodes : NSObject
15 |
16 | + (instancetype)snapshot:(FHSViewSnapshot *)snapshot depth:(NSInteger)depth;
17 |
18 | @property (nonatomic, readonly) FHSViewSnapshot *snapshotItem;
19 | @property (nonatomic, readonly) NSInteger depth;
20 |
21 | /// The view image itself
22 | @property (nonatomic, nullable) SCNNode *snapshot;
23 | /// Goes on top of the snapshot, has rounded top corners
24 | @property (nonatomic, nullable) SCNNode *header;
25 | /// The bounding box drawn around the snapshot
26 | @property (nonatomic, nullable) SCNNode *border;
27 |
28 | /// Used to indicate when a view is selected
29 | @property (nonatomic, getter=isHighlighted) BOOL highlighted;
30 | /// Used to indicate when a view is de-emphasized
31 | @property (nonatomic, getter=isDimmed) BOOL dimmed;
32 |
33 | @property (nonatomic) BOOL forceHideHeader;
34 |
35 | @end
36 |
37 | NS_ASSUME_NONNULL_END
38 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/TreeExplorer/FLEXHierarchyTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXHierarchyTableViewCell.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 2014-05-02.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FLEXHierarchyTableViewCell : UITableViewCell
12 |
13 | - (id)initWithReuseIdentifier:(NSString *)reuseIdentifier;
14 |
15 | @property (nonatomic) NSInteger viewDepth;
16 | @property (nonatomic) UIColor *randomColorTag;
17 | @property (nonatomic) UIColor *indicatedViewColor;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/FLEX/ViewHierarchy/TreeExplorer/FLEXHierarchyTableViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXHierarchyTableViewController.h
3 | // Flipboard
4 | //
5 | // Created by Ryan Olson on 2014-05-01.
6 | // Copyright (c) 2020 FLEX Team. All rights reserved.
7 | //
8 |
9 | #import "FLEXTableViewController.h"
10 |
11 | @interface FLEXHierarchyTableViewController : FLEXTableViewController
12 |
13 | + (instancetype)windows:(NSArray *)allWindows
14 | viewsAtTap:(NSArray *)viewsAtTap
15 | selectedView:(UIView *)selectedView;
16 |
17 | @property (nonatomic) UIView *selectedView;
18 | @property (nonatomic) void(^didSelectRowAction)(UIView *selectedView);
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/KSCrash/Recording/KSCrashDoctor.h:
--------------------------------------------------------------------------------
1 | //
2 | // KSCrashDoctor.h
3 | // KSCrash
4 | //
5 | // Created by Karl Stenerud on 2012-11-10.
6 | // Copyright (c) 2012 Karl Stenerud. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface KSCrashDoctor : NSObject
12 |
13 | + (KSCrashDoctor*) doctor;
14 |
15 | - (NSString*) diagnoseCrash:(NSDictionary*) crashReport;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/KSCrash/llvm/ADT/None.h:
--------------------------------------------------------------------------------
1 | //===-- None.h - Simple null value for implicit construction ------*- C++ -*-=//
2 | //
3 | // The LLVM Compiler Infrastructure
4 | //
5 | // This file is distributed under the University of Illinois Open Source
6 | // License. See LICENSE.TXT for details.
7 | //
8 | //===----------------------------------------------------------------------===//
9 | //
10 | // This file provides None, an enumerator for use in implicit constructors
11 | // of various (usually templated) types to make such construction more
12 | // terse.
13 | //
14 | //===----------------------------------------------------------------------===//
15 |
16 | #ifndef LLVM_ADT_NONE_H
17 | #define LLVM_ADT_NONE_H
18 |
19 | namespace llvm {
20 | /// \brief A simple null object to allow implicit construction of Optional
21 | /// and similar types without having to spell out the specialization's name.
22 | enum class NoneType { None };
23 | const NoneType None = None;
24 | }
25 |
26 | #endif
27 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/KSCrash/swift/Basic/ValueWitnessMangling.def:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug/Classes/Vendor/KSCrash/swift/Basic/ValueWitnessMangling.def
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/Reflex/FLExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FLExtensions.swift
3 | // Reflex
4 | //
5 | // Created by Tanner Bennett on 10/29/21.
6 | // Copyright © 2021 Tanner Bennett. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension FLEXTypeEncoding {
12 | static func encodeObjcObject(typeName: String) -> String {
13 | return "@\"\(typeName)\""
14 | }
15 |
16 | static func encodeStruct(typeName: String? = nil, fields: [String]) -> String {
17 | if let typeName = typeName {
18 | return "{\(typeName)=\(fields.joined())}"
19 | }
20 |
21 | return "{\(fields.joined())}"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/RuntimeBrowser/RTBMethod.h:
--------------------------------------------------------------------------------
1 | //
2 | // RTBMethod.h
3 | // OCRuntime
4 | //
5 | // Created by Nicolas Seriot on 06/05/15.
6 | // Copyright (c) 2015 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | // TODO: create RTBMethod to provide selector, description, return type and argument types
10 |
11 | #import
12 | #import
13 |
14 | @interface RTBMethod : NSObject
15 |
16 | + (instancetype)methodObjectWithMethod:(Method)method isClassMethod:(BOOL)isClassMethod;
17 |
18 | - (NSString *)headerDescriptionWithNewlineAfterArgs:(BOOL)newlineAfterArgs;
19 |
20 | - (NSString *)returnTypeEncoded;
21 | - (NSString *)returnTypeDecoded;
22 | - (NSArray *)argumentsTypesDecoded;
23 | - (NSString *)selectorString;
24 | - (SEL)selector;
25 | - (BOOL)hasArguments;
26 |
27 | - (NSString *)filePath;
28 | - (NSString *)symbolName;
29 | - (NSString *)categoryName;
30 |
31 | - (Method)method;
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/RuntimeBrowser/RTBProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // ProtocolStub.h
3 | // RuntimeBrowser
4 | //
5 | // Created by Nicolas Seriot on 24/04/15.
6 | //
7 | //
8 |
9 | #import
10 |
11 | @interface RTBProtocol : NSObject
12 |
13 | @property (nonatomic, strong) NSString *protocolName;
14 | @property (nonatomic, strong) NSMutableSet *conformingClassesStubsSet;
15 |
16 | + (instancetype)protocolStubWithProtocolName:(NSString *)protocolName;
17 |
18 | - (NSArray *)sortedAdoptedProtocolsNames;
19 | - (NSArray *)sortedMethodsRequired:(BOOL)required instanceMethods:(BOOL)instanceMethods;
20 |
21 | // BrowserNode protocol
22 |
23 | - (NSArray *)children; // same as subclassesStubs
24 | - (NSString *)nodeName;// same as stubClassname
25 | - (NSString *)nodeInfo;
26 | - (BOOL)canBeSavedAsHeader;
27 |
28 | - (BOOL)hasChildren;
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/swift-atomics/Atomics/AtomicOptional.swift:
--------------------------------------------------------------------------------
1 | //===----------------------------------------------------------------------===//
2 | //
3 | // This source file is part of the Swift Atomics open source project
4 | //
5 | // Copyright (c) 2020 Apple Inc. and the Swift project authors
6 | // Licensed under Apache License v2.0 with Runtime Library Exception
7 | //
8 | // See https://swift.org/LICENSE.txt for license information
9 | // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10 | //
11 | //===----------------------------------------------------------------------===//
12 |
13 | /// An atomic value that also supports atomic operations when wrapped
14 | /// in an `Optional`. Atomic optional wrappable types come with a
15 | /// standalone atomic representation for their optional-wrapped
16 | /// variants.
17 | public protocol AtomicOptionalWrappable: AtomicValue {
18 | /// The atomic storage representation for `Optional`.
19 | associatedtype AtomicOptionalRepresentation: AtomicStorage
20 | where AtomicOptionalRepresentation.Value == Self?
21 | }
22 |
23 | extension Optional: AtomicValue where Wrapped: AtomicOptionalWrappable {
24 | public typealias AtomicRepresentation = Wrapped.AtomicOptionalRepresentation
25 | }
26 |
--------------------------------------------------------------------------------
/FWDebug/Classes/Vendor/swift-atomics/_AtomicsShims/_AtomicsShims.c:
--------------------------------------------------------------------------------
1 | //===----------------------------------------------------------------------===//
2 | //
3 | // This source file is part of the Swift Atomics open source project
4 | //
5 | // Copyright (c) 2020 Apple Inc. and the Swift project authors
6 | // Licensed under Apache License v2.0 with Runtime Library Exception
7 | //
8 | // See https://swift.org/LICENSE.txt for license information
9 | // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10 | //
11 | //===----------------------------------------------------------------------===//
12 |
13 | #include "_AtomicsShims.h"
14 |
15 | #if ENABLE_DOUBLEWIDE_ATOMICS
16 | // FIXME: These should be static inline header-only shims, but Swift 5.3 doesn't
17 | // like calls to swift_retain_n/swift_release_n appearing in Swift code, not
18 | // even when imported through C. (See https://bugs.swift.org/browse/SR-13708)
19 |
20 | void _sa_retain_n(void *object, uint32_t n)
21 | {
22 | extern void *swift_retain_n(void *object, uint32_t n);
23 | swift_retain_n(object, n);
24 | }
25 |
26 | void _sa_release_n(void *object, uint32_t n)
27 | {
28 | extern void swift_release_n(void *object, uint32_t n);
29 | swift_release_n(object, n);
30 | }
31 | #endif
32 |
--------------------------------------------------------------------------------
/FWDebug_Server.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/FWDebug_Server.gif
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/FWDebug:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/FWDebug
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Info.plist
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/css/jquery.fileupload.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | /*
3 | * jQuery File Upload Plugin CSS 1.3.0
4 | * https://github.com/blueimp/jQuery-File-Upload
5 | *
6 | * Copyright 2013, Sebastian Tschan
7 | * https://blueimp.net
8 | *
9 | * Licensed under the MIT license:
10 | * http://www.opensource.org/licenses/MIT
11 | */
12 |
13 | .fileinput-button {
14 | position: relative;
15 | overflow: hidden;
16 | }
17 | .fileinput-button input {
18 | position: absolute;
19 | top: 0;
20 | right: 0;
21 | margin: 0;
22 | opacity: 0;
23 | -ms-filter: 'alpha(opacity=0)';
24 | font-size: 200px;
25 | direction: ltr;
26 | cursor: pointer;
27 | }
28 |
29 | /* Fixes for IE < 8 */
30 | @media screen\9 {
31 | .fileinput-button input {
32 | filter: alpha(opacity=0);
33 | font-size: 100%;
34 | height: 100%;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "PROLOGUE" = "Drag & drop files on this window or use the \"Upload Files…\" button to upload new files.
";
2 | "EPILOGUE" = "";
3 | "FOOTER_FORMAT" = "%@ %@";
4 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/js/tmpl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){"use strict";var b=function(a,c){var d=/[^\w\-\.:]/.test(a)?new Function(b.arg+",tmpl","var _e=tmpl.encode"+b.helper+",_s='"+a.replace(b.regexp,b.func)+"';return _s;"):b.cache[a]=b.cache[a]||b(b.load(a));return c?d(c,b):function(a){return d(a,b)}};b.cache={},b.load=function(a){return document.getElementById(a).innerHTML},b.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,b.func=function(a,b,c,d,e,f){return b?{"\n":"\\n","\r":"\\r"," ":"\\t"," ":" "}[b]||"\\"+b:c?"="===c?"'+_e("+d+")+'":"'+("+d+"==null?'':"+d+")+'":e?"';":f?"_s+='":void 0},b.encReg=/[<>&"'\x00]/g,b.encMap={"<":"<",">":">","&":"&",'"':""","'":"'"},b.encode=function(a){return(null==a?"":""+a).replace(b.encReg,function(a){return b.encMap[a]||""})},b.arg="o",b.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return b}):a.tmpl=b}(this);
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Headers/CallAccessor.h:
--------------------------------------------------------------------------------
1 | //
2 | // CallAccessor.h
3 | // Echo
4 | //
5 | // Created by Alejandro Alonso
6 | // Copyright © 2021 Alejandro Alonso. All rights reserved.
7 | //
8 |
9 | #ifndef CALL_ACCESSOR_H
10 | #define CALL_ACCESSOR_H
11 |
12 | #include
13 |
14 | typedef struct CMetadataResponse {
15 | const void *Metadata;
16 | size_t State;
17 | } CMetadataResponse;
18 |
19 | const CMetadataResponse echo_callAccessor0(const void *ptr, size_t request);
20 |
21 | const CMetadataResponse echo_callAccessor1(const void *ptr, size_t request,
22 | const void *arg0);
23 |
24 | const CMetadataResponse echo_callAccessor2(const void *ptr, size_t request,
25 | const void *arg0, const void *arg1);
26 |
27 | const CMetadataResponse echo_callAccessor3(const void *ptr, size_t request,
28 | const void *arg0, const void *arg1,
29 | const void *arg2);
30 |
31 | // Where args is a list of pointers.
32 | const CMetadataResponse echo_callAccessor(const void *ptr, size_t request,
33 | const void *args);
34 |
35 | #endif /* CALL_ACCESSOR_H */
36 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Headers/FLEXMetadataExtras.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMetadataExtras.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 4/26/22.
6 | //
7 |
8 | #import
9 | #import "FLEXMethodBase.h"
10 | #import "FLEXProperty.h"
11 | #import "FLEXIvar.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | /// A dictionary mapping type encoding strings to an array of field titles
16 | extern NSString * const FLEXAuxiliarynfoKeyFieldLabels;
17 |
18 | @protocol FLEXMetadataAuxiliaryInfo
19 |
20 | /// Used to supply arbitrary additional data that need not be exposed by their own properties
21 | - (nullable id)auxiliaryInfoForKey:(NSString *)key;
22 |
23 | @end
24 |
25 | @interface FLEXMethodBase (Auxiliary) @end
26 | @interface FLEXProperty (Auxiliary) @end
27 | @interface FLEXIvar (Auxiliary) @end
28 |
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Headers/FLEXSwiftInternal.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSwiftInternal.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 10/28/21.
6 | // Copyright © 2021 Flipboard. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | BOOL FLEXIsSwiftObjectOrClass(id objOrClass);
18 |
19 | #ifdef __cplusplus
20 | }
21 | #endif
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Headers/FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/20.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FWDebugManager.h"
10 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Info.plist
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Modules/FWDebug.swiftmodule/arm64-apple-ios.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Modules/FWDebug.swiftmodule/arm64-apple-ios.swiftdoc
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64/FWDebug.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module FWDebug {
2 | umbrella header "FWDebug-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
8 | module FWDebug.Swift {
9 | header "FWDebug-Swift.h"
10 | requires objc
11 | }
12 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/FWDebug:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/FWDebug
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Info.plist
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/css/jquery.fileupload.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | /*
3 | * jQuery File Upload Plugin CSS 1.3.0
4 | * https://github.com/blueimp/jQuery-File-Upload
5 | *
6 | * Copyright 2013, Sebastian Tschan
7 | * https://blueimp.net
8 | *
9 | * Licensed under the MIT license:
10 | * http://www.opensource.org/licenses/MIT
11 | */
12 |
13 | .fileinput-button {
14 | position: relative;
15 | overflow: hidden;
16 | }
17 | .fileinput-button input {
18 | position: absolute;
19 | top: 0;
20 | right: 0;
21 | margin: 0;
22 | opacity: 0;
23 | -ms-filter: 'alpha(opacity=0)';
24 | font-size: 200px;
25 | direction: ltr;
26 | cursor: pointer;
27 | }
28 |
29 | /* Fixes for IE < 8 */
30 | @media screen\9 {
31 | .fileinput-button input {
32 | filter: alpha(opacity=0);
33 | font-size: 100%;
34 | height: 100%;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "PROLOGUE" = "Drag & drop files on this window or use the \"Upload Files…\" button to upload new files.
";
2 | "EPILOGUE" = "";
3 | "FOOTER_FORMAT" = "%@ %@";
4 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/GCDWebUploader.bundle/Contents/Resources/js/tmpl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){"use strict";var b=function(a,c){var d=/[^\w\-\.:]/.test(a)?new Function(b.arg+",tmpl","var _e=tmpl.encode"+b.helper+",_s='"+a.replace(b.regexp,b.func)+"';return _s;"):b.cache[a]=b.cache[a]||b(b.load(a));return c?d(c,b):function(a){return d(a,b)}};b.cache={},b.load=function(a){return document.getElementById(a).innerHTML},b.regexp=/([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g,b.func=function(a,b,c,d,e,f){return b?{"\n":"\\n","\r":"\\r"," ":"\\t"," ":" "}[b]||"\\"+b:c?"="===c?"'+_e("+d+")+'":"'+("+d+"==null?'':"+d+")+'":e?"';":f?"_s+='":void 0},b.encReg=/[<>&"'\x00]/g,b.encMap={"<":"<",">":">","&":"&",'"':""","'":"'"},b.encode=function(a){return(null==a?"":""+a).replace(b.encReg,function(a){return b.encMap[a]||""})},b.arg="o",b.helper=",print=function(s,e){_s+=e?(s==null?'':s):_e(s);},include=function(s,d){_s+=tmpl(s,d);}","function"==typeof define&&define.amd?define(function(){return b}):a.tmpl=b}(this);
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Headers/FLEXMetadataExtras.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXMetadataExtras.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 4/26/22.
6 | //
7 |
8 | #import
9 | #import "FLEXMethodBase.h"
10 | #import "FLEXProperty.h"
11 | #import "FLEXIvar.h"
12 |
13 | NS_ASSUME_NONNULL_BEGIN
14 |
15 | /// A dictionary mapping type encoding strings to an array of field titles
16 | extern NSString * const FLEXAuxiliarynfoKeyFieldLabels;
17 |
18 | @protocol FLEXMetadataAuxiliaryInfo
19 |
20 | /// Used to supply arbitrary additional data that need not be exposed by their own properties
21 | - (nullable id)auxiliaryInfoForKey:(NSString *)key;
22 |
23 | @end
24 |
25 | @interface FLEXMethodBase (Auxiliary) @end
26 | @interface FLEXProperty (Auxiliary) @end
27 | @interface FLEXIvar (Auxiliary) @end
28 |
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Headers/FLEXSwiftInternal.h:
--------------------------------------------------------------------------------
1 | //
2 | // FLEXSwiftInternal.h
3 | // FLEX
4 | //
5 | // Created by Tanner Bennett on 10/28/21.
6 | // Copyright © 2021 Flipboard. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | BOOL FLEXIsSwiftObjectOrClass(id objOrClass);
18 |
19 | #ifdef __cplusplus
20 | }
21 | #endif
22 |
23 | NS_ASSUME_NONNULL_END
24 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Headers/FWDebug.h:
--------------------------------------------------------------------------------
1 | //
2 | // FWDebug.h
3 | // FWDebug
4 | //
5 | // Created by wuyong on 17/2/20.
6 | // Copyright © 2017年 wuyong.site. All rights reserved.
7 | //
8 |
9 | #import "FWDebugManager.h"
10 |
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Info.plist
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Modules/FWDebug.swiftmodule/arm64-apple-ios-simulator.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Modules/FWDebug.swiftmodule/arm64-apple-ios-simulator.swiftdoc
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Modules/FWDebug.swiftmodule/x86_64-apple-ios-simulator.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lszzy/FWDebug/76a657cee1670d2ae8709c20b6500807f8836d9a/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Modules/FWDebug.swiftmodule/x86_64-apple-ios-simulator.swiftdoc
--------------------------------------------------------------------------------
/Framework/FWDebug.xcframework/ios-arm64_x86_64-simulator/FWDebug.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module FWDebug {
2 | umbrella header "FWDebug-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
8 | module FWDebug.Swift {
9 | header "FWDebug-Swift.h"
10 | requires objc
11 | }
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 wuyong
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.3
2 | import PackageDescription
3 |
4 | let package = Package(
5 | name: "FWDebug",
6 | platforms: [
7 | .iOS(.v12)
8 | ],
9 | products: [
10 | .library(
11 | name: "FWDebug",
12 | targets: ["FWDebug"]
13 | )
14 | ],
15 | targets: [
16 | .binaryTarget(
17 | name: "FWDebug",
18 | url: "https://github.com/lszzy/FWDebug/releases/download/6.0.2/FWDebug.xcframework.zip",
19 | checksum: "2102ce0fb3b58de4bb9b994c9a000bc6acd9ececdea46ae164938bde89bf0930"
20 | )
21 | ]
22 | )
23 |
--------------------------------------------------------------------------------
/_Pods.xcodeproj:
--------------------------------------------------------------------------------
1 | Example/Pods/Pods.xcodeproj
--------------------------------------------------------------------------------