Skip to content

Commit 4d41fc5

Browse files
committed
continue work on NativeScriptRuntime.xcframework
1 parent ed7c94f commit 4d41fc5

34 files changed

+461
-117
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ libffi/darwin_*
1414
libffi/x86_64-*
1515
compile_commands.json
1616
.cache/
17+
runtime/Frameworks/hermes.xcframework

CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.15)
22

3-
set(BRIDGE_TARGET_PLATFORM "macos" CACHE STRING "Target platform for the Objective-C bridge")
3+
set(TARGET_PLATFORM "macos" CACHE STRING "Target platform for the Objective-C bridge")
44
set(METADATA_SIZE 0 CACHE STRING "Size of embedded metadata in bytes")
55

66
project(NativeScript)
@@ -19,7 +19,7 @@ set(BUILD_FRAMEWORK TRUE)
1919

2020
find_program(XCODEBUILD_EXECUTABLE xcodebuild)
2121

22-
if(BRIDGE_TARGET_PLATFORM STREQUAL "ios")
22+
if(TARGET_PLATFORM STREQUAL "ios")
2323
set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "13.0")
2424
set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
2525
set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
@@ -28,7 +28,7 @@ if(BRIDGE_TARGET_PLATFORM STREQUAL "ios")
2828
set(TARGET_PLATFORM_IOS TRUE)
2929
set(SDK_NAME "iphoneos")
3030
set(CMAKE_OSX_ARCHITECTURES "arm64")
31-
elseif(BRIDGE_TARGET_PLATFORM STREQUAL "ios-sim")
31+
elseif(TARGET_PLATFORM STREQUAL "ios-sim")
3232
set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "13.0")
3333
set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2")
3434
set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO")
@@ -38,7 +38,7 @@ elseif(BRIDGE_TARGET_PLATFORM STREQUAL "ios-sim")
3838
set(TARGET_PLATFORM_SIM TRUE)
3939
set(SDK_NAME "iphonesimulator")
4040
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")
41-
elseif(BRIDGE_TARGET_PLATFORM STREQUAL "macos")
41+
elseif(TARGET_PLATFORM STREQUAL "macos")
4242
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "13.0")
4343
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0")
4444
set(LIBFFI_BUILD "macosx-universal")
@@ -47,7 +47,7 @@ elseif(BRIDGE_TARGET_PLATFORM STREQUAL "macos")
4747
set(SDK_NAME "macosx")
4848
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64")
4949
else()
50-
message(FATAL_ERROR "Unknown target platform: ${BRIDGE_TARGET_PLATFORM}")
50+
message(FATAL_ERROR "Unknown target platform: ${TARGET_PLATFORM}")
5151
return()
5252
endif()
5353

@@ -59,7 +59,7 @@ else()
5959
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEMBED_METADATA_SIZE=${METADATA_SIZE}")
6060
endif()
6161

62-
message(STATUS "BRIDGE_TARGET_PLATFORM = ${BRIDGE_TARGET_PLATFORM}")
62+
message(STATUS "TARGET_PLATFORM = ${TARGET_PLATFORM}")
6363

6464
execute_process(
6565
COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path
@@ -111,13 +111,20 @@ add_library(
111111
${LIB_SOURCE_FILES}
112112
)
113113

114+
target_sources(
115+
${NAME}
116+
PRIVATE
117+
"include/NativeScript.h"
118+
)
119+
114120
set_target_properties(${NAME} PROPERTIES
115121
VERSION ${VERSION}
116122
SOVERSION ${VERSION}
117123
FRAMEWORK_VERSION ${VERSION}
118124
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${VERSION}
119125
MACOSX_FRAMEWORK_BUNDLE_VERSION ${VERSION}
120-
MACOSX_FRAMEWORK_IDENTIFIER org.nativescript.nativescript-${BRIDGE_TARGET_PLATFORM}
126+
MACOSX_FRAMEWORK_IDENTIFIER org.nativescript.nativescript-${TARGET_PLATFORM}
127+
PUBLIC_HEADER "include/NativeScript.h"
121128
)
122129

123130
if (BUILD_FRAMEWORK)

deno.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
"tasks": {
1212
"build-libffi": "deno run -A scripts/build_libffi.ts",
1313
"build": "deno run -A scripts/build.ts",
14-
"bench": "node examples/main.js",
15-
"deno": "../deno/target/release/deno run -A",
14+
1615
"bundle": "deno run -A scripts/bundler.ts",
1716
"open-bundle": "open \"NativeScript for macOS.app\"",
17+
1818
"metagen": "deno run -A scripts/metagen.ts",
1919
"build-metagen": "cd metadata && deno task build"
2020
},

include/NativeScript.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#ifndef NATIVESCRIPT_H
2+
#define NATIVESCRIPT_H
3+
4+
extern "C" void objc_bridge_init(void *env, const char *metadata_path);
5+
6+
#endif /* NATIVESCRIPT_H */

include/ObjCBridge.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "Struct.h"
1111
#include "TypeConv.h"
1212
#include "js_native_api.h"
13+
#include "NativeScript.h"
1314
#include "objc/runtime.h"
1415
#include <dlfcn.h>
1516
#include <map>
@@ -19,7 +20,6 @@
1920
#include <unordered_map>
2021
#include <unordered_set>
2122

22-
extern "C" void objc_bridge_init(napi_env env, const char *metadata_path);
2323
extern "C" napi_value napi_register_module_v1(napi_env env, napi_value exports);
2424

2525
using namespace metagen;

metadata/metadata.ios.nsmd

1.5 KB
Binary file not shown.

packages/ios/types/Foundation.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7107,6 +7107,10 @@ declare class NSData extends NSObject implements NSCopying, NSMutableCopying, NS
71077107

71087108
base64Encoding(): string;
71097109

7110+
static dataWithContentsOfFileCompletion(path: string, callback: (p1: NSData) => void): void;
7111+
7112+
writeToFileAtomicallyCompletion(path: string, atomically: boolean, callback: () => void): void;
7113+
71107114
copyWithZone(zone: interop.PointerConvertible): interop.Object;
71117115

71127116
mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;
@@ -9785,6 +9789,10 @@ declare class NSFileHandle extends NSObject implements NSSecureCoding {
97859789

97869790
closeFile(): void;
97879791

9792+
appendDataCompletion(data: NSData, callback: (p1: NSError) => void): void;
9793+
9794+
static fileHandleWithDataCompletion(path: string, data: NSData, callback: (p1: NSFileHandle, p2: NSError) => void): void;
9795+
97889796
static readonly supportsSecureCoding: boolean;
97899797

97909798
encodeWithCoder(coder: NSCoder): void;
@@ -11510,6 +11518,10 @@ declare class NSString extends NSObject implements NSCopying, NSMutableCopying,
1151011518

1151111519
static localizedUserNotificationStringForKeyArguments(key: string, arguments$: NSArray<interop.Object> | Array<interop.Object> | null): string;
1151211520

11521+
static stringWithContentsOfFileEncodingCompletion(path: string, enc: number, callback: (p1: string, p2: NSError) => void): void;
11522+
11523+
writeToFileAtomicallyEncodingCompletion(path: string, atomically: boolean, enc: number, callback: (p1: NSError) => void): void;
11524+
1151311525
copyWithZone(zone: interop.PointerConvertible): interop.Object;
1151411526

1151511527
mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;

packages/ios/types/Runtime.d.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,13 @@ declare interface NSObjectProtocol {
132132
declare class NSObjectProtocol extends NativeObject implements NSObjectProtocol {
133133
}
134134

135+
declare interface NativeScriptEmbedderDelegate {
136+
presentNativeScriptApp(vc: UIViewController): interop.Object;
137+
}
138+
139+
declare class NativeScriptEmbedderDelegate extends NativeObject implements NativeScriptEmbedderDelegate {
140+
}
141+
135142
declare class NSObject extends NativeObject implements NSObjectProtocol {
136143
static load(): void;
137144

@@ -525,10 +532,30 @@ declare class NSObject extends NativeObject implements NSObjectProtocol {
525532
readonly debugDescription: string;
526533
}
527534

535+
declare class NativeScriptEmbedder extends NSObject {
536+
readonly delegate: NativeScriptEmbedderDelegate;
537+
538+
static sharedInstance(): NativeScriptEmbedder;
539+
}
540+
528541
declare class OS_object extends NSObject {
529542
init(): this;
530543
}
531544

545+
declare class NativeScriptUtils extends NSObject {
546+
static getSystemFontWeightItalicSymbolicTraits(size: number, weight: number, italic: boolean, symbolicTraits: interop.Enum<typeof UIFontDescriptorSymbolicTraits>): UIFont;
547+
548+
static createUIFont(font: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): UIFont;
549+
550+
static createMutableStringWithDetails(details: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): NSMutableAttributedString;
551+
552+
static createMutableStringForSpanFontColorBackgroundColorTextDecorationBaselineOffset(text: string, font: UIFont, color: UIColor, backgroundColor: UIColor, textDecoration: string, baselineOffset: number): NSMutableAttributedString;
553+
554+
static scaleImageWidthHeightScaleFactor(image: UIImage, width: number, height: number, scaleFactor: number): UIImage;
555+
556+
static getImageDataFormatQuality(image: UIImage, format: string, quality: number): NSData;
557+
}
558+
532559
declare class OS_os_workgroup extends OS_object {
533560
init(): this;
534561
}

packages/ios/types/TNSWidgets.d.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/// <reference types="@nativescript/objc-node-api" />
2+
/// <reference path="./UIKit.d.ts" />
3+
4+
declare const TNSWidgetsVersionNumber: number;
5+
6+
declare const TNSWidgetsVersionString: interop.Pointer;
7+
8+
declare function __tns_uptime(): number;
9+
10+
declare function __nslog(message: string): void;
11+
12+
declare class TNSLabel extends UILabel {
13+
padding: UIEdgeInsets;
14+
15+
borderThickness: UIEdgeInsets;
16+
}
17+

packages/ios/types/UIKit.d.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7866,6 +7866,16 @@ declare class UIView extends UIResponder implements NSCoding, UIAppearance, UIAp
78667866

78677867
drawRectForViewPrintFormatter(rect: CGRect, formatter: UIViewPrintFormatter): void;
78687868

7869+
passThroughParent(): boolean;
7870+
7871+
setPassThroughParent(passThroughParent: boolean): void;
7872+
7873+
nativeScriptSetTextDecorationAndTransformTextDecorationLetterSpacingLineHeight(text: string, textDecoration: string, letterSpacing: number, lineHeight: number): void;
7874+
7875+
nativeScriptSetFormattedTextDecorationAndTransformLetterSpacingLineHeight(details: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>, letterSpacing: number, lineHeight: number): void;
7876+
7877+
nativeScriptSetFormattedTextStrokeColor(width: number, color: UIColor): void;
7878+
78697879
encodeWithCoder(coder: NSCoder): void;
78707880

78717881
static appearance<This extends abstract new (...args: any) => any>(this: This): InstanceType<This>;
@@ -19576,6 +19586,14 @@ declare class UIImage extends NSObject implements NSSecureCoding {
1957619586

1957719587
readonly topCapHeight: number;
1957819588

19589+
static tns_safeDecodeImageNamedCompletion(name: string, callback: (p1: UIImage) => void): void;
19590+
19591+
static tns_safeImageNamed(name: string): UIImage;
19592+
19593+
static tns_decodeImageWithDataCompletion(data: NSData, callback: (p1: UIImage) => void): void;
19594+
19595+
static tns_decodeImageWidthContentsOfFileCompletion(file: string, callback: (p1: UIImage) => void): void;
19596+
1957919597
static readonly supportsSecureCoding: boolean;
1958019598

1958119599
encodeWithCoder(coder: NSCoder): void;

0 commit comments

Comments
 (0)