Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
756 changes: 452 additions & 304 deletions Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions Plugins/BridgeJS/Sources/BridgeJSSkeleton/BridgeJSSkeleton.swift
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,9 @@ public enum EnumEmitStyle: String, Codable, Sendable {
}

public struct ExportedEnum: Codable, Equatable, Sendable {
public static let valuesSuffix = "Values"
public static let objectSuffix = "Object"

public let name: String
public let swiftCallName: String
public let explicitAccessControl: String?
Expand All @@ -279,6 +282,14 @@ public struct ExportedEnum: Codable, Equatable, Sendable {
}
}

public var valuesName: String {
emitStyle == .tsEnum ? name : "\(name)\(Self.valuesSuffix)"
}

public var objectTypeName: String {
"\(name)\(Self.objectSuffix)"
}

public init(
name: String,
swiftCallName: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,13 @@ export type Exports = {
roundTripOptionalAPIOptionalResult(result: APIOptionalResultTag | null): APIOptionalResultTag | null;
APIResult: APIResultObject
ComplexResult: ComplexResultObject
Result: ResultObject
NetworkingResult: NetworkingResultObject
APIOptionalResult: APIOptionalResultObject
API: {
NetworkingResult: NetworkingResultObject
},
Utilities: {
Result: ResultObject
},
}
export type Imports = {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -830,9 +830,13 @@ export async function createInstantiator(options, swift) {
},
APIResult: APIResultValues,
ComplexResult: ComplexResultValues,
Result: ResultValues,
NetworkingResult: NetworkingResultValues,
APIOptionalResult: APIOptionalResultValues,
API: {
NetworkingResult: NetworkingResultValues,
},
Utilities: {
Result: ResultValues,
},
};
_exports = exports;
return exports;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,19 +83,31 @@ export interface TestServer extends SwiftHeapObject {
call(method: Internal.SupportedMethodTag): void;
}
export type Exports = {
Converter: {
new(): Converter;
}
HTTPServer: {
new(): HTTPServer;
}
TestServer: {
new(): TestServer;
}
Method: MethodObject
LogLevel: LogLevelObject
Port: PortObject
SupportedMethod: SupportedMethodObject
Configuration: {
LogLevel: LogLevelObject
Port: PortObject
},
Networking: {
API: {
HTTPServer: {
new(): HTTPServer;
}
Method: MethodObject
},
APIV2: {
Internal: {
TestServer: {
new(): TestServer;
}
SupportedMethod: SupportedMethodObject
},
},
},
Utils: {
Converter: {
new(): Converter;
}
},
}
export type Imports = {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,18 +333,30 @@ export async function createInstantiator(options, swift) {
globalThis.Utils = {};
}
const exports = {
Converter,
HTTPServer,
TestServer,
Method: MethodValues,
LogLevel: LogLevelValues,
Port: PortValues,
SupportedMethod: SupportedMethodValues,
Configuration: {
LogLevel: LogLevelValues,
Port: PortValues,
},
Networking: {
API: {
HTTPServer,
Method: MethodValues,
},
APIV2: {
Internal: {
TestServer,
SupportedMethod: SupportedMethodValues,
},
},
},
Utils: {
Converter,
},
};
_exports = exports;
globalThis.Utils.Converter = exports.Converter;
globalThis.Networking.API.HTTPServer = exports.HTTPServer;
globalThis.Networking.APIV2.Internal.TestServer = exports.TestServer;
globalThis.Utils.Converter = exports.Utils.Converter;
globalThis.Networking.API.HTTPServer = exports.Networking.API.HTTPServer;
globalThis.Networking.APIV2.Internal.TestServer = exports.Networking.APIV2.Internal.TestServer;
return exports;
},
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,28 @@ export interface UUID extends SwiftHeapObject {
uuidString(): string;
}
export type Exports = {
Greeter: {
new(name: string): Greeter;
}
Converter: {
new(): Converter;
}
UUID: {
}
plainFunction(): string;
namespacedFunction(): string;
MyModule: {
Utils: {
namespacedFunction(): string;
},
},
Utils: {
Converters: {
Converter: {
new(): Converter;
}
},
},
__Swift: {
Foundation: {
Greeter: {
new(name: string): Greeter;
}
UUID: {
}
},
},
}
export type Imports = {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,27 +294,39 @@ export async function createInstantiator(options, swift) {
globalThis.__Swift.Foundation = {};
}
const exports = {
Greeter,
Converter,
UUID,
plainFunction: function bjs_plainFunction() {
instance.exports.bjs_plainFunction();
const ret = tmpRetString;
tmpRetString = undefined;
return ret;
},
namespacedFunction: function bjs_MyModule_Utils_namespacedFunction() {
instance.exports.bjs_MyModule_Utils_namespacedFunction();
const ret = tmpRetString;
tmpRetString = undefined;
return ret;
MyModule: {
Utils: {
namespacedFunction: function bjs_MyModule_Utils_namespacedFunction() {
instance.exports.bjs_MyModule_Utils_namespacedFunction();
const ret = tmpRetString;
tmpRetString = undefined;
return ret;
},
},
},
Utils: {
Converters: {
Converter,
},
},
__Swift: {
Foundation: {
Greeter,
UUID,
},
},
};
_exports = exports;
globalThis.__Swift.Foundation.Greeter = exports.Greeter;
globalThis.Utils.Converters.Converter = exports.Converter;
globalThis.__Swift.Foundation.UUID = exports.UUID;
globalThis.MyModule.Utils.namespacedFunction = exports.namespacedFunction;
globalThis.__Swift.Foundation.Greeter = exports.__Swift.Foundation.Greeter;
globalThis.Utils.Converters.Converter = exports.Utils.Converters.Converter;
globalThis.__Swift.Foundation.UUID = exports.__Swift.Foundation.UUID;
globalThis.MyModule.Utils.namespacedFunction = exports.MyModule.Utils.namespacedFunction;
return exports;
},
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ export type Exports = {
}
Calculator: CalculatorObject
APIResult: APIResultObject
Utils: {
String: {
uppercase(text: string): string;
},
},
}
export type Imports = {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,15 +305,6 @@ export async function createInstantiator(options, swift) {
}
const exports = {
MathUtils,
uppercase: function bjs_Utils_String_static_uppercase(text) {
const textBytes = textEncoder.encode(text);
const textId = swift.memory.retain(textBytes);
instance.exports.bjs_Utils_String_static_uppercase(textId, textBytes.length);
const ret = tmpRetString;
tmpRetString = undefined;
swift.memory.release(textId);
return ret;
},
Calculator: {
...CalculatorValues,
square: function(value) {
Expand All @@ -331,9 +322,22 @@ export async function createInstantiator(options, swift) {
return ret;
}
},
Utils: {
String: {
uppercase: function bjs_Utils_String_static_uppercase(text) {
const textBytes = textEncoder.encode(text);
const textId = swift.memory.retain(textBytes);
instance.exports.bjs_Utils_String_static_uppercase(textId, textBytes.length);
const ret = tmpRetString;
tmpRetString = undefined;
swift.memory.release(textId);
return ret;
},
},
},
};
_exports = exports;
globalThis.Utils.String.uppercase = exports.uppercase;
globalThis.Utils.String.uppercase = exports.Utils.String.uppercase;
return exports;
},
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,15 @@ export type Exports = {
optionalProperty: string | null;
}
PropertyEnum: PropertyEnumObject
PropertyNamespace: {
readonly namespaceConstant: string;
namespaceProperty: string;
Nested: {
readonly nestedConstant: string;
nestedDouble: number;
nestedProperty: number;
},
},
}
export type Imports = {
}
Expand Down
Loading