Skip to content

Commit 09c1e2a

Browse files
committed
BridgeJS: Namespaced elements in Exports
1 parent 38b0c63 commit 09c1e2a

File tree

14 files changed

+723
-406
lines changed

14 files changed

+723
-406
lines changed

Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift

Lines changed: 452 additions & 304 deletions
Large diffs are not rendered by default.

Plugins/BridgeJS/Sources/BridgeJSSkeleton/BridgeJSSkeleton.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,9 @@ public enum EnumEmitStyle: String, Codable, Sendable {
260260
}
261261

262262
public struct ExportedEnum: Codable, Equatable, Sendable {
263+
public static let valuesSuffix = "Values"
264+
public static let objectSuffix = "Object"
265+
263266
public let name: String
264267
public let swiftCallName: String
265268
public let explicitAccessControl: String?
@@ -279,6 +282,14 @@ public struct ExportedEnum: Codable, Equatable, Sendable {
279282
}
280283
}
281284

285+
public var valuesName: String {
286+
emitStyle == .tsEnum ? name : "\(name)\(Self.valuesSuffix)"
287+
}
288+
289+
public var objectTypeName: String {
290+
"\(name)\(Self.objectSuffix)"
291+
}
292+
282293
public init(
283294
name: String,
284295
swiftCallName: String,

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumAssociatedValue.Export.d.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,13 @@ export type Exports = {
9393
roundTripOptionalAPIOptionalResult(result: APIOptionalResultTag | null): APIOptionalResultTag | null;
9494
APIResult: APIResultObject
9595
ComplexResult: ComplexResultObject
96-
Result: ResultObject
97-
NetworkingResult: NetworkingResultObject
9896
APIOptionalResult: APIOptionalResultObject
97+
API: {
98+
NetworkingResult: NetworkingResultObject
99+
},
100+
Utilities: {
101+
Result: ResultObject
102+
},
99103
}
100104
export type Imports = {
101105
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumAssociatedValue.Export.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -830,9 +830,13 @@ export async function createInstantiator(options, swift) {
830830
},
831831
APIResult: APIResultValues,
832832
ComplexResult: ComplexResultValues,
833-
Result: ResultValues,
834-
NetworkingResult: NetworkingResultValues,
835833
APIOptionalResult: APIOptionalResultValues,
834+
API: {
835+
NetworkingResult: NetworkingResultValues,
836+
},
837+
Utilities: {
838+
Result: ResultValues,
839+
},
836840
};
837841
_exports = exports;
838842
return exports;

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumNamespace.Export.d.ts

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,31 @@ export interface TestServer extends SwiftHeapObject {
8383
call(method: Internal.SupportedMethodTag): void;
8484
}
8585
export type Exports = {
86-
Converter: {
87-
new(): Converter;
88-
}
89-
HTTPServer: {
90-
new(): HTTPServer;
91-
}
92-
TestServer: {
93-
new(): TestServer;
94-
}
95-
Method: MethodObject
96-
LogLevel: LogLevelObject
97-
Port: PortObject
98-
SupportedMethod: SupportedMethodObject
86+
Configuration: {
87+
LogLevel: LogLevelObject
88+
Port: PortObject
89+
},
90+
Networking: {
91+
API: {
92+
HTTPServer: {
93+
new(): HTTPServer;
94+
}
95+
Method: MethodObject
96+
},
97+
APIV2: {
98+
Internal: {
99+
TestServer: {
100+
new(): TestServer;
101+
}
102+
SupportedMethod: SupportedMethodObject
103+
},
104+
},
105+
},
106+
Utils: {
107+
Converter: {
108+
new(): Converter;
109+
}
110+
},
99111
}
100112
export type Imports = {
101113
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumNamespace.Export.js

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -333,18 +333,30 @@ export async function createInstantiator(options, swift) {
333333
globalThis.Utils = {};
334334
}
335335
const exports = {
336-
Converter,
337-
HTTPServer,
338-
TestServer,
339-
Method: MethodValues,
340-
LogLevel: LogLevelValues,
341-
Port: PortValues,
342-
SupportedMethod: SupportedMethodValues,
336+
Configuration: {
337+
LogLevel: LogLevelValues,
338+
Port: PortValues,
339+
},
340+
Networking: {
341+
API: {
342+
HTTPServer,
343+
Method: MethodValues,
344+
},
345+
APIV2: {
346+
Internal: {
347+
TestServer,
348+
SupportedMethod: SupportedMethodValues,
349+
},
350+
},
351+
},
352+
Utils: {
353+
Converter,
354+
},
343355
};
344356
_exports = exports;
345-
globalThis.Utils.Converter = exports.Converter;
346-
globalThis.Networking.API.HTTPServer = exports.HTTPServer;
347-
globalThis.Networking.APIV2.Internal.TestServer = exports.TestServer;
357+
globalThis.Utils.Converter = exports.Utils.Converter;
358+
globalThis.Networking.API.HTTPServer = exports.Networking.API.HTTPServer;
359+
globalThis.Networking.APIV2.Internal.TestServer = exports.Networking.APIV2.Internal.TestServer;
348360
return exports;
349361
},
350362
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Namespaces.Export.d.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,28 @@ export interface UUID extends SwiftHeapObject {
5050
uuidString(): string;
5151
}
5252
export type Exports = {
53-
Greeter: {
54-
new(name: string): Greeter;
55-
}
56-
Converter: {
57-
new(): Converter;
58-
}
59-
UUID: {
60-
}
6153
plainFunction(): string;
62-
namespacedFunction(): string;
54+
MyModule: {
55+
Utils: {
56+
namespacedFunction(): string;
57+
},
58+
},
59+
Utils: {
60+
Converters: {
61+
Converter: {
62+
new(): Converter;
63+
}
64+
},
65+
},
66+
__Swift: {
67+
Foundation: {
68+
Greeter: {
69+
new(name: string): Greeter;
70+
}
71+
UUID: {
72+
}
73+
},
74+
},
6375
}
6476
export type Imports = {
6577
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Namespaces.Export.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -294,27 +294,39 @@ export async function createInstantiator(options, swift) {
294294
globalThis.__Swift.Foundation = {};
295295
}
296296
const exports = {
297-
Greeter,
298-
Converter,
299-
UUID,
300297
plainFunction: function bjs_plainFunction() {
301298
instance.exports.bjs_plainFunction();
302299
const ret = tmpRetString;
303300
tmpRetString = undefined;
304301
return ret;
305302
},
306-
namespacedFunction: function bjs_MyModule_Utils_namespacedFunction() {
307-
instance.exports.bjs_MyModule_Utils_namespacedFunction();
308-
const ret = tmpRetString;
309-
tmpRetString = undefined;
310-
return ret;
303+
MyModule: {
304+
Utils: {
305+
namespacedFunction: function bjs_MyModule_Utils_namespacedFunction() {
306+
instance.exports.bjs_MyModule_Utils_namespacedFunction();
307+
const ret = tmpRetString;
308+
tmpRetString = undefined;
309+
return ret;
310+
},
311+
},
312+
},
313+
Utils: {
314+
Converters: {
315+
Converter,
316+
},
317+
},
318+
__Swift: {
319+
Foundation: {
320+
Greeter,
321+
UUID,
322+
},
311323
},
312324
};
313325
_exports = exports;
314-
globalThis.__Swift.Foundation.Greeter = exports.Greeter;
315-
globalThis.Utils.Converters.Converter = exports.Converter;
316-
globalThis.__Swift.Foundation.UUID = exports.UUID;
317-
globalThis.MyModule.Utils.namespacedFunction = exports.namespacedFunction;
326+
globalThis.__Swift.Foundation.Greeter = exports.__Swift.Foundation.Greeter;
327+
globalThis.Utils.Converters.Converter = exports.Utils.Converters.Converter;
328+
globalThis.__Swift.Foundation.UUID = exports.__Swift.Foundation.UUID;
329+
globalThis.MyModule.Utils.namespacedFunction = exports.MyModule.Utils.namespacedFunction;
318330
return exports;
319331
},
320332
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/StaticFunctions.Export.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ export type Exports = {
5656
}
5757
Calculator: CalculatorObject
5858
APIResult: APIResultObject
59+
Utils: {
60+
String: {
61+
uppercase(text: string): string;
62+
},
63+
},
5964
}
6065
export type Imports = {
6166
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/StaticFunctions.Export.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -305,15 +305,6 @@ export async function createInstantiator(options, swift) {
305305
}
306306
const exports = {
307307
MathUtils,
308-
uppercase: function bjs_Utils_String_static_uppercase(text) {
309-
const textBytes = textEncoder.encode(text);
310-
const textId = swift.memory.retain(textBytes);
311-
instance.exports.bjs_Utils_String_static_uppercase(textId, textBytes.length);
312-
const ret = tmpRetString;
313-
tmpRetString = undefined;
314-
swift.memory.release(textId);
315-
return ret;
316-
},
317308
Calculator: {
318309
...CalculatorValues,
319310
square: function(value) {
@@ -331,9 +322,22 @@ export async function createInstantiator(options, swift) {
331322
return ret;
332323
}
333324
},
325+
Utils: {
326+
String: {
327+
uppercase: function bjs_Utils_String_static_uppercase(text) {
328+
const textBytes = textEncoder.encode(text);
329+
const textId = swift.memory.retain(textBytes);
330+
instance.exports.bjs_Utils_String_static_uppercase(textId, textBytes.length);
331+
const ret = tmpRetString;
332+
tmpRetString = undefined;
333+
swift.memory.release(textId);
334+
return ret;
335+
},
336+
},
337+
},
334338
};
335339
_exports = exports;
336-
globalThis.Utils.String.uppercase = exports.uppercase;
340+
globalThis.Utils.String.uppercase = exports.Utils.String.uppercase;
337341
return exports;
338342
},
339343
}

0 commit comments

Comments
 (0)