@php-wasm/web-8-0 3.1.34 → 3.1.36

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.
@@ -4796,6 +4796,7 @@ export function init(RuntimeName, PHPLoader) {
4796
4796
  O_NONBLOCK: 2048,
4797
4797
  POLLHUP: 16,
4798
4798
  SETFL_MASK: 3072,
4799
+ socketTimeouts: new Map,
4799
4800
  init: function () {
4800
4801
  if (PHPLoader.bindUserSpace) {
4801
4802
  addOnInit(() => {
@@ -5159,6 +5160,29 @@ export function init(RuntimeName, PHPLoader) {
5159
5160
  return [promise, cancel];
5160
5161
  },
5161
5162
  noop: function () {},
5163
+ parseSocketTimeout: function (optionValuePtr, optionLen) {
5164
+ if (!optionValuePtr || optionLen < 8) {
5165
+ return null;
5166
+ }
5167
+ let seconds;
5168
+ let microseconds;
5169
+ if (optionLen >= 16) {
5170
+ seconds = Number(HEAP64[optionValuePtr >> 3]);
5171
+ microseconds = Number(HEAP64[(optionValuePtr + 8) >> 3]);
5172
+ } else {
5173
+ seconds = HEAP32[optionValuePtr >> 2];
5174
+ microseconds = HEAP32[(optionValuePtr + 4) >> 2];
5175
+ }
5176
+ if (
5177
+ !Number.isFinite(seconds) ||
5178
+ !Number.isFinite(microseconds) ||
5179
+ seconds < 0 ||
5180
+ microseconds < 0
5181
+ ) {
5182
+ return null;
5183
+ }
5184
+ return seconds * 1e3 + Math.ceil(microseconds / 1e3);
5185
+ },
5162
5186
  spawnProcess: function (command, args, options) {
5163
5187
  if (Module['spawnProcess']) {
5164
5188
  const spawned = Module['spawnProcess'](command, args, {
@@ -5187,6 +5211,7 @@ export function init(RuntimeName, PHPLoader) {
5187
5211
  throw e;
5188
5212
  },
5189
5213
  shutdownSocket: function (socketd, how) {
5214
+ PHPWASM.socketTimeouts.delete(socketd);
5190
5215
  const sock = getSocketFromFD(socketd);
5191
5216
  const peer = Object.values(sock.peers)[0];
5192
5217
  if (!peer) {
@@ -5256,41 +5281,74 @@ export function init(RuntimeName, PHPLoader) {
5256
5281
  wakeUp(-ERRNO_CODES.ECONNREFUSED);
5257
5282
  return;
5258
5283
  }
5259
- const timeout = 3e4;
5284
+ // Wait for the connection to be established. A zero timeval
5285
+ // disables the timeout, matching SO_SNDTIMEO semantics.
5286
+ const sendTimeout = PHPWASM.socketTimeouts.get(sockfd)?.send;
5287
+ const timeout = sendTimeout ?? 3e4;
5260
5288
  let resolved = false;
5261
- const timeoutId = setTimeout(() => {
5262
- if (!resolved) {
5263
- resolved = true;
5264
- wakeUp(-ERRNO_CODES.ETIMEDOUT);
5265
- }
5266
- }, timeout);
5267
- const handleOpen = () => {
5268
- if (!resolved) {
5269
- resolved = true;
5289
+ let timeoutId;
5290
+ let handleOpen;
5291
+ let handleError;
5292
+ let handleClose;
5293
+ const peer = PHPWASM.getAllPeers(sock).find(
5294
+ (candidate) => candidate.socket === ws
5295
+ );
5296
+
5297
+ const cleanupConnectListeners = () => {
5298
+ if (typeof timeoutId !== 'undefined') {
5270
5299
  clearTimeout(timeoutId);
5271
- ws.removeEventListener('error', handleError);
5272
- ws.removeEventListener('close', handleClose);
5273
- wakeUp(0);
5274
5300
  }
5301
+ ws.removeEventListener('open', handleOpen);
5302
+ ws.removeEventListener('error', handleError);
5303
+ ws.removeEventListener('close', handleClose);
5275
5304
  };
5276
- const handleError = () => {
5277
- if (!resolved) {
5278
- resolved = true;
5279
- clearTimeout(timeoutId);
5280
- ws.removeEventListener('open', handleOpen);
5281
- ws.removeEventListener('close', handleClose);
5282
- wakeUp(-ERRNO_CODES.ECONNREFUSED);
5305
+
5306
+ const cleanupFailedConnect = (errno) => {
5307
+ try {
5308
+ if (
5309
+ ws.readyState !== ws.CLOSING &&
5310
+ ws.readyState !== ws.CLOSED
5311
+ ) {
5312
+ ws.close();
5313
+ }
5314
+ } catch (e) {
5315
+ // Ignore close errors on an already-failed connect.
5283
5316
  }
5317
+ if (peer) {
5318
+ SOCKFS.websocket_sock_ops.removePeer(sock, peer);
5319
+ }
5320
+ sock.connecting = false;
5321
+ sock.error = errno;
5284
5322
  };
5285
- const handleClose = () => {
5323
+
5324
+ const finishConnect = (result) => {
5286
5325
  if (!resolved) {
5287
5326
  resolved = true;
5288
- clearTimeout(timeoutId);
5289
- ws.removeEventListener('open', handleOpen);
5290
- ws.removeEventListener('error', handleError);
5291
- wakeUp(-ERRNO_CODES.ECONNREFUSED);
5327
+ cleanupConnectListeners();
5328
+ if (result < 0) {
5329
+ cleanupFailedConnect(-result);
5330
+ }
5331
+ wakeUp(result);
5292
5332
  }
5293
5333
  };
5334
+
5335
+ if (timeout > 0) {
5336
+ timeoutId = setTimeout(() => {
5337
+ finishConnect(-ERRNO_CODES.ETIMEDOUT);
5338
+ }, timeout);
5339
+ }
5340
+
5341
+ handleOpen = () => {
5342
+ finishConnect(0);
5343
+ };
5344
+
5345
+ handleError = () => {
5346
+ finishConnect(-ERRNO_CODES.ECONNREFUSED);
5347
+ };
5348
+
5349
+ handleClose = () => {
5350
+ finishConnect(-ERRNO_CODES.ECONNREFUSED);
5351
+ };
5294
5352
  ws.addEventListener('open', handleOpen);
5295
5353
  ws.addEventListener('error', handleError);
5296
5354
  ws.addEventListener('close', handleClose);
@@ -7650,21 +7708,35 @@ export function init(RuntimeName, PHPLoader) {
7650
7708
  const SO_SNDTIMEO = 67;
7651
7709
  const IPPROTO_TCP = 6;
7652
7710
  const TCP_NODELAY = 1;
7711
+ if (
7712
+ level === SOL_SOCKET &&
7713
+ (optionName === SO_RCVTIMEO || optionName === SO_SNDTIMEO)
7714
+ ) {
7715
+ const timeoutMs = PHPWASM.parseSocketTimeout(
7716
+ optionValuePtr,
7717
+ optionLen
7718
+ );
7719
+ if (timeoutMs === null) {
7720
+ return -1;
7721
+ }
7722
+ const timeouts = PHPWASM.socketTimeouts.get(socketd) || {};
7723
+ if (optionName === SO_RCVTIMEO) {
7724
+ timeouts.receive = timeoutMs;
7725
+ } else {
7726
+ timeouts.send = timeoutMs;
7727
+ }
7728
+ PHPWASM.socketTimeouts.set(socketd, timeouts);
7729
+ return 0;
7730
+ }
7653
7731
  const isForwardable =
7654
7732
  (level === SOL_SOCKET && optionName === SO_KEEPALIVE) ||
7655
7733
  (level === IPPROTO_TCP && optionName === TCP_NODELAY);
7656
- const isIgnorable =
7657
- level === SOL_SOCKET &&
7658
- (optionName === SO_RCVTIMEO || optionName === SO_SNDTIMEO);
7659
- if (!isForwardable && !isIgnorable) {
7734
+ if (!isForwardable) {
7660
7735
  console.warn(
7661
7736
  `Unsupported socket option: ${level}, ${optionName}, ${optionValue}`
7662
7737
  );
7663
7738
  return -1;
7664
7739
  }
7665
- if (isIgnorable) {
7666
- return 0;
7667
- }
7668
7740
  const ws = PHPWASM.getAllWebSockets(socketd)[0];
7669
7741
  if (!ws) {
7670
7742
  return -1;
Binary file
package/jspi/php_8_0.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import dependencyFilename from './8_0_30/php_8_0.wasm';
2
2
  export { dependencyFilename };
3
- export const dependenciesTotalSize = 16724961;
3
+ export const dependenciesTotalSize = 16725015;
4
4
  const phpVersionString = '8.0.30';
5
5
  export function init(RuntimeName, PHPLoader) {
6
6
  // The rest of the code comes from the built php.js file and esm-suffix.js
@@ -4673,6 +4673,7 @@ export function init(RuntimeName, PHPLoader) {
4673
4673
  O_NONBLOCK: 2048,
4674
4674
  POLLHUP: 16,
4675
4675
  SETFL_MASK: 3072,
4676
+ socketTimeouts: new Map(),
4676
4677
  init: function () {
4677
4678
  if (PHPLoader.bindUserSpace) {
4678
4679
  addOnInit(() => {
@@ -5036,6 +5037,29 @@ export function init(RuntimeName, PHPLoader) {
5036
5037
  return [promise, cancel];
5037
5038
  },
5038
5039
  noop: function () {},
5040
+ parseSocketTimeout: function (optionValuePtr, optionLen) {
5041
+ if (!optionValuePtr || optionLen < 8) {
5042
+ return null;
5043
+ }
5044
+ let seconds;
5045
+ let microseconds;
5046
+ if (optionLen >= 16) {
5047
+ seconds = Number(HEAP64[optionValuePtr >> 3]);
5048
+ microseconds = Number(HEAP64[(optionValuePtr + 8) >> 3]);
5049
+ } else {
5050
+ seconds = HEAP32[optionValuePtr >> 2];
5051
+ microseconds = HEAP32[(optionValuePtr + 4) >> 2];
5052
+ }
5053
+ if (
5054
+ !Number.isFinite(seconds) ||
5055
+ !Number.isFinite(microseconds) ||
5056
+ seconds < 0 ||
5057
+ microseconds < 0
5058
+ ) {
5059
+ return null;
5060
+ }
5061
+ return seconds * 1e3 + Math.ceil(microseconds / 1e3);
5062
+ },
5039
5063
  spawnProcess: function (command, args, options) {
5040
5064
  if (Module['spawnProcess']) {
5041
5065
  const spawned = Module['spawnProcess'](command, args, {
@@ -5064,6 +5088,7 @@ export function init(RuntimeName, PHPLoader) {
5064
5088
  throw e;
5065
5089
  },
5066
5090
  shutdownSocket: function (socketd, how) {
5091
+ PHPWASM.socketTimeouts.delete(socketd);
5067
5092
  const sock = getSocketFromFD(socketd);
5068
5093
  const peer = Object.values(sock.peers)[0];
5069
5094
  if (!peer) {
@@ -5133,41 +5158,63 @@ export function init(RuntimeName, PHPLoader) {
5133
5158
  wakeUp(-ERRNO_CODES.ECONNREFUSED);
5134
5159
  return;
5135
5160
  }
5136
- const timeout = 3e4;
5161
+ const sendTimeout = PHPWASM.socketTimeouts.get(sockfd)?.send;
5162
+ const timeout = sendTimeout ?? 3e4;
5137
5163
  let resolved = false;
5138
- const timeoutId = setTimeout(() => {
5139
- if (!resolved) {
5140
- resolved = true;
5141
- wakeUp(-ERRNO_CODES.ETIMEDOUT);
5142
- }
5143
- }, timeout);
5144
- const handleOpen = () => {
5145
- if (!resolved) {
5146
- resolved = true;
5164
+ let timeoutId;
5165
+ let handleOpen;
5166
+ let handleError;
5167
+ let handleClose;
5168
+ const peer = PHPWASM.getAllPeers(sock).find(
5169
+ (candidate) => candidate.socket === ws
5170
+ );
5171
+ const cleanupConnectListeners = () => {
5172
+ if (typeof timeoutId !== 'undefined') {
5147
5173
  clearTimeout(timeoutId);
5148
- ws.removeEventListener('error', handleError);
5149
- ws.removeEventListener('close', handleClose);
5150
- wakeUp(0);
5151
5174
  }
5175
+ ws.removeEventListener('open', handleOpen);
5176
+ ws.removeEventListener('error', handleError);
5177
+ ws.removeEventListener('close', handleClose);
5152
5178
  };
5153
- const handleError = () => {
5154
- if (!resolved) {
5155
- resolved = true;
5156
- clearTimeout(timeoutId);
5157
- ws.removeEventListener('open', handleOpen);
5158
- ws.removeEventListener('close', handleClose);
5159
- wakeUp(-ERRNO_CODES.ECONNREFUSED);
5179
+ const cleanupFailedConnect = (errno) => {
5180
+ try {
5181
+ if (
5182
+ ws.readyState !== ws.CLOSING &&
5183
+ ws.readyState !== ws.CLOSED
5184
+ ) {
5185
+ ws.close();
5186
+ }
5187
+ } catch (e) {}
5188
+ if (peer) {
5189
+ SOCKFS.websocket_sock_ops.removePeer(sock, peer);
5160
5190
  }
5191
+ sock.connecting = false;
5192
+ sock.error = errno;
5161
5193
  };
5162
- const handleClose = () => {
5194
+ const finishConnect = (result) => {
5163
5195
  if (!resolved) {
5164
5196
  resolved = true;
5165
- clearTimeout(timeoutId);
5166
- ws.removeEventListener('open', handleOpen);
5167
- ws.removeEventListener('error', handleError);
5168
- wakeUp(-ERRNO_CODES.ECONNREFUSED);
5197
+ cleanupConnectListeners();
5198
+ if (result < 0) {
5199
+ cleanupFailedConnect(-result);
5200
+ }
5201
+ wakeUp(result);
5169
5202
  }
5170
5203
  };
5204
+ if (timeout > 0) {
5205
+ timeoutId = setTimeout(() => {
5206
+ finishConnect(-ERRNO_CODES.ETIMEDOUT);
5207
+ }, timeout);
5208
+ }
5209
+ handleOpen = () => {
5210
+ finishConnect(0);
5211
+ };
5212
+ handleError = () => {
5213
+ finishConnect(-ERRNO_CODES.ECONNREFUSED);
5214
+ };
5215
+ handleClose = () => {
5216
+ finishConnect(-ERRNO_CODES.ECONNREFUSED);
5217
+ };
5171
5218
  ws.addEventListener('open', handleOpen);
5172
5219
  ws.addEventListener('error', handleError);
5173
5220
  ws.addEventListener('close', handleClose);
@@ -7523,21 +7570,35 @@ export function init(RuntimeName, PHPLoader) {
7523
7570
  const SO_SNDTIMEO = 67;
7524
7571
  const IPPROTO_TCP = 6;
7525
7572
  const TCP_NODELAY = 1;
7573
+ if (
7574
+ level === SOL_SOCKET &&
7575
+ (optionName === SO_RCVTIMEO || optionName === SO_SNDTIMEO)
7576
+ ) {
7577
+ const timeoutMs = PHPWASM.parseSocketTimeout(
7578
+ optionValuePtr,
7579
+ optionLen
7580
+ );
7581
+ if (timeoutMs === null) {
7582
+ return -1;
7583
+ }
7584
+ const timeouts = PHPWASM.socketTimeouts.get(socketd) || {};
7585
+ if (optionName === SO_RCVTIMEO) {
7586
+ timeouts.receive = timeoutMs;
7587
+ } else {
7588
+ timeouts.send = timeoutMs;
7589
+ }
7590
+ PHPWASM.socketTimeouts.set(socketd, timeouts);
7591
+ return 0;
7592
+ }
7526
7593
  const isForwardable =
7527
7594
  (level === SOL_SOCKET && optionName === SO_KEEPALIVE) ||
7528
7595
  (level === IPPROTO_TCP && optionName === TCP_NODELAY);
7529
- const isIgnorable =
7530
- level === SOL_SOCKET &&
7531
- (optionName === SO_RCVTIMEO || optionName === SO_SNDTIMEO);
7532
- if (!isForwardable && !isIgnorable) {
7596
+ if (!isForwardable) {
7533
7597
  console.warn(
7534
7598
  `Unsupported socket option: ${level}, ${optionName}, ${optionValue}`
7535
7599
  );
7536
7600
  return -1;
7537
7601
  }
7538
- if (isIgnorable) {
7539
- return 0;
7540
- }
7541
7602
  const ws = PHPWASM.getAllWebSockets(socketd)[0];
7542
7603
  if (!ws) {
7543
7604
  return -1;
@@ -8101,6 +8162,7 @@ export function init(RuntimeName, PHPLoader) {
8101
8162
  _zend_try_assign_typed_ref_arr,
8102
8163
  _zend_declare_property,
8103
8164
  _zend_declare_property_null,
8165
+ _zend_declare_class_constant_ex,
8104
8166
  _zend_declare_class_constant_null,
8105
8167
  _zend_declare_class_constant_long,
8106
8168
  _zend_declare_class_constant_double,
@@ -8532,6 +8594,9 @@ export function init(RuntimeName, PHPLoader) {
8532
8594
  wasmExports['zend_declare_property'];
8533
8595
  _zend_declare_property_null = Module['_zend_declare_property_null'] =
8534
8596
  wasmExports['zend_declare_property_null'];
8597
+ _zend_declare_class_constant_ex = Module[
8598
+ '_zend_declare_class_constant_ex'
8599
+ ] = wasmExports['zend_declare_class_constant_ex'];
8535
8600
  _zend_declare_class_constant_null = Module[
8536
8601
  '_zend_declare_class_constant_null'
8537
8602
  ] = wasmExports['zend_declare_class_constant_null'];
@@ -8905,60 +8970,60 @@ export function init(RuntimeName, PHPLoader) {
8905
8970
  wasmExports['__indirect_function_table'];
8906
8971
  ___c_longjmp = Module['___c_longjmp'] = wasmExports['__c_longjmp'];
8907
8972
  }
8908
- var _file_globals = (Module['_file_globals'] = 12085976);
8909
- var _sapi_module = (Module['_sapi_module'] = 12031788);
8910
- var _sapi_globals = (Module['_sapi_globals'] = 12031936);
8911
- var _compiler_globals = (Module['_compiler_globals'] = 12088224);
8912
- var _executor_globals = (Module['_executor_globals'] = 12088600);
8913
- var _zend_compile_string = (Module['_zend_compile_string'] = 12089764);
8914
- var _zend_ce_traversable = (Module['_zend_ce_traversable'] = 11943908);
8915
- var _zend_ce_aggregate = (Module['_zend_ce_aggregate'] = 11943912);
8916
- var _zend_ce_iterator = (Module['_zend_ce_iterator'] = 11943916);
8917
- var _zend_ce_serializable = (Module['_zend_ce_serializable'] = 11943920);
8918
- var _zend_ce_arrayaccess = (Module['_zend_ce_arrayaccess'] = 11943924);
8919
- var _zend_ce_countable = (Module['_zend_ce_countable'] = 11943928);
8920
- var _zend_ce_stringable = (Module['_zend_ce_stringable'] = 11943932);
8921
- var _zend_ce_exception = (Module['_zend_ce_exception'] = 12086520);
8922
- var _zend_ce_throwable = (Module['_zend_ce_throwable'] = 12086504);
8973
+ var _file_globals = (Module['_file_globals'] = 12085992);
8974
+ var _sapi_module = (Module['_sapi_module'] = 12031804);
8975
+ var _sapi_globals = (Module['_sapi_globals'] = 12031952);
8976
+ var _compiler_globals = (Module['_compiler_globals'] = 12088240);
8977
+ var _executor_globals = (Module['_executor_globals'] = 12088616);
8978
+ var _zend_compile_string = (Module['_zend_compile_string'] = 12089780);
8979
+ var _zend_ce_traversable = (Module['_zend_ce_traversable'] = 11943924);
8980
+ var _zend_ce_aggregate = (Module['_zend_ce_aggregate'] = 11943928);
8981
+ var _zend_ce_iterator = (Module['_zend_ce_iterator'] = 11943932);
8982
+ var _zend_ce_serializable = (Module['_zend_ce_serializable'] = 11943936);
8983
+ var _zend_ce_arrayaccess = (Module['_zend_ce_arrayaccess'] = 11943940);
8984
+ var _zend_ce_countable = (Module['_zend_ce_countable'] = 11943944);
8985
+ var _zend_ce_stringable = (Module['_zend_ce_stringable'] = 11943948);
8986
+ var _zend_ce_exception = (Module['_zend_ce_exception'] = 12086536);
8987
+ var _zend_ce_throwable = (Module['_zend_ce_throwable'] = 12086520);
8923
8988
  var _zend_ce_division_by_zero_error = (Module[
8924
8989
  '_zend_ce_division_by_zero_error'
8925
- ] = 12086648);
8990
+ ] = 12086664);
8926
8991
  var _zend_ce_unhandled_match_error = (Module[
8927
8992
  '_zend_ce_unhandled_match_error'
8928
- ] = 12086992);
8929
- var _zend_empty_string = (Module['_zend_empty_string'] = 11942336);
8993
+ ] = 12087008);
8994
+ var _zend_empty_string = (Module['_zend_empty_string'] = 11942352);
8930
8995
  var _zend_string_init_interned = (Module['_zend_string_init_interned'] =
8931
- 11942404);
8932
- var _zend_one_char_string = (Module['_zend_one_char_string'] = 11942416);
8996
+ 11942420);
8997
+ var _zend_one_char_string = (Module['_zend_one_char_string'] = 11942432);
8933
8998
  var _std_object_handlers = (Module['_std_object_handlers'] = 11601700);
8934
8999
  var ___memory_base = (Module['___memory_base'] = 0);
8935
9000
  var ___table_base = (Module['___table_base'] = 1);
8936
- var _stdout = (Module['_stdout'] = 11935520);
9001
+ var _stdout = (Module['_stdout'] = 11935536);
8937
9002
  var __playground_zend_side_module_data_exports = (Module[
8938
9003
  '__playground_zend_side_module_data_exports'
8939
9004
  ] = 11602896);
8940
9005
  var __playground_zend_side_module_function_exports = (Module[
8941
9006
  '__playground_zend_side_module_function_exports'
8942
9007
  ] = 11602992);
8943
- var _timezone = (Module['_timezone'] = 12124624);
8944
- var _tzname = (Module['_tzname'] = 12124632);
8945
- var ___heap_base = 13186944;
9008
+ var _timezone = (Module['_timezone'] = 12124640);
9009
+ var _tzname = (Module['_tzname'] = 12124648);
9010
+ var ___heap_base = 13186960;
8946
9011
  var __ZNSt3__25ctypeIcE2idE = (Module['__ZNSt3__25ctypeIcE2idE'] =
8947
- 12138348);
9012
+ 12138364);
8948
9013
  var __ZTVN10__cxxabiv120__si_class_type_infoE = (Module[
8949
9014
  '__ZTVN10__cxxabiv120__si_class_type_infoE'
8950
- ] = 11935808);
9015
+ ] = 11935824);
8951
9016
  var __ZTVN10__cxxabiv117__class_type_infoE = (Module[
8952
9017
  '__ZTVN10__cxxabiv117__class_type_infoE'
8953
- ] = 11935768);
9018
+ ] = 11935784);
8954
9019
  var __ZTVN10__cxxabiv121__vmi_class_type_infoE = (Module[
8955
9020
  '__ZTVN10__cxxabiv121__vmi_class_type_infoE'
8956
- ] = 11935860);
9021
+ ] = 11935876);
8957
9022
  var __ZTISt20bad_array_new_length = (Module[
8958
9023
  '__ZTISt20bad_array_new_length'
8959
- ] = 11935980);
8960
- var __ZTVSt12length_error = (Module['__ZTVSt12length_error'] = 11936056);
8961
- var __ZTISt12length_error = (Module['__ZTISt12length_error'] = 11936076);
9024
+ ] = 11935996);
9025
+ var __ZTVSt12length_error = (Module['__ZTVSt12length_error'] = 11936072);
9026
+ var __ZTISt12length_error = (Module['__ZTISt12length_error'] = 11936092);
8962
9027
  var wasmImports = {
8963
9028
  __assert_fail: ___assert_fail,
8964
9029
  __asyncjs__js_module_onMessage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@php-wasm/web-8-0",
3
- "version": "3.1.34",
3
+ "version": "3.1.36",
4
4
  "description": "PHP 8.0 WebAssembly binaries for web",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,10 +35,10 @@
35
35
  "node": ">=20.10.0",
36
36
  "npm": ">=10.2.3"
37
37
  },
38
- "gitHead": "86daccc84fe31900eb57c4c8e1c3ba21a7ae8d13",
38
+ "gitHead": "371f4fd6f9d56af6fb35b6c2cf0267edaea83755",
39
39
  "dependencies": {
40
40
  "wasm-feature-detect": "1.8.0",
41
- "@php-wasm/universal": "3.1.34"
41
+ "@php-wasm/universal": "3.1.36"
42
42
  },
43
43
  "packageManager": "npm@10.9.2",
44
44
  "overrides": {