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.
Files changed (72) hide show
  1. package/dist/gs/builtin/type.js +1 -1
  2. package/dist/gs/builtin/type.js.map +1 -1
  3. package/dist/gs/os/dir.gs.js +41 -27
  4. package/dist/gs/os/dir.gs.js.map +1 -1
  5. package/dist/gs/os/exec.gs.js +1 -2
  6. package/dist/gs/os/exec.gs.js.map +1 -1
  7. package/dist/gs/os/exec_posix.gs.js +1 -1
  8. package/dist/gs/os/exec_posix.gs.js.map +1 -1
  9. package/dist/gs/os/file_constants_js.gs.js +71 -7
  10. package/dist/gs/os/file_constants_js.gs.js.map +1 -1
  11. package/dist/gs/os/file_js.gs.js +168 -24
  12. package/dist/gs/os/file_js.gs.js.map +1 -1
  13. package/dist/gs/os/file_posix_js.gs.js +75 -11
  14. package/dist/gs/os/file_posix_js.gs.js.map +1 -1
  15. package/dist/gs/os/file_unix_js.gs.d.ts +3 -3
  16. package/dist/gs/os/file_unix_js.gs.js +218 -21
  17. package/dist/gs/os/file_unix_js.gs.js.map +1 -1
  18. package/dist/gs/os/getwd_js.gs.js +19 -6
  19. package/dist/gs/os/getwd_js.gs.js.map +1 -1
  20. package/dist/gs/os/path.gs.js +3 -3
  21. package/dist/gs/os/path.gs.js.map +1 -1
  22. package/dist/gs/os/pidfd_js.gs.js +0 -3
  23. package/dist/gs/os/pidfd_js.gs.js.map +1 -1
  24. package/dist/gs/os/proc.gs.js +6 -3
  25. package/dist/gs/os/proc.gs.js.map +1 -1
  26. package/dist/gs/os/proc_js.gs.js +10 -5
  27. package/dist/gs/os/proc_js.gs.js.map +1 -1
  28. package/dist/gs/os/rawconn_js.gs.d.ts +6 -3
  29. package/dist/gs/os/rawconn_js.gs.js +16 -10
  30. package/dist/gs/os/rawconn_js.gs.js.map +1 -1
  31. package/dist/gs/os/removeall_js.gs.js +2 -4
  32. package/dist/gs/os/removeall_js.gs.js.map +1 -1
  33. package/dist/gs/os/root_js.gs.d.ts +4 -1
  34. package/dist/gs/os/root_js.gs.js +90 -40
  35. package/dist/gs/os/root_js.gs.js.map +1 -1
  36. package/dist/gs/os/root_noopenat.gs.js +13 -16
  37. package/dist/gs/os/root_noopenat.gs.js.map +1 -1
  38. package/dist/gs/os/stat_js.gs.js +40 -4
  39. package/dist/gs/os/stat_js.gs.js.map +1 -1
  40. package/dist/gs/os/stat_unix_js.gs.d.ts +1 -1
  41. package/dist/gs/os/stat_unix_js.gs.js +5 -10
  42. package/dist/gs/os/stat_unix_js.gs.js.map +1 -1
  43. package/dist/gs/os/tempfile.gs.d.ts +1 -1
  44. package/dist/gs/os/tempfile.gs.js +24 -7
  45. package/dist/gs/os/tempfile.gs.js.map +1 -1
  46. package/dist/gs/os/types_js.gs.d.ts +78 -1
  47. package/dist/gs/os/types_js.gs.js +464 -23
  48. package/dist/gs/os/types_js.gs.js.map +1 -1
  49. package/go.mod +2 -0
  50. package/gs/builtin/type.ts +1 -1
  51. package/gs/os/dir.gs.ts +40 -28
  52. package/gs/os/exec.gs.ts +2 -4
  53. package/gs/os/exec_posix.gs.ts +1 -2
  54. package/gs/os/file_constants_js.gs.ts +70 -8
  55. package/gs/os/file_js.gs.ts +156 -26
  56. package/gs/os/file_posix_js.gs.ts +69 -13
  57. package/gs/os/file_unix_js.gs.ts +212 -24
  58. package/gs/os/file_unix_js.test.ts +131 -0
  59. package/gs/os/getwd_js.gs.ts +18 -8
  60. package/gs/os/path.gs.ts +3 -4
  61. package/gs/os/pidfd_js.gs.ts +3 -8
  62. package/gs/os/proc.gs.ts +6 -4
  63. package/gs/os/proc_js.gs.ts +11 -8
  64. package/gs/os/rawconn_js.gs.ts +22 -14
  65. package/gs/os/removeall_js.gs.ts +3 -6
  66. package/gs/os/root_js.gs.ts +94 -42
  67. package/gs/os/root_noopenat.gs.ts +13 -20
  68. package/gs/os/stat_js.gs.ts +37 -6
  69. package/gs/os/stat_unix_js.gs.ts +6 -13
  70. package/gs/os/tempfile.gs.ts +27 -9
  71. package/gs/os/types_js.gs.ts +528 -26
  72. package/package.json +1 -1
@@ -1,25 +1,31 @@
1
- import { ErrUnimplemented } from "./error.gs.js";
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
- return ErrUnimplemented;
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
- return ErrUnimplemented;
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
- return ErrUnimplemented;
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,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,yDAAyD;AACzD,gEAAgE;AAEhE,MAAM,OAAO,OAAO;IACC;IAApB,YAAoB,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAEzC,kEAAkE;IAC3D,OAAO,CAAC,CAAgC;QAC9C,OAAO,gBAAgB,CAAA;IACxB,CAAC;IAED,sFAAsF;IAC/E,IAAI,CAAC,CAAmC;QAC9C,OAAO,gBAAgB,CAAA;IACxB,CAAC;IAED,qFAAqF;IAC9E,KAAK,CAAC,CAAmC;QAC/C,OAAO,gBAAgB,CAAA;IACxB,CAAC;CACD;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,IAAiB;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
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 { ErrUnimplemented } from "./error.gs.js";
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 ErrUnimplemented;
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,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,oDAAoD;AACpD,oEAAoE;AAEpE,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,gBAAgB,CAAA;AACxB,CAAC"}
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
- constructor();
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];
@@ -1,80 +1,130 @@
1
1
  import * as $ from "@goscript/builtin/index.js";
2
- import { ErrUnimplemented } from "./error.gs.js";
3
- // JavaScript-specific implementations for root filesystem operations
4
- // These functions stub operations that cannot be implemented in JavaScript
5
- // OpenInRoot opens the file name in the directory dir - stub implementation
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
- return [null, ErrUnimplemented];
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
- constructor() { }
12
- // Name returns the name of the directory presented to OpenRoot
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 ErrUnimplemented;
37
+ return null;
19
38
  }
20
- // Open opens the named file in the root for reading
21
39
  Open(name) {
22
- return [null, ErrUnimplemented];
40
+ return OpenInRoot(this.name, name);
23
41
  }
24
- // Create creates or truncates the named file in the root
25
42
  Create(name) {
26
- return [null, ErrUnimplemented];
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
- return [null, ErrUnimplemented];
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
- return [null, ErrUnimplemented];
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
- return ErrUnimplemented;
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
- return ErrUnimplemented;
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
- return [null, ErrUnimplemented];
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
- return [null, ErrUnimplemented];
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 stubFS();
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
- return [null, ErrUnimplemented];
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
- return [null, "", ErrUnimplemented];
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 false;
119
+ return isValidRootName(name);
73
120
  }
74
- // Internal stub filesystem
75
- class stubFS {
121
+ class rootFS {
122
+ root;
123
+ constructor(init) {
124
+ this.root = init?.root ?? new Root();
125
+ }
76
126
  Open(name) {
77
- return [null, ErrUnimplemented];
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":"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"}
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 { ErrUnimplemented } from "./error.gs.js";
2
- // Stub functions for JavaScript environment - these operations cannot be implemented properly
3
- // openRootNolog is OpenRoot - stub implementation
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 [null, ErrUnimplemented];
5
+ return OpenRoot(name);
6
6
  }
7
- // openRootInRoot is Root.OpenRoot - stub implementation
8
7
  export function openRootInRoot(r, name) {
9
- return [null, ErrUnimplemented];
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 [null, ErrUnimplemented];
11
+ return OpenRoot(name);
14
12
  }
15
- // rootOpenFileNolog is Root.OpenFile - stub implementation
16
13
  export function rootOpenFileNolog(r, name, flag, perm) {
17
- return [null, ErrUnimplemented];
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
- return [null, ErrUnimplemented];
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 ErrUnimplemented;
23
+ return r?.Mkdir(name, perm) ?? Mkdir(name, perm);
26
24
  }
27
- // rootRemove - stub implementation
28
25
  export function rootRemove(r, name) {
29
- return ErrUnimplemented;
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,EAAmB,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOlE,8FAA8F;AAE9F,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,CAAc,EAAE,IAAY;IAC1D,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB,CAAC,CAAc,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;IACzF,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,QAAQ,CAAC,CAAc,EAAE,IAAY,EAAE,KAAc;IACpE,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,CAAc,EAAE,IAAY,EAAE,IAAY;IACnE,OAAO,gBAAgB,CAAA;AACxB,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,UAAU,CAAC,CAAc,EAAE,IAAY;IACtD,OAAO,gBAAgB,CAAA;AACxB,CAAC"}
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"}
@@ -1,8 +1,26 @@
1
1
  import { ErrUnimplemented } from "./error.gs.js";
2
- // JavaScript-specific stubs for stat operations
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
- return [null, ErrUnimplemented];
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 [null, ErrUnimplemented];
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 [null, ErrUnimplemented];
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;AAIjD,gDAAgD;AAEhD,uDAAuD;AACvD,yDAAyD;AACzD,MAAM,UAAU,IAAI,CAAC,IAAY;IAChC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,wDAAwD;AACxD,wDAAwD;AACxD,0EAA0E;AAC1E,yDAAyD;AACzD,MAAM,UAAU,KAAK,CAAC,IAAY;IACjC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,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(fs: any, name: string): void;
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 { ErrUnimplemented } from "./error.gs.js";
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 [null, ErrUnimplemented];
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 [null, ErrUnimplemented];
6
+ return lstatPath(name);
11
7
  }
12
- // Additional compatibility exports
13
- export function fillFileStatFromSys(fs, name) {
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,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,oEAAoE;AACpE,oEAAoE;AAEpE,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AAChC,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,mBAAmB,CAAC,EAAO,EAAE,IAAY;IACxD,sBAAsB;AACvB,CAAC"}
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 "./types.gs.js";
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
- // joinPath joins directory and file paths - simplified implementation for JavaScript
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
- // CreateTemp creates a new temporary file in the directory dir.
21
- // Stubbed implementation for JavaScript environment.
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;AAGjD,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAY;IAChD,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,4CAA4C;IAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,8CAA8C;IAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;AACzB,CAAC;AAED,gEAAgE;AAChE,qDAAqD;AACrD,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,OAAe;IACrD,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;AACjC,CAAC;AAED,+CAA+C;AAC/C,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,OAAe;IACpD,OAAO,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;AAC/B,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
- constructor();
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;