@php-wasm/node 3.0.37 → 3.0.39
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/index.cjs +32 -29
- package/index.js +27 -25
- package/package.json +16 -16
package/index.cjs
CHANGED
|
@@ -482,6 +482,7 @@ async function withXdebug(version = import_universal3.LatestSupportedPHPVersion,
|
|
|
482
482
|
// packages/php-wasm/node/src/lib/extensions/intl/with-intl.ts
|
|
483
483
|
var import_universal5 = require("@php-wasm/universal");
|
|
484
484
|
var import_fs2 = __toESM(require("fs"), 1);
|
|
485
|
+
var import_path = __toESM(require("path"), 1);
|
|
485
486
|
|
|
486
487
|
// packages/php-wasm/node/src/lib/extensions/intl/get-intl-extension-module.ts
|
|
487
488
|
var import_universal4 = require("@php-wasm/universal");
|
|
@@ -510,12 +511,14 @@ async function getIntlExtensionModule(version = import_universal4.LatestSupporte
|
|
|
510
511
|
}
|
|
511
512
|
|
|
512
513
|
// packages/php-wasm/node/src/lib/extensions/intl/with-intl.ts
|
|
514
|
+
var import_meta = {};
|
|
513
515
|
async function withIntl(version = import_universal5.LatestSupportedPHPVersion, options) {
|
|
514
516
|
const extensionName = "intl.so";
|
|
515
517
|
const extensionPath = await getIntlExtensionModule(version);
|
|
516
518
|
const extension = import_fs2.default.readFileSync(extensionPath);
|
|
517
519
|
const dataName = "icu.dat";
|
|
518
|
-
const
|
|
520
|
+
const moduleDir = typeof __dirname !== "undefined" ? __dirname : import_meta.dirname;
|
|
521
|
+
const dataPath = import_path.default.join(moduleDir, "shared", dataName);
|
|
519
522
|
const ICUData = import_fs2.default.readFileSync(dataPath);
|
|
520
523
|
return {
|
|
521
524
|
...options,
|
|
@@ -570,7 +573,7 @@ async function withIntl(version = import_universal5.LatestSupportedPHPVersion, o
|
|
|
570
573
|
|
|
571
574
|
// packages/php-wasm/node/src/lib/load-runtime.ts
|
|
572
575
|
var import_util = require("@php-wasm/util");
|
|
573
|
-
var
|
|
576
|
+
var import_path2 = require("path");
|
|
574
577
|
async function loadNodeRuntime(phpVersion, options = {}) {
|
|
575
578
|
let emscriptenOptions = {
|
|
576
579
|
/**
|
|
@@ -604,7 +607,7 @@ async function loadNodeRuntime(phpVersion, options = {}) {
|
|
|
604
607
|
phpRuntime.FS.mkdirTree(symlinkMountPath);
|
|
605
608
|
} else if (sourceStat.isFile()) {
|
|
606
609
|
phpRuntime.FS.mkdirTree(
|
|
607
|
-
(0,
|
|
610
|
+
(0, import_path2.dirname)(symlinkMountPath)
|
|
608
611
|
);
|
|
609
612
|
phpRuntime.FS.writeFile(symlinkMountPath, "");
|
|
610
613
|
} else {
|
|
@@ -657,14 +660,14 @@ var import_node_fs = require("node:fs");
|
|
|
657
660
|
var import_universal7 = require("@php-wasm/universal");
|
|
658
661
|
var import_util2 = require("@php-wasm/util");
|
|
659
662
|
var import_fs4 = require("fs");
|
|
660
|
-
var
|
|
663
|
+
var import_path3 = require("path");
|
|
661
664
|
function createNodeFsMountHandler(localPath) {
|
|
662
665
|
return function(php, FS, vfsMountPoint) {
|
|
663
666
|
let removeVfsNode = false;
|
|
664
667
|
if (!import_universal7.FSHelpers.fileExists(FS, vfsMountPoint)) {
|
|
665
668
|
const lstat = (0, import_fs4.lstatSync)(localPath);
|
|
666
669
|
if (lstat.isFile() || lstat.isSymbolicLink()) {
|
|
667
|
-
FS.mkdirTree((0,
|
|
670
|
+
FS.mkdirTree((0, import_path3.dirname)(vfsMountPoint));
|
|
668
671
|
FS.writeFile(vfsMountPoint, "");
|
|
669
672
|
} else if (lstat.isDirectory()) {
|
|
670
673
|
FS.mkdirTree(vfsMountPoint);
|
|
@@ -723,15 +726,15 @@ function useHostFilesystem(php) {
|
|
|
723
726
|
}
|
|
724
727
|
php.chdir(process.cwd());
|
|
725
728
|
}
|
|
726
|
-
function statPathFollowSymlinks(
|
|
727
|
-
let stat = (0, import_node_fs.lstatSync)(
|
|
729
|
+
function statPathFollowSymlinks(path2) {
|
|
730
|
+
let stat = (0, import_node_fs.lstatSync)(path2);
|
|
728
731
|
if (stat.isSymbolicLink()) {
|
|
729
732
|
const fs4 = require("fs");
|
|
730
|
-
let target =
|
|
733
|
+
let target = path2;
|
|
731
734
|
const seen = /* @__PURE__ */ new Set();
|
|
732
735
|
while (true) {
|
|
733
736
|
if (seen.has(target)) {
|
|
734
|
-
throw new Error(`Symlink loop detected: ${
|
|
737
|
+
throw new Error(`Symlink loop detected: ${path2}`);
|
|
735
738
|
}
|
|
736
739
|
seen.add(target);
|
|
737
740
|
const linkStat = (0, import_node_fs.lstatSync)(target);
|
|
@@ -769,24 +772,24 @@ var FileLockManagerForNode = class {
|
|
|
769
772
|
* @param op The whole file lock operation to perform.
|
|
770
773
|
* @returns True if the lock was granted, false otherwise.
|
|
771
774
|
*/
|
|
772
|
-
lockWholeFile(
|
|
773
|
-
if (this.locks.get(
|
|
775
|
+
lockWholeFile(path2, op) {
|
|
776
|
+
if (this.locks.get(path2) === void 0) {
|
|
774
777
|
if (op.type === "unlock") {
|
|
775
778
|
return true;
|
|
776
779
|
}
|
|
777
780
|
const maybeLock = FileLock.maybeCreate(
|
|
778
|
-
|
|
781
|
+
path2,
|
|
779
782
|
op.type,
|
|
780
783
|
this.nativeFlockSync
|
|
781
784
|
);
|
|
782
785
|
if (maybeLock === void 0) {
|
|
783
786
|
return false;
|
|
784
787
|
}
|
|
785
|
-
this.locks.set(
|
|
788
|
+
this.locks.set(path2, maybeLock);
|
|
786
789
|
}
|
|
787
|
-
const lock = this.locks.get(
|
|
790
|
+
const lock = this.locks.get(path2);
|
|
788
791
|
const result = lock.lockWholeFile(op);
|
|
789
|
-
this.forgetPathIfUnlocked(
|
|
792
|
+
this.forgetPathIfUnlocked(path2);
|
|
790
793
|
return result;
|
|
791
794
|
}
|
|
792
795
|
/**
|
|
@@ -797,22 +800,22 @@ var FileLockManagerForNode = class {
|
|
|
797
800
|
* @param requestedLock The byte range lock to perform.
|
|
798
801
|
* @returns True if the lock was granted, false otherwise.
|
|
799
802
|
*/
|
|
800
|
-
lockFileByteRange(
|
|
801
|
-
if (!this.locks.has(
|
|
803
|
+
lockFileByteRange(path2, requestedLock) {
|
|
804
|
+
if (!this.locks.has(path2)) {
|
|
802
805
|
if (requestedLock.type === "unlocked") {
|
|
803
806
|
return true;
|
|
804
807
|
}
|
|
805
808
|
const maybeLock = FileLock.maybeCreate(
|
|
806
|
-
|
|
809
|
+
path2,
|
|
807
810
|
requestedLock.type,
|
|
808
811
|
this.nativeFlockSync
|
|
809
812
|
);
|
|
810
813
|
if (maybeLock === void 0) {
|
|
811
814
|
return false;
|
|
812
815
|
}
|
|
813
|
-
this.locks.set(
|
|
816
|
+
this.locks.set(path2, maybeLock);
|
|
814
817
|
}
|
|
815
|
-
const lock = this.locks.get(
|
|
818
|
+
const lock = this.locks.get(path2);
|
|
816
819
|
return lock.lockFileByteRange(requestedLock);
|
|
817
820
|
}
|
|
818
821
|
/**
|
|
@@ -822,8 +825,8 @@ var FileLockManagerForNode = class {
|
|
|
822
825
|
* @param desiredLock The desired byte range lock.
|
|
823
826
|
* @returns The first conflicting byte range lock, or undefined if no conflicting lock exists.
|
|
824
827
|
*/
|
|
825
|
-
findFirstConflictingByteRangeLock(
|
|
826
|
-
const lock = this.locks.get(
|
|
828
|
+
findFirstConflictingByteRangeLock(path2, desiredLock) {
|
|
829
|
+
const lock = this.locks.get(path2);
|
|
827
830
|
if (lock === void 0) {
|
|
828
831
|
return void 0;
|
|
829
832
|
}
|
|
@@ -835,9 +838,9 @@ var FileLockManagerForNode = class {
|
|
|
835
838
|
* @param pid The process ID to release locks for.
|
|
836
839
|
*/
|
|
837
840
|
releaseLocksForProcess(pid) {
|
|
838
|
-
for (const [
|
|
841
|
+
for (const [path2, lock] of this.locks.entries()) {
|
|
839
842
|
lock.releaseLocksForProcess(pid);
|
|
840
|
-
this.forgetPathIfUnlocked(
|
|
843
|
+
this.forgetPathIfUnlocked(path2);
|
|
841
844
|
}
|
|
842
845
|
}
|
|
843
846
|
/**
|
|
@@ -860,14 +863,14 @@ var FileLockManagerForNode = class {
|
|
|
860
863
|
*
|
|
861
864
|
* @param path The path to the file to forget.
|
|
862
865
|
*/
|
|
863
|
-
forgetPathIfUnlocked(
|
|
864
|
-
const lock = this.locks.get(
|
|
866
|
+
forgetPathIfUnlocked(path2) {
|
|
867
|
+
const lock = this.locks.get(path2);
|
|
865
868
|
if (!lock) {
|
|
866
869
|
return;
|
|
867
870
|
}
|
|
868
871
|
if (lock.isUnlocked()) {
|
|
869
872
|
lock.dispose();
|
|
870
|
-
this.locks.delete(
|
|
873
|
+
this.locks.delete(path2);
|
|
871
874
|
}
|
|
872
875
|
}
|
|
873
876
|
};
|
|
@@ -880,10 +883,10 @@ var FileLock = class _FileLock {
|
|
|
880
883
|
* @param mode The type of lock to acquire
|
|
881
884
|
* @returns A FileLock instance if the lock was acquired, undefined otherwise
|
|
882
885
|
*/
|
|
883
|
-
static maybeCreate(
|
|
886
|
+
static maybeCreate(path2, mode, nativeFlockSync) {
|
|
884
887
|
let fd;
|
|
885
888
|
try {
|
|
886
|
-
fd = (0, import_fs5.openSync)(
|
|
889
|
+
fd = (0, import_fs5.openSync)(path2, "a+");
|
|
887
890
|
const flockFlags = mode === "exclusive" ? "exnb" : "shnb";
|
|
888
891
|
nativeFlockSync(fd, flockFlags);
|
|
889
892
|
const nativeLock = { fd, mode, nativeFlockSync };
|
package/index.js
CHANGED
|
@@ -449,6 +449,7 @@ async function withXdebug(version = LatestSupportedPHPVersion3, options, xdebugO
|
|
|
449
449
|
// packages/php-wasm/node/src/lib/extensions/intl/with-intl.ts
|
|
450
450
|
import { LatestSupportedPHPVersion as LatestSupportedPHPVersion5, FSHelpers as FSHelpers2 } from "@php-wasm/universal";
|
|
451
451
|
import fs2 from "fs";
|
|
452
|
+
import path from "path";
|
|
452
453
|
|
|
453
454
|
// packages/php-wasm/node/src/lib/extensions/intl/get-intl-extension-module.ts
|
|
454
455
|
import { LatestSupportedPHPVersion as LatestSupportedPHPVersion4 } from "@php-wasm/universal";
|
|
@@ -482,7 +483,8 @@ async function withIntl(version = LatestSupportedPHPVersion5, options) {
|
|
|
482
483
|
const extensionPath = await getIntlExtensionModule(version);
|
|
483
484
|
const extension = fs2.readFileSync(extensionPath);
|
|
484
485
|
const dataName = "icu.dat";
|
|
485
|
-
const
|
|
486
|
+
const moduleDir = typeof __dirname !== "undefined" ? __dirname : import.meta.dirname;
|
|
487
|
+
const dataPath = path.join(moduleDir, "shared", dataName);
|
|
486
488
|
const ICUData = fs2.readFileSync(dataPath);
|
|
487
489
|
return {
|
|
488
490
|
...options,
|
|
@@ -692,15 +694,15 @@ function useHostFilesystem(php) {
|
|
|
692
694
|
}
|
|
693
695
|
php.chdir(process.cwd());
|
|
694
696
|
}
|
|
695
|
-
function statPathFollowSymlinks(
|
|
696
|
-
let stat = lstatSync2(
|
|
697
|
+
function statPathFollowSymlinks(path2) {
|
|
698
|
+
let stat = lstatSync2(path2);
|
|
697
699
|
if (stat.isSymbolicLink()) {
|
|
698
700
|
const fs4 = __require("fs");
|
|
699
|
-
let target =
|
|
701
|
+
let target = path2;
|
|
700
702
|
const seen = /* @__PURE__ */ new Set();
|
|
701
703
|
while (true) {
|
|
702
704
|
if (seen.has(target)) {
|
|
703
|
-
throw new Error(`Symlink loop detected: ${
|
|
705
|
+
throw new Error(`Symlink loop detected: ${path2}`);
|
|
704
706
|
}
|
|
705
707
|
seen.add(target);
|
|
706
708
|
const linkStat = lstatSync2(target);
|
|
@@ -738,24 +740,24 @@ var FileLockManagerForNode = class {
|
|
|
738
740
|
* @param op The whole file lock operation to perform.
|
|
739
741
|
* @returns True if the lock was granted, false otherwise.
|
|
740
742
|
*/
|
|
741
|
-
lockWholeFile(
|
|
742
|
-
if (this.locks.get(
|
|
743
|
+
lockWholeFile(path2, op) {
|
|
744
|
+
if (this.locks.get(path2) === void 0) {
|
|
743
745
|
if (op.type === "unlock") {
|
|
744
746
|
return true;
|
|
745
747
|
}
|
|
746
748
|
const maybeLock = FileLock.maybeCreate(
|
|
747
|
-
|
|
749
|
+
path2,
|
|
748
750
|
op.type,
|
|
749
751
|
this.nativeFlockSync
|
|
750
752
|
);
|
|
751
753
|
if (maybeLock === void 0) {
|
|
752
754
|
return false;
|
|
753
755
|
}
|
|
754
|
-
this.locks.set(
|
|
756
|
+
this.locks.set(path2, maybeLock);
|
|
755
757
|
}
|
|
756
|
-
const lock = this.locks.get(
|
|
758
|
+
const lock = this.locks.get(path2);
|
|
757
759
|
const result = lock.lockWholeFile(op);
|
|
758
|
-
this.forgetPathIfUnlocked(
|
|
760
|
+
this.forgetPathIfUnlocked(path2);
|
|
759
761
|
return result;
|
|
760
762
|
}
|
|
761
763
|
/**
|
|
@@ -766,22 +768,22 @@ var FileLockManagerForNode = class {
|
|
|
766
768
|
* @param requestedLock The byte range lock to perform.
|
|
767
769
|
* @returns True if the lock was granted, false otherwise.
|
|
768
770
|
*/
|
|
769
|
-
lockFileByteRange(
|
|
770
|
-
if (!this.locks.has(
|
|
771
|
+
lockFileByteRange(path2, requestedLock) {
|
|
772
|
+
if (!this.locks.has(path2)) {
|
|
771
773
|
if (requestedLock.type === "unlocked") {
|
|
772
774
|
return true;
|
|
773
775
|
}
|
|
774
776
|
const maybeLock = FileLock.maybeCreate(
|
|
775
|
-
|
|
777
|
+
path2,
|
|
776
778
|
requestedLock.type,
|
|
777
779
|
this.nativeFlockSync
|
|
778
780
|
);
|
|
779
781
|
if (maybeLock === void 0) {
|
|
780
782
|
return false;
|
|
781
783
|
}
|
|
782
|
-
this.locks.set(
|
|
784
|
+
this.locks.set(path2, maybeLock);
|
|
783
785
|
}
|
|
784
|
-
const lock = this.locks.get(
|
|
786
|
+
const lock = this.locks.get(path2);
|
|
785
787
|
return lock.lockFileByteRange(requestedLock);
|
|
786
788
|
}
|
|
787
789
|
/**
|
|
@@ -791,8 +793,8 @@ var FileLockManagerForNode = class {
|
|
|
791
793
|
* @param desiredLock The desired byte range lock.
|
|
792
794
|
* @returns The first conflicting byte range lock, or undefined if no conflicting lock exists.
|
|
793
795
|
*/
|
|
794
|
-
findFirstConflictingByteRangeLock(
|
|
795
|
-
const lock = this.locks.get(
|
|
796
|
+
findFirstConflictingByteRangeLock(path2, desiredLock) {
|
|
797
|
+
const lock = this.locks.get(path2);
|
|
796
798
|
if (lock === void 0) {
|
|
797
799
|
return void 0;
|
|
798
800
|
}
|
|
@@ -804,9 +806,9 @@ var FileLockManagerForNode = class {
|
|
|
804
806
|
* @param pid The process ID to release locks for.
|
|
805
807
|
*/
|
|
806
808
|
releaseLocksForProcess(pid) {
|
|
807
|
-
for (const [
|
|
809
|
+
for (const [path2, lock] of this.locks.entries()) {
|
|
808
810
|
lock.releaseLocksForProcess(pid);
|
|
809
|
-
this.forgetPathIfUnlocked(
|
|
811
|
+
this.forgetPathIfUnlocked(path2);
|
|
810
812
|
}
|
|
811
813
|
}
|
|
812
814
|
/**
|
|
@@ -829,14 +831,14 @@ var FileLockManagerForNode = class {
|
|
|
829
831
|
*
|
|
830
832
|
* @param path The path to the file to forget.
|
|
831
833
|
*/
|
|
832
|
-
forgetPathIfUnlocked(
|
|
833
|
-
const lock = this.locks.get(
|
|
834
|
+
forgetPathIfUnlocked(path2) {
|
|
835
|
+
const lock = this.locks.get(path2);
|
|
834
836
|
if (!lock) {
|
|
835
837
|
return;
|
|
836
838
|
}
|
|
837
839
|
if (lock.isUnlocked()) {
|
|
838
840
|
lock.dispose();
|
|
839
|
-
this.locks.delete(
|
|
841
|
+
this.locks.delete(path2);
|
|
840
842
|
}
|
|
841
843
|
}
|
|
842
844
|
};
|
|
@@ -849,10 +851,10 @@ var FileLock = class _FileLock {
|
|
|
849
851
|
* @param mode The type of lock to acquire
|
|
850
852
|
* @returns A FileLock instance if the lock was acquired, undefined otherwise
|
|
851
853
|
*/
|
|
852
|
-
static maybeCreate(
|
|
854
|
+
static maybeCreate(path2, mode, nativeFlockSync) {
|
|
853
855
|
let fd;
|
|
854
856
|
try {
|
|
855
|
-
fd = openSync(
|
|
857
|
+
fd = openSync(path2, "a+");
|
|
856
858
|
const flockFlags = mode === "exclusive" ? "exnb" : "shnb";
|
|
857
859
|
nativeFlockSync(fd, flockFlags);
|
|
858
860
|
const nativeLock = { fd, mode, nativeFlockSync };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@php-wasm/node",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.39",
|
|
4
4
|
"description": "PHP.wasm for Node.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"license": "GPL-2.0-or-later",
|
|
40
40
|
"types": "index.d.ts",
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "ba92e55e300abaadb95b3a89e598af2cd6676951",
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=20.18.3",
|
|
44
44
|
"npm": ">=10.1.0"
|
|
@@ -49,20 +49,20 @@
|
|
|
49
49
|
"wasm-feature-detect": "1.8.0",
|
|
50
50
|
"ws": "8.18.3",
|
|
51
51
|
"yargs": "17.7.2",
|
|
52
|
-
"@php-wasm/node-polyfills": "3.0.
|
|
53
|
-
"@php-wasm/universal": "3.0.
|
|
54
|
-
"@php-wasm/node-8-5": "3.0.
|
|
55
|
-
"@php-wasm/node-8-4": "3.0.
|
|
56
|
-
"@php-wasm/node-8-3": "3.0.
|
|
57
|
-
"@php-wasm/node-8-2": "3.0.
|
|
58
|
-
"@php-wasm/node-8-1": "3.0.
|
|
59
|
-
"@php-wasm/node-8-0": "3.0.
|
|
60
|
-
"@php-wasm/node-7-4": "3.0.
|
|
61
|
-
"@php-wasm/node-7-3": "3.0.
|
|
62
|
-
"@php-wasm/node-7-2": "3.0.
|
|
63
|
-
"@php-wasm/logger": "3.0.
|
|
64
|
-
"@php-wasm/util": "3.0.
|
|
65
|
-
"@wp-playground/common": "3.0.
|
|
52
|
+
"@php-wasm/node-polyfills": "3.0.39",
|
|
53
|
+
"@php-wasm/universal": "3.0.39",
|
|
54
|
+
"@php-wasm/node-8-5": "3.0.39",
|
|
55
|
+
"@php-wasm/node-8-4": "3.0.39",
|
|
56
|
+
"@php-wasm/node-8-3": "3.0.39",
|
|
57
|
+
"@php-wasm/node-8-2": "3.0.39",
|
|
58
|
+
"@php-wasm/node-8-1": "3.0.39",
|
|
59
|
+
"@php-wasm/node-8-0": "3.0.39",
|
|
60
|
+
"@php-wasm/node-7-4": "3.0.39",
|
|
61
|
+
"@php-wasm/node-7-3": "3.0.39",
|
|
62
|
+
"@php-wasm/node-7-2": "3.0.39",
|
|
63
|
+
"@php-wasm/logger": "3.0.39",
|
|
64
|
+
"@php-wasm/util": "3.0.39",
|
|
65
|
+
"@wp-playground/common": "3.0.39"
|
|
66
66
|
},
|
|
67
67
|
"packageManager": "npm@10.9.2",
|
|
68
68
|
"overrides": {
|