goscript 0.0.81 → 0.0.83
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/dist/gs/builtin/type.js +1 -1
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/os/dir.gs.js +41 -27
- package/dist/gs/os/dir.gs.js.map +1 -1
- package/dist/gs/os/exec.gs.js +1 -2
- package/dist/gs/os/exec.gs.js.map +1 -1
- package/dist/gs/os/exec_posix.gs.js +1 -1
- package/dist/gs/os/exec_posix.gs.js.map +1 -1
- package/dist/gs/os/file_constants_js.gs.js +71 -7
- package/dist/gs/os/file_constants_js.gs.js.map +1 -1
- package/dist/gs/os/file_js.gs.js +168 -24
- package/dist/gs/os/file_js.gs.js.map +1 -1
- package/dist/gs/os/file_posix_js.gs.js +75 -11
- package/dist/gs/os/file_posix_js.gs.js.map +1 -1
- package/dist/gs/os/file_unix_js.gs.d.ts +3 -3
- package/dist/gs/os/file_unix_js.gs.js +218 -21
- package/dist/gs/os/file_unix_js.gs.js.map +1 -1
- package/dist/gs/os/getwd_js.gs.js +19 -6
- package/dist/gs/os/getwd_js.gs.js.map +1 -1
- package/dist/gs/os/path.gs.js +3 -3
- package/dist/gs/os/path.gs.js.map +1 -1
- package/dist/gs/os/pidfd_js.gs.js +0 -3
- package/dist/gs/os/pidfd_js.gs.js.map +1 -1
- package/dist/gs/os/proc.gs.js +6 -3
- package/dist/gs/os/proc.gs.js.map +1 -1
- package/dist/gs/os/proc_js.gs.js +10 -5
- package/dist/gs/os/proc_js.gs.js.map +1 -1
- package/dist/gs/os/rawconn_js.gs.d.ts +6 -3
- package/dist/gs/os/rawconn_js.gs.js +16 -10
- package/dist/gs/os/rawconn_js.gs.js.map +1 -1
- package/dist/gs/os/removeall_js.gs.js +2 -4
- package/dist/gs/os/removeall_js.gs.js.map +1 -1
- package/dist/gs/os/root_js.gs.d.ts +4 -1
- package/dist/gs/os/root_js.gs.js +90 -40
- package/dist/gs/os/root_js.gs.js.map +1 -1
- package/dist/gs/os/root_noopenat.gs.js +13 -16
- package/dist/gs/os/root_noopenat.gs.js.map +1 -1
- package/dist/gs/os/stat_js.gs.js +40 -4
- package/dist/gs/os/stat_js.gs.js.map +1 -1
- package/dist/gs/os/stat_unix_js.gs.d.ts +1 -1
- package/dist/gs/os/stat_unix_js.gs.js +5 -10
- package/dist/gs/os/stat_unix_js.gs.js.map +1 -1
- package/dist/gs/os/tempfile.gs.d.ts +1 -1
- package/dist/gs/os/tempfile.gs.js +24 -7
- package/dist/gs/os/tempfile.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.d.ts +78 -1
- package/dist/gs/os/types_js.gs.js +464 -23
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/go.mod +2 -0
- package/gs/builtin/type.ts +1 -1
- package/gs/os/dir.gs.ts +40 -28
- package/gs/os/exec.gs.ts +2 -4
- package/gs/os/exec_posix.gs.ts +1 -2
- package/gs/os/file_constants_js.gs.ts +70 -8
- package/gs/os/file_js.gs.ts +156 -26
- package/gs/os/file_posix_js.gs.ts +69 -13
- package/gs/os/file_unix_js.gs.ts +212 -24
- package/gs/os/file_unix_js.test.ts +131 -0
- package/gs/os/getwd_js.gs.ts +18 -8
- package/gs/os/path.gs.ts +3 -4
- package/gs/os/pidfd_js.gs.ts +3 -8
- package/gs/os/proc.gs.ts +6 -4
- package/gs/os/proc_js.gs.ts +11 -8
- package/gs/os/rawconn_js.gs.ts +22 -14
- package/gs/os/removeall_js.gs.ts +3 -6
- package/gs/os/root_js.gs.ts +94 -42
- package/gs/os/root_noopenat.gs.ts +13 -20
- package/gs/os/stat_js.gs.ts +37 -6
- package/gs/os/stat_unix_js.gs.ts +6 -13
- package/gs/os/tempfile.gs.ts +27 -9
- package/gs/os/types_js.gs.ts +528 -26
- package/package.json +1 -1
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
// JavaScript-specific stub for raw connection operations
|
|
3
|
-
// These operations are not available in JavaScript environments
|
|
1
|
+
import { ErrInvalid } from "./error.gs.js";
|
|
4
2
|
export class rawConn {
|
|
5
3
|
file;
|
|
6
4
|
constructor(file) {
|
|
7
5
|
this.file = file;
|
|
8
6
|
}
|
|
9
|
-
// Control calls fn with the file descriptor - stub implementation
|
|
10
7
|
Control(f) {
|
|
11
|
-
|
|
8
|
+
if (!this.file || this.file.fd < 0) {
|
|
9
|
+
return ErrInvalid;
|
|
10
|
+
}
|
|
11
|
+
f?.(this.file.fd);
|
|
12
|
+
return null;
|
|
12
13
|
}
|
|
13
|
-
// Read calls fn when the file descriptor is ready for reading - stub implementation
|
|
14
14
|
Read(f) {
|
|
15
|
-
|
|
15
|
+
if (!this.file || this.file.fd < 0) {
|
|
16
|
+
return ErrInvalid;
|
|
17
|
+
}
|
|
18
|
+
f?.(this.file.fd);
|
|
19
|
+
return null;
|
|
16
20
|
}
|
|
17
|
-
// Write calls fn when the file descriptor is ready for writing - stub implementation
|
|
18
21
|
Write(f) {
|
|
19
|
-
|
|
22
|
+
if (!this.file || this.file.fd < 0) {
|
|
23
|
+
return ErrInvalid;
|
|
24
|
+
}
|
|
25
|
+
f?.(this.file.fd);
|
|
26
|
+
return null;
|
|
20
27
|
}
|
|
21
28
|
}
|
|
22
|
-
// newRawConn creates a new raw connection - stub implementation
|
|
23
29
|
export function newRawConn(file) {
|
|
24
30
|
return new rawConn(file);
|
|
25
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawconn_js.gs.js","sourceRoot":"","sources":["../../../gs/os/rawconn_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rawconn_js.gs.js","sourceRoot":"","sources":["../../../gs/os/rawconn_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C,MAAM,OAAO,OAAO;IACC;IAApB,YAAoB,IAAwB;QAAxB,SAAI,GAAJ,IAAI,CAAoB;IAAG,CAAC;IAEzC,OAAO,CAAC,CAAgC;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,IAAI,CAAC,CAAmC;QAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,KAAK,CAAC,CAAmC;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,UAAU,CAAA;QAClB,CAAC;QACD,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC;CACD;AAED,MAAM,UAAU,UAAU,CAAC,IAAwB;IAClD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
// JavaScript-specific stub for removeall operations
|
|
3
|
-
// These operations cannot be implemented in JavaScript environments
|
|
1
|
+
import { RemoveAll as removeAllPath } from "./file_js.gs.js";
|
|
4
2
|
export function RemoveAll(path) {
|
|
5
|
-
return
|
|
3
|
+
return removeAllPath(path);
|
|
6
4
|
}
|
|
7
5
|
//# sourceMappingURL=removeall_js.gs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removeall_js.gs.js","sourceRoot":"","sources":["../../../gs/os/removeall_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"removeall_js.gs.js","sourceRoot":"","sources":["../../../gs/os/removeall_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -3,7 +3,10 @@ import { File } from "./types_js.gs.js";
|
|
|
3
3
|
import * as fs from "@goscript/io/fs/index.js";
|
|
4
4
|
export declare function OpenInRoot(dir: string, name: string): [File | null, $.GoError];
|
|
5
5
|
export declare class Root {
|
|
6
|
-
|
|
6
|
+
name: string;
|
|
7
|
+
constructor(init?: Partial<{
|
|
8
|
+
name?: string;
|
|
9
|
+
}>);
|
|
7
10
|
Name(): string;
|
|
8
11
|
Close(): $.GoError;
|
|
9
12
|
Open(name: string): [File | null, $.GoError];
|
package/dist/gs/os/root_js.gs.js
CHANGED
|
@@ -1,80 +1,130 @@
|
|
|
1
1
|
import * as $ from "@goscript/builtin/index.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { ErrInvalid } from "./error.gs.js";
|
|
3
|
+
import { Create, Mkdir, Open, OpenFile, Remove } from "./file_js.gs.js";
|
|
4
|
+
import { Lstat as lstatPath, Stat as statPath } from "./stat_js.gs.js";
|
|
5
|
+
import { ValidPath } from "@goscript/io/fs/index.js";
|
|
6
|
+
function isValidRootName(name) {
|
|
7
|
+
if (name === ".") {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
return ValidPath(name);
|
|
11
|
+
}
|
|
12
|
+
function joinRootPath(dir, name) {
|
|
13
|
+
if (!isValidRootName(name)) {
|
|
14
|
+
return ["", ErrInvalid];
|
|
15
|
+
}
|
|
16
|
+
if (name === ".") {
|
|
17
|
+
return [dir, null];
|
|
18
|
+
}
|
|
19
|
+
return [dir.replace(/\/+$/, "") + "/" + name, null];
|
|
20
|
+
}
|
|
6
21
|
export function OpenInRoot(dir, name) {
|
|
7
|
-
|
|
22
|
+
const [path, err] = joinRootPath(dir, name);
|
|
23
|
+
if (err !== null) {
|
|
24
|
+
return [null, err];
|
|
25
|
+
}
|
|
26
|
+
return Open(path);
|
|
8
27
|
}
|
|
9
|
-
// Root represents a root filesystem - stub implementation
|
|
10
28
|
export class Root {
|
|
11
|
-
|
|
12
|
-
|
|
29
|
+
name;
|
|
30
|
+
constructor(init) {
|
|
31
|
+
this.name = init?.name ?? ".";
|
|
32
|
+
}
|
|
13
33
|
Name() {
|
|
14
|
-
return
|
|
34
|
+
return this.name;
|
|
15
35
|
}
|
|
16
|
-
// Close closes the Root
|
|
17
36
|
Close() {
|
|
18
|
-
return
|
|
37
|
+
return null;
|
|
19
38
|
}
|
|
20
|
-
// Open opens the named file in the root for reading
|
|
21
39
|
Open(name) {
|
|
22
|
-
return
|
|
40
|
+
return OpenInRoot(this.name, name);
|
|
23
41
|
}
|
|
24
|
-
// Create creates or truncates the named file in the root
|
|
25
42
|
Create(name) {
|
|
26
|
-
|
|
43
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
44
|
+
if (err !== null) {
|
|
45
|
+
return [null, err];
|
|
46
|
+
}
|
|
47
|
+
return Create(path);
|
|
27
48
|
}
|
|
28
|
-
// OpenFile opens the named file in the root
|
|
29
49
|
OpenFile(name, flag, perm) {
|
|
30
|
-
|
|
50
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
51
|
+
if (err !== null) {
|
|
52
|
+
return [null, err];
|
|
53
|
+
}
|
|
54
|
+
return OpenFile(path, flag, perm);
|
|
31
55
|
}
|
|
32
|
-
// OpenRoot opens the named directory in the root
|
|
33
56
|
OpenRoot(name) {
|
|
34
|
-
|
|
57
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
58
|
+
if (err !== null) {
|
|
59
|
+
return [null, err];
|
|
60
|
+
}
|
|
61
|
+
return OpenRoot(path);
|
|
35
62
|
}
|
|
36
|
-
// Mkdir creates a new directory in the root
|
|
37
63
|
Mkdir(name, perm) {
|
|
38
|
-
|
|
64
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
65
|
+
if (err !== null) {
|
|
66
|
+
return err;
|
|
67
|
+
}
|
|
68
|
+
return Mkdir(path, perm);
|
|
39
69
|
}
|
|
40
|
-
// Remove removes the named file or directory in the root
|
|
41
70
|
Remove(name) {
|
|
42
|
-
|
|
71
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
72
|
+
if (err !== null) {
|
|
73
|
+
return err;
|
|
74
|
+
}
|
|
75
|
+
return Remove(path);
|
|
43
76
|
}
|
|
44
|
-
// Stat returns a FileInfo describing the named file in the root
|
|
45
77
|
Stat(name) {
|
|
46
|
-
|
|
78
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
79
|
+
if (err !== null) {
|
|
80
|
+
return [null, err];
|
|
81
|
+
}
|
|
82
|
+
return statPath(path);
|
|
47
83
|
}
|
|
48
|
-
// Lstat returns a FileInfo describing the named file in the root
|
|
49
84
|
Lstat(name) {
|
|
50
|
-
|
|
85
|
+
const [path, err] = joinRootPath(this.name, name);
|
|
86
|
+
if (err !== null) {
|
|
87
|
+
return [null, err];
|
|
88
|
+
}
|
|
89
|
+
return lstatPath(path);
|
|
51
90
|
}
|
|
52
|
-
// FS returns a file system for the tree of files in the root
|
|
53
91
|
FS() {
|
|
54
|
-
return new
|
|
92
|
+
return new rootFS({ root: this });
|
|
55
93
|
}
|
|
56
|
-
// Register this type with the runtime type system
|
|
57
94
|
static __typeInfo = $.registerStructType('Root', new Root(), [
|
|
58
95
|
{ name: "Name", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] },
|
|
59
96
|
{ name: "Close", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }
|
|
60
|
-
], Root, {});
|
|
97
|
+
], Root, { "name": { kind: $.TypeKind.Basic, name: "string" } });
|
|
61
98
|
}
|
|
62
|
-
// OpenRoot opens a root filesystem - stub implementation
|
|
63
99
|
export function OpenRoot(name) {
|
|
64
|
-
|
|
100
|
+
const [info, err] = statPath(name);
|
|
101
|
+
if (err !== null) {
|
|
102
|
+
return [null, err];
|
|
103
|
+
}
|
|
104
|
+
if (!info?.IsDir()) {
|
|
105
|
+
return [null, ErrInvalid];
|
|
106
|
+
}
|
|
107
|
+
return [new Root({ name }), null];
|
|
65
108
|
}
|
|
66
|
-
// splitPathInRoot splits a path in root - stub implementation
|
|
67
109
|
export function splitPathInRoot(s, prefix, suffix) {
|
|
68
|
-
|
|
110
|
+
if (!isValidRootName(s)) {
|
|
111
|
+
return [null, "", ErrInvalid];
|
|
112
|
+
}
|
|
113
|
+
const parts = s === "." ? [] : s.split("/").filter((part) => part !== "");
|
|
114
|
+
const head = $.arrayToSlice(parts.slice(0, Math.max(0, parts.length - 1)));
|
|
115
|
+
const tail = parts.length === 0 ? "." : parts[parts.length - 1];
|
|
116
|
+
return [head, tail, null];
|
|
69
117
|
}
|
|
70
|
-
// isValidRootFSPath checks if a path is valid for root filesystem - stub implementation
|
|
71
118
|
export function isValidRootFSPath(name) {
|
|
72
|
-
return
|
|
119
|
+
return isValidRootName(name);
|
|
73
120
|
}
|
|
74
|
-
|
|
75
|
-
|
|
121
|
+
class rootFS {
|
|
122
|
+
root;
|
|
123
|
+
constructor(init) {
|
|
124
|
+
this.root = init?.root ?? new Root();
|
|
125
|
+
}
|
|
76
126
|
Open(name) {
|
|
77
|
-
return
|
|
127
|
+
return this.root.Open(name);
|
|
78
128
|
}
|
|
79
129
|
}
|
|
80
130
|
//# sourceMappingURL=root_js.gs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root_js.gs.js","sourceRoot":"","sources":["../../../gs/os/root_js.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"root_js.gs.js","sourceRoot":"","sources":["../../../gs/os/root_js.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIvE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEpD,SAAS,eAAe,CAAC,IAAY;IACpC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,CAAA;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,IAAY;IAC9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY;IACnD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC3C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,OAAO,IAAI;IACT,IAAI,CAAQ;IAEnB,YAAY,IAA+B;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,CAAA;IAC9B,CAAC;IAEM,IAAI;QACV,OAAO,IAAI,CAAC,IAAI,CAAA;IACjB,CAAC;IAEM,KAAK;QACX,OAAO,IAAI,CAAA;IACZ,CAAC;IAEM,IAAI,CAAC,IAAY;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAEM,MAAM,CAAC,IAAY;QACzB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAEM,QAAQ,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY;QACvD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC;IAEM,QAAQ,CAAC,IAAY;QAC3B,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,IAAY,EAAE,IAAY;QACtC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,GAAG,CAAA;QACX,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACzB,CAAC;IAEM,MAAM,CAAC,IAAY;QACzB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,GAAG,CAAA;QACX,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAEM,IAAI,CAAC,IAAY;QACvB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,IAAY;QACxB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IAEM,EAAE;QACR,OAAO,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,kBAAkB,CACvC,MAAM,EACN,IAAI,IAAI,EAAE,EACV;QACC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE;QAC3F,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;KAC1M,EACD,IAAI,EACJ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CACtD,CAAC;;AAKH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACpC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,MAA8B,EAAE,MAA8B;IACxG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAA;IAC9B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAS,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAClF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC/D,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,MAAM;IACJ,IAAI,CAAM;IAEjB,YAAY,IAA6B;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAA;IACrC,CAAC;IAEM,IAAI,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;CACD"}
|
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Mkdir, OpenFile, Remove } from "./file_js.gs.js";
|
|
2
|
+
import { OpenRoot } from "./root_js.gs.js";
|
|
3
|
+
import { Lstat, Stat } from "./stat_js.gs.js";
|
|
4
4
|
export function openRootNolog(name) {
|
|
5
|
-
return
|
|
5
|
+
return OpenRoot(name);
|
|
6
6
|
}
|
|
7
|
-
// openRootInRoot is Root.OpenRoot - stub implementation
|
|
8
7
|
export function openRootInRoot(r, name) {
|
|
9
|
-
return [null,
|
|
8
|
+
return r?.OpenRoot(name) ?? [null, null];
|
|
10
9
|
}
|
|
11
|
-
// newRoot returns a new Root - stub implementation
|
|
12
10
|
export function newRoot(name) {
|
|
13
|
-
return
|
|
11
|
+
return OpenRoot(name);
|
|
14
12
|
}
|
|
15
|
-
// rootOpenFileNolog is Root.OpenFile - stub implementation
|
|
16
13
|
export function rootOpenFileNolog(r, name, flag, perm) {
|
|
17
|
-
return
|
|
14
|
+
return r?.OpenFile(name, flag, perm) ?? OpenFile(name, flag, perm);
|
|
18
15
|
}
|
|
19
|
-
// rootStat - stub implementation
|
|
20
16
|
export function rootStat(r, name, lstat) {
|
|
21
|
-
|
|
17
|
+
if (r !== null) {
|
|
18
|
+
return lstat ? r.Lstat(name) : r.Stat(name);
|
|
19
|
+
}
|
|
20
|
+
return lstat ? Lstat(name) : Stat(name);
|
|
22
21
|
}
|
|
23
|
-
// rootMkdir - stub implementation
|
|
24
22
|
export function rootMkdir(r, name, perm) {
|
|
25
|
-
return
|
|
23
|
+
return r?.Mkdir(name, perm) ?? Mkdir(name, perm);
|
|
26
24
|
}
|
|
27
|
-
// rootRemove - stub implementation
|
|
28
25
|
export function rootRemove(r, name) {
|
|
29
|
-
return
|
|
26
|
+
return r?.Remove(name) ?? Remove(name);
|
|
30
27
|
}
|
|
31
28
|
//# sourceMappingURL=root_noopenat.gs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root_noopenat.gs.js","sourceRoot":"","sources":["../../../gs/os/root_noopenat.gs.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"root_noopenat.gs.js","sourceRoot":"","sources":["../../../gs/os/root_noopenat.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAQ,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAK9C,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAc,EAAE,IAAY;IAC1D,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAc,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;IACzF,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAc,EAAE,IAAY,EAAE,KAAc;IACpE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAc,EAAE,IAAY,EAAE,IAAY;IACnE,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAc,EAAE,IAAY;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC"}
|
package/dist/gs/os/stat_js.gs.js
CHANGED
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import { ErrUnimplemented } from "./error.gs.js";
|
|
2
|
-
|
|
2
|
+
import { createFileInfo, getDeno, getNodeFS, newHostError } from "./types_js.gs.js";
|
|
3
3
|
// Stat returns a [FileInfo] describing the named file.
|
|
4
4
|
// If there is an error, it will be of type [*PathError].
|
|
5
5
|
export function Stat(name) {
|
|
6
|
+
const denoObj = getDeno();
|
|
7
|
+
if (denoObj?.statSync) {
|
|
8
|
+
try {
|
|
9
|
+
return [createFileInfo(name, denoObj.statSync(name)), null];
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
return [null, newHostError(err)];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const nodeFS = getNodeFS();
|
|
16
|
+
if (nodeFS?.statSync) {
|
|
17
|
+
try {
|
|
18
|
+
return [createFileInfo(name, nodeFS.statSync(name)), null];
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return [null, newHostError(err)];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
6
24
|
return [null, ErrUnimplemented];
|
|
7
25
|
}
|
|
8
26
|
// Lstat returns a [FileInfo] describing the named file.
|
|
@@ -10,14 +28,32 @@ export function Stat(name) {
|
|
|
10
28
|
// describes the symbolic link. Lstat makes no attempt to follow the link.
|
|
11
29
|
// If there is an error, it will be of type [*PathError].
|
|
12
30
|
export function Lstat(name) {
|
|
13
|
-
|
|
31
|
+
const denoObj = getDeno();
|
|
32
|
+
if (denoObj?.lstatSync) {
|
|
33
|
+
try {
|
|
34
|
+
return [createFileInfo(name, denoObj.lstatSync(name)), null];
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
return [null, newHostError(err)];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const nodeFS = getNodeFS();
|
|
41
|
+
if (nodeFS?.lstatSync) {
|
|
42
|
+
try {
|
|
43
|
+
return [createFileInfo(name, nodeFS.lstatSync(name)), null];
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
return [null, newHostError(err)];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return Stat(name);
|
|
14
50
|
}
|
|
15
51
|
// statNolog is the same as Stat, for use in DirFS.
|
|
16
52
|
export function statNolog(name) {
|
|
17
|
-
return
|
|
53
|
+
return Stat(name);
|
|
18
54
|
}
|
|
19
55
|
// lstatNolog is the same as Lstat, for use in DirFS.
|
|
20
56
|
export function lstatNolog(name) {
|
|
21
|
-
return
|
|
57
|
+
return Lstat(name);
|
|
22
58
|
}
|
|
23
59
|
//# sourceMappingURL=stat_js.gs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat_js.gs.js","sourceRoot":"","sources":["../../../gs/os/stat_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"stat_js.gs.js","sourceRoot":"","sources":["../../../gs/os/stat_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIpF,uDAAuD;AACvD,yDAAyD;AACzD,MAAM,UAAU,IAAI,CAAC,IAAY;IAChC,MAAM,OAAO,GAAG,OAAO,EAAE,CAAA;IACzB,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,wDAAwD;AACxD,wDAAwD;AACxD,0EAA0E;AAC1E,yDAAyD;AACzD,MAAM,UAAU,KAAK,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,OAAO,EAAE,CAAA;IACzB,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AAClB,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import * as $ from "@goscript/builtin/index.js";
|
|
|
2
2
|
import * as fs from "@goscript/io/fs/index.js";
|
|
3
3
|
export declare function statNolog(name: string): [fs.FileInfo | null, $.GoError];
|
|
4
4
|
export declare function lstatNolog(name: string): [fs.FileInfo | null, $.GoError];
|
|
5
|
-
export declare function fillFileStatFromSys(
|
|
5
|
+
export declare function fillFileStatFromSys(fileInfo: any, name: string): void;
|
|
6
6
|
export interface fileStat {
|
|
7
7
|
sys: any;
|
|
8
8
|
}
|
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
// JavaScript-specific stub implementations for Unix stat operations
|
|
3
|
-
// These operations cannot be implemented in JavaScript environments
|
|
4
|
-
// statNolog stats a file with no test logging - stub implementation
|
|
1
|
+
import { lstatNolog as lstatPath, statNolog as statPath } from "./stat_js.gs.js";
|
|
5
2
|
export function statNolog(name) {
|
|
6
|
-
return
|
|
3
|
+
return statPath(name);
|
|
7
4
|
}
|
|
8
|
-
// lstatNolog lstats a file with no test logging - stub implementation
|
|
9
5
|
export function lstatNolog(name) {
|
|
10
|
-
return
|
|
6
|
+
return lstatPath(name);
|
|
11
7
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// No-op in JavaScript
|
|
8
|
+
export function fillFileStatFromSys(fileInfo, name) {
|
|
9
|
+
// No-op in JavaScript.
|
|
15
10
|
}
|
|
16
11
|
//# sourceMappingURL=stat_unix_js.gs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stat_unix_js.gs.js","sourceRoot":"","sources":["../../../gs/os/stat_unix_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stat_unix_js.gs.js","sourceRoot":"","sources":["../../../gs/os/stat_unix_js.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIjF,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAa,EAAE,IAAY;IAC9D,uBAAuB;AACxB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as $ from "@goscript/builtin/index.js";
|
|
2
|
-
import { File } from "./
|
|
2
|
+
import { File } from "./types_js.gs.js";
|
|
3
3
|
export declare function joinPath(dir: string, file: string): string;
|
|
4
4
|
export declare function CreateTemp(dir: string, pattern: string): [File | null, $.GoError];
|
|
5
5
|
export declare function MkdirTemp(dir: string, pattern: string): [string, $.GoError];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ErrUnimplemented } from "./error.gs.js";
|
|
2
|
-
|
|
2
|
+
import { TempDir } from "./file_constants_js.gs.js";
|
|
3
|
+
import { Create, Mkdir } from "./file_js.gs.js";
|
|
3
4
|
export function joinPath(dir, file) {
|
|
4
5
|
if (dir === "" || dir === ".") {
|
|
5
6
|
return file;
|
|
@@ -7,24 +8,40 @@ export function joinPath(dir, file) {
|
|
|
7
8
|
if (file === "") {
|
|
8
9
|
return dir;
|
|
9
10
|
}
|
|
10
|
-
// Remove trailing slash from dir if present
|
|
11
11
|
if (dir.endsWith("/")) {
|
|
12
12
|
dir = dir.slice(0, -1);
|
|
13
13
|
}
|
|
14
|
-
// Remove leading slash from file if present
|
|
15
14
|
if (file.startsWith("/")) {
|
|
16
15
|
file = file.slice(1);
|
|
17
16
|
}
|
|
18
17
|
return dir + "/" + file;
|
|
19
18
|
}
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
function nextTempPath(dir, pattern) {
|
|
20
|
+
const baseDir = dir === "" ? TempDir() : dir;
|
|
21
|
+
const suffix = Math.random().toString(36).slice(2, 10) + Date.now().toString(36);
|
|
22
|
+
const name = pattern.includes("*") ? pattern.replace("*", suffix) : pattern + suffix;
|
|
23
|
+
return joinPath(baseDir, name);
|
|
24
|
+
}
|
|
22
25
|
export function CreateTemp(dir, pattern) {
|
|
26
|
+
const template = pattern === "" ? "tmp-*" : pattern;
|
|
27
|
+
for (let i = 0; i < 16; i++) {
|
|
28
|
+
const path = nextTempPath(dir, template);
|
|
29
|
+
const [file, err] = Create(path);
|
|
30
|
+
if (err === null) {
|
|
31
|
+
return [file, null];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
23
34
|
return [null, ErrUnimplemented];
|
|
24
35
|
}
|
|
25
|
-
// MkdirTemp creates a new temporary directory.
|
|
26
|
-
// Stubbed implementation for JavaScript environment.
|
|
27
36
|
export function MkdirTemp(dir, pattern) {
|
|
37
|
+
const template = pattern === "" ? "tmp-*" : pattern;
|
|
38
|
+
for (let i = 0; i < 16; i++) {
|
|
39
|
+
const path = nextTempPath(dir, template);
|
|
40
|
+
const err = Mkdir(path, 0o700);
|
|
41
|
+
if (err === null) {
|
|
42
|
+
return [path, null];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
28
45
|
return ["", ErrUnimplemented];
|
|
29
46
|
}
|
|
30
47
|
//# sourceMappingURL=tempfile.gs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempfile.gs.js","sourceRoot":"","sources":["../../../gs/os/tempfile.gs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tempfile.gs.js","sourceRoot":"","sources":["../../../gs/os/tempfile.gs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,72 @@ import * as fs from "@goscript/io/fs/index.js";
|
|
|
3
3
|
import * as io from "@goscript/io/index.js";
|
|
4
4
|
import * as time from "@goscript/time/index.js";
|
|
5
5
|
import * as syscall from "@goscript/syscall/index.js";
|
|
6
|
+
export type NodeFSModule = {
|
|
7
|
+
readSync(fd: number, buffer: Uint8Array, offset?: number, length?: number, position?: number | null): number;
|
|
8
|
+
writeSync(fd: number, buffer: Uint8Array, offset?: number, length?: number, position?: number | null): number;
|
|
9
|
+
closeSync?(fd: number): void;
|
|
10
|
+
fstatSync?(fd: number): HostStatLike;
|
|
11
|
+
fsyncSync?(fd: number): void;
|
|
12
|
+
ftruncateSync?(fd: number, len?: number): void;
|
|
13
|
+
openSync?(path: string, flags: number | string, mode?: number): number;
|
|
14
|
+
chmodSync?(path: string, mode: number): void;
|
|
15
|
+
chownSync?(path: string, uid: number, gid: number): void;
|
|
16
|
+
lchownSync?(path: string, uid: number, gid: number): void;
|
|
17
|
+
linkSync?(existingPath: string, newPath: string): void;
|
|
18
|
+
lstatSync?(path: string): HostStatLike;
|
|
19
|
+
mkdirSync?(path: string, options?: number | {
|
|
20
|
+
mode?: number;
|
|
21
|
+
recursive?: boolean;
|
|
22
|
+
}): void;
|
|
23
|
+
readFileSync?(path: string): Uint8Array;
|
|
24
|
+
readdirSync?(path: string, options?: {
|
|
25
|
+
withFileTypes?: boolean;
|
|
26
|
+
}): any[];
|
|
27
|
+
readlinkSync?(path: string): string;
|
|
28
|
+
renameSync?(oldPath: string, newPath: string): void;
|
|
29
|
+
rmSync?(path: string, options?: {
|
|
30
|
+
force?: boolean;
|
|
31
|
+
recursive?: boolean;
|
|
32
|
+
}): void;
|
|
33
|
+
rmdirSync?(path: string): void;
|
|
34
|
+
statSync?(path: string): HostStatLike;
|
|
35
|
+
symlinkSync?(target: string, path: string): void;
|
|
36
|
+
truncateSync?(path: string, len?: number): void;
|
|
37
|
+
unlinkSync?(path: string): void;
|
|
38
|
+
utimesSync?(path: string, atime: Date | number, mtime: Date | number): void;
|
|
39
|
+
writeFileSync?(path: string, data: Uint8Array, options?: {
|
|
40
|
+
mode?: number;
|
|
41
|
+
}): void;
|
|
42
|
+
};
|
|
43
|
+
export type DenoStream = {
|
|
44
|
+
readSync?(buffer: Uint8Array): number | null;
|
|
45
|
+
writeSync?(buffer: Uint8Array): number;
|
|
46
|
+
};
|
|
47
|
+
export type DenoFileLike = DenoStream & {
|
|
48
|
+
close?(): void;
|
|
49
|
+
rid?: number;
|
|
50
|
+
seekSync?(offset: number, whence: number): number;
|
|
51
|
+
syncSync?(): void;
|
|
52
|
+
statSync?(): HostStatLike;
|
|
53
|
+
truncateSync?(len?: number): void;
|
|
54
|
+
};
|
|
55
|
+
export type HostStatLike = {
|
|
56
|
+
isDirectory(): boolean;
|
|
57
|
+
isSymbolicLink?(): boolean;
|
|
58
|
+
mode?: number;
|
|
59
|
+
mtime?: Date | null;
|
|
60
|
+
mtimeMs?: number;
|
|
61
|
+
size?: number;
|
|
62
|
+
};
|
|
63
|
+
export declare function newHostError(err: unknown): $.GoError;
|
|
64
|
+
export declare function getDynamicRequire(): ((specifier: string) => unknown) | null;
|
|
65
|
+
export declare function getNodeFS(): NodeFSModule | null;
|
|
66
|
+
export declare function getDeno(): any | null;
|
|
67
|
+
export declare function getPlatform(): string;
|
|
68
|
+
export declare function getEnv(name: string): string;
|
|
69
|
+
export declare function getDenoStream(fd: number): DenoStream | null;
|
|
70
|
+
export declare function createFileInfo(name: string, stat: HostStatLike): fs.FileInfo;
|
|
71
|
+
export declare function createHostFile(name: string, fd?: number, handle?: DenoFileLike | null): File;
|
|
6
72
|
export type Time = time.Time;
|
|
7
73
|
export type FileInfo = fs.FileInfo;
|
|
8
74
|
export type FileMode = fs.FileMode;
|
|
@@ -14,11 +80,17 @@ export declare function Getpagesize(): number;
|
|
|
14
80
|
export declare class File {
|
|
15
81
|
get file(): file | null;
|
|
16
82
|
set file(value: file | null);
|
|
83
|
+
name: string;
|
|
84
|
+
closed: boolean;
|
|
85
|
+
fd: number;
|
|
17
86
|
_fields: {
|
|
18
87
|
file: $.VarRef<file | null>;
|
|
19
88
|
};
|
|
20
89
|
constructor(init?: Partial<{
|
|
90
|
+
closed?: boolean;
|
|
91
|
+
fd?: number;
|
|
21
92
|
file?: file | null;
|
|
93
|
+
name?: string;
|
|
22
94
|
}>);
|
|
23
95
|
clone(): File;
|
|
24
96
|
Readdir(n: number): [$.Slice<fs.FileInfo>, $.GoError];
|
|
@@ -51,7 +123,12 @@ export declare class File {
|
|
|
51
123
|
static __typeInfo: $.StructTypeInfo;
|
|
52
124
|
}
|
|
53
125
|
declare class file {
|
|
54
|
-
|
|
126
|
+
handle: DenoFileLike | null;
|
|
127
|
+
path: string;
|
|
128
|
+
constructor(init?: Partial<{
|
|
129
|
+
handle?: DenoFileLike | null;
|
|
130
|
+
path?: string;
|
|
131
|
+
}>);
|
|
55
132
|
}
|
|
56
133
|
type readdirMode = number;
|
|
57
134
|
export declare let ModeDir: fs.FileMode;
|