@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,134 @@
|
|
|
1
|
+
import { WasiError } from "./error.mjs";
|
|
2
|
+
import { WasiErrno, WasiRights, WasiFileType } from "./types.mjs";
|
|
3
|
+
export const RIGHTS_ALL = WasiRights.FD_DATASYNC |
|
|
4
|
+
WasiRights.FD_READ |
|
|
5
|
+
WasiRights.FD_SEEK |
|
|
6
|
+
WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
7
|
+
WasiRights.FD_SYNC |
|
|
8
|
+
WasiRights.FD_TELL |
|
|
9
|
+
WasiRights.FD_WRITE |
|
|
10
|
+
WasiRights.FD_ADVISE |
|
|
11
|
+
WasiRights.FD_ALLOCATE |
|
|
12
|
+
WasiRights.PATH_CREATE_DIRECTORY |
|
|
13
|
+
WasiRights.PATH_CREATE_FILE |
|
|
14
|
+
WasiRights.PATH_LINK_SOURCE |
|
|
15
|
+
WasiRights.PATH_LINK_TARGET |
|
|
16
|
+
WasiRights.PATH_OPEN |
|
|
17
|
+
WasiRights.FD_READDIR |
|
|
18
|
+
WasiRights.PATH_READLINK |
|
|
19
|
+
WasiRights.PATH_RENAME_SOURCE |
|
|
20
|
+
WasiRights.PATH_RENAME_TARGET |
|
|
21
|
+
WasiRights.PATH_FILESTAT_GET |
|
|
22
|
+
WasiRights.PATH_FILESTAT_SET_SIZE |
|
|
23
|
+
WasiRights.PATH_FILESTAT_SET_TIMES |
|
|
24
|
+
WasiRights.FD_FILESTAT_GET |
|
|
25
|
+
WasiRights.FD_FILESTAT_SET_TIMES |
|
|
26
|
+
WasiRights.FD_FILESTAT_SET_SIZE |
|
|
27
|
+
WasiRights.PATH_SYMLINK |
|
|
28
|
+
WasiRights.PATH_UNLINK_FILE |
|
|
29
|
+
WasiRights.PATH_REMOVE_DIRECTORY |
|
|
30
|
+
WasiRights.POLL_FD_READWRITE |
|
|
31
|
+
WasiRights.SOCK_SHUTDOWN;
|
|
32
|
+
export const BLOCK_DEVICE_BASE = RIGHTS_ALL;
|
|
33
|
+
export const BLOCK_DEVICE_INHERITING = RIGHTS_ALL;
|
|
34
|
+
export const CHARACTER_DEVICE_BASE = RIGHTS_ALL;
|
|
35
|
+
export const CHARACTER_DEVICE_INHERITING = RIGHTS_ALL;
|
|
36
|
+
export const REGULAR_FILE_BASE = WasiRights.FD_DATASYNC |
|
|
37
|
+
WasiRights.FD_READ |
|
|
38
|
+
WasiRights.FD_SEEK |
|
|
39
|
+
WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
40
|
+
WasiRights.FD_SYNC |
|
|
41
|
+
WasiRights.FD_TELL |
|
|
42
|
+
WasiRights.FD_WRITE |
|
|
43
|
+
WasiRights.FD_ADVISE |
|
|
44
|
+
WasiRights.FD_ALLOCATE |
|
|
45
|
+
WasiRights.FD_FILESTAT_GET |
|
|
46
|
+
WasiRights.FD_FILESTAT_SET_SIZE |
|
|
47
|
+
WasiRights.FD_FILESTAT_SET_TIMES |
|
|
48
|
+
WasiRights.POLL_FD_READWRITE;
|
|
49
|
+
export const REGULAR_FILE_INHERITING = BigInt(0);
|
|
50
|
+
export const DIRECTORY_BASE = WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
51
|
+
WasiRights.FD_SYNC |
|
|
52
|
+
WasiRights.FD_ADVISE |
|
|
53
|
+
WasiRights.PATH_CREATE_DIRECTORY |
|
|
54
|
+
WasiRights.PATH_CREATE_FILE |
|
|
55
|
+
WasiRights.PATH_LINK_SOURCE |
|
|
56
|
+
WasiRights.PATH_LINK_TARGET |
|
|
57
|
+
WasiRights.PATH_OPEN |
|
|
58
|
+
WasiRights.FD_READDIR |
|
|
59
|
+
WasiRights.PATH_READLINK |
|
|
60
|
+
WasiRights.PATH_RENAME_SOURCE |
|
|
61
|
+
WasiRights.PATH_RENAME_TARGET |
|
|
62
|
+
WasiRights.PATH_FILESTAT_GET |
|
|
63
|
+
WasiRights.PATH_FILESTAT_SET_SIZE |
|
|
64
|
+
WasiRights.PATH_FILESTAT_SET_TIMES |
|
|
65
|
+
WasiRights.FD_FILESTAT_GET |
|
|
66
|
+
WasiRights.FD_FILESTAT_SET_TIMES |
|
|
67
|
+
WasiRights.PATH_SYMLINK |
|
|
68
|
+
WasiRights.PATH_UNLINK_FILE |
|
|
69
|
+
WasiRights.PATH_REMOVE_DIRECTORY |
|
|
70
|
+
WasiRights.POLL_FD_READWRITE;
|
|
71
|
+
export const DIRECTORY_INHERITING = DIRECTORY_BASE | REGULAR_FILE_BASE;
|
|
72
|
+
export const SOCKET_BASE = (WasiRights.FD_READ |
|
|
73
|
+
WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
74
|
+
WasiRights.FD_WRITE |
|
|
75
|
+
WasiRights.FD_FILESTAT_GET |
|
|
76
|
+
WasiRights.POLL_FD_READWRITE |
|
|
77
|
+
WasiRights.SOCK_SHUTDOWN);
|
|
78
|
+
export const SOCKET_INHERITING = RIGHTS_ALL;
|
|
79
|
+
export const TTY_BASE = WasiRights.FD_READ |
|
|
80
|
+
WasiRights.FD_FDSTAT_SET_FLAGS |
|
|
81
|
+
WasiRights.FD_WRITE |
|
|
82
|
+
WasiRights.FD_FILESTAT_GET |
|
|
83
|
+
WasiRights.POLL_FD_READWRITE;
|
|
84
|
+
export const TTY_INHERITING = BigInt(0);
|
|
85
|
+
export function getRights(stdio, fd, flags, type) {
|
|
86
|
+
const ret = {
|
|
87
|
+
base: BigInt(0),
|
|
88
|
+
inheriting: BigInt(0)
|
|
89
|
+
};
|
|
90
|
+
if (type === WasiFileType.UNKNOWN) {
|
|
91
|
+
throw new WasiError('Unknown file type', WasiErrno.EINVAL);
|
|
92
|
+
}
|
|
93
|
+
switch (type) {
|
|
94
|
+
case WasiFileType.REGULAR_FILE:
|
|
95
|
+
ret.base = REGULAR_FILE_BASE;
|
|
96
|
+
ret.inheriting = REGULAR_FILE_INHERITING;
|
|
97
|
+
break;
|
|
98
|
+
case WasiFileType.DIRECTORY:
|
|
99
|
+
ret.base = DIRECTORY_BASE;
|
|
100
|
+
ret.inheriting = DIRECTORY_INHERITING;
|
|
101
|
+
break;
|
|
102
|
+
case WasiFileType.SOCKET_STREAM:
|
|
103
|
+
case WasiFileType.SOCKET_DGRAM:
|
|
104
|
+
ret.base = SOCKET_BASE;
|
|
105
|
+
ret.inheriting = SOCKET_INHERITING;
|
|
106
|
+
break;
|
|
107
|
+
case WasiFileType.CHARACTER_DEVICE:
|
|
108
|
+
if (stdio.indexOf(fd) !== -1) {
|
|
109
|
+
ret.base = TTY_BASE;
|
|
110
|
+
ret.inheriting = TTY_INHERITING;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
ret.base = CHARACTER_DEVICE_BASE;
|
|
114
|
+
ret.inheriting = CHARACTER_DEVICE_INHERITING;
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case WasiFileType.BLOCK_DEVICE:
|
|
118
|
+
ret.base = BLOCK_DEVICE_BASE;
|
|
119
|
+
ret.inheriting = BLOCK_DEVICE_INHERITING;
|
|
120
|
+
break;
|
|
121
|
+
default:
|
|
122
|
+
ret.base = BigInt(0);
|
|
123
|
+
ret.inheriting = BigInt(0);
|
|
124
|
+
}
|
|
125
|
+
/* Disable read/write bits depending on access mode. */
|
|
126
|
+
const read_or_write_only = flags & (0 | 1 | 2);
|
|
127
|
+
if (read_or_write_only === 0) {
|
|
128
|
+
ret.base &= ~WasiRights.FD_WRITE;
|
|
129
|
+
}
|
|
130
|
+
else if (read_or_write_only === 1) {
|
|
131
|
+
ret.base &= ~WasiRights.FD_READ;
|
|
132
|
+
}
|
|
133
|
+
return ret;
|
|
134
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
export var WasiErrno;
|
|
2
|
+
(function (WasiErrno) {
|
|
3
|
+
WasiErrno[WasiErrno["ESUCCESS"] = 0] = "ESUCCESS";
|
|
4
|
+
WasiErrno[WasiErrno["E2BIG"] = 1] = "E2BIG";
|
|
5
|
+
WasiErrno[WasiErrno["EACCES"] = 2] = "EACCES";
|
|
6
|
+
WasiErrno[WasiErrno["EADDRINUSE"] = 3] = "EADDRINUSE";
|
|
7
|
+
WasiErrno[WasiErrno["EADDRNOTAVAIL"] = 4] = "EADDRNOTAVAIL";
|
|
8
|
+
WasiErrno[WasiErrno["EAFNOSUPPORT"] = 5] = "EAFNOSUPPORT";
|
|
9
|
+
WasiErrno[WasiErrno["EAGAIN"] = 6] = "EAGAIN";
|
|
10
|
+
WasiErrno[WasiErrno["EALREADY"] = 7] = "EALREADY";
|
|
11
|
+
WasiErrno[WasiErrno["EBADF"] = 8] = "EBADF";
|
|
12
|
+
WasiErrno[WasiErrno["EBADMSG"] = 9] = "EBADMSG";
|
|
13
|
+
WasiErrno[WasiErrno["EBUSY"] = 10] = "EBUSY";
|
|
14
|
+
WasiErrno[WasiErrno["ECANCELED"] = 11] = "ECANCELED";
|
|
15
|
+
WasiErrno[WasiErrno["ECHILD"] = 12] = "ECHILD";
|
|
16
|
+
WasiErrno[WasiErrno["ECONNABORTED"] = 13] = "ECONNABORTED";
|
|
17
|
+
WasiErrno[WasiErrno["ECONNREFUSED"] = 14] = "ECONNREFUSED";
|
|
18
|
+
WasiErrno[WasiErrno["ECONNRESET"] = 15] = "ECONNRESET";
|
|
19
|
+
WasiErrno[WasiErrno["EDEADLK"] = 16] = "EDEADLK";
|
|
20
|
+
WasiErrno[WasiErrno["EDESTADDRREQ"] = 17] = "EDESTADDRREQ";
|
|
21
|
+
WasiErrno[WasiErrno["EDOM"] = 18] = "EDOM";
|
|
22
|
+
WasiErrno[WasiErrno["EDQUOT"] = 19] = "EDQUOT";
|
|
23
|
+
WasiErrno[WasiErrno["EEXIST"] = 20] = "EEXIST";
|
|
24
|
+
WasiErrno[WasiErrno["EFAULT"] = 21] = "EFAULT";
|
|
25
|
+
WasiErrno[WasiErrno["EFBIG"] = 22] = "EFBIG";
|
|
26
|
+
WasiErrno[WasiErrno["EHOSTUNREACH"] = 23] = "EHOSTUNREACH";
|
|
27
|
+
WasiErrno[WasiErrno["EIDRM"] = 24] = "EIDRM";
|
|
28
|
+
WasiErrno[WasiErrno["EILSEQ"] = 25] = "EILSEQ";
|
|
29
|
+
WasiErrno[WasiErrno["EINPROGRESS"] = 26] = "EINPROGRESS";
|
|
30
|
+
WasiErrno[WasiErrno["EINTR"] = 27] = "EINTR";
|
|
31
|
+
WasiErrno[WasiErrno["EINVAL"] = 28] = "EINVAL";
|
|
32
|
+
WasiErrno[WasiErrno["EIO"] = 29] = "EIO";
|
|
33
|
+
WasiErrno[WasiErrno["EISCONN"] = 30] = "EISCONN";
|
|
34
|
+
WasiErrno[WasiErrno["EISDIR"] = 31] = "EISDIR";
|
|
35
|
+
WasiErrno[WasiErrno["ELOOP"] = 32] = "ELOOP";
|
|
36
|
+
WasiErrno[WasiErrno["EMFILE"] = 33] = "EMFILE";
|
|
37
|
+
WasiErrno[WasiErrno["EMLINK"] = 34] = "EMLINK";
|
|
38
|
+
WasiErrno[WasiErrno["EMSGSIZE"] = 35] = "EMSGSIZE";
|
|
39
|
+
WasiErrno[WasiErrno["EMULTIHOP"] = 36] = "EMULTIHOP";
|
|
40
|
+
WasiErrno[WasiErrno["ENAMETOOLONG"] = 37] = "ENAMETOOLONG";
|
|
41
|
+
WasiErrno[WasiErrno["ENETDOWN"] = 38] = "ENETDOWN";
|
|
42
|
+
WasiErrno[WasiErrno["ENETRESET"] = 39] = "ENETRESET";
|
|
43
|
+
WasiErrno[WasiErrno["ENETUNREACH"] = 40] = "ENETUNREACH";
|
|
44
|
+
WasiErrno[WasiErrno["ENFILE"] = 41] = "ENFILE";
|
|
45
|
+
WasiErrno[WasiErrno["ENOBUFS"] = 42] = "ENOBUFS";
|
|
46
|
+
WasiErrno[WasiErrno["ENODEV"] = 43] = "ENODEV";
|
|
47
|
+
WasiErrno[WasiErrno["ENOENT"] = 44] = "ENOENT";
|
|
48
|
+
WasiErrno[WasiErrno["ENOEXEC"] = 45] = "ENOEXEC";
|
|
49
|
+
WasiErrno[WasiErrno["ENOLCK"] = 46] = "ENOLCK";
|
|
50
|
+
WasiErrno[WasiErrno["ENOLINK"] = 47] = "ENOLINK";
|
|
51
|
+
WasiErrno[WasiErrno["ENOMEM"] = 48] = "ENOMEM";
|
|
52
|
+
WasiErrno[WasiErrno["ENOMSG"] = 49] = "ENOMSG";
|
|
53
|
+
WasiErrno[WasiErrno["ENOPROTOOPT"] = 50] = "ENOPROTOOPT";
|
|
54
|
+
WasiErrno[WasiErrno["ENOSPC"] = 51] = "ENOSPC";
|
|
55
|
+
WasiErrno[WasiErrno["ENOSYS"] = 52] = "ENOSYS";
|
|
56
|
+
WasiErrno[WasiErrno["ENOTCONN"] = 53] = "ENOTCONN";
|
|
57
|
+
WasiErrno[WasiErrno["ENOTDIR"] = 54] = "ENOTDIR";
|
|
58
|
+
WasiErrno[WasiErrno["ENOTEMPTY"] = 55] = "ENOTEMPTY";
|
|
59
|
+
WasiErrno[WasiErrno["ENOTRECOVERABLE"] = 56] = "ENOTRECOVERABLE";
|
|
60
|
+
WasiErrno[WasiErrno["ENOTSOCK"] = 57] = "ENOTSOCK";
|
|
61
|
+
WasiErrno[WasiErrno["ENOTSUP"] = 58] = "ENOTSUP";
|
|
62
|
+
WasiErrno[WasiErrno["ENOTTY"] = 59] = "ENOTTY";
|
|
63
|
+
WasiErrno[WasiErrno["ENXIO"] = 60] = "ENXIO";
|
|
64
|
+
WasiErrno[WasiErrno["EOVERFLOW"] = 61] = "EOVERFLOW";
|
|
65
|
+
WasiErrno[WasiErrno["EOWNERDEAD"] = 62] = "EOWNERDEAD";
|
|
66
|
+
WasiErrno[WasiErrno["EPERM"] = 63] = "EPERM";
|
|
67
|
+
WasiErrno[WasiErrno["EPIPE"] = 64] = "EPIPE";
|
|
68
|
+
WasiErrno[WasiErrno["EPROTO"] = 65] = "EPROTO";
|
|
69
|
+
WasiErrno[WasiErrno["EPROTONOSUPPORT"] = 66] = "EPROTONOSUPPORT";
|
|
70
|
+
WasiErrno[WasiErrno["EPROTOTYPE"] = 67] = "EPROTOTYPE";
|
|
71
|
+
WasiErrno[WasiErrno["ERANGE"] = 68] = "ERANGE";
|
|
72
|
+
WasiErrno[WasiErrno["EROFS"] = 69] = "EROFS";
|
|
73
|
+
WasiErrno[WasiErrno["ESPIPE"] = 70] = "ESPIPE";
|
|
74
|
+
WasiErrno[WasiErrno["ESRCH"] = 71] = "ESRCH";
|
|
75
|
+
WasiErrno[WasiErrno["ESTALE"] = 72] = "ESTALE";
|
|
76
|
+
WasiErrno[WasiErrno["ETIMEDOUT"] = 73] = "ETIMEDOUT";
|
|
77
|
+
WasiErrno[WasiErrno["ETXTBSY"] = 74] = "ETXTBSY";
|
|
78
|
+
WasiErrno[WasiErrno["EXDEV"] = 75] = "EXDEV";
|
|
79
|
+
WasiErrno[WasiErrno["ENOTCAPABLE"] = 76] = "ENOTCAPABLE";
|
|
80
|
+
})(WasiErrno || (WasiErrno = {}));
|
|
81
|
+
export var WasiFileType;
|
|
82
|
+
(function (WasiFileType) {
|
|
83
|
+
WasiFileType[WasiFileType["UNKNOWN"] = 0] = "UNKNOWN";
|
|
84
|
+
WasiFileType[WasiFileType["BLOCK_DEVICE"] = 1] = "BLOCK_DEVICE";
|
|
85
|
+
WasiFileType[WasiFileType["CHARACTER_DEVICE"] = 2] = "CHARACTER_DEVICE";
|
|
86
|
+
WasiFileType[WasiFileType["DIRECTORY"] = 3] = "DIRECTORY";
|
|
87
|
+
WasiFileType[WasiFileType["REGULAR_FILE"] = 4] = "REGULAR_FILE";
|
|
88
|
+
WasiFileType[WasiFileType["SOCKET_DGRAM"] = 5] = "SOCKET_DGRAM";
|
|
89
|
+
WasiFileType[WasiFileType["SOCKET_STREAM"] = 6] = "SOCKET_STREAM";
|
|
90
|
+
WasiFileType[WasiFileType["SYMBOLIC_LINK"] = 7] = "SYMBOLIC_LINK";
|
|
91
|
+
})(WasiFileType || (WasiFileType = {}));
|
|
92
|
+
export const WasiRights = {
|
|
93
|
+
FD_DATASYNC: (BigInt(1) << BigInt(0)),
|
|
94
|
+
FD_READ: (BigInt(1) << BigInt(1)),
|
|
95
|
+
FD_SEEK: (BigInt(1) << BigInt(2)),
|
|
96
|
+
FD_FDSTAT_SET_FLAGS: (BigInt(1) << BigInt(3)),
|
|
97
|
+
FD_SYNC: (BigInt(1) << BigInt(4)),
|
|
98
|
+
FD_TELL: (BigInt(1) << BigInt(5)),
|
|
99
|
+
FD_WRITE: (BigInt(1) << BigInt(6)),
|
|
100
|
+
FD_ADVISE: (BigInt(1) << BigInt(7)),
|
|
101
|
+
FD_ALLOCATE: (BigInt(1) << BigInt(8)),
|
|
102
|
+
PATH_CREATE_DIRECTORY: (BigInt(1) << BigInt(9)),
|
|
103
|
+
PATH_CREATE_FILE: (BigInt(1) << BigInt(10)),
|
|
104
|
+
PATH_LINK_SOURCE: (BigInt(1) << BigInt(11)),
|
|
105
|
+
PATH_LINK_TARGET: (BigInt(1) << BigInt(12)),
|
|
106
|
+
PATH_OPEN: (BigInt(1) << BigInt(13)),
|
|
107
|
+
FD_READDIR: (BigInt(1) << BigInt(14)),
|
|
108
|
+
PATH_READLINK: (BigInt(1) << BigInt(15)),
|
|
109
|
+
PATH_RENAME_SOURCE: (BigInt(1) << BigInt(16)),
|
|
110
|
+
PATH_RENAME_TARGET: (BigInt(1) << BigInt(17)),
|
|
111
|
+
PATH_FILESTAT_GET: (BigInt(1) << BigInt(18)),
|
|
112
|
+
PATH_FILESTAT_SET_SIZE: (BigInt(1) << BigInt(19)),
|
|
113
|
+
PATH_FILESTAT_SET_TIMES: (BigInt(1) << BigInt(20)),
|
|
114
|
+
FD_FILESTAT_GET: (BigInt(1) << BigInt(21)),
|
|
115
|
+
FD_FILESTAT_SET_SIZE: (BigInt(1) << BigInt(22)),
|
|
116
|
+
FD_FILESTAT_SET_TIMES: (BigInt(1) << BigInt(23)),
|
|
117
|
+
PATH_SYMLINK: (BigInt(1) << BigInt(24)),
|
|
118
|
+
PATH_REMOVE_DIRECTORY: (BigInt(1) << BigInt(25)),
|
|
119
|
+
PATH_UNLINK_FILE: (BigInt(1) << BigInt(26)),
|
|
120
|
+
POLL_FD_READWRITE: (BigInt(1) << BigInt(27)),
|
|
121
|
+
SOCK_SHUTDOWN: (BigInt(1) << BigInt(28)),
|
|
122
|
+
SOCK_ACCEPT: (BigInt(1) << BigInt(29))
|
|
123
|
+
};
|
|
124
|
+
export var WasiWhence;
|
|
125
|
+
(function (WasiWhence) {
|
|
126
|
+
WasiWhence[WasiWhence["SET"] = 0] = "SET";
|
|
127
|
+
WasiWhence[WasiWhence["CUR"] = 1] = "CUR";
|
|
128
|
+
WasiWhence[WasiWhence["END"] = 2] = "END";
|
|
129
|
+
})(WasiWhence || (WasiWhence = {}));
|
|
130
|
+
export var FileControlFlag;
|
|
131
|
+
(function (FileControlFlag) {
|
|
132
|
+
FileControlFlag[FileControlFlag["O_RDONLY"] = 0] = "O_RDONLY";
|
|
133
|
+
FileControlFlag[FileControlFlag["O_WRONLY"] = 1] = "O_WRONLY";
|
|
134
|
+
FileControlFlag[FileControlFlag["O_RDWR"] = 2] = "O_RDWR";
|
|
135
|
+
FileControlFlag[FileControlFlag["O_CREAT"] = 64] = "O_CREAT";
|
|
136
|
+
FileControlFlag[FileControlFlag["O_EXCL"] = 128] = "O_EXCL";
|
|
137
|
+
FileControlFlag[FileControlFlag["O_NOCTTY"] = 256] = "O_NOCTTY";
|
|
138
|
+
FileControlFlag[FileControlFlag["O_TRUNC"] = 512] = "O_TRUNC";
|
|
139
|
+
FileControlFlag[FileControlFlag["O_APPEND"] = 1024] = "O_APPEND";
|
|
140
|
+
FileControlFlag[FileControlFlag["O_DIRECTORY"] = 65536] = "O_DIRECTORY";
|
|
141
|
+
FileControlFlag[FileControlFlag["O_NOATIME"] = 262144] = "O_NOATIME";
|
|
142
|
+
FileControlFlag[FileControlFlag["O_NOFOLLOW"] = 131072] = "O_NOFOLLOW";
|
|
143
|
+
FileControlFlag[FileControlFlag["O_SYNC"] = 1052672] = "O_SYNC";
|
|
144
|
+
FileControlFlag[FileControlFlag["O_DIRECT"] = 16384] = "O_DIRECT";
|
|
145
|
+
FileControlFlag[FileControlFlag["O_NONBLOCK"] = 2048] = "O_NONBLOCK";
|
|
146
|
+
})(FileControlFlag || (FileControlFlag = {}));
|
|
147
|
+
export var WasiFileControlFlag;
|
|
148
|
+
(function (WasiFileControlFlag) {
|
|
149
|
+
WasiFileControlFlag[WasiFileControlFlag["O_CREAT"] = 1] = "O_CREAT";
|
|
150
|
+
WasiFileControlFlag[WasiFileControlFlag["O_DIRECTORY"] = 2] = "O_DIRECTORY";
|
|
151
|
+
WasiFileControlFlag[WasiFileControlFlag["O_EXCL"] = 4] = "O_EXCL";
|
|
152
|
+
WasiFileControlFlag[WasiFileControlFlag["O_TRUNC"] = 8] = "O_TRUNC";
|
|
153
|
+
})(WasiFileControlFlag || (WasiFileControlFlag = {}));
|
|
154
|
+
export var WasiFdFlag;
|
|
155
|
+
(function (WasiFdFlag) {
|
|
156
|
+
WasiFdFlag[WasiFdFlag["APPEND"] = 1] = "APPEND";
|
|
157
|
+
WasiFdFlag[WasiFdFlag["DSYNC"] = 2] = "DSYNC";
|
|
158
|
+
WasiFdFlag[WasiFdFlag["NONBLOCK"] = 4] = "NONBLOCK";
|
|
159
|
+
WasiFdFlag[WasiFdFlag["RSYNC"] = 8] = "RSYNC";
|
|
160
|
+
WasiFdFlag[WasiFdFlag["SYNC"] = 16] = "SYNC";
|
|
161
|
+
})(WasiFdFlag || (WasiFdFlag = {}));
|
|
162
|
+
export var WasiClockid;
|
|
163
|
+
(function (WasiClockid) {
|
|
164
|
+
WasiClockid[WasiClockid["REALTIME"] = 0] = "REALTIME";
|
|
165
|
+
WasiClockid[WasiClockid["MONOTONIC"] = 1] = "MONOTONIC";
|
|
166
|
+
WasiClockid[WasiClockid["PROCESS_CPUTIME_ID"] = 2] = "PROCESS_CPUTIME_ID";
|
|
167
|
+
WasiClockid[WasiClockid["THREAD_CPUTIME_ID"] = 3] = "THREAD_CPUTIME_ID";
|
|
168
|
+
})(WasiClockid || (WasiClockid = {}));
|
|
169
|
+
export var WasiFstFlag;
|
|
170
|
+
(function (WasiFstFlag) {
|
|
171
|
+
WasiFstFlag[WasiFstFlag["SET_ATIM"] = 1] = "SET_ATIM";
|
|
172
|
+
WasiFstFlag[WasiFstFlag["SET_ATIM_NOW"] = 2] = "SET_ATIM_NOW";
|
|
173
|
+
WasiFstFlag[WasiFstFlag["SET_MTIM"] = 4] = "SET_MTIM";
|
|
174
|
+
WasiFstFlag[WasiFstFlag["SET_MTIM_NOW"] = 8] = "SET_MTIM_NOW";
|
|
175
|
+
})(WasiFstFlag || (WasiFstFlag = {}));
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function validateObject(value, name) {
|
|
2
|
+
if (value === null || typeof value !== 'object') {
|
|
3
|
+
throw new TypeError(`${name} must be an object. Received ${value === null ? 'null' : typeof value}`);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export function validateArray(value, name) {
|
|
7
|
+
if (!Array.isArray(value)) {
|
|
8
|
+
throw new TypeError(`${name} must be an array. Received ${value === null ? 'null' : typeof value}`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function validateBoolean(value, name) {
|
|
12
|
+
if (typeof value !== 'boolean') {
|
|
13
|
+
throw new TypeError(`${name} must be a boolean. Received ${value === null ? 'null' : typeof value}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function validateString(value, name) {
|
|
17
|
+
if (typeof value !== 'string') {
|
|
18
|
+
throw new TypeError(`${name} must be a string. Received ${value === null ? 'null' : typeof value}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function validateFunction(value, name) {
|
|
22
|
+
if (typeof value !== 'function') {
|
|
23
|
+
throw new TypeError(`${name} must be a function. Received ${value === null ? 'null' : typeof value}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function validateUndefined(value, name) {
|
|
27
|
+
if (value !== undefined) {
|
|
28
|
+
throw new TypeError(`${name} must be undefined. Received ${value === null ? 'null' : typeof value}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function validateInt32(value, name, min = -2147483648, max = 2147483647) {
|
|
32
|
+
if (typeof value !== 'number') {
|
|
33
|
+
throw new TypeError(`${name} must be a number. Received ${value === null ? 'null' : typeof value}`);
|
|
34
|
+
}
|
|
35
|
+
if (!Number.isInteger(value)) {
|
|
36
|
+
throw new RangeError(`${name} must be a integer.`);
|
|
37
|
+
}
|
|
38
|
+
if (value < min || value > max) {
|
|
39
|
+
throw new RangeError(`${name} must be >= ${min} && <= ${max}. Received ${value}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function isPromiseLike(obj) {
|
|
43
|
+
return !!(obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function');
|
|
44
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tybys/wasm-util",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "WASI polyfill for browser and some wasm util",
|
|
5
|
+
"main": "./lib/cjs/index.js",
|
|
6
|
+
"module": "./dist/wasm-util.esm-bundler.js",
|
|
7
|
+
"types": "./dist/wasm-util.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"module": "./dist/wasm-util.esm-bundler.js",
|
|
11
|
+
"import": "./lib/mjs/index.mjs",
|
|
12
|
+
"require": "./lib/cjs/index.js",
|
|
13
|
+
"types": "./dist/wasm-util.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsgo build",
|
|
18
|
+
"watch": "tsgo watch",
|
|
19
|
+
"test": "jest",
|
|
20
|
+
"lint": "eslint ./src/**/*.{ts,js} --fix",
|
|
21
|
+
"prepare": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"wasm",
|
|
28
|
+
"webassembly",
|
|
29
|
+
"wasi",
|
|
30
|
+
"polyfill"
|
|
31
|
+
],
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/toyobayashi/wasm-util.git"
|
|
35
|
+
},
|
|
36
|
+
"author": "toyobayashi",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"memfs-browser": "^3.4.10801"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@tybys/ts-transform-module-specifier": "^0.0.2",
|
|
43
|
+
"@tybys/ts-transform-pure-class": "^0.1.1",
|
|
44
|
+
"@tybys/tsgo": "^1.1.0",
|
|
45
|
+
"@types/node": "^14.14.31",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
|
47
|
+
"@typescript-eslint/parser": "^5.40.1",
|
|
48
|
+
"eslint": "^8.25.0",
|
|
49
|
+
"eslint-config-standard-with-typescript": "^23.0.0",
|
|
50
|
+
"eslint-plugin-import": "^2.26.0",
|
|
51
|
+
"eslint-plugin-n": "^15.3.0",
|
|
52
|
+
"eslint-plugin-promise": "^6.1.0",
|
|
53
|
+
"mocha": "^10.1.0",
|
|
54
|
+
"ts-node": "^10.9.1",
|
|
55
|
+
"typescript": "~4.8.3"
|
|
56
|
+
}
|
|
57
|
+
}
|