@php-wasm/node 0.6.2 → 0.6.4

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/php_7_2.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const dependencyFilename = __dirname + '/7_2_34/php_7_2.wasm';
2
2
  export { dependencyFilename };
3
- export const dependenciesTotalSize = 11976463;
3
+ export const dependenciesTotalSize = 11975817;
4
4
  export function init(RuntimeName, PHPLoader) {
5
5
  /**
6
6
  * Overrides Emscripten's default ExitStatus object which gets
@@ -1475,6 +1475,216 @@ var NODEFS = {
1475
1475
  }
1476
1476
  };
1477
1477
 
1478
+ var PROXYFS = {
1479
+ mount(mount) {
1480
+ return PROXYFS.createNode(null, "/", mount.opts.fs.lstat(mount.opts.root).mode, 0);
1481
+ },
1482
+ createNode(parent, name, mode, dev) {
1483
+ if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
1484
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
1485
+ }
1486
+ var node = FS.createNode(parent, name, mode);
1487
+ node.node_ops = PROXYFS.node_ops;
1488
+ node.stream_ops = PROXYFS.stream_ops;
1489
+ return node;
1490
+ },
1491
+ realPath(node) {
1492
+ var parts = [];
1493
+ while (node.parent !== node) {
1494
+ parts.push(node.name);
1495
+ node = node.parent;
1496
+ }
1497
+ parts.push(node.mount.opts.root);
1498
+ parts.reverse();
1499
+ return PATH.join.apply(null, parts);
1500
+ },
1501
+ node_ops: {
1502
+ getattr(node) {
1503
+ var path = PROXYFS.realPath(node);
1504
+ var stat;
1505
+ try {
1506
+ stat = node.mount.opts.fs.lstat(path);
1507
+ } catch (e) {
1508
+ if (!e.code) throw e;
1509
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1510
+ }
1511
+ return {
1512
+ dev: stat.dev,
1513
+ ino: stat.ino,
1514
+ mode: stat.mode,
1515
+ nlink: stat.nlink,
1516
+ uid: stat.uid,
1517
+ gid: stat.gid,
1518
+ rdev: stat.rdev,
1519
+ size: stat.size,
1520
+ atime: stat.atime,
1521
+ mtime: stat.mtime,
1522
+ ctime: stat.ctime,
1523
+ blksize: stat.blksize,
1524
+ blocks: stat.blocks
1525
+ };
1526
+ },
1527
+ setattr(node, attr) {
1528
+ var path = PROXYFS.realPath(node);
1529
+ try {
1530
+ if (attr.mode !== undefined) {
1531
+ node.mount.opts.fs.chmod(path, attr.mode);
1532
+ node.mode = attr.mode;
1533
+ }
1534
+ if (attr.timestamp !== undefined) {
1535
+ var date = new Date(attr.timestamp);
1536
+ node.mount.opts.fs.utime(path, date, date);
1537
+ }
1538
+ if (attr.size !== undefined) {
1539
+ node.mount.opts.fs.truncate(path, attr.size);
1540
+ }
1541
+ } catch (e) {
1542
+ if (!e.code) throw e;
1543
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1544
+ }
1545
+ },
1546
+ lookup(parent, name) {
1547
+ try {
1548
+ var path = PATH.join2(PROXYFS.realPath(parent), name);
1549
+ var mode = parent.mount.opts.fs.lstat(path).mode;
1550
+ var node = PROXYFS.createNode(parent, name, mode);
1551
+ return node;
1552
+ } catch (e) {
1553
+ if (!e.code) throw e;
1554
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1555
+ }
1556
+ },
1557
+ mknod(parent, name, mode, dev) {
1558
+ var node = PROXYFS.createNode(parent, name, mode, dev);
1559
+ var path = PROXYFS.realPath(node);
1560
+ try {
1561
+ if (FS.isDir(node.mode)) {
1562
+ node.mount.opts.fs.mkdir(path, node.mode);
1563
+ } else {
1564
+ node.mount.opts.fs.writeFile(path, "", {
1565
+ mode: node.mode
1566
+ });
1567
+ }
1568
+ } catch (e) {
1569
+ if (!e.code) throw e;
1570
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1571
+ }
1572
+ return node;
1573
+ },
1574
+ rename(oldNode, newDir, newName) {
1575
+ var oldPath = PROXYFS.realPath(oldNode);
1576
+ var newPath = PATH.join2(PROXYFS.realPath(newDir), newName);
1577
+ try {
1578
+ oldNode.mount.opts.fs.rename(oldPath, newPath);
1579
+ oldNode.name = newName;
1580
+ oldNode.parent = newDir;
1581
+ } catch (e) {
1582
+ if (!e.code) throw e;
1583
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1584
+ }
1585
+ },
1586
+ unlink(parent, name) {
1587
+ var path = PATH.join2(PROXYFS.realPath(parent), name);
1588
+ try {
1589
+ parent.mount.opts.fs.unlink(path);
1590
+ } catch (e) {
1591
+ if (!e.code) throw e;
1592
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1593
+ }
1594
+ },
1595
+ rmdir(parent, name) {
1596
+ var path = PATH.join2(PROXYFS.realPath(parent), name);
1597
+ try {
1598
+ parent.mount.opts.fs.rmdir(path);
1599
+ } catch (e) {
1600
+ if (!e.code) throw e;
1601
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1602
+ }
1603
+ },
1604
+ readdir(node) {
1605
+ var path = PROXYFS.realPath(node);
1606
+ try {
1607
+ return node.mount.opts.fs.readdir(path);
1608
+ } catch (e) {
1609
+ if (!e.code) throw e;
1610
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1611
+ }
1612
+ },
1613
+ symlink(parent, newName, oldPath) {
1614
+ var newPath = PATH.join2(PROXYFS.realPath(parent), newName);
1615
+ try {
1616
+ parent.mount.opts.fs.symlink(oldPath, newPath);
1617
+ } catch (e) {
1618
+ if (!e.code) throw e;
1619
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1620
+ }
1621
+ },
1622
+ readlink(node) {
1623
+ var path = PROXYFS.realPath(node);
1624
+ try {
1625
+ return node.mount.opts.fs.readlink(path);
1626
+ } catch (e) {
1627
+ if (!e.code) throw e;
1628
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1629
+ }
1630
+ }
1631
+ },
1632
+ stream_ops: {
1633
+ open(stream) {
1634
+ var path = PROXYFS.realPath(stream.node);
1635
+ try {
1636
+ stream.nfd = stream.node.mount.opts.fs.open(path, stream.flags);
1637
+ } catch (e) {
1638
+ if (!e.code) throw e;
1639
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1640
+ }
1641
+ },
1642
+ close(stream) {
1643
+ try {
1644
+ stream.node.mount.opts.fs.close(stream.nfd);
1645
+ } catch (e) {
1646
+ if (!e.code) throw e;
1647
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1648
+ }
1649
+ },
1650
+ read(stream, buffer, offset, length, position) {
1651
+ try {
1652
+ return stream.node.mount.opts.fs.read(stream.nfd, buffer, offset, length, position);
1653
+ } catch (e) {
1654
+ if (!e.code) throw e;
1655
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1656
+ }
1657
+ },
1658
+ write(stream, buffer, offset, length, position) {
1659
+ try {
1660
+ return stream.node.mount.opts.fs.write(stream.nfd, buffer, offset, length, position);
1661
+ } catch (e) {
1662
+ if (!e.code) throw e;
1663
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1664
+ }
1665
+ },
1666
+ llseek(stream, offset, whence) {
1667
+ var position = offset;
1668
+ if (whence === 1) {
1669
+ position += stream.position;
1670
+ } else if (whence === 2) {
1671
+ if (FS.isFile(stream.node.mode)) {
1672
+ try {
1673
+ var stat = stream.node.node_ops.getattr(stream.node);
1674
+ position += stat.size;
1675
+ } catch (e) {
1676
+ throw new FS.ErrnoError(ERRNO_CODES[e.code]);
1677
+ }
1678
+ }
1679
+ }
1680
+ if (position < 0) {
1681
+ throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
1682
+ }
1683
+ return position;
1684
+ }
1685
+ }
1686
+ };
1687
+
1478
1688
  var FS = {
1479
1689
  root: null,
1480
1690
  mounts: [],
@@ -2550,7 +2760,8 @@ var FS = {
2550
2760
  FS.createSpecialDirectories();
2551
2761
  FS.filesystems = {
2552
2762
  "MEMFS": MEMFS,
2553
- "NODEFS": NODEFS
2763
+ "NODEFS": NODEFS,
2764
+ "PROXYFS": PROXYFS
2554
2765
  };
2555
2766
  },
2556
2767
  init: (input, output, error) => {
@@ -5280,6 +5491,7 @@ var allocateUTF8OnStack = stringToUTF8OnStack;
5280
5491
 
5281
5492
  var PHPWASM = {
5282
5493
  init: function() {
5494
+ FS.mkdir("/internal");
5283
5495
  PHPWASM.EventEmitter = ENVIRONMENT_IS_NODE ? require("events").EventEmitter : class EventEmitter {
5284
5496
  constructor() {
5285
5497
  this.listeners = {};
@@ -5384,9 +5596,9 @@ var PHPWASM = {
5384
5596
  return [ promise, cancel ];
5385
5597
  },
5386
5598
  noop: function() {},
5387
- spawnProcess: function(command, args) {
5599
+ spawnProcess: function(command, args, options) {
5388
5600
  if (Module["spawnProcess"]) {
5389
- const spawnedPromise = Module["spawnProcess"](command, args);
5601
+ const spawnedPromise = Module["spawnProcess"](command, args, options);
5390
5602
  return Promise.resolve(spawnedPromise).then((function(spawned) {
5391
5603
  if (!spawned || !spawned.on) {
5392
5604
  throw new Error("spawnProcess() must return an EventEmitter but returned a different type.");
@@ -5395,7 +5607,8 @@ var PHPWASM = {
5395
5607
  }));
5396
5608
  }
5397
5609
  if (ENVIRONMENT_IS_NODE) {
5398
- return require("child_process").spawn(command, [], {
5610
+ return require("child_process").spawn(command, args, {
5611
+ ...options,
5399
5612
  shell: true,
5400
5613
  stdio: [ "pipe", "pipe", "pipe" ],
5401
5614
  timeout: 100
@@ -5453,48 +5666,59 @@ function _js_create_input_device(deviceId) {
5453
5666
  }
5454
5667
 
5455
5668
  function _js_fd_read(fd, iov, iovcnt, pnum) {
5456
- var returnCode;
5457
- var stream;
5458
- try {
5459
- stream = SYSCALLS.getStreamFromFD(fd);
5460
- var num = doReadv(stream, iov, iovcnt);
5461
- HEAPU32[pnum >> 2] = num;
5462
- returnCode = 0;
5463
- } catch (e) {
5464
- if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
5465
- returnCode = e.errno;
5669
+ if (Asyncify.state === Asyncify.State.Normal) {
5670
+ var returnCode;
5671
+ var stream;
5672
+ let num = 0;
5673
+ try {
5674
+ stream = SYSCALLS.getStreamFromFD(fd);
5675
+ const num = doReadv(stream, iov, iovcnt);
5676
+ HEAPU32[pnum >> 2] = num;
5677
+ return 0;
5678
+ } catch (e) {
5679
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) {
5680
+ throw e;
5681
+ }
5682
+ if (e.errno !== 6 || !(stream?.fd in PHPWASM.child_proc_by_fd)) {
5683
+ HEAPU32[pnum >> 2] = 0;
5684
+ return returnCode;
5685
+ }
5686
+ }
5466
5687
  }
5467
- if (returnCode === 6 && stream?.fd in PHPWASM.child_proc_by_fd) {
5468
- return Asyncify.handleSleep((function(wakeUp) {
5469
- var retries = 0;
5470
- var interval = 50;
5471
- var timeout = 5e3;
5472
- var maxRetries = timeout / interval;
5473
- function poll() {
5474
- var returnCode;
5475
- var stream;
5476
- try {
5477
- stream = SYSCALLS.getStreamFromFD(fd);
5478
- var num = doReadv(stream, iov, iovcnt);
5479
- HEAPU32[pnum >> 2] = num;
5480
- returnCode = 0;
5481
- } catch (e) {
5482
- if (typeof FS == "undefined" || !(e.name === "ErrnoError")) {
5483
- console.error(e);
5484
- throw e;
5485
- }
5486
- returnCode = e.errno;
5487
- }
5488
- if (returnCode !== 6 || ++retries > maxRetries || !(fd in PHPWASM.child_proc_by_fd) || PHPWASM.child_proc_by_fd[fd]?.exited || FS.isClosed(stream)) {
5489
- wakeUp(returnCode);
5490
- } else {
5491
- setTimeout(poll, interval);
5688
+ return Asyncify.handleSleep((function(wakeUp) {
5689
+ var retries = 0;
5690
+ var interval = 50;
5691
+ var timeout = 5e3;
5692
+ var maxRetries = timeout / interval;
5693
+ function poll() {
5694
+ var returnCode;
5695
+ var stream;
5696
+ let num;
5697
+ try {
5698
+ stream = SYSCALLS.getStreamFromFD(fd);
5699
+ num = doReadv(stream, iov, iovcnt);
5700
+ returnCode = 0;
5701
+ } catch (e) {
5702
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) {
5703
+ console.error(e);
5704
+ throw e;
5492
5705
  }
5706
+ returnCode = e.errno;
5493
5707
  }
5494
- poll();
5495
- }));
5496
- }
5497
- return returnCode;
5708
+ const success = returnCode === 0;
5709
+ const failure = ++retries > maxRetries || !(fd in PHPWASM.child_proc_by_fd) || PHPWASM.child_proc_by_fd[fd]?.exited || FS.isClosed(stream);
5710
+ if (success) {
5711
+ HEAPU32[pnum >> 2] = num;
5712
+ wakeUp(0);
5713
+ } else if (failure) {
5714
+ HEAPU32[pnum >> 2] = 0;
5715
+ wakeUp(returnCode === 6 ? 0 : returnCode);
5716
+ } else {
5717
+ setTimeout(poll, interval);
5718
+ }
5719
+ }
5720
+ poll();
5721
+ }));
5498
5722
  }
5499
5723
 
5500
5724
  function _js_module_onMessage(data, bufPtr) {
@@ -5523,7 +5747,7 @@ function _js_module_onMessage(data, bufPtr) {
5523
5747
  }
5524
5748
  }
5525
5749
 
5526
- function _js_open_process(command, argsPtr, argsLength, descriptorsPtr, descriptorsLength) {
5750
+ function _js_open_process(command, argsPtr, argsLength, descriptorsPtr, descriptorsLength, cwdPtr, cwdLength, envPtr, envLength) {
5527
5751
  if (!command) {
5528
5752
  return 1;
5529
5753
  }
@@ -5538,6 +5762,22 @@ function _js_open_process(command, argsPtr, argsLength, descriptorsPtr, descript
5538
5762
  argsArray.push(UTF8ToString(HEAPU32[charPointer >> 2]));
5539
5763
  }
5540
5764
  }
5765
+ const cwdstr = cwdPtr ? UTF8ToString(cwdPtr) : null;
5766
+ let envObject = null;
5767
+ if (envLength) {
5768
+ envObject = {};
5769
+ for (var i = 0; i < envLength; i++) {
5770
+ const envPointer = envPtr + i * 4;
5771
+ const envEntry = UTF8ToString(HEAPU32[envPointer >> 2]);
5772
+ const splitAt = envEntry.indexOf("=");
5773
+ if (splitAt === -1) {
5774
+ continue;
5775
+ }
5776
+ const key = envEntry.substring(0, splitAt);
5777
+ const value = envEntry.substring(splitAt + 1);
5778
+ envObject[key] = value;
5779
+ }
5780
+ }
5541
5781
  var std = {};
5542
5782
  for (var i = 0; i < descriptorsLength; i++) {
5543
5783
  const descriptorPtr = HEAPU32[descriptorsPtr + i * 4 >> 2];
@@ -5549,7 +5789,17 @@ function _js_open_process(command, argsPtr, argsLength, descriptorsPtr, descript
5549
5789
  return Asyncify.handleSleep((async wakeUp => {
5550
5790
  let cp;
5551
5791
  try {
5552
- cp = await PHPWASM.spawnProcess(cmdstr, argsArray);
5792
+ const options = {};
5793
+ if (cwdstr !== null) {
5794
+ options.cwd = cwdstr;
5795
+ }
5796
+ if (envObject !== null) {
5797
+ options.env = envObject;
5798
+ }
5799
+ cp = PHPWASM.spawnProcess(cmdstr, argsArray, options);
5800
+ if (cp instanceof Promise) {
5801
+ cp = await cp;
5802
+ }
5553
5803
  } catch (e) {
5554
5804
  if (e.code === "SPAWN_UNSUPPORTED") {
5555
5805
  wakeUp(1);
@@ -5661,7 +5911,10 @@ function _js_popen_to_file(command, mode, exitCodePtr) {
5661
5911
  return Asyncify.handleSleep((async wakeUp => {
5662
5912
  let cp;
5663
5913
  try {
5664
- cp = await PHPWASM.spawnProcess(cmdstr, []);
5914
+ cp = PHPWASM.spawnProcess(cmdstr, []);
5915
+ if (cp instanceof Promise) {
5916
+ cp = await cp;
5917
+ }
5665
5918
  } catch (e) {
5666
5919
  console.error(e);
5667
5920
  if (e.code === "SPAWN_UNSUPPORTED") {
@@ -5688,11 +5941,12 @@ function _js_popen_to_file(command, mode, exitCodePtr) {
5688
5941
  }));
5689
5942
  }
5690
5943
 
5691
- function _js_process_status(pid) {
5944
+ function _js_process_status(pid, exitCodePtr) {
5692
5945
  if (!PHPWASM.child_proc_by_pid[pid]) {
5693
5946
  return -1;
5694
5947
  }
5695
5948
  if (PHPWASM.child_proc_by_pid[pid].exited) {
5949
+ HEAPU32[exitCodePtr >> 2] = PHPWASM.child_proc_by_pid[pid].exitCode;
5696
5950
  return 1;
5697
5951
  }
5698
5952
  return 0;
@@ -5705,8 +5959,8 @@ function _js_waitpid(pid, exitCodePtr) {
5705
5959
  return Asyncify.handleSleep((wakeUp => {
5706
5960
  const poll = function() {
5707
5961
  if (PHPWASM.child_proc_by_pid[pid]?.exited) {
5708
- HEAPU8[exitCodePtr] = PHPWASM.child_proc_by_pid[pid].exitCode;
5709
- wakeUp(0);
5962
+ HEAPU32[exitCodePtr >> 2] = PHPWASM.child_proc_by_pid[pid].exitCode;
5963
+ wakeUp(pid);
5710
5964
  } else {
5711
5965
  setTimeout(poll, 50);
5712
5966
  }
@@ -6889,8 +7143,8 @@ var _wasm_add_SERVER_entry = Module["_wasm_add_SERVER_entry"] = function() {
6889
7143
  return (_wasm_add_SERVER_entry = Module["_wasm_add_SERVER_entry"] = Module["asm"]["rb"]).apply(null, arguments);
6890
7144
  };
6891
7145
 
6892
- var _wasm_add_uploaded_file = Module["_wasm_add_uploaded_file"] = function() {
6893
- return (_wasm_add_uploaded_file = Module["_wasm_add_uploaded_file"] = Module["asm"]["sb"]).apply(null, arguments);
7146
+ var _wasm_add_ENV_entry = Module["_wasm_add_ENV_entry"] = function() {
7147
+ return (_wasm_add_ENV_entry = Module["_wasm_add_ENV_entry"] = Module["asm"]["sb"]).apply(null, arguments);
6894
7148
  };
6895
7149
 
6896
7150
  var _wasm_set_query_string = Module["_wasm_set_query_string"] = function() {
@@ -6941,40 +7195,28 @@ var _wasm_set_request_port = Module["_wasm_set_request_port"] = function() {
6941
7195
  return (_wasm_set_request_port = Module["_wasm_set_request_port"] = Module["asm"]["Eb"]).apply(null, arguments);
6942
7196
  };
6943
7197
 
6944
- var _phpwasm_init_uploaded_files_hash = Module["_phpwasm_init_uploaded_files_hash"] = function() {
6945
- return (_phpwasm_init_uploaded_files_hash = Module["_phpwasm_init_uploaded_files_hash"] = Module["asm"]["Fb"]).apply(null, arguments);
6946
- };
6947
-
6948
- var _phpwasm_register_uploaded_file = Module["_phpwasm_register_uploaded_file"] = function() {
6949
- return (_phpwasm_register_uploaded_file = Module["_phpwasm_register_uploaded_file"] = Module["asm"]["Gb"]).apply(null, arguments);
6950
- };
6951
-
6952
- var _phpwasm_destroy_uploaded_files_hash = Module["_phpwasm_destroy_uploaded_files_hash"] = function() {
6953
- return (_phpwasm_destroy_uploaded_files_hash = Module["_phpwasm_destroy_uploaded_files_hash"] = Module["asm"]["Hb"]).apply(null, arguments);
6954
- };
6955
-
6956
7198
  var _wasm_sapi_handle_request = Module["_wasm_sapi_handle_request"] = function() {
6957
- return (_wasm_sapi_handle_request = Module["_wasm_sapi_handle_request"] = Module["asm"]["Ib"]).apply(null, arguments);
7199
+ return (_wasm_sapi_handle_request = Module["_wasm_sapi_handle_request"] = Module["asm"]["Fb"]).apply(null, arguments);
6958
7200
  };
6959
7201
 
6960
7202
  var _php_wasm_init = Module["_php_wasm_init"] = function() {
6961
- return (_php_wasm_init = Module["_php_wasm_init"] = Module["asm"]["Jb"]).apply(null, arguments);
7203
+ return (_php_wasm_init = Module["_php_wasm_init"] = Module["asm"]["Gb"]).apply(null, arguments);
6962
7204
  };
6963
7205
 
6964
7206
  var ___funcs_on_exit = function() {
6965
- return (___funcs_on_exit = Module["asm"]["Kb"]).apply(null, arguments);
7207
+ return (___funcs_on_exit = Module["asm"]["Hb"]).apply(null, arguments);
6966
7208
  };
6967
7209
 
6968
7210
  var _emscripten_builtin_memalign = function() {
6969
- return (_emscripten_builtin_memalign = Module["asm"]["Lb"]).apply(null, arguments);
7211
+ return (_emscripten_builtin_memalign = Module["asm"]["Ib"]).apply(null, arguments);
6970
7212
  };
6971
7213
 
6972
7214
  var __emscripten_timeout = function() {
6973
- return (__emscripten_timeout = Module["asm"]["Mb"]).apply(null, arguments);
7215
+ return (__emscripten_timeout = Module["asm"]["Jb"]).apply(null, arguments);
6974
7216
  };
6975
7217
 
6976
7218
  var _setThrew = function() {
6977
- return (_setThrew = Module["asm"]["Nb"]).apply(null, arguments);
7219
+ return (_setThrew = Module["asm"]["Kb"]).apply(null, arguments);
6978
7220
  };
6979
7221
 
6980
7222
  var _emscripten_stack_set_limits = function() {
@@ -6990,103 +7232,103 @@ var _emscripten_stack_get_end = function() {
6990
7232
  };
6991
7233
 
6992
7234
  var stackSave = function() {
6993
- return (stackSave = Module["asm"]["Ob"]).apply(null, arguments);
7235
+ return (stackSave = Module["asm"]["Lb"]).apply(null, arguments);
6994
7236
  };
6995
7237
 
6996
7238
  var stackRestore = function() {
6997
- return (stackRestore = Module["asm"]["Pb"]).apply(null, arguments);
7239
+ return (stackRestore = Module["asm"]["Mb"]).apply(null, arguments);
6998
7240
  };
6999
7241
 
7000
7242
  var stackAlloc = function() {
7001
- return (stackAlloc = Module["asm"]["Qb"]).apply(null, arguments);
7243
+ return (stackAlloc = Module["asm"]["Nb"]).apply(null, arguments);
7002
7244
  };
7003
7245
 
7004
7246
  var dynCall_vi = Module["dynCall_vi"] = function() {
7005
- return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["Rb"]).apply(null, arguments);
7247
+ return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["Ob"]).apply(null, arguments);
7006
7248
  };
7007
7249
 
7008
7250
  var dynCall_iiii = Module["dynCall_iiii"] = function() {
7009
- return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["Sb"]).apply(null, arguments);
7251
+ return (dynCall_iiii = Module["dynCall_iiii"] = Module["asm"]["Pb"]).apply(null, arguments);
7010
7252
  };
7011
7253
 
7012
7254
  var dynCall_ii = Module["dynCall_ii"] = function() {
7013
- return (dynCall_ii = Module["dynCall_ii"] = Module["asm"]["Tb"]).apply(null, arguments);
7255
+ return (dynCall_ii = Module["dynCall_ii"] = Module["asm"]["Qb"]).apply(null, arguments);
7014
7256
  };
7015
7257
 
7016
7258
  var dynCall_vii = Module["dynCall_vii"] = function() {
7017
- return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["Ub"]).apply(null, arguments);
7259
+ return (dynCall_vii = Module["dynCall_vii"] = Module["asm"]["Rb"]).apply(null, arguments);
7018
7260
  };
7019
7261
 
7020
7262
  var dynCall_viiiii = Module["dynCall_viiiii"] = function() {
7021
- return (dynCall_viiiii = Module["dynCall_viiiii"] = Module["asm"]["Vb"]).apply(null, arguments);
7263
+ return (dynCall_viiiii = Module["dynCall_viiiii"] = Module["asm"]["Sb"]).apply(null, arguments);
7022
7264
  };
7023
7265
 
7024
7266
  var dynCall_iii = Module["dynCall_iii"] = function() {
7025
- return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["Wb"]).apply(null, arguments);
7267
+ return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["Tb"]).apply(null, arguments);
7026
7268
  };
7027
7269
 
7028
7270
  var dynCall_iiiii = Module["dynCall_iiiii"] = function() {
7029
- return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["Xb"]).apply(null, arguments);
7271
+ return (dynCall_iiiii = Module["dynCall_iiiii"] = Module["asm"]["Ub"]).apply(null, arguments);
7030
7272
  };
7031
7273
 
7032
7274
  var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = function() {
7033
- return (dynCall_iiiiiii = Module["dynCall_iiiiiii"] = Module["asm"]["Yb"]).apply(null, arguments);
7275
+ return (dynCall_iiiiiii = Module["dynCall_iiiiiii"] = Module["asm"]["Vb"]).apply(null, arguments);
7034
7276
  };
7035
7277
 
7036
7278
  var dynCall_iiiiii = Module["dynCall_iiiiii"] = function() {
7037
- return (dynCall_iiiiii = Module["dynCall_iiiiii"] = Module["asm"]["Zb"]).apply(null, arguments);
7279
+ return (dynCall_iiiiii = Module["dynCall_iiiiii"] = Module["asm"]["Wb"]).apply(null, arguments);
7038
7280
  };
7039
7281
 
7040
7282
  var dynCall_i = Module["dynCall_i"] = function() {
7041
- return (dynCall_i = Module["dynCall_i"] = Module["asm"]["_b"]).apply(null, arguments);
7283
+ return (dynCall_i = Module["dynCall_i"] = Module["asm"]["Xb"]).apply(null, arguments);
7042
7284
  };
7043
7285
 
7044
7286
  var dynCall_viii = Module["dynCall_viii"] = function() {
7045
- return (dynCall_viii = Module["dynCall_viii"] = Module["asm"]["$b"]).apply(null, arguments);
7287
+ return (dynCall_viii = Module["dynCall_viii"] = Module["asm"]["Yb"]).apply(null, arguments);
7046
7288
  };
7047
7289
 
7048
7290
  var dynCall_viiii = Module["dynCall_viiii"] = function() {
7049
- return (dynCall_viiii = Module["dynCall_viiii"] = Module["asm"]["ac"]).apply(null, arguments);
7291
+ return (dynCall_viiii = Module["dynCall_viiii"] = Module["asm"]["Zb"]).apply(null, arguments);
7050
7292
  };
7051
7293
 
7052
7294
  var dynCall_v = Module["dynCall_v"] = function() {
7053
- return (dynCall_v = Module["dynCall_v"] = Module["asm"]["bc"]).apply(null, arguments);
7295
+ return (dynCall_v = Module["dynCall_v"] = Module["asm"]["_b"]).apply(null, arguments);
7054
7296
  };
7055
7297
 
7056
7298
  var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = function() {
7057
- return (dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = Module["asm"]["cc"]).apply(null, arguments);
7299
+ return (dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = Module["asm"]["$b"]).apply(null, arguments);
7058
7300
  };
7059
7301
 
7060
7302
  var dynCall_viiiiii = Module["dynCall_viiiiii"] = function() {
7061
- return (dynCall_viiiiii = Module["dynCall_viiiiii"] = Module["asm"]["dc"]).apply(null, arguments);
7303
+ return (dynCall_viiiiii = Module["dynCall_viiiiii"] = Module["asm"]["ac"]).apply(null, arguments);
7062
7304
  };
7063
7305
 
7064
7306
  var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = function() {
7065
- return (dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = Module["asm"]["ec"]).apply(null, arguments);
7307
+ return (dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = Module["asm"]["bc"]).apply(null, arguments);
7066
7308
  };
7067
7309
 
7068
7310
  var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = function() {
7069
- return (dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = Module["asm"]["fc"]).apply(null, arguments);
7311
+ return (dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = Module["asm"]["cc"]).apply(null, arguments);
7070
7312
  };
7071
7313
 
7072
7314
  var dynCall_viidii = Module["dynCall_viidii"] = function() {
7073
- return (dynCall_viidii = Module["dynCall_viidii"] = Module["asm"]["gc"]).apply(null, arguments);
7315
+ return (dynCall_viidii = Module["dynCall_viidii"] = Module["asm"]["dc"]).apply(null, arguments);
7074
7316
  };
7075
7317
 
7076
7318
  var _asyncify_start_unwind = function() {
7077
- return (_asyncify_start_unwind = Module["asm"]["hc"]).apply(null, arguments);
7319
+ return (_asyncify_start_unwind = Module["asm"]["ec"]).apply(null, arguments);
7078
7320
  };
7079
7321
 
7080
7322
  var _asyncify_stop_unwind = function() {
7081
- return (_asyncify_stop_unwind = Module["asm"]["ic"]).apply(null, arguments);
7323
+ return (_asyncify_stop_unwind = Module["asm"]["fc"]).apply(null, arguments);
7082
7324
  };
7083
7325
 
7084
7326
  var _asyncify_start_rewind = function() {
7085
- return (_asyncify_start_rewind = Module["asm"]["jc"]).apply(null, arguments);
7327
+ return (_asyncify_start_rewind = Module["asm"]["gc"]).apply(null, arguments);
7086
7328
  };
7087
7329
 
7088
7330
  var _asyncify_stop_rewind = function() {
7089
- return (_asyncify_stop_rewind = Module["asm"]["kc"]).apply(null, arguments);
7331
+ return (_asyncify_stop_rewind = Module["asm"]["hc"]).apply(null, arguments);
7090
7332
  };
7091
7333
 
7092
7334
  function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {
@@ -7305,6 +7547,8 @@ Module["ccall"] = ccall;
7305
7547
 
7306
7548
  Module["FS_createPreloadedFile"] = FS.createPreloadedFile;
7307
7549
 
7550
+ Module["PROXYFS"] = PROXYFS;
7551
+
7308
7552
  var calledRun;
7309
7553
 
7310
7554
  dependenciesFulfilled = function runCaller() {
@@ -7388,6 +7632,23 @@ PHPLoader['removeRunDependency'] = function (...args) {
7388
7632
  }
7389
7633
  }
7390
7634
 
7635
+ /**
7636
+ * Other exports live in the Dockerfile in:
7637
+ *
7638
+ * * EXTRA_EXPORTED_RUNTIME_METHODS
7639
+ * * EXPORTED_FUNCTIONS
7640
+ *
7641
+ * These exports, however, live in here because:
7642
+ *
7643
+ * * Listing them in EXTRA_EXPORTED_RUNTIME_METHODS doesn't actually
7644
+ * export them. This could be a bug in Emscripten or a consequence of
7645
+ * that option being deprecated.
7646
+ * * Listing them in EXPORTED_FUNCTIONS works, but they are overridden
7647
+ * on every `BasePHP.run()` call. This is a problem because we want to
7648
+ * spy on these calls in some unit tests.
7649
+ *
7650
+ * Therefore, we export them here.
7651
+ */
7391
7652
  PHPLoader['malloc'] = _malloc;
7392
7653
  PHPLoader['free'] = _free;
7393
7654