@tybys/wasm-util 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +190 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/wasm-util.d.ts +113 -0
- package/dist/wasm-util.esm-bundler.js +1879 -0
- package/dist/wasm-util.esm.js +1879 -0
- package/dist/wasm-util.esm.min.js +1 -0
- package/dist/wasm-util.js +1894 -0
- package/dist/wasm-util.min.js +1 -0
- package/lib/cjs/asyncify.js +173 -0
- package/lib/cjs/index.js +11 -0
- package/lib/cjs/load.js +78 -0
- package/lib/cjs/memfs.js +2689 -0
- package/lib/cjs/memory.js +31 -0
- package/lib/cjs/wasi/error.js +103 -0
- package/lib/cjs/wasi/fd.js +226 -0
- package/lib/cjs/wasi/index.js +137 -0
- package/lib/cjs/wasi/path.js +174 -0
- package/lib/cjs/wasi/preview1.js +889 -0
- package/lib/cjs/wasi/rights.js +139 -0
- package/lib/cjs/wasi/types.js +179 -0
- package/lib/cjs/wasi/util.js +56 -0
- package/lib/mjs/asyncify.mjs +168 -0
- package/lib/mjs/index.mjs +7 -0
- package/lib/mjs/load.mjs +72 -0
- package/lib/mjs/memfs.mjs +2688 -0
- package/lib/mjs/memory.mjs +25 -0
- package/lib/mjs/wasi/error.mjs +97 -0
- package/lib/mjs/wasi/fd.mjs +216 -0
- package/lib/mjs/wasi/index.mjs +132 -0
- package/lib/mjs/wasi/path.mjs +168 -0
- package/lib/mjs/wasi/preview1.mjs +884 -0
- package/lib/mjs/wasi/rights.mjs +134 -0
- package/lib/mjs/wasi/types.mjs +175 -0
- package/lib/mjs/wasi/util.mjs +44 -0
- package/package.json +57 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRights = exports.TTY_INHERITING = exports.TTY_BASE = exports.SOCKET_INHERITING = exports.SOCKET_BASE = exports.DIRECTORY_INHERITING = exports.DIRECTORY_BASE = exports.REGULAR_FILE_INHERITING = exports.REGULAR_FILE_BASE = exports.CHARACTER_DEVICE_INHERITING = exports.CHARACTER_DEVICE_BASE = exports.BLOCK_DEVICE_INHERITING = exports.BLOCK_DEVICE_BASE = exports.RIGHTS_ALL = void 0;
|
|
4
|
+
const error_1 = require("./error");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
exports.RIGHTS_ALL = types_1.WasiRights.FD_DATASYNC |
|
|
7
|
+
types_1.WasiRights.FD_READ |
|
|
8
|
+
types_1.WasiRights.FD_SEEK |
|
|
9
|
+
types_1.WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
10
|
+
types_1.WasiRights.FD_SYNC |
|
|
11
|
+
types_1.WasiRights.FD_TELL |
|
|
12
|
+
types_1.WasiRights.FD_WRITE |
|
|
13
|
+
types_1.WasiRights.FD_ADVISE |
|
|
14
|
+
types_1.WasiRights.FD_ALLOCATE |
|
|
15
|
+
types_1.WasiRights.PATH_CREATE_DIRECTORY |
|
|
16
|
+
types_1.WasiRights.PATH_CREATE_FILE |
|
|
17
|
+
types_1.WasiRights.PATH_LINK_SOURCE |
|
|
18
|
+
types_1.WasiRights.PATH_LINK_TARGET |
|
|
19
|
+
types_1.WasiRights.PATH_OPEN |
|
|
20
|
+
types_1.WasiRights.FD_READDIR |
|
|
21
|
+
types_1.WasiRights.PATH_READLINK |
|
|
22
|
+
types_1.WasiRights.PATH_RENAME_SOURCE |
|
|
23
|
+
types_1.WasiRights.PATH_RENAME_TARGET |
|
|
24
|
+
types_1.WasiRights.PATH_FILESTAT_GET |
|
|
25
|
+
types_1.WasiRights.PATH_FILESTAT_SET_SIZE |
|
|
26
|
+
types_1.WasiRights.PATH_FILESTAT_SET_TIMES |
|
|
27
|
+
types_1.WasiRights.FD_FILESTAT_GET |
|
|
28
|
+
types_1.WasiRights.FD_FILESTAT_SET_TIMES |
|
|
29
|
+
types_1.WasiRights.FD_FILESTAT_SET_SIZE |
|
|
30
|
+
types_1.WasiRights.PATH_SYMLINK |
|
|
31
|
+
types_1.WasiRights.PATH_UNLINK_FILE |
|
|
32
|
+
types_1.WasiRights.PATH_REMOVE_DIRECTORY |
|
|
33
|
+
types_1.WasiRights.POLL_FD_READWRITE |
|
|
34
|
+
types_1.WasiRights.SOCK_SHUTDOWN;
|
|
35
|
+
exports.BLOCK_DEVICE_BASE = exports.RIGHTS_ALL;
|
|
36
|
+
exports.BLOCK_DEVICE_INHERITING = exports.RIGHTS_ALL;
|
|
37
|
+
exports.CHARACTER_DEVICE_BASE = exports.RIGHTS_ALL;
|
|
38
|
+
exports.CHARACTER_DEVICE_INHERITING = exports.RIGHTS_ALL;
|
|
39
|
+
exports.REGULAR_FILE_BASE = types_1.WasiRights.FD_DATASYNC |
|
|
40
|
+
types_1.WasiRights.FD_READ |
|
|
41
|
+
types_1.WasiRights.FD_SEEK |
|
|
42
|
+
types_1.WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
43
|
+
types_1.WasiRights.FD_SYNC |
|
|
44
|
+
types_1.WasiRights.FD_TELL |
|
|
45
|
+
types_1.WasiRights.FD_WRITE |
|
|
46
|
+
types_1.WasiRights.FD_ADVISE |
|
|
47
|
+
types_1.WasiRights.FD_ALLOCATE |
|
|
48
|
+
types_1.WasiRights.FD_FILESTAT_GET |
|
|
49
|
+
types_1.WasiRights.FD_FILESTAT_SET_SIZE |
|
|
50
|
+
types_1.WasiRights.FD_FILESTAT_SET_TIMES |
|
|
51
|
+
types_1.WasiRights.POLL_FD_READWRITE;
|
|
52
|
+
exports.REGULAR_FILE_INHERITING = BigInt(0);
|
|
53
|
+
exports.DIRECTORY_BASE = types_1.WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
54
|
+
types_1.WasiRights.FD_SYNC |
|
|
55
|
+
types_1.WasiRights.FD_ADVISE |
|
|
56
|
+
types_1.WasiRights.PATH_CREATE_DIRECTORY |
|
|
57
|
+
types_1.WasiRights.PATH_CREATE_FILE |
|
|
58
|
+
types_1.WasiRights.PATH_LINK_SOURCE |
|
|
59
|
+
types_1.WasiRights.PATH_LINK_TARGET |
|
|
60
|
+
types_1.WasiRights.PATH_OPEN |
|
|
61
|
+
types_1.WasiRights.FD_READDIR |
|
|
62
|
+
types_1.WasiRights.PATH_READLINK |
|
|
63
|
+
types_1.WasiRights.PATH_RENAME_SOURCE |
|
|
64
|
+
types_1.WasiRights.PATH_RENAME_TARGET |
|
|
65
|
+
types_1.WasiRights.PATH_FILESTAT_GET |
|
|
66
|
+
types_1.WasiRights.PATH_FILESTAT_SET_SIZE |
|
|
67
|
+
types_1.WasiRights.PATH_FILESTAT_SET_TIMES |
|
|
68
|
+
types_1.WasiRights.FD_FILESTAT_GET |
|
|
69
|
+
types_1.WasiRights.FD_FILESTAT_SET_TIMES |
|
|
70
|
+
types_1.WasiRights.PATH_SYMLINK |
|
|
71
|
+
types_1.WasiRights.PATH_UNLINK_FILE |
|
|
72
|
+
types_1.WasiRights.PATH_REMOVE_DIRECTORY |
|
|
73
|
+
types_1.WasiRights.POLL_FD_READWRITE;
|
|
74
|
+
exports.DIRECTORY_INHERITING = exports.DIRECTORY_BASE | exports.REGULAR_FILE_BASE;
|
|
75
|
+
exports.SOCKET_BASE = (types_1.WasiRights.FD_READ |
|
|
76
|
+
types_1.WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
77
|
+
types_1.WasiRights.FD_WRITE |
|
|
78
|
+
types_1.WasiRights.FD_FILESTAT_GET |
|
|
79
|
+
types_1.WasiRights.POLL_FD_READWRITE |
|
|
80
|
+
types_1.WasiRights.SOCK_SHUTDOWN);
|
|
81
|
+
exports.SOCKET_INHERITING = exports.RIGHTS_ALL;
|
|
82
|
+
exports.TTY_BASE = types_1.WasiRights.FD_READ |
|
|
83
|
+
types_1.WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
84
|
+
types_1.WasiRights.FD_WRITE |
|
|
85
|
+
types_1.WasiRights.FD_FILESTAT_GET |
|
|
86
|
+
types_1.WasiRights.POLL_FD_READWRITE;
|
|
87
|
+
exports.TTY_INHERITING = BigInt(0);
|
|
88
|
+
function getRights(stdio, fd, flags, type) {
|
|
89
|
+
const ret = {
|
|
90
|
+
base: BigInt(0),
|
|
91
|
+
inheriting: BigInt(0)
|
|
92
|
+
};
|
|
93
|
+
if (type === types_1.WasiFileType.UNKNOWN) {
|
|
94
|
+
throw new error_1.WasiError('Unknown file type', types_1.WasiErrno.EINVAL);
|
|
95
|
+
}
|
|
96
|
+
switch (type) {
|
|
97
|
+
case types_1.WasiFileType.REGULAR_FILE:
|
|
98
|
+
ret.base = exports.REGULAR_FILE_BASE;
|
|
99
|
+
ret.inheriting = exports.REGULAR_FILE_INHERITING;
|
|
100
|
+
break;
|
|
101
|
+
case types_1.WasiFileType.DIRECTORY:
|
|
102
|
+
ret.base = exports.DIRECTORY_BASE;
|
|
103
|
+
ret.inheriting = exports.DIRECTORY_INHERITING;
|
|
104
|
+
break;
|
|
105
|
+
case types_1.WasiFileType.SOCKET_STREAM:
|
|
106
|
+
case types_1.WasiFileType.SOCKET_DGRAM:
|
|
107
|
+
ret.base = exports.SOCKET_BASE;
|
|
108
|
+
ret.inheriting = exports.SOCKET_INHERITING;
|
|
109
|
+
break;
|
|
110
|
+
case types_1.WasiFileType.CHARACTER_DEVICE:
|
|
111
|
+
if (stdio.indexOf(fd) !== -1) {
|
|
112
|
+
ret.base = exports.TTY_BASE;
|
|
113
|
+
ret.inheriting = exports.TTY_INHERITING;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
ret.base = exports.CHARACTER_DEVICE_BASE;
|
|
117
|
+
ret.inheriting = exports.CHARACTER_DEVICE_INHERITING;
|
|
118
|
+
}
|
|
119
|
+
break;
|
|
120
|
+
case types_1.WasiFileType.BLOCK_DEVICE:
|
|
121
|
+
ret.base = exports.BLOCK_DEVICE_BASE;
|
|
122
|
+
ret.inheriting = exports.BLOCK_DEVICE_INHERITING;
|
|
123
|
+
break;
|
|
124
|
+
default:
|
|
125
|
+
ret.base = BigInt(0);
|
|
126
|
+
ret.inheriting = BigInt(0);
|
|
127
|
+
}
|
|
128
|
+
/* Disable read/write bits depending on access mode. */
|
|
129
|
+
const read_or_write_only = flags & (0 | 1 | 2);
|
|
130
|
+
if (read_or_write_only === 0) {
|
|
131
|
+
ret.base &= ~types_1.WasiRights.FD_WRITE;
|
|
132
|
+
}
|
|
133
|
+
else if (read_or_write_only === 1) {
|
|
134
|
+
ret.base &= ~types_1.WasiRights.FD_READ;
|
|
135
|
+
}
|
|
136
|
+
return ret;
|
|
137
|
+
}
|
|
138
|
+
exports.getRights = getRights;
|
|
139
|
+
//# sourceMappingURL=rights.js.map
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WasiFstFlag = exports.WasiClockid = exports.WasiFdFlag = exports.WasiFileControlFlag = exports.FileControlFlag = exports.WasiWhence = exports.WasiRights = exports.WasiFileType = exports.WasiErrno = void 0;
|
|
4
|
+
var WasiErrno;
|
|
5
|
+
(function (WasiErrno) {
|
|
6
|
+
WasiErrno[WasiErrno["ESUCCESS"] = 0] = "ESUCCESS";
|
|
7
|
+
WasiErrno[WasiErrno["E2BIG"] = 1] = "E2BIG";
|
|
8
|
+
WasiErrno[WasiErrno["EACCES"] = 2] = "EACCES";
|
|
9
|
+
WasiErrno[WasiErrno["EADDRINUSE"] = 3] = "EADDRINUSE";
|
|
10
|
+
WasiErrno[WasiErrno["EADDRNOTAVAIL"] = 4] = "EADDRNOTAVAIL";
|
|
11
|
+
WasiErrno[WasiErrno["EAFNOSUPPORT"] = 5] = "EAFNOSUPPORT";
|
|
12
|
+
WasiErrno[WasiErrno["EAGAIN"] = 6] = "EAGAIN";
|
|
13
|
+
WasiErrno[WasiErrno["EALREADY"] = 7] = "EALREADY";
|
|
14
|
+
WasiErrno[WasiErrno["EBADF"] = 8] = "EBADF";
|
|
15
|
+
WasiErrno[WasiErrno["EBADMSG"] = 9] = "EBADMSG";
|
|
16
|
+
WasiErrno[WasiErrno["EBUSY"] = 10] = "EBUSY";
|
|
17
|
+
WasiErrno[WasiErrno["ECANCELED"] = 11] = "ECANCELED";
|
|
18
|
+
WasiErrno[WasiErrno["ECHILD"] = 12] = "ECHILD";
|
|
19
|
+
WasiErrno[WasiErrno["ECONNABORTED"] = 13] = "ECONNABORTED";
|
|
20
|
+
WasiErrno[WasiErrno["ECONNREFUSED"] = 14] = "ECONNREFUSED";
|
|
21
|
+
WasiErrno[WasiErrno["ECONNRESET"] = 15] = "ECONNRESET";
|
|
22
|
+
WasiErrno[WasiErrno["EDEADLK"] = 16] = "EDEADLK";
|
|
23
|
+
WasiErrno[WasiErrno["EDESTADDRREQ"] = 17] = "EDESTADDRREQ";
|
|
24
|
+
WasiErrno[WasiErrno["EDOM"] = 18] = "EDOM";
|
|
25
|
+
WasiErrno[WasiErrno["EDQUOT"] = 19] = "EDQUOT";
|
|
26
|
+
WasiErrno[WasiErrno["EEXIST"] = 20] = "EEXIST";
|
|
27
|
+
WasiErrno[WasiErrno["EFAULT"] = 21] = "EFAULT";
|
|
28
|
+
WasiErrno[WasiErrno["EFBIG"] = 22] = "EFBIG";
|
|
29
|
+
WasiErrno[WasiErrno["EHOSTUNREACH"] = 23] = "EHOSTUNREACH";
|
|
30
|
+
WasiErrno[WasiErrno["EIDRM"] = 24] = "EIDRM";
|
|
31
|
+
WasiErrno[WasiErrno["EILSEQ"] = 25] = "EILSEQ";
|
|
32
|
+
WasiErrno[WasiErrno["EINPROGRESS"] = 26] = "EINPROGRESS";
|
|
33
|
+
WasiErrno[WasiErrno["EINTR"] = 27] = "EINTR";
|
|
34
|
+
WasiErrno[WasiErrno["EINVAL"] = 28] = "EINVAL";
|
|
35
|
+
WasiErrno[WasiErrno["EIO"] = 29] = "EIO";
|
|
36
|
+
WasiErrno[WasiErrno["EISCONN"] = 30] = "EISCONN";
|
|
37
|
+
WasiErrno[WasiErrno["EISDIR"] = 31] = "EISDIR";
|
|
38
|
+
WasiErrno[WasiErrno["ELOOP"] = 32] = "ELOOP";
|
|
39
|
+
WasiErrno[WasiErrno["EMFILE"] = 33] = "EMFILE";
|
|
40
|
+
WasiErrno[WasiErrno["EMLINK"] = 34] = "EMLINK";
|
|
41
|
+
WasiErrno[WasiErrno["EMSGSIZE"] = 35] = "EMSGSIZE";
|
|
42
|
+
WasiErrno[WasiErrno["EMULTIHOP"] = 36] = "EMULTIHOP";
|
|
43
|
+
WasiErrno[WasiErrno["ENAMETOOLONG"] = 37] = "ENAMETOOLONG";
|
|
44
|
+
WasiErrno[WasiErrno["ENETDOWN"] = 38] = "ENETDOWN";
|
|
45
|
+
WasiErrno[WasiErrno["ENETRESET"] = 39] = "ENETRESET";
|
|
46
|
+
WasiErrno[WasiErrno["ENETUNREACH"] = 40] = "ENETUNREACH";
|
|
47
|
+
WasiErrno[WasiErrno["ENFILE"] = 41] = "ENFILE";
|
|
48
|
+
WasiErrno[WasiErrno["ENOBUFS"] = 42] = "ENOBUFS";
|
|
49
|
+
WasiErrno[WasiErrno["ENODEV"] = 43] = "ENODEV";
|
|
50
|
+
WasiErrno[WasiErrno["ENOENT"] = 44] = "ENOENT";
|
|
51
|
+
WasiErrno[WasiErrno["ENOEXEC"] = 45] = "ENOEXEC";
|
|
52
|
+
WasiErrno[WasiErrno["ENOLCK"] = 46] = "ENOLCK";
|
|
53
|
+
WasiErrno[WasiErrno["ENOLINK"] = 47] = "ENOLINK";
|
|
54
|
+
WasiErrno[WasiErrno["ENOMEM"] = 48] = "ENOMEM";
|
|
55
|
+
WasiErrno[WasiErrno["ENOMSG"] = 49] = "ENOMSG";
|
|
56
|
+
WasiErrno[WasiErrno["ENOPROTOOPT"] = 50] = "ENOPROTOOPT";
|
|
57
|
+
WasiErrno[WasiErrno["ENOSPC"] = 51] = "ENOSPC";
|
|
58
|
+
WasiErrno[WasiErrno["ENOSYS"] = 52] = "ENOSYS";
|
|
59
|
+
WasiErrno[WasiErrno["ENOTCONN"] = 53] = "ENOTCONN";
|
|
60
|
+
WasiErrno[WasiErrno["ENOTDIR"] = 54] = "ENOTDIR";
|
|
61
|
+
WasiErrno[WasiErrno["ENOTEMPTY"] = 55] = "ENOTEMPTY";
|
|
62
|
+
WasiErrno[WasiErrno["ENOTRECOVERABLE"] = 56] = "ENOTRECOVERABLE";
|
|
63
|
+
WasiErrno[WasiErrno["ENOTSOCK"] = 57] = "ENOTSOCK";
|
|
64
|
+
WasiErrno[WasiErrno["ENOTSUP"] = 58] = "ENOTSUP";
|
|
65
|
+
WasiErrno[WasiErrno["ENOTTY"] = 59] = "ENOTTY";
|
|
66
|
+
WasiErrno[WasiErrno["ENXIO"] = 60] = "ENXIO";
|
|
67
|
+
WasiErrno[WasiErrno["EOVERFLOW"] = 61] = "EOVERFLOW";
|
|
68
|
+
WasiErrno[WasiErrno["EOWNERDEAD"] = 62] = "EOWNERDEAD";
|
|
69
|
+
WasiErrno[WasiErrno["EPERM"] = 63] = "EPERM";
|
|
70
|
+
WasiErrno[WasiErrno["EPIPE"] = 64] = "EPIPE";
|
|
71
|
+
WasiErrno[WasiErrno["EPROTO"] = 65] = "EPROTO";
|
|
72
|
+
WasiErrno[WasiErrno["EPROTONOSUPPORT"] = 66] = "EPROTONOSUPPORT";
|
|
73
|
+
WasiErrno[WasiErrno["EPROTOTYPE"] = 67] = "EPROTOTYPE";
|
|
74
|
+
WasiErrno[WasiErrno["ERANGE"] = 68] = "ERANGE";
|
|
75
|
+
WasiErrno[WasiErrno["EROFS"] = 69] = "EROFS";
|
|
76
|
+
WasiErrno[WasiErrno["ESPIPE"] = 70] = "ESPIPE";
|
|
77
|
+
WasiErrno[WasiErrno["ESRCH"] = 71] = "ESRCH";
|
|
78
|
+
WasiErrno[WasiErrno["ESTALE"] = 72] = "ESTALE";
|
|
79
|
+
WasiErrno[WasiErrno["ETIMEDOUT"] = 73] = "ETIMEDOUT";
|
|
80
|
+
WasiErrno[WasiErrno["ETXTBSY"] = 74] = "ETXTBSY";
|
|
81
|
+
WasiErrno[WasiErrno["EXDEV"] = 75] = "EXDEV";
|
|
82
|
+
WasiErrno[WasiErrno["ENOTCAPABLE"] = 76] = "ENOTCAPABLE";
|
|
83
|
+
})(WasiErrno = exports.WasiErrno || (exports.WasiErrno = {}));
|
|
84
|
+
var WasiFileType;
|
|
85
|
+
(function (WasiFileType) {
|
|
86
|
+
WasiFileType[WasiFileType["UNKNOWN"] = 0] = "UNKNOWN";
|
|
87
|
+
WasiFileType[WasiFileType["BLOCK_DEVICE"] = 1] = "BLOCK_DEVICE";
|
|
88
|
+
WasiFileType[WasiFileType["CHARACTER_DEVICE"] = 2] = "CHARACTER_DEVICE";
|
|
89
|
+
WasiFileType[WasiFileType["DIRECTORY"] = 3] = "DIRECTORY";
|
|
90
|
+
WasiFileType[WasiFileType["REGULAR_FILE"] = 4] = "REGULAR_FILE";
|
|
91
|
+
WasiFileType[WasiFileType["SOCKET_DGRAM"] = 5] = "SOCKET_DGRAM";
|
|
92
|
+
WasiFileType[WasiFileType["SOCKET_STREAM"] = 6] = "SOCKET_STREAM";
|
|
93
|
+
WasiFileType[WasiFileType["SYMBOLIC_LINK"] = 7] = "SYMBOLIC_LINK";
|
|
94
|
+
})(WasiFileType = exports.WasiFileType || (exports.WasiFileType = {}));
|
|
95
|
+
exports.WasiRights = {
|
|
96
|
+
FD_DATASYNC: (BigInt(1) << BigInt(0)),
|
|
97
|
+
FD_READ: (BigInt(1) << BigInt(1)),
|
|
98
|
+
FD_SEEK: (BigInt(1) << BigInt(2)),
|
|
99
|
+
FD_FDSTAT_SET_FLAGS: (BigInt(1) << BigInt(3)),
|
|
100
|
+
FD_SYNC: (BigInt(1) << BigInt(4)),
|
|
101
|
+
FD_TELL: (BigInt(1) << BigInt(5)),
|
|
102
|
+
FD_WRITE: (BigInt(1) << BigInt(6)),
|
|
103
|
+
FD_ADVISE: (BigInt(1) << BigInt(7)),
|
|
104
|
+
FD_ALLOCATE: (BigInt(1) << BigInt(8)),
|
|
105
|
+
PATH_CREATE_DIRECTORY: (BigInt(1) << BigInt(9)),
|
|
106
|
+
PATH_CREATE_FILE: (BigInt(1) << BigInt(10)),
|
|
107
|
+
PATH_LINK_SOURCE: (BigInt(1) << BigInt(11)),
|
|
108
|
+
PATH_LINK_TARGET: (BigInt(1) << BigInt(12)),
|
|
109
|
+
PATH_OPEN: (BigInt(1) << BigInt(13)),
|
|
110
|
+
FD_READDIR: (BigInt(1) << BigInt(14)),
|
|
111
|
+
PATH_READLINK: (BigInt(1) << BigInt(15)),
|
|
112
|
+
PATH_RENAME_SOURCE: (BigInt(1) << BigInt(16)),
|
|
113
|
+
PATH_RENAME_TARGET: (BigInt(1) << BigInt(17)),
|
|
114
|
+
PATH_FILESTAT_GET: (BigInt(1) << BigInt(18)),
|
|
115
|
+
PATH_FILESTAT_SET_SIZE: (BigInt(1) << BigInt(19)),
|
|
116
|
+
PATH_FILESTAT_SET_TIMES: (BigInt(1) << BigInt(20)),
|
|
117
|
+
FD_FILESTAT_GET: (BigInt(1) << BigInt(21)),
|
|
118
|
+
FD_FILESTAT_SET_SIZE: (BigInt(1) << BigInt(22)),
|
|
119
|
+
FD_FILESTAT_SET_TIMES: (BigInt(1) << BigInt(23)),
|
|
120
|
+
PATH_SYMLINK: (BigInt(1) << BigInt(24)),
|
|
121
|
+
PATH_REMOVE_DIRECTORY: (BigInt(1) << BigInt(25)),
|
|
122
|
+
PATH_UNLINK_FILE: (BigInt(1) << BigInt(26)),
|
|
123
|
+
POLL_FD_READWRITE: (BigInt(1) << BigInt(27)),
|
|
124
|
+
SOCK_SHUTDOWN: (BigInt(1) << BigInt(28)),
|
|
125
|
+
SOCK_ACCEPT: (BigInt(1) << BigInt(29))
|
|
126
|
+
};
|
|
127
|
+
var WasiWhence;
|
|
128
|
+
(function (WasiWhence) {
|
|
129
|
+
WasiWhence[WasiWhence["SET"] = 0] = "SET";
|
|
130
|
+
WasiWhence[WasiWhence["CUR"] = 1] = "CUR";
|
|
131
|
+
WasiWhence[WasiWhence["END"] = 2] = "END";
|
|
132
|
+
})(WasiWhence = exports.WasiWhence || (exports.WasiWhence = {}));
|
|
133
|
+
var FileControlFlag;
|
|
134
|
+
(function (FileControlFlag) {
|
|
135
|
+
FileControlFlag[FileControlFlag["O_RDONLY"] = 0] = "O_RDONLY";
|
|
136
|
+
FileControlFlag[FileControlFlag["O_WRONLY"] = 1] = "O_WRONLY";
|
|
137
|
+
FileControlFlag[FileControlFlag["O_RDWR"] = 2] = "O_RDWR";
|
|
138
|
+
FileControlFlag[FileControlFlag["O_CREAT"] = 64] = "O_CREAT";
|
|
139
|
+
FileControlFlag[FileControlFlag["O_EXCL"] = 128] = "O_EXCL";
|
|
140
|
+
FileControlFlag[FileControlFlag["O_NOCTTY"] = 256] = "O_NOCTTY";
|
|
141
|
+
FileControlFlag[FileControlFlag["O_TRUNC"] = 512] = "O_TRUNC";
|
|
142
|
+
FileControlFlag[FileControlFlag["O_APPEND"] = 1024] = "O_APPEND";
|
|
143
|
+
FileControlFlag[FileControlFlag["O_DIRECTORY"] = 65536] = "O_DIRECTORY";
|
|
144
|
+
FileControlFlag[FileControlFlag["O_NOATIME"] = 262144] = "O_NOATIME";
|
|
145
|
+
FileControlFlag[FileControlFlag["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW";
|
|
146
|
+
FileControlFlag[FileControlFlag["O_SYNC"] = 1052672] = "O_SYNC";
|
|
147
|
+
FileControlFlag[FileControlFlag["O_DIRECT"] = 16384] = "O_DIRECT";
|
|
148
|
+
FileControlFlag[FileControlFlag["O_NONBLOCK"] = 2048] = "O_NONBLOCK";
|
|
149
|
+
})(FileControlFlag = exports.FileControlFlag || (exports.FileControlFlag = {}));
|
|
150
|
+
var WasiFileControlFlag;
|
|
151
|
+
(function (WasiFileControlFlag) {
|
|
152
|
+
WasiFileControlFlag[WasiFileControlFlag["O_CREAT"] = 1] = "O_CREAT";
|
|
153
|
+
WasiFileControlFlag[WasiFileControlFlag["O_DIRECTORY"] = 2] = "O_DIRECTORY";
|
|
154
|
+
WasiFileControlFlag[WasiFileControlFlag["O_EXCL"] = 4] = "O_EXCL";
|
|
155
|
+
WasiFileControlFlag[WasiFileControlFlag["O_TRUNC"] = 8] = "O_TRUNC";
|
|
156
|
+
})(WasiFileControlFlag = exports.WasiFileControlFlag || (exports.WasiFileControlFlag = {}));
|
|
157
|
+
var WasiFdFlag;
|
|
158
|
+
(function (WasiFdFlag) {
|
|
159
|
+
WasiFdFlag[WasiFdFlag["APPEND"] = 1] = "APPEND";
|
|
160
|
+
WasiFdFlag[WasiFdFlag["DSYNC"] = 2] = "DSYNC";
|
|
161
|
+
WasiFdFlag[WasiFdFlag["NONBLOCK"] = 4] = "NONBLOCK";
|
|
162
|
+
WasiFdFlag[WasiFdFlag["RSYNC"] = 8] = "RSYNC";
|
|
163
|
+
WasiFdFlag[WasiFdFlag["SYNC"] = 16] = "SYNC";
|
|
164
|
+
})(WasiFdFlag = exports.WasiFdFlag || (exports.WasiFdFlag = {}));
|
|
165
|
+
var WasiClockid;
|
|
166
|
+
(function (WasiClockid) {
|
|
167
|
+
WasiClockid[WasiClockid["REALTIME"] = 0] = "REALTIME";
|
|
168
|
+
WasiClockid[WasiClockid["MONOTONIC"] = 1] = "MONOTONIC";
|
|
169
|
+
WasiClockid[WasiClockid["PROCESS_CPUTIME_ID"] = 2] = "PROCESS_CPUTIME_ID";
|
|
170
|
+
WasiClockid[WasiClockid["THREAD_CPUTIME_ID"] = 3] = "THREAD_CPUTIME_ID";
|
|
171
|
+
})(WasiClockid = exports.WasiClockid || (exports.WasiClockid = {}));
|
|
172
|
+
var WasiFstFlag;
|
|
173
|
+
(function (WasiFstFlag) {
|
|
174
|
+
WasiFstFlag[WasiFstFlag["SET_ATIM"] = 1] = "SET_ATIM";
|
|
175
|
+
WasiFstFlag[WasiFstFlag["SET_ATIM_NOW"] = 2] = "SET_ATIM_NOW";
|
|
176
|
+
WasiFstFlag[WasiFstFlag["SET_MTIM"] = 4] = "SET_MTIM";
|
|
177
|
+
WasiFstFlag[WasiFstFlag["SET_MTIM_NOW"] = 8] = "SET_MTIM_NOW";
|
|
178
|
+
})(WasiFstFlag = exports.WasiFstFlag || (exports.WasiFstFlag = {}));
|
|
179
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPromiseLike = exports.validateInt32 = exports.validateUndefined = exports.validateFunction = exports.validateString = exports.validateBoolean = exports.validateArray = exports.validateObject = void 0;
|
|
4
|
+
function validateObject(value, name) {
|
|
5
|
+
if (value === null || typeof value !== 'object') {
|
|
6
|
+
throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.validateObject = validateObject;
|
|
10
|
+
function validateArray(value, name) {
|
|
11
|
+
if (!Array.isArray(value)) {
|
|
12
|
+
throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.validateArray = validateArray;
|
|
16
|
+
function validateBoolean(value, name) {
|
|
17
|
+
if (typeof value !== 'boolean') {
|
|
18
|
+
throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.validateBoolean = validateBoolean;
|
|
22
|
+
function validateString(value, name) {
|
|
23
|
+
if (typeof value !== 'string') {
|
|
24
|
+
throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.validateString = validateString;
|
|
28
|
+
function validateFunction(value, name) {
|
|
29
|
+
if (typeof value !== 'function') {
|
|
30
|
+
throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.validateFunction = validateFunction;
|
|
34
|
+
function validateUndefined(value, name) {
|
|
35
|
+
if (value !== undefined) {
|
|
36
|
+
throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.validateUndefined = validateUndefined;
|
|
40
|
+
function validateInt32(value, name, min = -2147483648, max = 2147483647) {
|
|
41
|
+
if (typeof value !== 'number') {
|
|
42
|
+
throw new TypeError(`${name} must be a number. Received ${value === null ? 'null' : typeof value}`);
|
|
43
|
+
}
|
|
44
|
+
if (!Number.isInteger(value)) {
|
|
45
|
+
throw new RangeError(`${name} must be a integer.`);
|
|
46
|
+
}
|
|
47
|
+
if (value < min || value > max) {
|
|
48
|
+
throw new RangeError(`${name} must be >= ${min} && <= ${max}. Received ${value}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.validateInt32 = validateInt32;
|
|
52
|
+
function isPromiseLike(obj) {
|
|
53
|
+
return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function');
|
|
54
|
+
}
|
|
55
|
+
exports.isPromiseLike = isPromiseLike;
|
|
56
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { isPromiseLike } from "./wasi/util.mjs";
|
|
2
|
+
const ignoreNames = [
|
|
3
|
+
'asyncify_get_state',
|
|
4
|
+
'asyncify_start_rewind',
|
|
5
|
+
'asyncify_start_unwind',
|
|
6
|
+
'asyncify_stop_rewind',
|
|
7
|
+
'asyncify_stop_unwind'
|
|
8
|
+
];
|
|
9
|
+
// const wrappedExports = new WeakMap<WebAssembly.Exports, WebAssembly.Exports>()
|
|
10
|
+
var AsyncifyState;
|
|
11
|
+
(function (AsyncifyState) {
|
|
12
|
+
AsyncifyState[AsyncifyState["NONE"] = 0] = "NONE";
|
|
13
|
+
AsyncifyState[AsyncifyState["UNWINDING"] = 1] = "UNWINDING";
|
|
14
|
+
AsyncifyState[AsyncifyState["REWINDING"] = 2] = "REWINDING";
|
|
15
|
+
})(AsyncifyState || (AsyncifyState = {}));
|
|
16
|
+
function tryAllocate(instance, wasm64, size, mallocName) {
|
|
17
|
+
if (typeof instance.exports[mallocName] !== 'function' || size <= 0) {
|
|
18
|
+
return {
|
|
19
|
+
wasm64,
|
|
20
|
+
dataPtr: 16,
|
|
21
|
+
start: wasm64 ? 32 : 24,
|
|
22
|
+
end: 1024
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const malloc = instance.exports[mallocName];
|
|
26
|
+
const dataPtr = wasm64 ? Number(malloc(BigInt(16) + BigInt(size))) : malloc(8 + size);
|
|
27
|
+
if (dataPtr === 0) {
|
|
28
|
+
throw new Error('Allocate asyncify data failed');
|
|
29
|
+
}
|
|
30
|
+
return wasm64
|
|
31
|
+
? { wasm64, dataPtr, start: dataPtr + 16, end: dataPtr + 16 + size }
|
|
32
|
+
: { wasm64, dataPtr, start: dataPtr + 8, end: dataPtr + 8 + size };
|
|
33
|
+
}
|
|
34
|
+
/** @public */
|
|
35
|
+
export class Asyncify {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.value = undefined;
|
|
38
|
+
this.exports = undefined;
|
|
39
|
+
this.dataPtr = 0;
|
|
40
|
+
}
|
|
41
|
+
init(memory, instance, options) {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
if (this.exports) {
|
|
44
|
+
throw new Error('Asyncify has been initialized');
|
|
45
|
+
}
|
|
46
|
+
if (!(memory instanceof WebAssembly.Memory)) {
|
|
47
|
+
throw new TypeError('Require WebAssembly.Memory object');
|
|
48
|
+
}
|
|
49
|
+
const exports = instance.exports;
|
|
50
|
+
for (let i = 0; i < ignoreNames.length; ++i) {
|
|
51
|
+
if (typeof exports[ignoreNames[i]] !== 'function') {
|
|
52
|
+
throw new TypeError('Invalid asyncify wasm');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
let address;
|
|
56
|
+
const wasm64 = Boolean(options.wasm64);
|
|
57
|
+
if (!options.tryAllocate) {
|
|
58
|
+
address = {
|
|
59
|
+
wasm64,
|
|
60
|
+
dataPtr: 16,
|
|
61
|
+
start: wasm64 ? 32 : 24,
|
|
62
|
+
end: 1024
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
if (options.tryAllocate === true) {
|
|
67
|
+
address = tryAllocate(instance, wasm64, 4096, 'malloc');
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
address = tryAllocate(instance, wasm64, (_a = options.tryAllocate.size) !== null && _a !== void 0 ? _a : 4096, (_b = options.tryAllocate.name) !== null && _b !== void 0 ? _b : 'malloc');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
this.dataPtr = address.dataPtr;
|
|
74
|
+
if (wasm64) {
|
|
75
|
+
new BigInt64Array(memory.buffer, this.dataPtr).set([BigInt(address.start), BigInt(address.end)]);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
new Int32Array(memory.buffer, this.dataPtr).set([address.start, address.end]);
|
|
79
|
+
}
|
|
80
|
+
this.exports = this.wrapExports(exports, options.wrapExports);
|
|
81
|
+
const asyncifiedInstance = Object.create(WebAssembly.Instance.prototype);
|
|
82
|
+
Object.defineProperty(asyncifiedInstance, 'exports', { value: this.exports });
|
|
83
|
+
// Object.setPrototypeOf(instance, Instance.prototype)
|
|
84
|
+
return asyncifiedInstance;
|
|
85
|
+
}
|
|
86
|
+
assertState() {
|
|
87
|
+
if (this.exports.asyncify_get_state() !== AsyncifyState.NONE) {
|
|
88
|
+
throw new Error('Asyncify state error');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
wrapImportFunction(f) {
|
|
92
|
+
return ((...args) => {
|
|
93
|
+
// eslint-disable-next-line no-unreachable-loop
|
|
94
|
+
while (this.exports.asyncify_get_state() === AsyncifyState.REWINDING) {
|
|
95
|
+
this.exports.asyncify_stop_rewind();
|
|
96
|
+
return this.value;
|
|
97
|
+
}
|
|
98
|
+
this.assertState();
|
|
99
|
+
const v = f(...args);
|
|
100
|
+
if (!isPromiseLike(v))
|
|
101
|
+
return v;
|
|
102
|
+
this.exports.asyncify_start_unwind(this.dataPtr);
|
|
103
|
+
this.value = v;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
wrapImports(imports) {
|
|
107
|
+
const importObject = {};
|
|
108
|
+
Object.keys(imports).forEach(k => {
|
|
109
|
+
const mod = imports[k];
|
|
110
|
+
const newModule = {};
|
|
111
|
+
Object.keys(mod).forEach(name => {
|
|
112
|
+
const importValue = mod[name];
|
|
113
|
+
if (typeof importValue === 'function') {
|
|
114
|
+
newModule[name] = this.wrapImportFunction(importValue);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
newModule[name] = importValue;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
importObject[k] = newModule;
|
|
121
|
+
});
|
|
122
|
+
return importObject;
|
|
123
|
+
}
|
|
124
|
+
wrapExportFunction(f) {
|
|
125
|
+
return (async (...args) => {
|
|
126
|
+
this.assertState();
|
|
127
|
+
let ret = f(...args);
|
|
128
|
+
while (this.exports.asyncify_get_state() === AsyncifyState.UNWINDING) {
|
|
129
|
+
this.exports.asyncify_stop_unwind();
|
|
130
|
+
this.value = await this.value;
|
|
131
|
+
this.assertState();
|
|
132
|
+
this.exports.asyncify_start_rewind(this.dataPtr);
|
|
133
|
+
ret = f();
|
|
134
|
+
}
|
|
135
|
+
this.assertState();
|
|
136
|
+
return ret;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
wrapExports(exports, needWrap) {
|
|
140
|
+
const newExports = Object.create(null);
|
|
141
|
+
Object.keys(exports).forEach(name => {
|
|
142
|
+
const exportValue = exports[name];
|
|
143
|
+
let ignore = ignoreNames.indexOf(name) !== -1 || typeof exportValue !== 'function';
|
|
144
|
+
if (Array.isArray(needWrap)) {
|
|
145
|
+
ignore = ignore || (needWrap.indexOf(name) === -1);
|
|
146
|
+
}
|
|
147
|
+
Object.defineProperty(newExports, name, {
|
|
148
|
+
enumerable: true,
|
|
149
|
+
value: ignore ? exportValue : this.wrapExportFunction(exportValue)
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
// wrappedExports.set(exports, newExports)
|
|
153
|
+
return newExports;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// /** @public */
|
|
157
|
+
// export class Instance extends WebAssembly.Instance {
|
|
158
|
+
// constructor (options: AsyncifyOptions, module: WebAssembly.Module, importObject?: WebAssembly.Imports) {
|
|
159
|
+
// importObject = importObject ?? {}
|
|
160
|
+
// const asyncify = new Asyncify()
|
|
161
|
+
// super(module, asyncify.wrapImports(importObject))
|
|
162
|
+
// asyncify.init(importObject, this, options)
|
|
163
|
+
// }
|
|
164
|
+
// get exports (): WebAssembly.Exports {
|
|
165
|
+
// return wrappedExports.get(super.exports)!
|
|
166
|
+
// }
|
|
167
|
+
// }
|
|
168
|
+
// Object.defineProperty(Instance.prototype, 'exports', { enumerable: true })
|
package/lib/mjs/load.mjs
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Asyncify } from "./asyncify.mjs";
|
|
2
|
+
async function fetchWasm(urlOrBuffer, imports) {
|
|
3
|
+
const response = await fetch(urlOrBuffer);
|
|
4
|
+
const buffer = await response.arrayBuffer();
|
|
5
|
+
const source = await WebAssembly.instantiate(buffer, imports);
|
|
6
|
+
return source;
|
|
7
|
+
}
|
|
8
|
+
/** @public */
|
|
9
|
+
export async function load(urlOrBuffer, imports, asyncify) {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
if (imports && typeof imports !== 'object') {
|
|
12
|
+
throw new TypeError('imports must be an object or undefined');
|
|
13
|
+
}
|
|
14
|
+
imports = imports !== null && imports !== void 0 ? imports : {};
|
|
15
|
+
let asyncifyHelper;
|
|
16
|
+
let source;
|
|
17
|
+
if (asyncify) {
|
|
18
|
+
asyncifyHelper = new Asyncify();
|
|
19
|
+
imports = asyncifyHelper.wrapImports(imports);
|
|
20
|
+
}
|
|
21
|
+
if (urlOrBuffer instanceof ArrayBuffer || ArrayBuffer.isView(urlOrBuffer)) {
|
|
22
|
+
source = await WebAssembly.instantiate(urlOrBuffer, imports);
|
|
23
|
+
if (asyncify) {
|
|
24
|
+
const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory);
|
|
25
|
+
return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) };
|
|
26
|
+
}
|
|
27
|
+
return source;
|
|
28
|
+
}
|
|
29
|
+
if (typeof urlOrBuffer !== 'string' && !(urlOrBuffer instanceof URL)) {
|
|
30
|
+
throw new TypeError('Invalid source');
|
|
31
|
+
}
|
|
32
|
+
if (typeof WebAssembly.instantiateStreaming === 'function') {
|
|
33
|
+
try {
|
|
34
|
+
source = await WebAssembly.instantiateStreaming(fetch(urlOrBuffer), imports);
|
|
35
|
+
}
|
|
36
|
+
catch (_) {
|
|
37
|
+
source = await fetchWasm(urlOrBuffer, imports);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
source = await fetchWasm(urlOrBuffer, imports);
|
|
42
|
+
}
|
|
43
|
+
if (asyncify) {
|
|
44
|
+
const memory = source.instance.exports.memory || ((_b = imports.env) === null || _b === void 0 ? void 0 : _b.memory);
|
|
45
|
+
return { module: source.module, instance: asyncifyHelper.init(memory, source.instance, asyncify) };
|
|
46
|
+
}
|
|
47
|
+
return source;
|
|
48
|
+
}
|
|
49
|
+
/** @public */
|
|
50
|
+
export function loadSync(buffer, imports, asyncify) {
|
|
51
|
+
var _a;
|
|
52
|
+
if ((buffer instanceof ArrayBuffer) && !ArrayBuffer.isView(buffer)) {
|
|
53
|
+
throw new TypeError('Invalid source');
|
|
54
|
+
}
|
|
55
|
+
if (imports && typeof imports !== 'object') {
|
|
56
|
+
throw new TypeError('imports must be an object or undefined');
|
|
57
|
+
}
|
|
58
|
+
imports = imports !== null && imports !== void 0 ? imports : {};
|
|
59
|
+
let asyncifyHelper;
|
|
60
|
+
if (asyncify) {
|
|
61
|
+
asyncifyHelper = new Asyncify();
|
|
62
|
+
imports = asyncifyHelper.wrapImports(imports);
|
|
63
|
+
}
|
|
64
|
+
const module = new WebAssembly.Module(buffer);
|
|
65
|
+
const instance = new WebAssembly.Instance(module, imports);
|
|
66
|
+
const source = { instance, module };
|
|
67
|
+
if (asyncify) {
|
|
68
|
+
const memory = source.instance.exports.memory || ((_a = imports.env) === null || _a === void 0 ? void 0 : _a.memory);
|
|
69
|
+
return { module: source.module, instance: asyncifyHelper.init(memory, instance, asyncify) };
|
|
70
|
+
}
|
|
71
|
+
return source;
|
|
72
|
+
}
|