Compare commits
16 Commits
c80be9960a
...
8385b205c3
| Author | SHA1 | Date | |
|---|---|---|---|
| 8385b205c3 | |||
|
|
56c0cee119 | ||
|
|
833e4f0422 | ||
|
|
ee7736caee | ||
|
|
8a11043f37 | ||
|
|
9ab0e84b1b | ||
|
|
fe7a839b14 | ||
|
|
d40ccc8786 | ||
|
|
8f056646d9 | ||
|
|
6468665116 | ||
|
|
ed6e15edc8 | ||
|
|
bd477678bc | ||
|
|
b26997af00 | ||
|
|
1e1cc37c3b | ||
|
|
2216a3f94d | ||
|
|
6cc083b860 |
13
desktop/PortForwardingMacApp/Podfile
Normal file
13
desktop/PortForwardingMacApp/Podfile
Normal file
@@ -0,0 +1,13 @@
|
||||
# Uncomment the next line to define a global platform for your project
|
||||
# platform :ios, '9.0'
|
||||
|
||||
target 'PortForwardingMacApp' do
|
||||
# Comment the next line if you don't want to use dynamic frameworks
|
||||
#use_frameworks!
|
||||
platform :osx, '11'
|
||||
|
||||
# Pods for PortForwardingMacApp
|
||||
pod 'Flipper-PeerTalk', '~>0.0'
|
||||
pod 'CocoaAsyncSocket', '~>7.6'
|
||||
|
||||
end
|
||||
20
desktop/PortForwardingMacApp/Podfile.lock
Normal file
20
desktop/PortForwardingMacApp/Podfile.lock
Normal file
@@ -0,0 +1,20 @@
|
||||
PODS:
|
||||
- CocoaAsyncSocket (7.6.5)
|
||||
- Flipper-PeerTalk (0.0.4)
|
||||
|
||||
DEPENDENCIES:
|
||||
- CocoaAsyncSocket (~> 7.6)
|
||||
- Flipper-PeerTalk (~> 0.0)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- CocoaAsyncSocket
|
||||
- Flipper-PeerTalk
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
|
||||
|
||||
PODFILE CHECKSUM: 861e0c9ba6cbdc85168a923850426dcf49e444fa
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
@@ -0,0 +1,417 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 55;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3B3526C92757197400D803F9 /* FKPortForwardingClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B61AC1A2756C3D30017E050 /* FKPortForwardingClient.m */; };
|
||||
3B3526CA2757197400D803F9 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B3FD2F527565B8000D731DB /* main.m */; };
|
||||
3B3526CF275721B500D803F9 /* FBPortForwardingMacApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0A99AA5350C20B2CFA072E3 /* FBPortForwardingMacApp.framework */; };
|
||||
49AE9D8F5494BB1BC5BF2B9E /* libPods-PortForwardingMacApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFC73B0CB918678127B57C88 /* libPods-PortForwardingMacApp.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
3B3526D1275721B500D803F9 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
339253FD0D50C9D90FA019FF /* Pods-PortForwardingMacApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PortForwardingMacApp.release.xcconfig"; path = "../../Pods/Target Support Files/Pods-PortForwardingMacApp/Pods-PortForwardingMacApp.release.xcconfig"; sourceTree = "<group>"; };
|
||||
3B3526B9275718D700D803F9 /* PortForwardingMacApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PortForwardingMacApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3B3FD2F527565B8000D731DB /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
3B61AC192756C3D30017E050 /* FKPortForwardingClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FKPortForwardingClient.h; path = iOS/FlipperKit/FKPortForwarding/FKPortForwardingClient.h; sourceTree = SOURCE_ROOT; };
|
||||
3B61AC1A2756C3D30017E050 /* FKPortForwardingClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FKPortForwardingClient.m; path = iOS/FlipperKit/FKPortForwarding/FKPortForwardingClient.m; sourceTree = SOURCE_ROOT; };
|
||||
95395DC97D1F23A7B72F2FB8 /* Pods-PortForwardingMacApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PortForwardingMacApp.debug.xcconfig"; path = "Target Support Files/Pods-PortForwardingMacApp/Pods-PortForwardingMacApp.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B0A99AA5350C20B2CFA072E3 /* FBPortForwardingMacApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FBPortForwardingMacApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
BFC73B0CB918678127B57C88 /* libPods-PortForwardingMacApp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PortForwardingMacApp.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
3B3526B6275718D700D803F9 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3B3526CF275721B500D803F9 /* FBPortForwardingMacApp.framework in Frameworks */,
|
||||
49AE9D8F5494BB1BC5BF2B9E /* libPods-PortForwardingMacApp.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
3B3FD2E927565B8000D731DB = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B3FD2F427565B8000D731DB /* PortForwardingMacApp */,
|
||||
3B3FD2F327565B8000D731DB /* Products */,
|
||||
3BDD19D5275661C600E99F80 /* Frameworks */,
|
||||
FE7B3BC513417A34A3909022 /* Pods */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3B3FD2F327565B8000D731DB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B3526B9275718D700D803F9 /* PortForwardingMacApp.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3B3FD2F427565B8000D731DB /* PortForwardingMacApp */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BB802F8275852CD00A82E32 /* FKPortForwarding */,
|
||||
3B3FD2F527565B8000D731DB /* main.m */,
|
||||
);
|
||||
path = PortForwardingMacApp;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3BB802F8275852CD00A82E32 /* FKPortForwarding */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3BB802FF2758545200A82E32 /* FKPortForwardingClient.h */,
|
||||
3BB803002758545200A82E32 /* FKPortForwardingClient.m */,
|
||||
3BB802FE2758545200A82E32 /* FKPortForwardingCommon.h */,
|
||||
);
|
||||
name = FKPortForwarding;
|
||||
path = ..;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3BDD19D5275661C600E99F80 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B0A99AA5350C20B2CFA072E3 /* FBPortForwardingMacApp.framework */,
|
||||
BFC73B0CB918678127B57C88 /* libPods-PortForwardingMacApp.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FE7B3BC513417A34A3909022 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
95395DC97D1F23A7B72F2FB8 /* Pods-PortForwardingMacApp.debug.xcconfig */,
|
||||
339253FD0D50C9D90FA019FF /* Pods-PortForwardingMacApp.release.xcconfig */,
|
||||
);
|
||||
name = Pods;
|
||||
path = iOS/Pods;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
3B3526B8275718D700D803F9 /* PortForwardingMacApp */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3B3526C6275718D800D803F9 /* Build configuration list for PBXNativeTarget "PortForwardingMacApp" */;
|
||||
buildPhases = (
|
||||
B95B3E164CB7F2CE4005C454 /* [CP] Check Pods Manifest.lock */,
|
||||
3B3526B5275718D700D803F9 /* Sources */,
|
||||
3B3526B6275718D700D803F9 /* Frameworks */,
|
||||
3B3526B7275718D700D803F9 /* Resources */,
|
||||
3B3526D1275721B500D803F9 /* Embed Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = PortForwardingMacApp;
|
||||
productName = PortForwardingMacApp;
|
||||
productReference = 3B3526B9275718D700D803F9 /* PortForwardingMacApp.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
3B3FD2EA27565B8000D731DB /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = 1;
|
||||
LastUpgradeCheck = 1310;
|
||||
TargetAttributes = {
|
||||
3B3526B8275718D700D803F9 = {
|
||||
CreatedOnToolsVersion = 13.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 3B3FD2ED27565B8000D731DB /* Build configuration list for PBXProject "PortForwardingMacApp" */;
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 3B3FD2E927565B8000D731DB;
|
||||
productRefGroup = 3B3FD2F327565B8000D731DB /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
3B3526B8275718D700D803F9 /* PortForwardingMacApp */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
3B3526B7275718D700D803F9 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
B95B3E164CB7F2CE4005C454 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-PortForwardingMacApp-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
3B3526B5275718D700D803F9 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3B2385EB275850F100789041 /* main.m in Sources */,
|
||||
3BB803012758545200A82E32 /* FKPortForwardingClient.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
3B3526C7275718D800D803F9 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 95395DC97D1F23A7B72F2FB8 /* Pods-PortForwardingMacApp.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "";
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"${PODS_ROOT}/Headers/Public\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/CocoaAsyncSocket\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/Flipper-PeerTalk\"",
|
||||
"${SRCROOT}/**",
|
||||
);
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2013-present Facebook. All rights reserved.";
|
||||
INFOPLIST_KEY_NSMainNibFile = MainMenu;
|
||||
INFOPLIST_KEY_NSPrincipalClass = NSApplication;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.PortForwardingMacApp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3B3526C8275718D800D803F9 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 339253FD0D50C9D90FA019FF /* Pods-PortForwardingMacApp.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = "";
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"\"${PODS_ROOT}/Headers/Public\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/CocoaAsyncSocket\"",
|
||||
"\"${PODS_ROOT}/Headers/Public/Flipper-PeerTalk\"",
|
||||
"${SRCROOT}/**",
|
||||
);
|
||||
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools";
|
||||
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2013-present Facebook. All rights reserved.";
|
||||
INFOPLIST_KEY_NSMainNibFile = MainMenu;
|
||||
INFOPLIST_KEY_NSPrincipalClass = NSApplication;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.facebook.PortForwardingMacApp;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
3B3FD2F727565B8000D731DB /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3B3FD2F827565B8000D731DB /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
3B3526C6275718D800D803F9 /* Build configuration list for PBXNativeTarget "PortForwardingMacApp" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3B3526C7275718D800D803F9 /* Debug */,
|
||||
3B3526C8275718D800D803F9 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
3B3FD2ED27565B8000D731DB /* Build configuration list for PBXProject "PortForwardingMacApp" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3B3FD2F727565B8000D731DB /* Debug */,
|
||||
3B3FD2F827565B8000D731DB /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 3B3FD2EA27565B8000D731DB /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1310"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3B3526B8275718D700D803F9"
|
||||
BuildableName = "PortForwardingMacApp.app"
|
||||
BlueprintName = "PortForwardingMacApp"
|
||||
ReferencedContainer = "container:PortForwardingMacApp.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3B3526B8275718D700D803F9"
|
||||
BuildableName = "PortForwardingMacApp.app"
|
||||
BlueprintName = "PortForwardingMacApp"
|
||||
ReferencedContainer = "container:PortForwardingMacApp.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3B3526B8275718D700D803F9"
|
||||
BuildableName = "PortForwardingMacApp.app"
|
||||
BlueprintName = "PortForwardingMacApp"
|
||||
ReferencedContainer = "container:PortForwardingMacApp.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#define FBPFTrace(...) /*NSLog(__VA_ARGS__)*/
|
||||
#define FBPFLog(...) NSLog(__VA_ARGS__)
|
||||
|
||||
enum {
|
||||
FKPortForwardingFrameTypeOpenPipe = 201,
|
||||
FKPortForwardingFrameTypeWriteToPipe = 202,
|
||||
FKPortForwardingFrameTypeClosePipe = 203,
|
||||
};
|
||||
|
||||
static dispatch_data_t NSDataToGCDData(NSData* data) {
|
||||
__block NSData* retainedData = data;
|
||||
return dispatch_data_create(data.bytes, data.length, nil, ^{
|
||||
retainedData = nil;
|
||||
});
|
||||
(void)retainedData;
|
||||
}
|
||||
@@ -15,7 +15,6 @@ import memoize from 'lodash.memoize';
|
||||
import {promisify} from 'util';
|
||||
import child_process from 'child_process';
|
||||
import fs from 'fs-extra';
|
||||
import path from 'path';
|
||||
import {recorder} from '../../recorder';
|
||||
const exec = promisify(child_process.exec);
|
||||
|
||||
@@ -178,7 +177,8 @@ async function queryTargetsWithIdb(
|
||||
Run 'idb kill' from terminal.`;
|
||||
|
||||
try {
|
||||
const {stdout} = await safeExec(cmd);
|
||||
const {stdout} = await unsafeExec(cmd);
|
||||
|
||||
if (!stdout) {
|
||||
recorder.event('cmd', {
|
||||
cmd,
|
||||
|
||||
@@ -8,3 +8,4 @@
|
||||
*/
|
||||
|
||||
export const isFBBuild: boolean = false;
|
||||
export const GRAPH_SECRET = '';
|
||||
|
||||
@@ -21,6 +21,7 @@ import {FlipperServerCompanionEnv} from 'flipper-server-companion';
|
||||
import {validateAuthToken} from '../app-connectivity/certificate-exchange/certificate-utils';
|
||||
import {tracker} from '../tracker';
|
||||
import {EnvironmentInfo, isProduction} from 'flipper-common';
|
||||
import {GRAPH_SECRET} from '../fb-stubs/constants';
|
||||
|
||||
type Config = {
|
||||
port: number;
|
||||
@@ -147,7 +148,11 @@ async function startHTTPServer(
|
||||
? path.join(config.staticPath, config.entry)
|
||||
: path.join(config.staticPath, 'loading.html');
|
||||
fs.readFile(resource, (_err, content) => {
|
||||
res.end(content);
|
||||
const processedContent = content
|
||||
.toString()
|
||||
.replace('GRAPH_SECRET_REPLACE_ME', GRAPH_SECRET)
|
||||
.replace('FLIPPER_APP_VERSION_REPLACE_ME', environmentInfo.appVersion);
|
||||
res.end(processedContent);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
startServer,
|
||||
tracker,
|
||||
} from 'flipper-server-core';
|
||||
import {isTest} from 'flipper-common';
|
||||
import {addLogTailer, isTest, LoggerFormat} from 'flipper-common';
|
||||
import exitHook from 'exit-hook';
|
||||
import {getAuthToken} from 'flipper-server-core';
|
||||
import {findInstallation} from './findInstallation';
|
||||
@@ -216,6 +216,12 @@ async function start() {
|
||||
// At this point, the HTTP server is ready and configuration is set.
|
||||
await launch();
|
||||
|
||||
if (!isProduction) {
|
||||
addLogTailer((level, ...data) => {
|
||||
flipperServer.emit('server-log', LoggerFormat(level, ...data));
|
||||
});
|
||||
}
|
||||
|
||||
const t6 = performance.now();
|
||||
const launchedMS = t6 - t5;
|
||||
|
||||
|
||||
41
desktop/flipper-ui-browser/src/fb-stubs/Logger.tsx
Normal file
41
desktop/flipper-ui-browser/src/fb-stubs/Logger.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {Logger, LoggerArgs, NoopLogger} from 'flipper-common';
|
||||
|
||||
const naiveLogger: Logger = {
|
||||
track(...args: [any, any, any?, any?]) {
|
||||
console.warn('(skipper track)', args);
|
||||
},
|
||||
trackTimeSince(...args: [any, any, any?]) {
|
||||
console.warn('(skipped trackTimeSince)', args);
|
||||
},
|
||||
debug(...args: any[]) {
|
||||
console.debug(...args);
|
||||
},
|
||||
error(...args: any[]) {
|
||||
console.error(...args);
|
||||
console.warn('(skipped error reporting)');
|
||||
},
|
||||
warn(...args: any[]) {
|
||||
console.warn(...args);
|
||||
console.warn('(skipped error reporting)');
|
||||
},
|
||||
info(...args: any[]) {
|
||||
console.info(...args);
|
||||
},
|
||||
};
|
||||
|
||||
export function init(args?: LoggerArgs): Logger {
|
||||
if (args && args.isTest) {
|
||||
return new NoopLogger();
|
||||
} else {
|
||||
return naiveLogger;
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@ declare global {
|
||||
entryPoint: string;
|
||||
debug: boolean;
|
||||
};
|
||||
GRAPH_SECRET: string;
|
||||
FLIPPER_APP_VERSION: string;
|
||||
|
||||
flipperShowMessage?(message: string): void;
|
||||
flipperHideMessage?(): void;
|
||||
|
||||
@@ -7,7 +7,12 @@
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {getLogger, Logger, setLoggerInstance} from 'flipper-common';
|
||||
import {
|
||||
getLogger,
|
||||
getStringFromErrorLike,
|
||||
setLoggerInstance,
|
||||
} from 'flipper-common';
|
||||
import {init as initLogger} from './fb-stubs/Logger';
|
||||
import {initializeRenderHost} from './initializeRenderHost';
|
||||
import {createFlipperServer, FlipperServerState} from 'flipper-server-client';
|
||||
|
||||
@@ -19,6 +24,8 @@ if (loadingContainer) {
|
||||
let cachedFile: {name: string; data: string} | undefined;
|
||||
let cachedDeepLinkURL: string | undefined;
|
||||
|
||||
const logger = initLogger();
|
||||
|
||||
async function start() {
|
||||
// @ts-ignore
|
||||
electronRequire = function (path: string) {
|
||||
@@ -30,7 +37,6 @@ async function start() {
|
||||
};
|
||||
};
|
||||
|
||||
const logger = createDelegatedLogger();
|
||||
setLoggerInstance(logger);
|
||||
|
||||
const params = new URL(location.href).searchParams;
|
||||
@@ -42,12 +48,19 @@ async function start() {
|
||||
console.info(
|
||||
'[flipper-client][ui-browser] Get token from manifest instead',
|
||||
);
|
||||
try {
|
||||
const manifestResponse = await fetch('manifest.json');
|
||||
const manifest = await manifestResponse.json();
|
||||
token = manifest.token;
|
||||
} catch (e) {
|
||||
console.warn(
|
||||
'[flipper-client][ui-browser] Failed to get token from manifest. Error:',
|
||||
e.message,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
console.info(
|
||||
getLogger().info(
|
||||
'[flipper-client][ui-browser] Token is available: ',
|
||||
token?.length != 0,
|
||||
);
|
||||
@@ -72,7 +85,8 @@ async function start() {
|
||||
cachedDeepLinkURL = deeplinkURL.toString();
|
||||
}
|
||||
|
||||
console.info('[flipper-client][ui-browser] Create WS client');
|
||||
getLogger().info('[flipper-client][ui-browser] Create WS client');
|
||||
|
||||
const flipperServer = await createFlipperServer(
|
||||
location.hostname,
|
||||
parseInt(location.port, 10),
|
||||
@@ -80,39 +94,43 @@ async function start() {
|
||||
(state: FlipperServerState) => {
|
||||
switch (state) {
|
||||
case FlipperServerState.CONNECTING:
|
||||
console.info('[flipper-client] Connecting to server');
|
||||
getLogger().info('[flipper-client] Connecting to server');
|
||||
window.flipperShowMessage?.('Connecting to server...');
|
||||
break;
|
||||
case FlipperServerState.CONNECTED:
|
||||
console.info('[flipper-client] Connection established with server');
|
||||
getLogger().info(
|
||||
'[flipper-client] Connection established with server',
|
||||
);
|
||||
window.flipperHideMessage?.();
|
||||
break;
|
||||
case FlipperServerState.DISCONNECTED:
|
||||
console.info('[flipper-client] Disconnected from server');
|
||||
getLogger().info('[flipper-client] Disconnected from server');
|
||||
window.flipperShowMessage?.('Waiting for server...');
|
||||
break;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
console.info('[flipper-client][ui-browser] WS client connected');
|
||||
getLogger().info('[flipper-client][ui-browser] WS client connected');
|
||||
|
||||
flipperServer.on('server-log', (logEntry) => {
|
||||
console[logEntry.type](
|
||||
getLogger()[logEntry.type](
|
||||
`[${logEntry.namespace}] (${new Date(
|
||||
logEntry.time,
|
||||
).toLocaleTimeString()}): ${logEntry.msg}`,
|
||||
);
|
||||
});
|
||||
|
||||
console.info('[flipper-client][ui-browser] Waiting for server connection');
|
||||
getLogger().info(
|
||||
'[flipper-client][ui-browser] Waiting for server connection',
|
||||
);
|
||||
await flipperServer.connect();
|
||||
console.info(
|
||||
getLogger().info(
|
||||
'[flipper-client][ui-browser] Connected to server, get configuration',
|
||||
);
|
||||
const flipperServerConfig = await flipperServer.exec('get-config');
|
||||
|
||||
console.info(
|
||||
getLogger().info(
|
||||
'[flipper-client][ui-browser] Configuration obtained, initialise render host',
|
||||
);
|
||||
|
||||
@@ -124,16 +142,21 @@ async function start() {
|
||||
require('flipper-ui-core').startFlipperDesktop(flipperServer);
|
||||
window.flipperHideMessage?.();
|
||||
|
||||
console.info('[flipper-client][ui-browser] UI initialised');
|
||||
getLogger().info('[flipper-client][ui-browser] UI initialised');
|
||||
logger.track('success-rate', 'flipper-ui-browser-started', {value: 1});
|
||||
}
|
||||
|
||||
start().catch((e) => {
|
||||
console.error('Failed to start flipper-ui-browser', e);
|
||||
getLogger().error('Failed to start flipper-ui-browser', e);
|
||||
logger.track('success-rate', 'flipper-ui-browser-started', {
|
||||
value: 0,
|
||||
error: getStringFromErrorLike(e),
|
||||
});
|
||||
window.flipperShowMessage?.('Failed to start UI with error: ' + e);
|
||||
});
|
||||
|
||||
async function initializePWA() {
|
||||
console.log('[PWA] Initialization');
|
||||
getLogger().info('[PWA] Initialization');
|
||||
|
||||
let rehydrated = false;
|
||||
const openFileIfAny = () => {
|
||||
@@ -164,22 +187,22 @@ async function initializePWA() {
|
||||
navigator.serviceWorker
|
||||
.register('/service-worker.js')
|
||||
.then(() => {
|
||||
console.log('[PWA] Service Worker has been registered');
|
||||
getLogger().info('[PWA] Service Worker has been registered');
|
||||
})
|
||||
.catch((e) => {
|
||||
console.error('[PWA] failed to register Service Worker', e);
|
||||
getLogger().error('[PWA] failed to register Service Worker', e);
|
||||
});
|
||||
}
|
||||
|
||||
if ('launchQueue' in window) {
|
||||
console.log('[PWA] File Handling API is supported');
|
||||
getLogger().debug('[PWA] File Handling API is supported');
|
||||
|
||||
// @ts-ignore
|
||||
window.launchQueue.setConsumer(async (launchParams) => {
|
||||
if (!launchParams || !launchParams.files) {
|
||||
return;
|
||||
}
|
||||
console.log('[PWA] Attempt to to open a file');
|
||||
getLogger().debug('[PWA] Attempt to to open a file');
|
||||
for (const file of launchParams.files) {
|
||||
const blob = await file.getFile();
|
||||
blob.handle = file;
|
||||
@@ -196,72 +219,20 @@ async function initializePWA() {
|
||||
console.warn('[PWA] File Handling API is not supported');
|
||||
}
|
||||
|
||||
console.log('[PWA] Add before install prompt listener');
|
||||
getLogger().debug('[PWA] Add before install prompt listener');
|
||||
window.addEventListener('beforeinstallprompt', (e) => {
|
||||
// Prevent Chrome 67 and earlier from automatically showing the prompt.
|
||||
e.preventDefault();
|
||||
// Stash the event so it can be triggered later.
|
||||
// @ts-ignore
|
||||
global.PWAppInstallationEvent = e;
|
||||
console.log('[PWA] Installation event has been captured');
|
||||
getLogger().info('[PWA] Installation event has been captured');
|
||||
});
|
||||
|
||||
window.addEventListener('storeRehydrated', () => {
|
||||
console.info('[PWA] Store is rehydrated');
|
||||
getLogger().info('[PWA] Store is rehydrated');
|
||||
rehydrated = true;
|
||||
openFileIfAny();
|
||||
openURLIfAny();
|
||||
});
|
||||
}
|
||||
|
||||
// getLogger() is not yet created when the electron app starts.
|
||||
// we can't create it here yet, as the real logger is wired up to
|
||||
// the redux store and the rest of the world. So we create a delegating logger
|
||||
// that uses a simple implementation until the real one comes available.
|
||||
function createDelegatedLogger(): Logger {
|
||||
const naiveLogger: Logger = {
|
||||
track(...args: [any, any, any?, any?]) {
|
||||
console.warn('(skipper track)', args);
|
||||
},
|
||||
trackTimeSince(...args: [any, any, any?]) {
|
||||
console.warn('(skipped trackTimeSince)', args);
|
||||
},
|
||||
debug(...args: any[]) {
|
||||
console.debug(...args);
|
||||
},
|
||||
error(...args: any[]) {
|
||||
console.error(...args);
|
||||
console.warn('(skipped error reporting)');
|
||||
},
|
||||
warn(...args: any[]) {
|
||||
console.warn(...args);
|
||||
console.warn('(skipped error reporting)');
|
||||
},
|
||||
info(...args: any[]) {
|
||||
console.info(...args);
|
||||
},
|
||||
};
|
||||
// will be overwrittingen later
|
||||
setLoggerInstance(naiveLogger);
|
||||
|
||||
return {
|
||||
track() {
|
||||
// noop
|
||||
},
|
||||
trackTimeSince() {
|
||||
// noop
|
||||
},
|
||||
debug(...args: any[]) {
|
||||
getLogger().debug(...args);
|
||||
},
|
||||
error(...args: any[]) {
|
||||
getLogger().error(...args);
|
||||
},
|
||||
warn(...args: any[]) {
|
||||
getLogger().warn(...args);
|
||||
},
|
||||
info(...args: any[]) {
|
||||
getLogger().info(...args);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
"npm": "use yarn instead",
|
||||
"yarn": "^1.16"
|
||||
},
|
||||
"version": "0.226.0",
|
||||
"version": "0.227.0",
|
||||
"workspaces": {
|
||||
"packages": [
|
||||
"scripts",
|
||||
|
||||
@@ -27,7 +27,7 @@ You also need to compile in the `litho-annotations` package, as Flipper reflects
|
||||
|
||||
```groovy
|
||||
dependencies {
|
||||
debugImplementation 'com.facebook.flipper:flipper-litho-plugin:0.226.0'
|
||||
debugImplementation 'com.facebook.flipper:flipper-litho-plugin:0.227.0'
|
||||
debugImplementation 'com.facebook.litho:litho-annotations:0.19.0'
|
||||
// ...
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ To setup the <Link to={useBaseUrl("/docs/features/plugins/leak-canary")}>LeakCan
|
||||
|
||||
```groovy
|
||||
dependencies {
|
||||
debugImplementation 'com.facebook.flipper:flipper-leakcanary2-plugin:0.226.0'
|
||||
debugImplementation 'com.facebook.flipper:flipper-leakcanary2-plugin:0.227.0'
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8.1'
|
||||
}
|
||||
```
|
||||
|
||||
@@ -12,7 +12,7 @@ The network plugin is shipped as a separate Maven artifact, as follows:
|
||||
|
||||
```groovy
|
||||
dependencies {
|
||||
debugImplementation 'com.facebook.flipper:flipper-network-plugin:0.226.0'
|
||||
debugImplementation 'com.facebook.flipper:flipper-network-plugin:0.227.0'
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -31,11 +31,12 @@ import isFB from './isFB';
|
||||
import yargs from 'yargs';
|
||||
import fs from 'fs-extra';
|
||||
import {downloadIcons} from './build-icons';
|
||||
import {spawn} from 'promisify-child-process';
|
||||
import {spawn, exec as execAsync} from 'promisify-child-process';
|
||||
import {homedir} from 'os';
|
||||
import {need as pkgFetch} from 'pkg-fetch';
|
||||
import {exec} from 'child_process';
|
||||
import fetch from '@adobe/node-fetch-retry';
|
||||
import plist from 'simple-plist';
|
||||
|
||||
// This needs to be tested individually. As of 2022Q2, node17 is not supported.
|
||||
const SUPPORTED_NODE_PLATFORM = 'node16';
|
||||
@@ -458,11 +459,13 @@ async function buildServerRelease() {
|
||||
platforms.push(BuildPlatform.WINDOWS);
|
||||
}
|
||||
|
||||
await Promise.all(
|
||||
platforms.map((platform) =>
|
||||
bundleServerReleaseForPlatform(dir, versionNumber, platform),
|
||||
),
|
||||
);
|
||||
// Instead of parallel builds, these have to be done sequential.
|
||||
// As we are building a native app, the resulting binary will be
|
||||
// different per platform meaning that there's a risk of overriding
|
||||
// intermediate artefacts if done in parallel.
|
||||
for (const platform of platforms) {
|
||||
await bundleServerReleaseForPlatform(dir, versionNumber, platform);
|
||||
}
|
||||
}
|
||||
|
||||
function nodeArchFromBuildPlatform(platform: BuildPlatform): string {
|
||||
@@ -515,7 +518,7 @@ async function download(url: string, dest: string): Promise<void> {
|
||||
* @param dest - Destination directory for the extracted contents.
|
||||
*/
|
||||
async function unpack(source: string, destination: string) {
|
||||
console.log(`⚙️ Extracting ${source}.`);
|
||||
console.log(`⚙️ Extracting ${source} to ${destination}.`);
|
||||
|
||||
try {
|
||||
await fs.access(destination, fs.constants.F_OK);
|
||||
@@ -553,6 +556,40 @@ function nodePlatformFromBuildPlatform(platform: BuildPlatform): string {
|
||||
}
|
||||
}
|
||||
|
||||
async function setRuntimeAppIcon(binaryPath: string): Promise<void> {
|
||||
console.log(`⚙️ Updating runtime icon for MacOS in ${binaryPath}.`);
|
||||
const iconPath = path.join(staticDir, 'icon.png');
|
||||
const tempRsrcPath = path.join(os.tmpdir(), 'icon.rsrc');
|
||||
const deRezCmd = `DeRez -only icns ${iconPath} > ${tempRsrcPath}`;
|
||||
try {
|
||||
await execAsync(deRezCmd);
|
||||
} catch (err) {
|
||||
console.error(
|
||||
`❌ Error while extracting icon with '${deRezCmd}'. Error: ${err}`,
|
||||
);
|
||||
throw err;
|
||||
}
|
||||
const rezCmd = `Rez -append ${tempRsrcPath} -o ${binaryPath}`;
|
||||
try {
|
||||
await execAsync(rezCmd);
|
||||
} catch (err) {
|
||||
console.error(
|
||||
`❌ Error while setting icon on executable ${binaryPath}. Error: ${err}`,
|
||||
);
|
||||
throw err;
|
||||
}
|
||||
const updateCmd = `SetFile -a C ${binaryPath}`;
|
||||
try {
|
||||
await execAsync(updateCmd);
|
||||
} catch (err) {
|
||||
console.error(
|
||||
`❌ Error while changing icon visibility on ${binaryPath}. Error: ${err}`,
|
||||
);
|
||||
throw err;
|
||||
}
|
||||
console.log(`✅ Updated flipper-runtime icon.`);
|
||||
}
|
||||
|
||||
async function installNodeBinary(outputPath: string, platform: BuildPlatform) {
|
||||
/**
|
||||
* Below is a temporary patch that doesn't use pkg-fetch to
|
||||
@@ -584,8 +621,15 @@ async function installNodeBinary(outputPath: string, platform: BuildPlatform) {
|
||||
} catch (err) {}
|
||||
if (!cached) {
|
||||
// Download node tarball from the distribution site.
|
||||
// If this is not present (due to a node update) follow these steps:
|
||||
// - Update the download URL to `https://nodejs.org/dist/${NODE_VERSION}/${name}.tar.gz`
|
||||
// - Ensure the Xcode developer tools are installed
|
||||
// - Build a full MacOS server release locally using `yarn build:flipper-server --mac`
|
||||
// - Enter the dist folder: dist/flipper-server-mac-aarch64/Flipper.app/Contents/MacOS
|
||||
// - `mkdir bin && cp flipper-runtime bin/node && tar -czvf node-${NODE_VERSION}-darwin-arm64.tar.gz bin`
|
||||
// - Upload the resulting tar ball to the Flipper release page as a new tag: https://github.com/facebook/flipper/releases
|
||||
await download(
|
||||
`https://nodejs.org/dist/${NODE_VERSION}/${name}.tar.gz`,
|
||||
`https://github.com/facebook/flipper/releases/download/node-${NODE_VERSION}/${name}.tar.gz`,
|
||||
downloadOutputPath,
|
||||
);
|
||||
// Finally, unpack the tarball to a local folder i.e. outputPath.
|
||||
@@ -607,6 +651,19 @@ async function installNodeBinary(outputPath: string, platform: BuildPlatform) {
|
||||
await fs.copyFile(nodePath, outputPath);
|
||||
}
|
||||
|
||||
if (
|
||||
platform === BuildPlatform.MAC_AARCH64 ||
|
||||
platform === BuildPlatform.MAC_X64
|
||||
) {
|
||||
if (process.platform === 'darwin') {
|
||||
await setRuntimeAppIcon(outputPath).catch(() => {
|
||||
console.warn('⚠️ Unable to update runtime icon');
|
||||
});
|
||||
} else {
|
||||
console.warn("⚠️ Skipping icon update as it's only supported on macOS");
|
||||
}
|
||||
}
|
||||
|
||||
// Set +x on the binary as copyFile doesn't maintain the bit.
|
||||
await fs.chmod(outputPath, 0o755);
|
||||
}
|
||||
@@ -669,24 +726,62 @@ async function setUpWindowsBundle(outputDir: string) {
|
||||
|
||||
async function setUpMacBundle(
|
||||
outputDir: string,
|
||||
platform: BuildPlatform,
|
||||
versionNumber: string,
|
||||
): Promise<{nodePath: string; resourcesPath: string}> {
|
||||
console.log(`⚙️ Creating Mac bundle in ${outputDir}`);
|
||||
await fs.copy(path.join(staticDir, 'flipper-server-app-template'), outputDir);
|
||||
|
||||
let appTemplate = path.join(staticDir, 'flipper-server-app-template');
|
||||
if (isFB) {
|
||||
appTemplate = path.join(
|
||||
staticDir,
|
||||
'facebook',
|
||||
'flipper-server-app-template',
|
||||
platform,
|
||||
);
|
||||
console.info('⚙️ Using internal template from: ' + appTemplate);
|
||||
}
|
||||
|
||||
await fs.copy(appTemplate, outputDir);
|
||||
|
||||
function replacePropertyValue(
|
||||
obj: any,
|
||||
targetValue: string,
|
||||
replacementValue: string,
|
||||
): any {
|
||||
if (typeof obj === 'object' && !Array.isArray(obj) && obj !== null) {
|
||||
for (const key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
obj[key] = replacePropertyValue(
|
||||
obj[key],
|
||||
targetValue,
|
||||
replacementValue,
|
||||
);
|
||||
}
|
||||
}
|
||||
} else if (typeof obj === 'string' && obj === targetValue) {
|
||||
obj = replacementValue;
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
console.log(`⚙️ Writing plist`);
|
||||
const pListPath = path.join(
|
||||
const plistPath = path.join(
|
||||
outputDir,
|
||||
'Flipper.app',
|
||||
'Contents',
|
||||
'Info.plist',
|
||||
);
|
||||
const pListContents = await fs.readFile(pListPath, 'utf-8');
|
||||
const updatedPlistContents = pListContents.replace(
|
||||
|
||||
/* eslint-disable node/no-sync*/
|
||||
const pListContents: Record<any, any> = plist.readFileSync(plistPath);
|
||||
replacePropertyValue(
|
||||
pListContents,
|
||||
'{flipper-server-version}',
|
||||
versionNumber,
|
||||
);
|
||||
await fs.writeFile(pListPath, updatedPlistContents, 'utf-8');
|
||||
plist.writeBinaryFileSync(plistPath, pListContents);
|
||||
/* eslint-enable node/no-sync*/
|
||||
|
||||
const resourcesOutputDir = path.join(
|
||||
outputDir,
|
||||
@@ -695,6 +790,10 @@ async function setUpMacBundle(
|
||||
'Resources',
|
||||
'server',
|
||||
);
|
||||
|
||||
if (!(await fs.exists(resourcesOutputDir))) {
|
||||
await fs.mkdir(resourcesOutputDir);
|
||||
}
|
||||
const nodeOutputPath = path.join(
|
||||
outputDir,
|
||||
'Flipper.app',
|
||||
@@ -728,7 +827,7 @@ async function bundleServerReleaseForPlatform(
|
||||
platform === BuildPlatform.MAC_X64 ||
|
||||
platform === BuildPlatform.MAC_AARCH64
|
||||
) {
|
||||
outputPaths = await setUpMacBundle(outputDir, versionNumber);
|
||||
outputPaths = await setUpMacBundle(outputDir, platform, versionNumber);
|
||||
} else if (platform === BuildPlatform.LINUX) {
|
||||
await setUpLinuxBundle(outputDir);
|
||||
} else if (platform === BuildPlatform.WINDOWS) {
|
||||
|
||||
@@ -200,10 +200,10 @@ async function buildDist(buildFolder: string) {
|
||||
const postBuildCallbacks: (() => void)[] = [];
|
||||
|
||||
if (argv.mac || argv['mac-dmg']) {
|
||||
targetsRaw.push(Platform.MAC.createTarget(['dir']));
|
||||
targetsRaw.push(Platform.MAC.createTarget(['dir'], Arch.universal));
|
||||
// You can build mac apps on Linux but can't build dmgs, so we separate those.
|
||||
if (argv['mac-dmg']) {
|
||||
targetsRaw.push(Platform.MAC.createTarget(['dmg']));
|
||||
targetsRaw.push(Platform.MAC.createTarget(['dmg'], Arch.universal));
|
||||
}
|
||||
const macPath = path.join(
|
||||
distDir,
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
"pkg-fetch": "3.4.1",
|
||||
"promisify-child-process": "^4.1.0",
|
||||
"semver": "^7.5.4",
|
||||
"simple-plist": "^1.3.1",
|
||||
"socket.io": "^4.5.0",
|
||||
"tar": "6.1.15",
|
||||
"tmp": "^0.2.1",
|
||||
|
||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>CocoaAsyncSocketMac</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.robbiehanson.CocoaAsyncSocketMac</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>CocoaAsyncSocketMac</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -1,44 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>CocoaAsyncSocketMac</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.robbiehanson.CocoaAsyncSocketMac</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>CocoaAsyncSocketMac</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>FBPortForwarding-Mac</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.facebook.FBPortForwarding-Mac</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>FBPortForwarding-Mac</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string></string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014 Facebook. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>FBPortForwarding-Mac</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.facebook.FBPortForwarding-Mac</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>FBPortForwarding-Mac</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string></string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014 Facebook. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>peertalkMac</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.facebook.peertalkMac</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>peertalkMac</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string></string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014 Facebook. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>peertalkMac</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.facebook.peertalkMac</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>peertalkMac</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string></string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2014 Facebook. All rights reserved.</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>16G29</string>
|
||||
<string>21A559</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
@@ -16,30 +16,34 @@
|
||||
<string>PortForwardingMacApp</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string></string>
|
||||
<string>1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>9A235</string>
|
||||
<string>13A1030d</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>macosx</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>GM</string>
|
||||
<string>12.0</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>17A360</string>
|
||||
<string>21A344</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx10.13</string>
|
||||
<string>macosx12.0</string>
|
||||
<key>DTXcode</key>
|
||||
<string>0900</string>
|
||||
<string>1310</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>9A235</string>
|
||||
<string>13A1030d</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.developer-tools</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.10</string>
|
||||
<string>12.0</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2013-present Facebook. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict/>
|
||||
<key>files2</key>
|
||||
<dict/>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,2 @@
|
||||
# Bump this to ensure we are getting a new content hash when only changing metadata.
|
||||
1
|
||||
@@ -137,6 +137,9 @@
|
||||
window.flipperShowMessage = showMessage;
|
||||
window.flipperHideMessage = hideMessage;
|
||||
|
||||
window.GRAPH_SECRET = 'GRAPH_SECRET_REPLACE_ME';
|
||||
window.FLIPPER_APP_VERSION = 'FLIPPER_APP_VERSION_REPLACE_ME';
|
||||
|
||||
const params = new URL(location.href).searchParams;
|
||||
let token = params.get('token');
|
||||
if (!token) {
|
||||
|
||||
@@ -86,6 +86,9 @@
|
||||
window.flipperShowMessage = showMessage;
|
||||
window.flipperHideMessage = hideMessage;
|
||||
|
||||
window.GRAPH_SECRET = 'GRAPH_SECRET_REPLACE_ME';
|
||||
window.FLIPPER_APP_VERSION = 'FLIPPER_APP_VERSION_REPLACE_ME';
|
||||
|
||||
// load correct theme (n.b. this doesn't handle system value specifically, will assume light in such cases)
|
||||
try {
|
||||
if (window.flipperConfig.theme === 'dark') {
|
||||
|
||||
@@ -137,6 +137,7 @@
|
||||
setTimeout(() => {
|
||||
button.disabled = false;
|
||||
button.value = 'Start';
|
||||
|
||||
}, 30 * 10000);
|
||||
}
|
||||
|
||||
@@ -147,24 +148,18 @@
|
||||
window.location.reload();
|
||||
});
|
||||
|
||||
let autoStarted = false;
|
||||
|
||||
// Check if the server is responding & reload the page if it is.
|
||||
// This handles the case when the device is online, but the server
|
||||
// is offline or misbehaving.
|
||||
async function checkNetworkAndReload() {
|
||||
try {
|
||||
const response = await fetch('.');
|
||||
if (response.status === 200) {
|
||||
if (response.status >= 200 && response.status < 500) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
} catch {
|
||||
// trigger submit button automatically, but only once
|
||||
if (!autoStarted) {
|
||||
autoStarted = true;
|
||||
document.getElementById("submit").click();
|
||||
}
|
||||
// Unable to connect to the server, ignore.
|
||||
}
|
||||
window.setTimeout(checkNetworkAndReload, 2500);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
"flipper-plugin": ["./flipper-plugin/src"],
|
||||
"eslint-plugin-flipper": ["./eslint-plugin-flipper/src"],
|
||||
"flipper-server-core": ["./flipper-server-core/src"],
|
||||
"flipper-server-ui": ["./flipper-server-ui/src"],
|
||||
"flipper-common": ["./flipper-common/src"],
|
||||
"flipper-*": ["./*/src"]
|
||||
},
|
||||
|
||||
@@ -4781,6 +4781,11 @@
|
||||
"@typescript-eslint/types" "5.55.0"
|
||||
eslint-visitor-keys "^3.3.0"
|
||||
|
||||
"@xmldom/xmldom@^0.8.8":
|
||||
version "0.8.10"
|
||||
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
|
||||
integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
|
||||
|
||||
"@xobotyi/scrollbar-width@^1.9.5":
|
||||
version "1.9.5"
|
||||
resolved "https://registry.yarnpkg.com/@xobotyi/scrollbar-width/-/scrollbar-width-1.9.5.tgz#80224a6919272f405b87913ca13b92929bdf3c4d"
|
||||
@@ -5713,6 +5718,11 @@ base@^0.11.1:
|
||||
mixin-deep "^1.2.0"
|
||||
pascalcase "^0.1.1"
|
||||
|
||||
big-integer@1.6.x:
|
||||
version "1.6.51"
|
||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686"
|
||||
integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
|
||||
|
||||
bl@^1.0.0:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
|
||||
@@ -5787,6 +5797,20 @@ boxen@^5.0.0:
|
||||
widest-line "^3.1.0"
|
||||
wrap-ansi "^7.0.0"
|
||||
|
||||
bplist-creator@0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e"
|
||||
integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==
|
||||
dependencies:
|
||||
stream-buffers "2.2.x"
|
||||
|
||||
bplist-parser@0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1"
|
||||
integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==
|
||||
dependencies:
|
||||
big-integer "1.6.x"
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.11"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||
@@ -12527,6 +12551,15 @@ plist@^3.0.1, plist@^3.0.4:
|
||||
base64-js "^1.5.1"
|
||||
xmlbuilder "^9.0.7"
|
||||
|
||||
plist@^3.0.5:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9"
|
||||
integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==
|
||||
dependencies:
|
||||
"@xmldom/xmldom" "^0.8.8"
|
||||
base64-js "^1.5.1"
|
||||
xmlbuilder "^15.1.1"
|
||||
|
||||
posix-character-classes@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
||||
@@ -14289,6 +14322,15 @@ signal-exit@^3.0.3, signal-exit@^3.0.7:
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
|
||||
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
||||
|
||||
simple-plist@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017"
|
||||
integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==
|
||||
dependencies:
|
||||
bplist-creator "0.1.0"
|
||||
bplist-parser "0.3.1"
|
||||
plist "^3.0.5"
|
||||
|
||||
sisteransi@^1.0.4:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
||||
@@ -14581,6 +14623,11 @@ stop-iteration-iterator@^1.0.0:
|
||||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
||||
stream-buffers@2.2.x:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4"
|
||||
integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==
|
||||
|
||||
string-convert@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
|
||||
@@ -15806,7 +15853,7 @@ xml-name-validator@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
|
||||
integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
|
||||
|
||||
xmlbuilder@>=11.0.1:
|
||||
xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1:
|
||||
version "15.1.1"
|
||||
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
|
||||
integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==
|
||||
|
||||
@@ -24,10 +24,10 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
debugImplementation 'com.facebook.flipper:flipper:0.226.0'
|
||||
debugImplementation 'com.facebook.flipper:flipper:0.227.0'
|
||||
debugImplementation 'com.facebook.soloader:soloader:0.10.5'
|
||||
|
||||
releaseImplementation 'com.facebook.flipper:flipper-noop:0.226.0'
|
||||
releaseImplementation 'com.facebook.flipper:flipper-noop:0.227.0'
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ Add all of the code below to your `ios/Podfile`:
|
||||
platform :ios, '9.0'
|
||||
|
||||
def flipper_pods()
|
||||
flipperkit_version = '0.226.0' # should match the version of your Flipper client app
|
||||
flipperkit_version = '0.227.0' # should match the version of your Flipper client app
|
||||
pod 'FlipperKit', '~>' + flipperkit_version, :configuration => 'Debug'
|
||||
pod 'FlipperKit/FlipperKitLayoutPlugin', '~>' + flipperkit_version, :configuration => 'Debug'
|
||||
pod 'FlipperKit/SKIOSNetworkPlugin', '~>' + flipperkit_version, :configuration => 'Debug'
|
||||
|
||||
@@ -34,7 +34,7 @@ Latest version of Flipper requires react-native 0.69+! If you use react-native <
|
||||
|
||||
Android:
|
||||
|
||||
1. Bump the `FLIPPER_VERSION` variable in `android/gradle.properties`, for example: `FLIPPER_VERSION=0.226.0`.
|
||||
1. Bump the `FLIPPER_VERSION` variable in `android/gradle.properties`, for example: `FLIPPER_VERSION=0.227.0`.
|
||||
2. Run `./gradlew clean` in the `android` directory.
|
||||
|
||||
iOS:
|
||||
@@ -44,7 +44,7 @@ react-native version => 0.69.0
|
||||
2. Run `pod install --repo-update` in the `ios` directory.
|
||||
|
||||
react-native version < 0.69.0
|
||||
1. Call `use_flipper` with a specific version in `ios/Podfile`, for example: `use_flipper!({ 'Flipper' => '0.226.0' })`.
|
||||
1. Call `use_flipper` with a specific version in `ios/Podfile`, for example: `use_flipper!({ 'Flipper' => '0.227.0' })`.
|
||||
2. Run `pod install --repo-update` in the `ios` directory.
|
||||
|
||||
## Manual Setup
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# This source code is licensed under the MIT license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
# POM publishing constants
|
||||
VERSION_NAME=0.226.1-SNAPSHOT
|
||||
VERSION_NAME=0.227.0
|
||||
GROUP=com.facebook.flipper
|
||||
SONATYPE_STAGING_PROFILE=comfacebook
|
||||
POM_URL=https://github.com/facebook/flipper
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
@@ -21,5 +21,4 @@ static dispatch_data_t NSDataToGCDData(NSData* data) {
|
||||
return dispatch_data_create(data.bytes, data.length, nil, ^{
|
||||
retainedData = nil;
|
||||
});
|
||||
(void)retainedData;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ DEPENDENCIES:
|
||||
- SocketRocket (~> 0.7.0)
|
||||
|
||||
SPEC REPOS:
|
||||
https://github.com/CocoaPods/Specs:
|
||||
https://github.com/CocoaPods/Specs.git:
|
||||
- CocoaAsyncSocket
|
||||
- DoubleConversion
|
||||
- Flipper-Boost-iOSX
|
||||
@@ -65,4 +65,4 @@ SPEC CHECKSUMS:
|
||||
|
||||
PODFILE CHECKSUM: abf37c1df1aeaa21dc8787782160e039dc2a64a8
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
COCOAPODS: 1.10.2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "js-flipper",
|
||||
"title": "JS Flipper Bindings for Web-Socket based clients",
|
||||
"version": "0.226.0",
|
||||
"version": "0.227.0",
|
||||
"main": "lib/index.js",
|
||||
"browser": {
|
||||
"os": false
|
||||
|
||||
@@ -58,9 +58,9 @@ server-linux:
|
||||
files:
|
||||
frameworks:
|
||||
- '!*'
|
||||
- node
|
||||
- flipper-runtime
|
||||
core:
|
||||
- '!node'
|
||||
- '!flipper-runtime
|
||||
- '!static'
|
||||
static:
|
||||
- '!*'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "react-native-flipper",
|
||||
"title": "React Native Flipper Bindings",
|
||||
"version": "0.226.0",
|
||||
"version": "0.227.0",
|
||||
"description": "Flipper bindings for React Native",
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
|
||||
Reference in New Issue
Block a user