@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.
@@ -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
+ }