{"version":3,"sources":["jsdelivr-header.js","/npm/wasi@0.0.6/src/index.js"],"names":[],"mappings":"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","file":"/npm/wasi@0.0.6/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/wasi@0.0.6/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\n/* eslint-disable no-unused-vars */\n/* eslint-disable arrow-body-style */\n/* eslint max-len: [\"error\", { \"code\": 80 }] */\n\nconst binding = require('bindings')('wasi');\n\nconst crypto = require('crypto');\nconst fs = require('fs');\nconst path = require('path');\nconst perfHooks = require('perf_hooks');\nconst { isatty: isTTY } = require('tty');\nconst { Buffer } = require('buffer');\n\nconst WASI_ESUCCESS = 0;\nconst WASI_E2BIG = 1;\nconst WASI_EACCES = 2;\nconst WASI_EADDRINUSE = 3;\nconst WASI_EADDRNOTAVAIL = 4;\nconst WASI_EAFNOSUPPORT = 5;\nconst WASI_EAGAIN = 6;\nconst WASI_EALREADY = 7;\nconst WASI_EBADF = 8;\nconst WASI_EBADMSG = 9;\nconst WASI_EBUSY = 10;\nconst WASI_ECANCELED = 11;\nconst WASI_ECHILD = 12;\nconst WASI_ECONNABORTED = 13;\nconst WASI_ECONNREFUSED = 14;\nconst WASI_ECONNRESET = 15;\nconst WASI_EDEADLK = 16;\nconst WASI_EDESTADDRREQ = 17;\nconst WASI_EDOM = 18;\nconst WASI_EDQUOT = 19;\nconst WASI_EEXIST = 20;\nconst WASI_EFAULT = 21;\nconst WASI_EFBIG = 22;\nconst WASI_EHOSTUNREACH = 23;\nconst WASI_EIDRM = 24;\nconst WASI_EILSEQ = 25;\nconst WASI_EINPROGRESS = 26;\nconst WASI_EINTR = 27;\nconst WASI_EINVAL = 28;\nconst WASI_EIO = 29;\nconst WASI_EISCONN = 30;\nconst WASI_EISDIR = 31;\nconst WASI_ELOOP = 32;\nconst WASI_EMFILE = 33;\nconst WASI_EMLINK = 34;\nconst WASI_EMSGSIZE = 35;\nconst WASI_EMULTIHOP = 36;\nconst WASI_ENAMETOOLONG = 37;\nconst WASI_ENETDOWN = 38;\nconst WASI_ENETRESET = 39;\nconst WASI_ENETUNREACH = 40;\nconst WASI_ENFILE = 41;\nconst WASI_ENOBUFS = 42;\nconst WASI_ENODEV = 43;\nconst WASI_ENOENT = 44;\nconst WASI_ENOEXEC = 45;\nconst WASI_ENOLCK = 46;\nconst WASI_ENOLINK = 47;\nconst WASI_ENOMEM = 48;\nconst WASI_ENOMSG = 49;\nconst WASI_ENOPROTOOPT = 50;\nconst WASI_ENOSPC = 51;\nconst WASI_ENOSYS = 52;\nconst WASI_ENOTCONN = 53;\nconst WASI_ENOTDIR = 54;\nconst WASI_ENOTEMPTY = 55;\nconst WASI_ENOTRECOVERABLE = 56;\nconst WASI_ENOTSOCK = 57;\nconst WASI_ENOTSUP = 58;\nconst WASI_ENOTTY = 59;\nconst WASI_ENXIO = 60;\nconst WASI_EOVERFLOW = 61;\nconst WASI_EOWNERDEAD = 62;\nconst WASI_EPERM = 63;\nconst WASI_EPIPE = 64;\nconst WASI_EPROTO = 65;\nconst WASI_EPROTONOSUPPORT = 66;\nconst WASI_EPROTOTYPE = 67;\nconst WASI_ERANGE = 68;\nconst WASI_EROFS = 69;\nconst WASI_ESPIPE = 70;\nconst WASI_ESRCH = 71;\nconst WASI_ESTALE = 72;\nconst WASI_ETIMEDOUT = 73;\nconst WASI_ETXTBSY = 74;\nconst WASI_EXDEV = 75;\nconst WASI_ENOTCAPABLE = 76;\n\nconst WASI_SIGABRT = 0;\nconst WASI_SIGALRM = 1;\nconst WASI_SIGBUS = 2;\nconst WASI_SIGCHLD = 3;\nconst WASI_SIGCONT = 4;\nconst WASI_SIGFPE = 5;\nconst WASI_SIGHUP = 6;\nconst WASI_SIGILL = 7;\nconst WASI_SIGINT = 8;\nconst WASI_SIGKILL = 9;\nconst WASI_SIGPIPE = 10;\nconst WASI_SIGQUIT = 11;\nconst WASI_SIGSEGV = 12;\nconst WASI_SIGSTOP = 13;\nconst WASI_SIGTERM = 14;\nconst WASI_SIGTRAP = 15;\nconst WASI_SIGTSTP = 16;\nconst WASI_SIGTTIN = 17;\nconst WASI_SIGTTOU = 18;\nconst WASI_SIGURG = 19;\nconst WASI_SIGUSR1 = 20;\nconst WASI_SIGUSR2 = 21;\nconst WASI_SIGVTALRM = 22;\nconst WASI_SIGXCPU = 23;\nconst WASI_SIGXFSZ = 24;\n\nconst WASI_FILETYPE_UNKNOWN = 0;\nconst WASI_FILETYPE_BLOCK_DEVICE = 1;\nconst WASI_FILETYPE_CHARACTER_DEVICE = 2;\nconst WASI_FILETYPE_DIRECTORY = 3;\nconst WASI_FILETYPE_REGULAR_FILE = 4;\nconst WASI_FILETYPE_SOCKET_DGRAM = 5;\nconst WASI_FILETYPE_SOCKET_STREAM = 6;\nconst WASI_FILETYPE_SYMBOLIC_LINK = 7;\n\nconst WASI_FDFLAG_APPEND = 0x0001;\nconst WASI_FDFLAG_DSYNC = 0x0002;\nconst WASI_FDFLAG_NONBLOCK = 0x0004;\nconst WASI_FDFLAG_RSYNC = 0x0008;\nconst WASI_FDFLAG_SYNC = 0x0010;\n\nconst WASI_RIGHT_FD_DATASYNC = 0x0000000000000001n;\nconst WASI_RIGHT_FD_READ = 0x0000000000000002n;\nconst WASI_RIGHT_FD_SEEK = 0x0000000000000004n;\nconst WASI_RIGHT_FD_FDSTAT_SET_FLAGS = 0x0000000000000008n;\nconst WASI_RIGHT_FD_SYNC = 0x0000000000000010n;\nconst WASI_RIGHT_FD_TELL = 0x0000000000000020n;\nconst WASI_RIGHT_FD_WRITE = 0x0000000000000040n;\nconst WASI_RIGHT_FD_ADVISE = 0x0000000000000080n;\nconst WASI_RIGHT_FD_ALLOCATE = 0x0000000000000100n;\nconst WASI_RIGHT_PATH_CREATE_DIRECTORY = 0x0000000000000200n;\nconst WASI_RIGHT_PATH_CREATE_FILE = 0x0000000000000400n;\nconst WASI_RIGHT_PATH_LINK_SOURCE = 0x0000000000000800n;\nconst WASI_RIGHT_PATH_LINK_TARGET = 0x0000000000001000n;\nconst WASI_RIGHT_PATH_OPEN = 0x0000000000002000n;\nconst WASI_RIGHT_FD_READDIR = 0x0000000000004000n;\nconst WASI_RIGHT_PATH_READLINK = 0x0000000000008000n;\nconst WASI_RIGHT_PATH_RENAME_SOURCE = 0x0000000000010000n;\nconst WASI_RIGHT_PATH_RENAME_TARGET = 0x0000000000020000n;\nconst WASI_RIGHT_PATH_FILESTAT_GET = 0x0000000000040000n;\nconst WASI_RIGHT_PATH_FILESTAT_SET_SIZE = 0x0000000000080000n;\nconst WASI_RIGHT_PATH_FILESTAT_SET_TIMES = 0x0000000000100000n;\nconst WASI_RIGHT_FD_FILESTAT_GET = 0x0000000000200000n;\nconst WASI_RIGHT_FD_FILESTAT_SET_SIZE = 0x0000000000400000n;\nconst WASI_RIGHT_FD_FILESTAT_SET_TIMES = 0x0000000000800000n;\nconst WASI_RIGHT_PATH_SYMLINK = 0x0000000001000000n;\nconst WASI_RIGHT_PATH_REMOVE_DIRECTORY = 0x0000000002000000n;\nconst WASI_RIGHT_PATH_UNLINK_FILE = 0x0000000004000000n;\nconst WASI_RIGHT_POLL_FD_READWRITE = 0x0000000008000000n;\nconst WASI_RIGHT_SOCK_SHUTDOWN = 0x0000000010000000n;\n\nconst RIGHTS_ALL = WASI_RIGHT_FD_DATASYNC | WASI_RIGHT_FD_READ\n  | WASI_RIGHT_FD_SEEK | WASI_RIGHT_FD_FDSTAT_SET_FLAGS | WASI_RIGHT_FD_SYNC\n  | WASI_RIGHT_FD_TELL | WASI_RIGHT_FD_WRITE | WASI_RIGHT_FD_ADVISE\n  | WASI_RIGHT_FD_ALLOCATE | WASI_RIGHT_PATH_CREATE_DIRECTORY\n  | WASI_RIGHT_PATH_CREATE_FILE | WASI_RIGHT_PATH_LINK_SOURCE\n  | WASI_RIGHT_PATH_LINK_TARGET | WASI_RIGHT_PATH_OPEN | WASI_RIGHT_FD_READDIR\n  | WASI_RIGHT_PATH_READLINK | WASI_RIGHT_PATH_RENAME_SOURCE\n  | WASI_RIGHT_PATH_RENAME_TARGET | WASI_RIGHT_PATH_FILESTAT_GET\n  | WASI_RIGHT_PATH_FILESTAT_SET_SIZE | WASI_RIGHT_PATH_FILESTAT_SET_TIMES\n  | WASI_RIGHT_FD_FILESTAT_GET | WASI_RIGHT_FD_FILESTAT_SET_TIMES\n  | WASI_RIGHT_FD_FILESTAT_SET_SIZE | WASI_RIGHT_PATH_SYMLINK\n  | WASI_RIGHT_PATH_UNLINK_FILE | WASI_RIGHT_PATH_REMOVE_DIRECTORY\n  | WASI_RIGHT_POLL_FD_READWRITE | WASI_RIGHT_SOCK_SHUTDOWN;\n\nconst RIGHTS_BLOCK_DEVICE_BASE = RIGHTS_ALL;\nconst RIGHTS_BLOCK_DEVICE_INHERITING = RIGHTS_ALL;\n\nconst RIGHTS_CHARACTER_DEVICE_BASE = RIGHTS_ALL;\nconst RIGHTS_CHARACTER_DEVICE_INHERITING = RIGHTS_ALL;\n\nconst RIGHTS_REGULAR_FILE_BASE = WASI_RIGHT_FD_DATASYNC | WASI_RIGHT_FD_READ\n  | WASI_RIGHT_FD_SEEK | WASI_RIGHT_FD_FDSTAT_SET_FLAGS | WASI_RIGHT_FD_SYNC\n  | WASI_RIGHT_FD_TELL | WASI_RIGHT_FD_WRITE | WASI_RIGHT_FD_ADVISE\n  | WASI_RIGHT_FD_ALLOCATE | WASI_RIGHT_FD_FILESTAT_GET\n  | WASI_RIGHT_FD_FILESTAT_SET_SIZE | WASI_RIGHT_FD_FILESTAT_SET_TIMES\n  | WASI_RIGHT_POLL_FD_READWRITE;\nconst RIGHTS_REGULAR_FILE_INHERITING = 0n;\n\nconst RIGHTS_DIRECTORY_BASE = WASI_RIGHT_FD_FDSTAT_SET_FLAGS\n  | WASI_RIGHT_FD_SYNC | WASI_RIGHT_FD_ADVISE | WASI_RIGHT_PATH_CREATE_DIRECTORY\n  | WASI_RIGHT_PATH_CREATE_FILE | WASI_RIGHT_PATH_LINK_SOURCE\n  | WASI_RIGHT_PATH_LINK_TARGET | WASI_RIGHT_PATH_OPEN | WASI_RIGHT_FD_READDIR\n  | WASI_RIGHT_PATH_READLINK | WASI_RIGHT_PATH_RENAME_SOURCE\n  | WASI_RIGHT_PATH_RENAME_TARGET | WASI_RIGHT_PATH_FILESTAT_GET\n  | WASI_RIGHT_PATH_FILESTAT_SET_SIZE | WASI_RIGHT_PATH_FILESTAT_SET_TIMES\n  | WASI_RIGHT_FD_FILESTAT_GET | WASI_RIGHT_FD_FILESTAT_SET_TIMES\n  | WASI_RIGHT_PATH_SYMLINK | WASI_RIGHT_PATH_UNLINK_FILE\n  | WASI_RIGHT_PATH_REMOVE_DIRECTORY | WASI_RIGHT_POLL_FD_READWRITE;\nconst RIGHTS_DIRECTORY_INHERITING = RIGHTS_DIRECTORY_BASE\n  | RIGHTS_REGULAR_FILE_BASE;\n\nconst RIGHTS_SOCKET_BASE = WASI_RIGHT_FD_READ | WASI_RIGHT_FD_FDSTAT_SET_FLAGS\n  | WASI_RIGHT_FD_WRITE | WASI_RIGHT_FD_FILESTAT_GET\n  | WASI_RIGHT_POLL_FD_READWRITE | WASI_RIGHT_SOCK_SHUTDOWN;\nconst RIGHTS_SOCKET_INHERITING = RIGHTS_ALL;\n\nconst RIGHTS_TTY_BASE = WASI_RIGHT_FD_READ | WASI_RIGHT_FD_FDSTAT_SET_FLAGS\n  | WASI_RIGHT_FD_WRITE | WASI_RIGHT_FD_FILESTAT_GET\n  | WASI_RIGHT_POLL_FD_READWRITE;\nconst RIGHTS_TTY_INHERITING = 0n;\n\nconst WASI_CLOCK_MONOTONIC = 0;\nconst WASI_CLOCK_PROCESS_CPUTIME_ID = 1;\nconst WASI_CLOCK_REALTIME = 2;\nconst WASI_CLOCK_THREAD_CPUTIME_ID = 3;\n\nconst WASI_EVENTTYPE_CLOCK = 0;\nconst WASI_EVENTTYPE_FD_READ = 1;\nconst WASI_EVENTTYPE_FD_WRITE = 2;\n\nconst WASI_FILESTAT_SET_ATIM = 1 << 0;\nconst WASI_FILESTAT_SET_ATIM_NOW = 1 << 1;\nconst WASI_FILESTAT_SET_MTIM = 1 << 2;\nconst WASI_FILESTAT_SET_MTIM_NOW = 1 << 3;\n\nconst WASI_O_CREAT = 1 << 0;\nconst WASI_O_DIRECTORY = 1 << 1;\nconst WASI_O_EXCL = 1 << 2;\nconst WASI_O_TRUNC = 1 << 3;\n\nconst WASI_PREOPENTYPE_DIR = 0;\n\nconst WASI_DIRCOOKIE_START = 0;\n\nconst WASI_STDIN_FILENO = 0;\nconst WASI_STDOUT_FILENO = 1;\nconst WASI_STDERR_FILENO = 2;\n\nconst WASI_WHENCE_CUR = 0;\nconst WASI_WHENCE_END = 1;\nconst WASI_WHENCE_SET = 2;\n\n// http://man7.org/linux/man-pages/man3/errno.3.html\nconst ERROR_MAP = {\n  E2BIG: WASI_E2BIG,\n  EACCES: WASI_EACCES,\n  EADDRINUSE: WASI_EADDRINUSE,\n  EADDRNOTAVAIL: WASI_EADDRNOTAVAIL,\n  EAFNOSUPPORT: WASI_EAFNOSUPPORT,\n  EALREADY: WASI_EALREADY,\n  EAGAIN: WASI_EAGAIN,\n  // EBADE: WASI_EBADE,\n  EBADF: WASI_EBADF,\n  // EBADFD: WASI_EBADFD,\n  EBADMSG: WASI_EBADMSG,\n  // EBADR: WASI_EBADR,\n  // EBADRQC: WASI_EBADRQC,\n  // EBADSLT: WASI_EBADSLT,\n  EBUSY: WASI_EBUSY,\n  ECANCELED: WASI_ECANCELED,\n  ECHILD: WASI_ECHILD,\n  // ECHRNG: WASI_ECHRNG,\n  // ECOMM: WASI_ECOMM,\n  ECONNABORTED: WASI_ECONNABORTED,\n  ECONNREFUSED: WASI_ECONNREFUSED,\n  ECONNRESET: WASI_ECONNRESET,\n  EDEADLOCK: WASI_EDEADLK,\n  EDESTADDRREQ: WASI_EDESTADDRREQ,\n  EDOM: WASI_EDOM,\n  EDQUOT: WASI_EDQUOT,\n  EEXIST: WASI_EEXIST,\n  EFAULT: WASI_EFAULT,\n  EFBIG: WASI_EFBIG,\n  EHOSTDOWN: WASI_EHOSTUNREACH,\n  EHOSTUNREACH: WASI_EHOSTUNREACH,\n  // EHWPOISON: WASI_EHWPOISON,\n  EIDRM: WASI_EIDRM,\n  EILSEQ: WASI_EILSEQ,\n  EINPROGRESS: WASI_EINPROGRESS,\n  EINTR: WASI_EINTR,\n  EINVAL: WASI_EINVAL,\n  EIO: WASI_EIO,\n  EISCONN: WASI_EISCONN,\n  EISDIR: WASI_EISDIR,\n  // EISNAM: WASI_EISNAM,\n  // EKEYEXPIRED: WASI_EKEYEXPIRED,\n  // EKEYREJECTED: WASI_EKEYREJECTED,\n  // EKEYREVOKED: WASI_EKEYREVOKED,\n  // EL2HLT: WASI_EL2HLT,\n  // EL2NSYNC: WASI_EL2NSYNC,\n  // EL3HLT: WASI_EL3HLT,\n  // EL3RST: WASI_EL3RST,\n  // ELIBACC: WASI_ELIBACC,\n  // ELIBBAD: WASI_ELIBBAD,\n  // ELIBMAX: WASI_ELIBMAX,\n  // ELIBSCN: WASI_ELIBSCN,\n  // ELIBEXEC: WASI_ELIBEXEC,\n  // ELNRANGE: WASI_ELNRANGE,\n  ELOOP: WASI_ELOOP,\n  // EMEDIUMTYPE: WASI_EMEDIUMTYPE,\n  EMFILE: WASI_EMFILE,\n  EMLINK: WASI_EMLINK,\n  EMSGSIZE: WASI_EMSGSIZE,\n  EMULTIHOP: WASI_EMULTIHOP,\n  ENAMETOOLONG: WASI_ENAMETOOLONG,\n  ENETDOWN: WASI_ENETDOWN,\n  ENETRESET: WASI_ENETRESET,\n  ENETUNREACH: WASI_ENETUNREACH,\n  ENFILE: WASI_ENFILE,\n  // ENOANO: WASI_ENOANO,\n  ENOBUFS: WASI_ENOBUFS,\n  // ENODATA: WASI_ENODATA,\n  ENODEV: WASI_ENODEV,\n  ENOENT: WASI_ENOENT,\n  ENOEXEC: WASI_ENOEXEC,\n  // ENOKEY: WASI_ENOKEY,\n  ENOLCK: WASI_ENOLCK,\n  ENOLINK: WASI_ENOLINK,\n  // ENOMEDIUM: WASI_ENOMEDIUM,\n  ENOMEM: WASI_ENOMEM,\n  ENOMSG: WASI_ENOMSG,\n  // ENONET: WASI_ENONET,\n  // ENOPKG: WASI_ENOPKG,\n  ENOPROTOOPT: WASI_ENOPROTOOPT,\n  ENOSPC: WASI_ENOSPC,\n  // ENOSR: WASI_ENOSR,\n  // ENOSTR: WASI_ENOSTR,\n  ENOSYS: WASI_ENOSYS,\n  // ENOTBLK: WASI_ENOTBLK,\n  ENOTCONN: WASI_ENOTCONN,\n  ENOTDIR: WASI_ENOTDIR,\n  ENOTEMPTY: WASI_ENOTEMPTY,\n  ENOTRECOVERABLE: WASI_ENOTRECOVERABLE,\n  ENOTSOCK: WASI_ENOTSOCK,\n  ENOTTY: WASI_ENOTTY,\n  // ENOTUNIQ: WASI_ENOTUNIQ,\n  ENXIO: WASI_ENXIO,\n  EOVERFLOW: WASI_EOVERFLOW,\n  EOWNERDEAD: WASI_EOWNERDEAD,\n  EPERM: WASI_EPERM,\n  // EPFNOSUPPORT: WASI_EPFNOSUPPORT,\n  EPIPE: WASI_EPIPE,\n  EPROTO: WASI_EPROTO,\n  EPROTONOSUPPORT: WASI_EPROTONOSUPPORT,\n  EPROTOTYPE: WASI_EPROTOTYPE,\n  ERANGE: WASI_ERANGE,\n  // EREMCHG: WASI_EREMCHG,\n  // EREMOTE: WASI_EREMOTE,\n  // EREMOTEIO: WASI_EREMOTEIO,\n  // ERESTART: WASI_ERESTART,\n  // ERFKILL: WASI_ERFKILL,\n  EROFS: WASI_EROFS,\n  // ESHUTDOWN: WASI_ESHUTDOWN,\n  ESPIPE: WASI_ESPIPE,\n  // ESOCKTNOSUPPORT: WASI_ESOCKTNOSUPPORT,\n  ESRCH: WASI_ESRCH,\n  ESTALE: WASI_ESTALE,\n  // ESTRPIPE: WASI_ESTRPIPE,\n  // ETIME: WASI_ETIME,\n  ETIMEDOUT: WASI_ETIMEDOUT,\n  // ETOOMANYREFS: WASI_ETOOMANYREFS,\n  ETXTBSY: WASI_ETXTBSY,\n  // EUCLEAN: WASI_EUCLEAN,\n  // EUNATCH: WASI_EUNATCH,\n  // EUSERS: WASI_EUSERS,\n  EXDEV: WASI_EXDEV,\n  // EXFULL: WASI_EXFULL,\n};\n\nconst SIGNAL_MAP = {\n  __proto__: null,\n  [WASI_SIGHUP]: 'SIGHUP',\n  [WASI_SIGINT]: 'SIGINT',\n  [WASI_SIGQUIT]: 'SIGQUIT',\n  [WASI_SIGILL]: 'SIGILL',\n  [WASI_SIGTRAP]: 'SIGTRAP',\n  [WASI_SIGABRT]: 'SIGABRT',\n  // [WASI_SIGIOT]: 'SIGIOT',\n  [WASI_SIGBUS]: 'SIGBUS',\n  [WASI_SIGFPE]: 'SIGFPE',\n  [WASI_SIGKILL]: 'SIGKILL',\n  [WASI_SIGUSR1]: 'SIGUSR1',\n  [WASI_SIGSEGV]: 'SIGSEGV',\n  [WASI_SIGUSR2]: 'SIGUSR2',\n  [WASI_SIGPIPE]: 'SIGPIPE',\n  [WASI_SIGALRM]: 'SIGALRM',\n  [WASI_SIGTERM]: 'SIGTERM',\n  [WASI_SIGCHLD]: 'SIGCHLD',\n  [WASI_SIGCONT]: 'SIGCONT',\n  [WASI_SIGSTOP]: 'SIGSTOP',\n  [WASI_SIGTSTP]: 'SIGTSTP',\n  [WASI_SIGTTIN]: 'SIGTTIN',\n  [WASI_SIGTTOU]: 'SIGTTOU',\n  [WASI_SIGURG]: 'SIGURG',\n  [WASI_SIGXCPU]: 'SIGXCPU',\n  [WASI_SIGXFSZ]: 'SIGXFSZ',\n  [WASI_SIGVTALRM]: 'SIGVTALRM',\n  // [WASI_SIGPROF]: 'SIGPROF',\n  // [WASI_SIGWINCH]: 'SIGWINCH',\n  // [WASI_SIGIO]: 'SIGIO',\n  // [WASI_SIGINFO]: 'SIGINFO',\n  // [WASI_SIGSYS]: 'SIGSYS',\n};\n\nconst msToNs = (ms) => {\n  const msInt = Math.trunc(ms);\n  const decimal = BigInt(Math.round((ms - msInt) * 1000));\n  const ns = BigInt(msInt) * 1000n;\n  return ns + decimal;\n};\n\nconst CPUTIME_START = msToNs(perfHooks.performance.timeOrigin);\n\nconst now = (clockId) => {\n  switch (clockId) {\n    case WASI_CLOCK_MONOTONIC:\n      return process.hrtime.bigint();\n    case WASI_CLOCK_REALTIME:\n      return binding.realtime();\n    case WASI_CLOCK_PROCESS_CPUTIME_ID:\n    case WASI_CLOCK_THREAD_CPUTIME_ID:\n      return process.hrtime.bigint() - CPUTIME_START;\n    default:\n      return null;\n  }\n};\n\nconst wrap = (f) => (...args) => {\n  try {\n    return f(...args);\n  } catch (e) {\n    if (typeof e === 'number') {\n      return e;\n    }\n    if (e.errno) {\n      return ERROR_MAP[e.code] || WASI_EINVAL;\n    }\n    throw e;\n  }\n};\n\nconst translateFileAttributes = (fd, stats) => {\n  switch (true) {\n    case stats.isBlockDevice():\n      return {\n        filetype: WASI_FILETYPE_BLOCK_DEVICE,\n        rightsBase: RIGHTS_BLOCK_DEVICE_BASE,\n        rightsInheriting: RIGHTS_BLOCK_DEVICE_INHERITING,\n      };\n    case stats.isCharacterDevice(): {\n      const filetype = WASI_FILETYPE_CHARACTER_DEVICE;\n      if (fd !== undefined && isTTY(fd)) {\n        return {\n          filetype,\n          rightsBase: RIGHTS_TTY_BASE,\n          rightsInheriting: RIGHTS_TTY_INHERITING,\n        };\n      }\n      return {\n        filetype,\n        rightsBase: RIGHTS_CHARACTER_DEVICE_BASE,\n        rightsInheriting: RIGHTS_CHARACTER_DEVICE_INHERITING,\n      };\n    }\n    case stats.isDirectory():\n      return {\n        filetype: WASI_FILETYPE_DIRECTORY,\n        rightsBase: RIGHTS_DIRECTORY_BASE,\n        rightsInheriting: RIGHTS_DIRECTORY_INHERITING,\n      };\n    case stats.isFIFO():\n      return {\n        filetype: WASI_FILETYPE_SOCKET_STREAM,\n        rightsBase: RIGHTS_SOCKET_BASE,\n        rightsInheriting: RIGHTS_SOCKET_INHERITING,\n      };\n    case stats.isFile():\n      return {\n        filetype: WASI_FILETYPE_REGULAR_FILE,\n        rightsBase: RIGHTS_REGULAR_FILE_BASE,\n        rightsInheriting: RIGHTS_REGULAR_FILE_INHERITING,\n      };\n    case stats.isSocket():\n      return {\n        filetype: WASI_FILETYPE_SOCKET_STREAM,\n        rightsBase: RIGHTS_SOCKET_BASE,\n        rightsInheriting: RIGHTS_SOCKET_INHERITING,\n      };\n    case stats.isSymbolicLink():\n      return {\n        filetype: WASI_FILETYPE_SYMBOLIC_LINK,\n        rightsBase: 0n,\n        rightsInheriting: 0n,\n      };\n    default:\n      return {\n        filetype: WASI_FILETYPE_UNKNOWN,\n        rightsBase: 0n,\n        rightsInheriting: 0n,\n      };\n  }\n};\n\nconst stat = (wasi, fd) => {\n  const entry = wasi.FD_MAP.get(fd);\n  if (!entry) {\n    throw WASI_EBADF;\n  }\n  if (entry.filetype === undefined) {\n    const stats = fs.fstatSync(entry.real);\n    const {\n      filetype, rightsBase, rightsInheriting,\n    } = translateFileAttributes(fd, stats);\n    entry.filetype = filetype;\n    if (entry.rights === undefined) {\n      entry.rights = {\n        base: rightsBase,\n        inheriting: rightsInheriting,\n      };\n    }\n  }\n  return entry;\n};\n\nclass WASI {\n  constructor({ preopenDirectories = { '.': '.' }, env = {}, args = [] } = {}) {\n    this.memory = undefined;\n    this.view = undefined;\n\n    this.FD_MAP = new Map([\n      [WASI_STDIN_FILENO, {\n        real: 0,\n        filetype: undefined,\n        rights: undefined,\n        path: undefined,\n      }],\n      [WASI_STDOUT_FILENO, {\n        real: 1,\n        filetype: undefined,\n        rights: undefined,\n        path: undefined,\n      }],\n      [WASI_STDERR_FILENO, {\n        real: 2,\n        filetype: undefined,\n        rights: undefined,\n        path: undefined,\n      }],\n    ]);\n\n    for (const [k, v] of Object.entries(preopenDirectories)) {\n      const real = fs.openSync(v);\n      const newfd = [...this.FD_MAP.keys()].reverse()[0] + 1;\n      this.FD_MAP.set(newfd, {\n        real,\n        filetype: WASI_FILETYPE_DIRECTORY,\n        rights: {\n          base: RIGHTS_DIRECTORY_BASE,\n          inheriting: RIGHTS_DIRECTORY_INHERITING,\n        },\n        fakePath: k,\n        path: v,\n      });\n    }\n\n    const getiovs = (iovs, iovsLen) => {\n      // iovs* -> [iov, iov, ...]\n      // __wasi_ciovec_t {\n      //   void* buf,\n      //   size_t buf_len,\n      // }\n\n      this.refreshMemory();\n\n      const buffers = Array.from({ length: iovsLen }, (_, i) => {\n        const ptr = iovs + (i * 8);\n        const bufPtr = this.view.getUint32(ptr, true);\n        const bufLen = this.view.getUint32(ptr + 4, true);\n        return new Uint8Array(this.memory.buffer, bufPtr, bufLen);\n      });\n\n      return buffers;\n    };\n\n    const CHECK_FD = (fd, rights) => {\n      const stats = stat(this, fd);\n      if (rights !== 0 && (stats.rights.base & rights) === 0) {\n        throw WASI_EPERM;\n      }\n      return stats;\n    };\n\n    this.exports = {\n      args_get: (argv, argvBuf) => {\n        this.refreshMemory();\n        let coffset = argv;\n        let offset = argvBuf;\n        args.forEach((a) => {\n          this.view.setUint32(coffset, offset, true);\n          coffset += 4;\n          offset += Buffer.from(this.memory.buffer).write(`${a}\\0`, offset);\n        });\n        return WASI_ESUCCESS;\n      },\n      args_sizes_get: (argc, argvBufSize) => {\n        this.refreshMemory();\n        this.view.setUint32(argc, args.length, true);\n        const size = args.reduce((acc, a) => acc + Buffer.byteLength(a) + 1, 0);\n        this.view.setUint32(argvBufSize, size, true);\n        return WASI_ESUCCESS;\n      },\n      environ_get: (environ, environBuf) => {\n        this.refreshMemory();\n        let coffset = environ;\n        let offset = environBuf;\n        const cache = Buffer.from(this.memory.buffer);\n        Object.entries(env)\n          .forEach(([key, value]) => {\n            this.view.setUint32(coffset, offset, true);\n            coffset += 4;\n            offset += cache.write(`${key}=${value}\\0`, offset);\n          });\n        return WASI_ESUCCESS;\n      },\n      environ_sizes_get: (environCount, environBufSize) => {\n        this.refreshMemory();\n        const envProcessed = Object.entries(env)\n          .map(([key, value]) => `${key}=${value}\\0`);\n        const size = envProcessed.reduce((acc, e) =>\n          acc + Buffer.byteLength(e), 0);\n        this.view.setUint32(environCount, envProcessed.length, true);\n        this.view.setUint32(environBufSize, size, true);\n        return WASI_ESUCCESS;\n      },\n      clock_res_get: (clockId, resolution) => {\n        this.view.setBigUint64(resolution, 0n);\n        return WASI_ESUCCESS;\n      },\n      clock_time_get: (clockId, precision, time) => {\n        const n = now(clockId);\n        if (n === null) {\n          return WASI_EINVAL;\n        }\n        this.view.setBigUint64(time, n, true);\n        return WASI_ESUCCESS;\n      },\n      fd_advise: wrap((fd, offset, len, advice) => {\n        CHECK_FD(fd, WASI_RIGHT_FD_ADVISE);\n        return WASI_ENOSYS;\n      }),\n      fd_allocate: wrap((fd, offset, len) => {\n        CHECK_FD(fd, WASI_RIGHT_FD_ALLOCATE);\n        return WASI_ENOSYS;\n      }),\n      fd_close: wrap((fd) => {\n        const stats = CHECK_FD(fd, 0);\n        fs.closeSync(stats.real);\n        this.FD_MAP.delete(fd);\n        return WASI_ESUCCESS;\n      }),\n      fd_datasync: (fd) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_DATASYNC);\n        fs.fdatasyncSync(stats.real);\n        return WASI_ESUCCESS;\n      },\n      fd_fdstat_get: wrap((fd, bufPtr) => {\n        const stats = CHECK_FD(fd, 0);\n        this.refreshMemory();\n        this.view.setUint8(bufPtr, stats.filetype); // FILETYPE u8\n        this.view.setUint16(bufPtr + 2, 0, true); // FDFLAG u16\n        this.view.setUint16(bufPtr + 4, 0, true); // FDFLAG u16\n        this.view.setBigUint64(bufPtr + 8, stats.rights.base, true); // u64\n        this.view.setBigUint64(\n          bufPtr + 8 + 8, stats.rights.inheriting, true,\n        ); // u64\n        return WASI_ESUCCESS;\n      }),\n      fd_fdstat_set_flags: wrap((fd, flags) => {\n        CHECK_FD(fd, WASI_RIGHT_FD_FDSTAT_SET_FLAGS);\n        return WASI_ENOSYS;\n      }),\n      fd_fdstat_set_rights: wrap((fd, fsRightsBase, fsRightsInheriting) => {\n        const stats = CHECK_FD(fd, 0);\n        const nrb = stats.rights.base | fsRightsBase;\n        if (nrb > stats.rights.base) {\n          return WASI_EPERM;\n        }\n        const nri = stats.rights.inheriting | fsRightsInheriting;\n        if (nri > stats.rights.inheriting) {\n          return WASI_EPERM;\n        }\n        stats.rights.base = nrb;\n        stats.rights.inheriting = nri;\n        return WASI_ESUCCESS;\n      }),\n      fd_filestat_get: wrap((fd, bufPtr) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_FILESTAT_GET);\n        const rstats = fs.fstatSync(stats.real);\n        this.refreshMemory();\n        this.view.setBigUint64(bufPtr, BigInt(rstats.dev), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, BigInt(rstats.ino), true);\n        bufPtr += 8;\n        this.view.setUint8(bufPtr, stats.filetype);\n        bufPtr += 4;\n        this.view.setUint32(bufPtr, Number(rstats.nlink), true);\n        bufPtr += 4;\n        this.view.setBigUint64(bufPtr, BigInt(rstats.size), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, msToNs(rstats.atimeMs), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, msToNs(rstats.mtimeMs), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, msToNs(rstats.ctimeMs), true);\n        bufPtr += 8;\n        return WASI_ESUCCESS;\n      }),\n      fd_filestat_set_size: wrap((fd, stSize) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_FILESTAT_SET_SIZE);\n        fs.ftruncate(stats.real, Number(stSize));\n        return WASI_ESUCCESS;\n      }),\n      fd_filestat_set_times: wrap((fd, stAtim, stMtim, fstflags) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_FILESTAT_SET_TIMES);\n        const n = now(WASI_CLOCK_REALTIME);\n        const atimNow = (fstflags & WASI_FILESTAT_SET_ATIM_NOW)\n          === WASI_FILESTAT_SET_ATIM_NOW;\n        const mtimNow = (fstflags & WASI_FILESTAT_SET_MTIM_NOW)\n          === WASI_FILESTAT_SET_MTIM_NOW;\n        fs.futimesSync(\n          stats.real,\n          atimNow ? n : stAtim,\n          mtimNow ? n : stMtim,\n        );\n        return WASI_ESUCCESS;\n      }),\n      fd_prestat_get: wrap((fd, bufPtr) => {\n        const stats = CHECK_FD(fd, 0);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        this.view.setUint8(bufPtr, WASI_PREOPENTYPE_DIR);\n        this.view.setUint32(\n          bufPtr + 4, Buffer.byteLength(stats.fakePath), true,\n        );\n        return WASI_ESUCCESS;\n      }),\n      fd_prestat_dir_name: wrap((fd, pathPtr, pathLen) => {\n        const stats = CHECK_FD(fd, 0);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        Buffer.from(this.memory.buffer)\n          .write(stats.fakePath, pathPtr, pathLen, 'utf8');\n        return WASI_ESUCCESS;\n      }),\n      fd_pwrite: wrap((fd, iovs, iovsLen, offset, nwritten) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_WRITE | WASI_RIGHT_FD_SEEK);\n        let written = 0;\n        getiovs(iovs, iovsLen)\n          .forEach((iov) => {\n            let w = 0;\n            while (w < iov.byteLength) {\n              w += fs.writeSync(\n                stats.real, iov, w, iov.byteLength - w, offset + written + w,\n              );\n            }\n            written += w;\n          });\n        this.view.setUint32(nwritten, written, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_write: wrap((fd, iovs, iovsLen, nwritten) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_WRITE);\n        let written = 0;\n        getiovs(iovs, iovsLen)\n          .forEach((iov) => {\n            let w = 0;\n            while (w < iov.byteLength) {\n              w += fs.writeSync(stats.real, iov, w, iov.byteLength - w);\n            }\n            written += w;\n          });\n        this.view.setUint32(nwritten, written, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_pread: wrap((fd, iovs, iovsLen, offset, nread) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_READ | WASI_RIGHT_FD_SEEK);\n        let read = 0;\n        getiovs(iovs, iovsLen)\n          .forEach((iov) => {\n            let r = 0;\n            while (r < iov.byteLength) {\n              r += fs.readSync(\n                stats.real, iov, r, iov.byteLength - r, offset + read + r,\n              );\n            }\n            read += r;\n          });\n        this.view.setUint32(nread, read, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_read: wrap((fd, iovs, iovsLen, nread) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_READ);\n        let read = 0;\n        outer: // eslint-disable-line no-labels\n        for (const iov of getiovs(iovs, iovsLen)) {\n          let r = 0;\n          while (r < iov.byteLength) {\n            const rr = fs.readSync(stats.real, iov, r, iov.byteLength - r);\n            r += rr;\n            read += rr;\n            if (rr === 0) {\n              break outer; // eslint-disable-line no-labels\n            }\n          }\n        }\n        this.view.setUint32(nread, read, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_readdir: wrap((fd, bufPtr, bufLen, cookie, bufusedPtr) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_READDIR);\n        this.refreshMemory();\n        const entries = fs.readdirSync(stats.path, { withFileTypes: true });\n        const startPtr = bufPtr;\n        const cache = Buffer.from(this.memory.buffer);\n        for (let i = Number(cookie); i < entries.length; i += 1) {\n          const entry = entries[i];\n          this.view.setBigUint64(bufPtr, BigInt(i + 1), true);\n          bufPtr += 8;\n          const rstats = fs.statSync(path.resolve(stats.path, entry.name));\n          this.view.setBigUint64(bufPtr, BigInt(rstats.ino), true);\n          bufPtr += 8;\n          this.view.setUint32(bufPtr, Buffer.byteLength(entry.name), true);\n          bufPtr += 4;\n          let filetype;\n          switch (true) {\n            case rstats.isBlockDevice():\n              filetype = WASI_FILETYPE_BLOCK_DEVICE;\n              break;\n            case rstats.isCharacterDevice():\n              filetype = WASI_FILETYPE_CHARACTER_DEVICE;\n              break;\n            case rstats.isDirectory():\n              filetype = WASI_FILETYPE_DIRECTORY;\n              break;\n            case rstats.isFIFO():\n              filetype = WASI_FILETYPE_SOCKET_STREAM;\n              break;\n            case rstats.isFile():\n              filetype = WASI_FILETYPE_REGULAR_FILE;\n              break;\n            case rstats.isSocket():\n              filetype = WASI_FILETYPE_SOCKET_STREAM;\n              break;\n            case rstats.isSymbolicLink():\n              filetype = WASI_FILETYPE_SYMBOLIC_LINK;\n              break;\n            default:\n              filetype = WASI_FILETYPE_UNKNOWN;\n              break;\n          }\n          this.view.setUint8(bufPtr, filetype);\n          bufPtr += 1;\n          bufPtr += 3; // padding\n          bufPtr += cache.write(entry.name, bufPtr, bufLen - bufPtr);\n          bufPtr += (8 % bufPtr); // padding\n        }\n        const bufused = bufPtr - startPtr;\n        this.view.setUint32(bufusedPtr, bufused, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_renumber: wrap((from, to) => {\n        CHECK_FD(from, 0);\n        CHECK_FD(to, 0);\n        fs.closeSync(this.FD_MAP.get(to).real);\n        this.FD_MAP.set(to, this.FD_MAP.get(from));\n        this.FD_MAP.delete(from);\n        return WASI_ESUCCESS;\n      }),\n      fd_seek: wrap((fd, offset, whence, newOffsetPtr) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_SEEK);\n        const newOffset = binding.seek(stats.real, offset, {\n          [WASI_WHENCE_CUR]: binding.SEEK_CUR,\n          [WASI_WHENCE_END]: binding.SEEK_END,\n          [WASI_WHENCE_SET]: binding.SEEK_SET,\n        }[whence]);\n        if (typeof newOffset === 'number') { // errno\n          throw newOffset;\n        }\n        this.refreshMemory();\n        this.view.setBigUint64(newOffsetPtr, newOffset, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_tell: wrap((fd, offsetPtr) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_TELL);\n        const currentOffset = binding.seek(stats.real, 0n, binding.SEEK_CUR);\n        if (typeof currentOffset === 'number') { // errno\n          throw currentOffset;\n        }\n        this.refreshMemory();\n        this.view.setBigUint64(offsetPtr, currentOffset, true);\n        return WASI_ESUCCESS;\n      }),\n      fd_sync: wrap((fd) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_FD_SYNC);\n        fs.fsyncSync(stats.real);\n        return WASI_ESUCCESS;\n      }),\n      path_create_directory: wrap((fd, pathPtr, pathLen) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_PATH_CREATE_DIRECTORY);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString();\n        fs.mkdirSync(path.resolve(stats.path, p));\n        return WASI_ESUCCESS;\n      }),\n      path_filestat_get: wrap((fd, flags, pathPtr, pathLen, bufPtr) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_PATH_FILESTAT_GET);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString();\n        const rstats = fs.statSync(path.resolve(stats.path, p));\n        this.view.setBigUint64(bufPtr, BigInt(rstats.dev), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, BigInt(rstats.ino), true);\n        bufPtr += 8;\n        this.view.setUint8(bufPtr,\n                           translateFileAttributes(undefined, rstats).filetype);\n        bufPtr += 4;\n        this.view.setUint32(bufPtr, Number(rstats.nlink), true);\n        bufPtr += 4;\n        this.view.setBigUint64(bufPtr, BigInt(rstats.size), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, msToNs(rstats.atimeMs), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, msToNs(rstats.mtimeMs), true);\n        bufPtr += 8;\n        this.view.setBigUint64(bufPtr, msToNs(rstats.ctimeMs), true);\n        bufPtr += 8;\n        return WASI_ESUCCESS;\n      }),\n      path_filestat_set_times:\n        wrap((fd, fstflags, pathPtr, pathLen, stAtim, stMtim) => {\n          const stats = CHECK_FD(fd, WASI_RIGHT_PATH_FILESTAT_SET_TIMES);\n          if (!stats.path) {\n            return WASI_EINVAL;\n          }\n          this.refreshMemory();\n          const n = now(WASI_CLOCK_REALTIME);\n          const atimNow = (fstflags & WASI_FILESTAT_SET_ATIM_NOW)\n            === WASI_FILESTAT_SET_ATIM_NOW;\n          const mtimNow = (fstflags & WASI_FILESTAT_SET_MTIM_NOW)\n            === WASI_FILESTAT_SET_MTIM_NOW;\n          const p = Buffer.from(this.memory.buffer, pathPtr, pathLen)\n            .toString();\n          fs.utimesSync(\n            path.resolve(stats.path, p),\n            atimNow ? n : stAtim,\n            mtimNow ? n : stMtim,\n          );\n          return WASI_ESUCCESS;\n        }),\n      path_link: wrap(\n        (oldFd, oldFlags, oldPath, oldPathLen, newFd, newPath, newPathLen) => {\n          const ostats = CHECK_FD(oldFd, WASI_RIGHT_PATH_LINK_SOURCE);\n          const nstats = CHECK_FD(newFd, WASI_RIGHT_PATH_LINK_TARGET);\n          if (!ostats.path || !nstats.path) {\n            return WASI_EINVAL;\n          }\n          this.refreshMemory();\n          const op = Buffer.from(\n            this.memory.buffer, oldPath, oldPathLen,\n          ).toString();\n          const np = Buffer.from(\n            this.memory.buffer, newPath, newPathLen,\n          ).toString();\n          fs.linkSync(\n            path.resolve(ostats.path, op), path.resolve(nstats.path, np),\n          );\n          return WASI_ESUCCESS;\n        },\n      ),\n      path_open: wrap((dirfd, dirflags, pathPtr, pathLen, oflags,\n                       fsRightsBase, fsRightsInheriting, fsFlags, fd) => {\n        const stats = CHECK_FD(dirfd, WASI_RIGHT_PATH_OPEN);\n\n        const read = (fsRightsBase\n            & (WASI_RIGHT_FD_READ | WASI_RIGHT_FD_READDIR)) !== 0n;\n        const write = (fsRightsBase\n          & (WASI_RIGHT_FD_DATASYNC\n            | WASI_RIGHT_FD_WRITE\n            | WASI_RIGHT_FD_ALLOCATE\n            | WASI_RIGHT_FD_FILESTAT_SET_SIZE)) !== 0n;\n\n        let noflags;\n        if (write && read) {\n          noflags = fs.constants.O_RDWR;\n        } else if (read) {\n          noflags = fs.constants.O_RDONLY;\n        } else if (write) {\n          noflags = fs.constants.O_WRONLY;\n        }\n\n        let neededBase = WASI_RIGHT_PATH_OPEN;\n        let neededInheriting = fsRightsBase | fsRightsInheriting;\n\n        if ((oflags & WASI_O_CREAT) !== 0) {\n          noflags |= fs.constants.O_CREAT;\n          neededBase |= WASI_RIGHT_PATH_CREATE_FILE;\n        }\n        if ((oflags & WASI_O_DIRECTORY) !== 0) {\n          noflags |= fs.constants.O_DIRECTORY;\n        }\n        if ((oflags & WASI_O_EXCL) !== 0) {\n          noflags |= fs.constants.O_EXCL;\n        }\n        if ((oflags & WASI_O_TRUNC) !== 0) {\n          noflags |= fs.constants.O_TRUNC;\n          neededBase |= WASI_RIGHT_PATH_FILESTAT_SET_SIZE;\n        }\n\n        // Convert file descriptor flags.\n        if ((fsFlags & WASI_FDFLAG_APPEND) !== 0) {\n          noflags |= fs.constants.O_APPEND;\n        }\n        if ((fsFlags & WASI_FDFLAG_DSYNC) !== 0) {\n          if (fs.constants.O_DSYNC) {\n            noflags |= fs.constants.O_DSYNC;\n          } else {\n            noflags |= fs.constants.O_SYNC;\n          }\n          neededInheriting |= WASI_RIGHT_FD_DATASYNC;\n        }\n        if ((fsFlags & WASI_FDFLAG_NONBLOCK) !== 0) {\n          noflags |= fs.constants.O_NONBLOCK;\n        }\n        if ((fsFlags & WASI_FDFLAG_RSYNC) !== 0) {\n          if (fs.constants.O_RSYNC) {\n            noflags |= fs.constants.O_RSYNC;\n          } else {\n            noflags |= fs.constants.O_SYNC;\n          }\n          neededInheriting |= WASI_RIGHT_FD_SYNC;\n        }\n        if ((fsFlags & WASI_FDFLAG_SYNC) !== 0) {\n          noflags |= fs.constants.O_SYNC;\n          neededInheriting |= WASI_RIGHT_FD_SYNC;\n        }\n        if (write && (noflags\n            & (fs.constants.O_APPEND | fs.constants.O_TRUNC)) === 0) {\n          neededInheriting |= WASI_RIGHT_FD_SEEK;\n        }\n\n        this.refreshMemory();\n        const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString();\n        const fullUnresolved = path.resolve(stats.path, p);\n        if (path.relative(stats.path, fullUnresolved).startsWith('..')) {\n          return WASI_ENOTCAPABLE;\n        }\n        let full;\n        try {\n          full = fs.realpathSync(fullUnresolved);\n          if (path.relative(stats.path, full).startsWith('..')) {\n            return WASI_ENOTCAPABLE;\n          }\n        } catch (e) {\n          if (e.code === 'ENOENT') {\n            full = fullUnresolved;\n          } else {\n            throw e;\n          }\n        }\n        const realfd = fs.openSync(full, noflags);\n\n        const newfd = [...this.FD_MAP.keys()].reverse()[0] + 1;\n        this.FD_MAP.set(newfd, {\n          real: realfd,\n          filetype: undefined,\n          rights: {\n            base: neededBase,\n            inheriting: neededInheriting,\n          },\n          path: full,\n        });\n        stat(this, newfd);\n        this.view.setUint32(fd, newfd, true);\n\n        return WASI_ESUCCESS;\n      }),\n      path_readlink: wrap((fd, pathPtr, pathLen, buf, bufLen, bufused) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_PATH_READLINK);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString();\n        const full = path.resolve(stats.path, p);\n        const r = fs.readlinkSync(full);\n        const used = Buffer.from(this.memory.buffer).write(r, buf, bufLen);\n        this.view.setUint32(bufused, used, true);\n        return WASI_ESUCCESS;\n      }),\n      path_remove_directory: wrap((fd, pathPtr, pathLen) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_PATH_REMOVE_DIRECTORY);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString();\n        fs.rmdirSync(path.resolve(stats.path, p));\n        return WASI_ESUCCESS;\n      }),\n      path_rename: wrap(\n        (oldFd, oldPath, oldPathLen, newFd, newPath, newPathLen) => {\n          const ostats = CHECK_FD(oldFd, WASI_RIGHT_PATH_RENAME_SOURCE);\n          const nstats = CHECK_FD(newFd, WASI_RIGHT_PATH_RENAME_TARGET);\n          if (!ostats.path || !nstats.path) {\n            return WASI_EINVAL;\n          }\n          this.refreshMemory();\n          const op = Buffer.from(\n            this.memory.buffer, oldPath, oldPathLen,\n          ).toString();\n          const np = Buffer.from(\n            this.memory.buffer, newPath, newPathLen,\n          ).toString();\n          fs.renameSync(\n            path.resolve(ostats.path, op), path.resolve(nstats.path, np),\n          );\n          return WASI_ESUCCESS;\n        },\n      ),\n      path_symlink: wrap((oldPath, oldPathLen, fd, newPath, newPathLen) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_PATH_SYMLINK);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        const op = Buffer.from(\n          this.memory.buffer, oldPath, oldPathLen,\n        ).toString();\n        const np = Buffer.from(\n          this.memory.buffer, newPath, newPathLen,\n        ).toString();\n        fs.symlinkSync(op, path.resolve(stats.path, np));\n        return WASI_ESUCCESS;\n      }),\n      path_unlink_file: wrap((fd, pathPtr, pathLen) => {\n        const stats = CHECK_FD(fd, WASI_RIGHT_PATH_UNLINK_FILE);\n        if (!stats.path) {\n          return WASI_EINVAL;\n        }\n        this.refreshMemory();\n        const p = Buffer.from(this.memory.buffer, pathPtr, pathLen).toString();\n        fs.unlinkSync(path.resolve(stats.path, p));\n        return WASI_ESUCCESS;\n      }),\n      poll_oneoff: (sin, sout, nsubscriptions, nevents) => {\n        let eventc = 0;\n        let waitEnd = 0;\n        this.refreshMemory();\n        for (let i = 0; i < nsubscriptions; i += 1) {\n          const userdata = this.view.getBigUint64(sin, true);\n          sin += 8;\n          const type = this.view.getUint8(sin);\n          sin += 1;\n          switch (type) {\n            case WASI_EVENTTYPE_CLOCK: {\n              sin += 7; // padding\n              const identifier = this.view.getBigUint64(sin, true);\n              sin += 8;\n              const clockid = this.view.getUint32(sin, true);\n              sin += 4;\n              sin += 4; // padding\n              const timestamp = this.view.getBigUint64(sin, true);\n              sin += 8;\n              const precision = this.view.getBigUint64(sin, true);\n              sin += 8;\n              const subclockflags = this.view.getUint16(sin, true);\n              sin += 2;\n              sin += 6; // padding\n\n              const absolute = subclockflags === 1;\n\n              let e = WASI_ESUCCESS;\n              const n = now(clockid);\n              if (n === null) {\n                e = WASI_EINVAL;\n              } else {\n                const end = absolute ? timestamp : n + timestamp;\n                waitEnd = end > waitEnd ? end : waitEnd;\n              }\n\n              this.view.setBigUint64(sout, userdata, true);\n              sout += 8;\n              this.view.setUint16(sout, e, true); // error\n              sout += 2; // pad offset 2\n              this.view.setUint8(sout, WASI_EVENTTYPE_CLOCK);\n              sout += 1; // pad offset 3\n              sout += 5; // padding to 8\n\n              eventc += 1;\n\n              break;\n            }\n            case WASI_EVENTTYPE_FD_READ:\n            case WASI_EVENTTYPE_FD_WRITE: {\n              sin += 3; // padding\n              const fd = this.view.getUint32(sin, true);\n              sin += 4;\n\n              this.view.setBigUint64(sout, userdata, true);\n              sout += 8;\n              this.view.setUint16(sout, WASI_ENOSYS, true); // error\n              sout += 2; // pad offset 2\n              this.view.setUint8(sout, type);\n              sout += 1; // pad offset 3\n              sout += 5; // padding to 8\n\n              eventc += 1;\n\n              break;\n            }\n            default:\n              return WASI_EINVAL;\n          }\n        }\n\n        this.view.setUint32(nevents, eventc, true);\n\n        while (process.hrtime.bigint() < waitEnd) {\n          // nothing\n        }\n\n        return WASI_ESUCCESS;\n      },\n      proc_exit: (rval) => {\n        process.exit(rval);\n        return WASI_ESUCCESS;\n      },\n      proc_raise: (sig) => {\n        if (!(sig in SIGNAL_MAP)) {\n          return WASI_EINVAL;\n        }\n        process.kill(process.pid, SIGNAL_MAP[sig]);\n        return WASI_ESUCCESS;\n      },\n      random_get: (bufPtr, bufLen) => {\n        this.refreshMemory();\n        crypto.randomFillSync(\n          new Uint8Array(this.memory.buffer), bufPtr, bufLen,\n        );\n        return WASI_ESUCCESS;\n      },\n      sched_yield() {\n        binding.schedYield();\n        return WASI_ESUCCESS;\n      },\n      sock_recv() {\n        return WASI_ENOSYS;\n      },\n      sock_send() {\n        return WASI_ENOSYS;\n      },\n      sock_shutdown() {\n        return WASI_ENOSYS;\n      },\n    };\n  }\n\n  refreshMemory() {\n    if (this.view === undefined || this.view.byteLength === 0) {\n      this.view = new DataView(this.memory.buffer);\n    }\n  }\n\n  setMemory(m) {\n    this.memory = m;\n  }\n}\n\nmodule.exports = WASI;\n"]}