Skip to content

Commit 8df1a9d

Browse files
Change SwiftRuntime.wasmImports to return WebAssembly.ModuleImports
1 parent 6557767 commit 8df1a9d

File tree

3 files changed

+8
-169
lines changed

3 files changed

+8
-169
lines changed

Plugins/PackageToJS/Templates/runtime.d.ts

+2-52
Original file line numberDiff line numberDiff line change
@@ -18,58 +18,8 @@ declare class Memory {
1818
writeFloat64: (ptr: pointer, value: number) => void;
1919
}
2020

21-
declare const enum Kind {
22-
Boolean = 0,
23-
String = 1,
24-
Number = 2,
25-
Object = 3,
26-
Null = 4,
27-
Undefined = 5,
28-
Function = 6,
29-
Symbol = 7,
30-
BigInt = 8
31-
}
32-
3321
type ref = number;
3422
type pointer = number;
35-
type bool = number;
36-
type JavaScriptValueKind = number;
37-
type JavaScriptValueKindAndFlags = number;
38-
interface ImportedFunctions {
39-
swjs_set_prop(ref: number, name: number, kind: Kind, payload1: number, payload2: number): void;
40-
swjs_get_prop(ref: number, name: number, payload1_ptr: pointer, payload2_ptr: pointer): JavaScriptValueKind;
41-
swjs_set_subscript(ref: number, index: number, kind: Kind, payload1: number, payload2: number): void;
42-
swjs_get_subscript(ref: number, index: number, payload1_ptr: pointer, payload2_ptr: pointer): JavaScriptValueKind;
43-
swjs_encode_string(ref: number, bytes_ptr_result: pointer): number;
44-
swjs_decode_string(bytes_ptr: pointer, length: number): number;
45-
swjs_load_string(ref: number, buffer: pointer): void;
46-
swjs_call_function(ref: number, argv: pointer, argc: number, payload1_ptr: pointer, payload2_ptr: pointer): JavaScriptValueKindAndFlags;
47-
swjs_call_function_no_catch(ref: number, argv: pointer, argc: number, payload1_ptr: pointer, payload2_ptr: pointer): JavaScriptValueKindAndFlags;
48-
swjs_call_function_with_this(obj_ref: ref, func_ref: ref, argv: pointer, argc: number, payload1_ptr: pointer, payload2_ptr: pointer): JavaScriptValueKindAndFlags;
49-
swjs_call_function_with_this_no_catch(obj_ref: ref, func_ref: ref, argv: pointer, argc: number, payload1_ptr: pointer, payload2_ptr: pointer): JavaScriptValueKindAndFlags;
50-
swjs_call_new(ref: number, argv: pointer, argc: number): number;
51-
swjs_call_throwing_new(ref: number, argv: pointer, argc: number, exception_kind_ptr: pointer, exception_payload1_ptr: pointer, exception_payload2_ptr: pointer): number;
52-
swjs_instanceof(obj_ref: ref, constructor_ref: ref): boolean;
53-
swjs_value_equals(lhs_ref: ref, rhs_ref: ref): boolean;
54-
swjs_create_function(host_func_id: number, line: number, file: ref): number;
55-
swjs_create_typed_array(constructor_ref: ref, elementsPtr: pointer, length: number): number;
56-
swjs_create_object(): number;
57-
swjs_load_typed_array(ref: ref, buffer: pointer): void;
58-
swjs_release(ref: number): void;
59-
swjs_release_remote(tid: number, ref: number): void;
60-
swjs_i64_to_bigint(value: bigint, signed: bool): ref;
61-
swjs_bigint_to_i64(ref: ref, signed: bool): bigint;
62-
swjs_i64_to_bigint_slow(lower: number, upper: number, signed: bool): ref;
63-
swjs_unsafe_event_loop_yield: () => void;
64-
swjs_send_job_to_main_thread: (unowned_job: number) => void;
65-
swjs_listen_message_from_main_thread: () => void;
66-
swjs_wake_up_worker_thread: (tid: number) => void;
67-
swjs_listen_message_from_worker_thread: (tid: number) => void;
68-
swjs_terminate_worker_thread: (tid: number) => void;
69-
swjs_get_worker_thread_id: () => number;
70-
swjs_request_sending_object: (sending_object: ref, transferring_objects: pointer, transferring_objects_count: number, object_source_tid: number, sending_context: pointer) => void;
71-
swjs_request_sending_objects: (sending_objects: pointer, sending_objects_count: number, transferring_objects: pointer, transferring_objects_count: number, object_source_tid: number, sending_context: pointer) => void;
72-
}
7323

7424
/**
7525
* A thread channel is a set of functions that are used to communicate between
@@ -254,8 +204,8 @@ declare class SwiftRuntime {
254204
private get closureDeallocator();
255205
private callHostFunction;
256206
/** @deprecated Use `wasmImports` instead */
257-
importObjects: () => ImportedFunctions;
258-
get wasmImports(): ImportedFunctions;
207+
importObjects: () => WebAssembly.ModuleImports;
208+
get wasmImports(): WebAssembly.ModuleImports;
259209
private postMessageToMainThread;
260210
private postMessageToWorkerThread;
261211
}

Runtime/src/index.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
ref,
66
pointer,
77
TypedArray,
8-
ImportedFunctions,
98
MAIN_THREAD_TID,
109
} from "./types.js";
1110
import * as JSValue from "./js-value.js";
@@ -182,7 +181,7 @@ export class SwiftRuntime {
182181
/** @deprecated Use `wasmImports` instead */
183182
importObjects = () => this.wasmImports;
184183

185-
get wasmImports(): ImportedFunctions {
184+
get wasmImports(): WebAssembly.ModuleImports {
186185
let broker: MessageBroker | null = null;
187186
const getMessageBroker = (threadChannel: SwiftRuntimeThreadChannel) => {
188187
if (broker) return broker;
@@ -576,7 +575,7 @@ export class SwiftRuntime {
576575
return BigInt.asIntN(64, object);
577576
}
578577
},
579-
swjs_i64_to_bigint_slow: (lower, upper, signed) => {
578+
swjs_i64_to_bigint_slow: (lower: number, upper: number, signed: number) => {
580579
const value =
581580
BigInt.asUintN(32, BigInt(lower)) +
582581
(BigInt.asUintN(32, BigInt(upper)) << BigInt(32));
@@ -587,7 +586,7 @@ export class SwiftRuntime {
587586
swjs_unsafe_event_loop_yield: () => {
588587
throw new UnsafeEventLoopYield();
589588
},
590-
swjs_send_job_to_main_thread: (unowned_job) => {
589+
swjs_send_job_to_main_thread: (unowned_job: number) => {
591590
this.postMessageToMainThread({ type: "job", data: unowned_job });
592591
},
593592
swjs_listen_message_from_main_thread: () => {
@@ -617,10 +616,10 @@ export class SwiftRuntime {
617616
}
618617
});
619618
},
620-
swjs_wake_up_worker_thread: (tid) => {
619+
swjs_wake_up_worker_thread: (tid: number) => {
621620
this.postMessageToWorkerThread(tid, { type: "wake" });
622621
},
623-
swjs_listen_message_from_worker_thread: (tid) => {
622+
swjs_listen_message_from_worker_thread: (tid: number) => {
624623
const threadChannel = this.options.threadChannel;
625624
if (!(threadChannel && "listenMessageFromWorkerThread" in threadChannel)) {
626625
throw new Error(
@@ -649,7 +648,7 @@ export class SwiftRuntime {
649648
},
650649
);
651650
},
652-
swjs_terminate_worker_thread: (tid) => {
651+
swjs_terminate_worker_thread: (tid: number) => {
653652
const threadChannel = this.options.threadChannel;
654653
if (threadChannel && "terminateWorkerThread" in threadChannel) {
655654
threadChannel.terminateWorkerThread?.(tid);

Runtime/src/types.ts

-110
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import * as JSValue from "./js-value.js";
2-
31
export type ref = number;
42
export type pointer = number;
53
export type bool = number;
@@ -26,114 +24,6 @@ export interface ExportedFunctions {
2624
swjs_receive_error(error: ref, context: number): void;
2725
}
2826

29-
export interface ImportedFunctions {
30-
swjs_set_prop(
31-
ref: number,
32-
name: number,
33-
kind: JSValue.Kind,
34-
payload1: number,
35-
payload2: number
36-
): void;
37-
swjs_get_prop(
38-
ref: number,
39-
name: number,
40-
payload1_ptr: pointer,
41-
payload2_ptr: pointer
42-
): JavaScriptValueKind;
43-
swjs_set_subscript(
44-
ref: number,
45-
index: number,
46-
kind: JSValue.Kind,
47-
payload1: number,
48-
payload2: number
49-
): void;
50-
swjs_get_subscript(
51-
ref: number,
52-
index: number,
53-
payload1_ptr: pointer,
54-
payload2_ptr: pointer
55-
): JavaScriptValueKind;
56-
swjs_encode_string(ref: number, bytes_ptr_result: pointer): number;
57-
swjs_decode_string(bytes_ptr: pointer, length: number): number;
58-
swjs_load_string(ref: number, buffer: pointer): void;
59-
swjs_call_function(
60-
ref: number,
61-
argv: pointer,
62-
argc: number,
63-
payload1_ptr: pointer,
64-
payload2_ptr: pointer
65-
): JavaScriptValueKindAndFlags;
66-
swjs_call_function_no_catch(
67-
ref: number,
68-
argv: pointer,
69-
argc: number,
70-
payload1_ptr: pointer,
71-
payload2_ptr: pointer
72-
): JavaScriptValueKindAndFlags;
73-
swjs_call_function_with_this(
74-
obj_ref: ref,
75-
func_ref: ref,
76-
argv: pointer,
77-
argc: number,
78-
payload1_ptr: pointer,
79-
payload2_ptr: pointer
80-
): JavaScriptValueKindAndFlags;
81-
swjs_call_function_with_this_no_catch(
82-
obj_ref: ref,
83-
func_ref: ref,
84-
argv: pointer,
85-
argc: number,
86-
payload1_ptr: pointer,
87-
payload2_ptr: pointer
88-
): JavaScriptValueKindAndFlags;
89-
swjs_call_new(ref: number, argv: pointer, argc: number): number;
90-
swjs_call_throwing_new(
91-
ref: number,
92-
argv: pointer,
93-
argc: number,
94-
exception_kind_ptr: pointer,
95-
exception_payload1_ptr: pointer,
96-
exception_payload2_ptr: pointer
97-
): number;
98-
swjs_instanceof(obj_ref: ref, constructor_ref: ref): boolean;
99-
swjs_value_equals(lhs_ref: ref, rhs_ref: ref): boolean;
100-
swjs_create_function(host_func_id: number, line: number, file: ref): number;
101-
swjs_create_typed_array(
102-
constructor_ref: ref,
103-
elementsPtr: pointer,
104-
length: number
105-
): number;
106-
swjs_create_object(): number;
107-
swjs_load_typed_array(ref: ref, buffer: pointer): void;
108-
swjs_release(ref: number): void;
109-
swjs_release_remote(tid: number, ref: number): void;
110-
swjs_i64_to_bigint(value: bigint, signed: bool): ref;
111-
swjs_bigint_to_i64(ref: ref, signed: bool): bigint;
112-
swjs_i64_to_bigint_slow(lower: number, upper: number, signed: bool): ref;
113-
swjs_unsafe_event_loop_yield: () => void;
114-
swjs_send_job_to_main_thread: (unowned_job: number) => void;
115-
swjs_listen_message_from_main_thread: () => void;
116-
swjs_wake_up_worker_thread: (tid: number) => void;
117-
swjs_listen_message_from_worker_thread: (tid: number) => void;
118-
swjs_terminate_worker_thread: (tid: number) => void;
119-
swjs_get_worker_thread_id: () => number;
120-
swjs_request_sending_object: (
121-
sending_object: ref,
122-
transferring_objects: pointer,
123-
transferring_objects_count: number,
124-
object_source_tid: number,
125-
sending_context: pointer,
126-
) => void;
127-
swjs_request_sending_objects: (
128-
sending_objects: pointer,
129-
sending_objects_count: number,
130-
transferring_objects: pointer,
131-
transferring_objects_count: number,
132-
object_source_tid: number,
133-
sending_context: pointer,
134-
) => void;
135-
}
136-
13727
export const enum LibraryFeatures {
13828
WeakRefs = 1 << 0,
13929
}

0 commit comments

Comments
 (0)