goscript 0.0.28 → 0.0.30

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 (74) hide show
  1. package/compiler/analysis.go +41 -2
  2. package/compiler/compiler.go +8 -1
  3. package/compiler/expr-call.go +87 -15
  4. package/compiler/expr-selector.go +100 -0
  5. package/compiler/spec-value.go +79 -8
  6. package/compiler/spec.go +236 -0
  7. package/dist/gs/builtin/builtin.d.ts +1 -0
  8. package/dist/gs/builtin/builtin.js +11 -0
  9. package/dist/gs/builtin/builtin.js.map +1 -1
  10. package/dist/gs/internal/oserror/errors.d.ts +6 -0
  11. package/dist/gs/internal/oserror/errors.js +7 -0
  12. package/dist/gs/internal/oserror/errors.js.map +1 -0
  13. package/dist/gs/internal/oserror/index.d.ts +1 -0
  14. package/dist/gs/internal/oserror/index.js +2 -0
  15. package/dist/gs/internal/oserror/index.js.map +1 -0
  16. package/dist/gs/io/fs/format.d.ts +3 -0
  17. package/dist/gs/io/fs/format.js +56 -0
  18. package/dist/gs/io/fs/format.js.map +1 -0
  19. package/dist/gs/io/fs/fs.d.ts +79 -0
  20. package/dist/gs/io/fs/fs.js +200 -0
  21. package/dist/gs/io/fs/fs.js.map +1 -0
  22. package/dist/gs/io/fs/glob.d.ts +10 -0
  23. package/dist/gs/io/fs/glob.js +141 -0
  24. package/dist/gs/io/fs/glob.js.map +1 -0
  25. package/dist/gs/io/fs/index.d.ts +8 -0
  26. package/dist/gs/io/fs/index.js +9 -0
  27. package/dist/gs/io/fs/index.js.map +1 -0
  28. package/dist/gs/io/fs/readdir.d.ts +7 -0
  29. package/dist/gs/io/fs/readdir.js +152 -0
  30. package/dist/gs/io/fs/readdir.js.map +1 -0
  31. package/dist/gs/io/fs/readfile.d.ts +6 -0
  32. package/dist/gs/io/fs/readfile.js +118 -0
  33. package/dist/gs/io/fs/readfile.js.map +1 -0
  34. package/dist/gs/io/fs/stat.d.ts +6 -0
  35. package/dist/gs/io/fs/stat.js +87 -0
  36. package/dist/gs/io/fs/stat.js.map +1 -0
  37. package/dist/gs/io/fs/sub.d.ts +6 -0
  38. package/dist/gs/io/fs/sub.js +172 -0
  39. package/dist/gs/io/fs/sub.js.map +1 -0
  40. package/dist/gs/io/fs/walk.d.ts +7 -0
  41. package/dist/gs/io/fs/walk.js +76 -0
  42. package/dist/gs/io/fs/walk.js.map +1 -0
  43. package/dist/gs/path/index.d.ts +2 -0
  44. package/dist/gs/path/index.js +3 -0
  45. package/dist/gs/path/index.js.map +1 -0
  46. package/dist/gs/path/match.d.ts +6 -0
  47. package/dist/gs/path/match.js +281 -0
  48. package/dist/gs/path/match.js.map +1 -0
  49. package/dist/gs/path/path.d.ts +7 -0
  50. package/dist/gs/path/path.js +256 -0
  51. package/dist/gs/path/path.js.map +1 -0
  52. package/dist/gs/time/time.d.ts +11 -2
  53. package/dist/gs/time/time.js +337 -12
  54. package/dist/gs/time/time.js.map +1 -1
  55. package/gs/builtin/builtin.ts +13 -0
  56. package/gs/internal/oserror/errors.ts +14 -0
  57. package/gs/internal/oserror/index.ts +1 -0
  58. package/gs/io/fs/format.ts +65 -0
  59. package/gs/io/fs/fs.ts +359 -0
  60. package/gs/io/fs/glob.ts +167 -0
  61. package/gs/io/fs/godoc.txt +35 -0
  62. package/gs/io/fs/index.ts +8 -0
  63. package/gs/io/fs/readdir.ts +126 -0
  64. package/gs/io/fs/readfile.ts +77 -0
  65. package/gs/io/fs/stat.ts +38 -0
  66. package/gs/io/fs/sub.ts +208 -0
  67. package/gs/io/fs/walk.ts +89 -0
  68. package/gs/path/index.ts +2 -0
  69. package/gs/path/match.ts +307 -0
  70. package/gs/path/path.ts +301 -0
  71. package/gs/strings/reader.test.ts +0 -1
  72. package/gs/time/time.ts +325 -12
  73. package/package.json +1 -1
  74. package/gs/time/godoc.md +0 -116
@@ -5,6 +5,17 @@ export * from './io.js';
5
5
  export * from './map.js';
6
6
  export * from './slice.js';
7
7
  export * from './type.js';
8
+ // int converts a value to a Go int type, handling proper signed integer conversion
9
+ // This ensures that values like 2147483648 (2^31) are properly handled according to Go semantics
10
+ export function int(value) {
11
+ // In Go, int is typically 64-bit on 64-bit systems, but for compatibility with JavaScript
12
+ // we need to handle the conversion properly. The issue is that JavaScript's number type
13
+ // can represent values larger than 32-bit signed integers, but when cast in certain contexts
14
+ // they get interpreted as signed 32-bit integers.
15
+ // For Go's int type on 64-bit systems, we should preserve the full value
16
+ // since JavaScript numbers can safely represent integers up to Number.MAX_SAFE_INTEGER
17
+ return Math.trunc(value);
18
+ }
8
19
  // Copy is the Go builtin function that copies the contents of one slice to another.
9
20
  // It returns the number of elements copied.
10
21
  export function copy(dst, src) {
@@ -1 +1 @@
1
- {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../gs/builtin/builtin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../gs/builtin/builtin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ export declare let ErrInvalid: $.GoError;
3
+ export declare let ErrPermission: $.GoError;
4
+ export declare let ErrExist: $.GoError;
5
+ export declare let ErrNotExist: $.GoError;
6
+ export declare let ErrClosed: $.GoError;
@@ -0,0 +1,7 @@
1
+ import * as errors from "@goscript/errors/index.js";
2
+ export let ErrInvalid = errors.New("invalid argument");
3
+ export let ErrPermission = errors.New("permission denied");
4
+ export let ErrExist = errors.New("file already exists");
5
+ export let ErrNotExist = errors.New("file does not exist");
6
+ export let ErrClosed = errors.New("file already closed");
7
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../gs/internal/oserror/errors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAA;AAEnD,MAAM,CAAC,IAAI,UAAU,GAAc,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAEjE,MAAM,CAAC,IAAI,aAAa,GAAc,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAErE,MAAM,CAAC,IAAI,QAAQ,GAAc,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAElE,MAAM,CAAC,IAAI,WAAW,GAAc,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAErE,MAAM,CAAC,IAAI,SAAS,GAAc,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { ErrClosed, ErrExist, ErrInvalid, ErrNotExist, ErrPermission } from "./errors.js";
@@ -0,0 +1,2 @@
1
+ export { ErrClosed, ErrExist, ErrInvalid, ErrNotExist, ErrPermission } from "./errors.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/internal/oserror/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { FileInfo, DirEntry } from "./fs.js";
2
+ export declare function FormatFileInfo(info: FileInfo): string;
3
+ export declare function FormatDirEntry(dir: DirEntry): string;
@@ -0,0 +1,56 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { fileModeString } from "./fs.js";
3
+ import * as time from "@goscript/time/index.js";
4
+ // FormatFileInfo returns a formatted version of info for human readability.
5
+ // Implementations of [FileInfo] can call this from a String method.
6
+ // The output for a file named "hello.go", 100 bytes, mode 0o644, created
7
+ // January 1, 1970 at noon is
8
+ //
9
+ // -rw-r--r-- 100 1970-01-01 12:00:00 hello.go
10
+ export function FormatFileInfo(info) {
11
+ let name = info.Name();
12
+ let b = [];
13
+ b.push(fileModeString(info.Mode()));
14
+ b.push(" ");
15
+ let size = info.Size();
16
+ let usize = 0;
17
+ if (size >= 0) {
18
+ usize = size;
19
+ }
20
+ else {
21
+ b.push("-");
22
+ usize = -size;
23
+ }
24
+ b.push(usize.toString());
25
+ b.push(" ");
26
+ // Use a simple date format since time.DateTime is not available
27
+ b.push(info.ModTime().Format(time.DateTime));
28
+ b.push(" ");
29
+ b.push(name);
30
+ if (info.IsDir()) {
31
+ b.push("/");
32
+ }
33
+ return b.join("");
34
+ }
35
+ // FormatDirEntry returns a formatted version of dir for human readability.
36
+ // Implementations of [DirEntry] can call this from a String method.
37
+ // The outputs for a directory named subdir and a file named hello.go are:
38
+ //
39
+ // d subdir/
40
+ // - hello.go
41
+ export function FormatDirEntry(dir) {
42
+ let name = dir.Name();
43
+ let b = [];
44
+ // The Type method does not return any permission bits,
45
+ // so strip them from the string.
46
+ let mode = fileModeString(dir.Type());
47
+ mode = $.sliceString(mode, undefined, $.len(mode) - 9);
48
+ b.push(mode);
49
+ b.push(" ");
50
+ b.push(name);
51
+ if (dir.IsDir()) {
52
+ b.push("/");
53
+ }
54
+ return b.join("");
55
+ }
56
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../gs/io/fs/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAClD,OAAO,EAAsB,cAAc,EAAgB,MAAM,SAAS,CAAC;AAE3E,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAA;AAE/C,4EAA4E;AAC5E,oEAAoE;AACpE,yEAAyE;AACzE,6BAA6B;AAC7B,EAAE;AACF,8CAA8C;AAC9C,MAAM,UAAU,cAAc,CAAC,IAAc;IAC5C,IAAI,IAAI,GAAG,IAAK,CAAC,IAAI,EAAE,CAAA;IACvB,IAAI,CAAC,GAAa,EAAE,CAAA;IACpB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEX,IAAI,IAAI,GAAG,IAAK,CAAC,IAAI,EAAE,CAAA;IACvB,IAAI,KAAK,GAAW,CAAC,CAAA;IACrB,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACf,KAAK,GAAI,IAAe,CAAA;IACzB,CAAC;SAAM,CAAC;QACP,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,KAAK,GAAI,CAAC,IAAe,CAAA;IAC1B,CAAC;IAED,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;IACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEX,gEAAgE;IAChE,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,OAAO,EAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,IAAI,IAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAED,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAClB,CAAC;AAED,2EAA2E;AAC3E,oEAAoE;AACpE,0EAA0E;AAC1E,EAAE;AACF,YAAY;AACZ,aAAa;AACb,MAAM,UAAU,cAAc,CAAC,GAAa;IAC3C,IAAI,IAAI,GAAG,GAAI,CAAC,IAAI,EAAE,CAAA;IACtB,IAAI,CAAC,GAAa,EAAE,CAAA;IAEpB,uDAAuD;IACvD,iCAAiC;IACjC,IAAI,IAAI,GAAG,cAAc,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACtC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAEtD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,IAAI,GAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAClB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import * as time from "@goscript/time/index.js";
3
+ export type FS = null | {
4
+ Open(name: string): [File, $.GoError];
5
+ };
6
+ export declare function ValidPath(name: string): boolean;
7
+ export type File = null | {
8
+ Close(): $.GoError;
9
+ Read(_p0: Uint8Array): [number, $.GoError];
10
+ Stat(): [FileInfo, $.GoError];
11
+ };
12
+ export type DirEntry = null | {
13
+ Info(): [FileInfo, $.GoError];
14
+ IsDir(): boolean;
15
+ Name(): string;
16
+ Type(): FileMode;
17
+ };
18
+ export type ReadDirFile = null | ({
19
+ ReadDir(n: number): [$.Slice<DirEntry>, $.GoError];
20
+ } & File);
21
+ export declare let ErrInvalid: $.GoError;
22
+ export declare let ErrPermission: $.GoError;
23
+ export declare let ErrExist: $.GoError;
24
+ export declare let ErrNotExist: $.GoError;
25
+ export declare let ErrClosed: $.GoError;
26
+ export declare function errInvalid(): $.GoError;
27
+ export declare function errPermission(): $.GoError;
28
+ export declare function errExist(): $.GoError;
29
+ export declare function errNotExist(): $.GoError;
30
+ export declare function errClosed(): $.GoError;
31
+ export type FileInfo = null | {
32
+ IsDir(): boolean;
33
+ ModTime(): time.Time;
34
+ Mode(): FileMode;
35
+ Name(): string;
36
+ Size(): number;
37
+ Sys(): null | any;
38
+ };
39
+ export type FileMode = number;
40
+ export declare let ModeDir: FileMode;
41
+ export declare let ModeAppend: FileMode;
42
+ export declare let ModeExclusive: FileMode;
43
+ export declare let ModeTemporary: FileMode;
44
+ export declare let ModeSymlink: FileMode;
45
+ export declare let ModeDevice: FileMode;
46
+ export declare let ModeNamedPipe: FileMode;
47
+ export declare let ModeSocket: FileMode;
48
+ export declare let ModeSetuid: FileMode;
49
+ export declare let ModeSetgid: FileMode;
50
+ export declare let ModeCharDevice: FileMode;
51
+ export declare let ModeSticky: FileMode;
52
+ export declare let ModeIrregular: FileMode;
53
+ export declare let ModeType: FileMode;
54
+ export declare let ModePerm: FileMode;
55
+ export declare function fileModeString(mode: FileMode): string;
56
+ export declare function fileModeType(mode: FileMode): FileMode;
57
+ export declare class PathError {
58
+ get Op(): string;
59
+ set Op(value: string);
60
+ get Path(): string;
61
+ set Path(value: string);
62
+ get Err(): $.GoError;
63
+ set Err(value: $.GoError);
64
+ _fields: {
65
+ Op: $.VarRef<string>;
66
+ Path: $.VarRef<string>;
67
+ Err: $.VarRef<$.GoError>;
68
+ };
69
+ constructor(init?: Partial<{
70
+ Err?: $.GoError;
71
+ Op?: string;
72
+ Path?: string;
73
+ }>);
74
+ clone(): PathError;
75
+ Error(): string;
76
+ Unwrap(): $.GoError;
77
+ Timeout(): boolean;
78
+ static __typeInfo: $.StructTypeInfo;
79
+ }
@@ -0,0 +1,200 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import * as utf8 from "@goscript/unicode/utf8/index.js";
3
+ import * as oserror from "@goscript/internal/oserror/index.js";
4
+ $.registerInterfaceType('FS', null, // Zero value for interface is null
5
+ [{ name: "Open", args: [{ name: "name", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: "File" }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]);
6
+ // ValidPath reports whether the given path name
7
+ // is valid for use in a call to Open.
8
+ //
9
+ // Path names passed to open are UTF-8-encoded,
10
+ // unrooted, slash-separated sequences of path elements, like "x/y/z".
11
+ // Path names must not contain an element that is "." or ".." or the empty string,
12
+ // except for the special case that the name "." may be used for the root directory.
13
+ // Paths must not start or end with a slash: "/x" and "x/" are invalid.
14
+ //
15
+ // Note that paths are slash-separated on all systems, even Windows.
16
+ // Paths containing other characters such as backslash and colon
17
+ // are accepted as valid, but those characters must never be
18
+ // interpreted by an [FS] implementation as path element separators.
19
+ export function ValidPath(name) {
20
+ if (!utf8.ValidString(name)) {
21
+ return false;
22
+ }
23
+ // special case
24
+ if (name == ".") {
25
+ // special case
26
+ return true;
27
+ }
28
+ // Iterate over elements in name, checking each.
29
+ // reached clean ending
30
+ for (;;) {
31
+ let i = 0;
32
+ for (; i < $.len(name) && $.indexString(name, i) != 47;) {
33
+ i++;
34
+ }
35
+ let elem = $.sliceString(name, undefined, i);
36
+ if (elem == "" || elem == "." || elem == "..") {
37
+ return false;
38
+ }
39
+ // reached clean ending
40
+ if (i == $.len(name)) {
41
+ return true;
42
+ }
43
+ name = $.sliceString(name, i + 1, undefined);
44
+ }
45
+ }
46
+ $.registerInterfaceType('File', null, // Zero value for interface is null
47
+ [{ name: "Close", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "Read", args: [{ name: "", type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "number" } } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "number" } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "Stat", args: [], returns: [{ type: "FileInfo" }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]);
48
+ $.registerInterfaceType('DirEntry', null, // Zero value for interface is null
49
+ [{ name: "Info", args: [], returns: [{ type: "FileInfo" }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "IsDir", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "boolean" } }] }, { name: "Name", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "Type", args: [], returns: [{ type: "FileMode" }] }]);
50
+ $.registerInterfaceType('ReadDirFile', null, // Zero value for interface is null
51
+ [{ name: "ReadDir", args: [{ name: "n", type: { kind: $.TypeKind.Basic, name: "number" } }], returns: [{ type: { kind: $.TypeKind.Slice, elemType: "DirEntry" } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]);
52
+ // "invalid argument"
53
+ export let ErrInvalid = errInvalid();
54
+ // "permission denied"
55
+ export let ErrPermission = errPermission();
56
+ // "file already exists"
57
+ export let ErrExist = errExist();
58
+ // "file does not exist"
59
+ export let ErrNotExist = errNotExist();
60
+ // "file already closed"
61
+ export let ErrClosed = errClosed();
62
+ export function errInvalid() {
63
+ return oserror.ErrInvalid;
64
+ }
65
+ export function errPermission() {
66
+ return oserror.ErrPermission;
67
+ }
68
+ export function errExist() {
69
+ return oserror.ErrExist;
70
+ }
71
+ export function errNotExist() {
72
+ return oserror.ErrNotExist;
73
+ }
74
+ export function errClosed() {
75
+ return oserror.ErrClosed;
76
+ }
77
+ $.registerInterfaceType('FileInfo', null, // Zero value for interface is null
78
+ [{ name: "IsDir", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "boolean" } }] }, { name: "ModTime", args: [], returns: [{ type: "Time" }] }, { name: "Mode", args: [], returns: [{ type: "FileMode" }] }, { name: "Name", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "Size", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "number" } }] }, { name: "Sys", args: [], returns: [{ type: { kind: $.TypeKind.Interface, methods: [] } }] }]);
79
+ // The single letters are the abbreviations
80
+ // used by the String method's formatting.
81
+ // d: is a directory
82
+ export let ModeDir = 2147483648;
83
+ // a: append-only
84
+ export let ModeAppend = 0;
85
+ // l: exclusive use
86
+ export let ModeExclusive = 0;
87
+ // T: temporary file; Plan 9 only
88
+ export let ModeTemporary = 0;
89
+ // L: symbolic link
90
+ export let ModeSymlink = 0;
91
+ // D: device file
92
+ export let ModeDevice = 0;
93
+ // p: named pipe (FIFO)
94
+ export let ModeNamedPipe = 0;
95
+ // S: Unix domain socket
96
+ export let ModeSocket = 0;
97
+ // u: setuid
98
+ export let ModeSetuid = 0;
99
+ // g: setgid
100
+ export let ModeSetgid = 0;
101
+ // c: Unix character device, when ModeDevice is set
102
+ export let ModeCharDevice = 0;
103
+ // t: sticky
104
+ export let ModeSticky = 0;
105
+ // ?: non-regular file; nothing else is known about this file
106
+ export let ModeIrregular = 0;
107
+ // Mask for the type bits. For regular files, none will be set.
108
+ export let ModeType = ((((((2147483648 | 134217728) | 33554432) | 16777216) | 67108864) | 2097152) | 524288);
109
+ // Unix permission bits
110
+ export let ModePerm = 0o777;
111
+ // FileMode methods
112
+ export function fileModeString(mode) {
113
+ const buf = [];
114
+ // File type
115
+ if (mode & ModeDir)
116
+ buf.push("d");
117
+ else if (mode & ModeSymlink)
118
+ buf.push("L");
119
+ else if (mode & ModeDevice)
120
+ buf.push("D");
121
+ else if (mode & ModeNamedPipe)
122
+ buf.push("p");
123
+ else if (mode & ModeSocket)
124
+ buf.push("S");
125
+ else if (mode & ModeCharDevice)
126
+ buf.push("c");
127
+ else if (mode & ModeIrregular)
128
+ buf.push("?");
129
+ else
130
+ buf.push("-");
131
+ // Permission bits
132
+ const perm = mode & ModePerm;
133
+ buf.push((perm & 0o400) ? "r" : "-");
134
+ buf.push((perm & 0o200) ? "w" : "-");
135
+ buf.push((perm & 0o100) ? "x" : "-");
136
+ buf.push((perm & 0o040) ? "r" : "-");
137
+ buf.push((perm & 0o020) ? "w" : "-");
138
+ buf.push((perm & 0o010) ? "x" : "-");
139
+ buf.push((perm & 0o004) ? "r" : "-");
140
+ buf.push((perm & 0o002) ? "w" : "-");
141
+ buf.push((perm & 0o001) ? "x" : "-");
142
+ return buf.join("");
143
+ }
144
+ export function fileModeType(mode) {
145
+ return mode & ModeType;
146
+ }
147
+ export class PathError {
148
+ get Op() {
149
+ return this._fields.Op.value;
150
+ }
151
+ set Op(value) {
152
+ this._fields.Op.value = value;
153
+ }
154
+ get Path() {
155
+ return this._fields.Path.value;
156
+ }
157
+ set Path(value) {
158
+ this._fields.Path.value = value;
159
+ }
160
+ get Err() {
161
+ return this._fields.Err.value;
162
+ }
163
+ set Err(value) {
164
+ this._fields.Err.value = value;
165
+ }
166
+ _fields;
167
+ constructor(init) {
168
+ this._fields = {
169
+ Op: $.varRef(init?.Op ?? ""),
170
+ Path: $.varRef(init?.Path ?? ""),
171
+ Err: $.varRef(init?.Err ?? null)
172
+ };
173
+ }
174
+ clone() {
175
+ const cloned = new PathError();
176
+ cloned._fields = {
177
+ Op: $.varRef(this._fields.Op.value),
178
+ Path: $.varRef(this._fields.Path.value),
179
+ Err: $.varRef(this._fields.Err.value)
180
+ };
181
+ return cloned;
182
+ }
183
+ Error() {
184
+ const e = this;
185
+ return e.Op + " " + e.Path + ": " + e.Err.Error();
186
+ }
187
+ Unwrap() {
188
+ const e = this;
189
+ return e.Err;
190
+ }
191
+ // Timeout reports whether this error represents a timeout.
192
+ Timeout() {
193
+ const e = this;
194
+ let { value: t, ok: ok } = $.typeAssert(e.Err, { kind: $.TypeKind.Interface, methods: [{ name: 'Timeout', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'boolean' } }] }] });
195
+ return ok && t.Timeout();
196
+ }
197
+ // Register this type with the runtime type system
198
+ static __typeInfo = $.registerStructType('PathError', new PathError(), [{ name: "Error", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "Unwrap", args: [], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "Timeout", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "boolean" } }] }], PathError, { "Op": { kind: $.TypeKind.Basic, name: "string" }, "Path": { kind: $.TypeKind.Basic, name: "string" }, "Err": { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } });
199
+ }
200
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../../gs/io/fs/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { FS } from "./fs.js";
3
+ export type GlobFS = null | ({
4
+ Glob(pattern: string): [$.Slice<string>, $.GoError];
5
+ } & FS);
6
+ export declare function Glob(fsys: FS, pattern: string): [$.Slice<string>, $.GoError];
7
+ export declare function globWithLimit(fsys: FS, pattern: string, depth: number): [$.Slice<string>, $.GoError];
8
+ export declare function cleanGlobPath(path: string): string;
9
+ export declare function glob(fs: FS, dir: string, pattern: string, matches: $.Slice<string>): [$.Slice<string>, $.GoError];
10
+ export declare function hasMeta(path: string): boolean;
@@ -0,0 +1,141 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { Stat } from "./stat.js";
3
+ import { ReadDir } from "./readdir.js";
4
+ import * as path from "@goscript/path/index.js";
5
+ $.registerInterfaceType('GlobFS', null, // Zero value for interface is null
6
+ [{ name: "Glob", args: [{ name: "pattern", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "string" } } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]);
7
+ // Glob returns the names of all files matching pattern or nil
8
+ // if there is no matching file. The syntax of patterns is the same
9
+ // as in [path.Match]. The pattern may describe hierarchical names such as
10
+ // usr/*/bin/ed.
11
+ //
12
+ // Glob ignores file system errors such as I/O errors reading directories.
13
+ // The only possible returned error is [path.ErrBadPattern], reporting that
14
+ // the pattern is malformed.
15
+ //
16
+ // If fs implements [GlobFS], Glob calls fs.Glob.
17
+ // Otherwise, Glob uses [ReadDir] to traverse the directory tree
18
+ // and look for matches for the pattern.
19
+ export function Glob(fsys, pattern) {
20
+ let matches = null;
21
+ let err = null;
22
+ {
23
+ return globWithLimit(fsys, pattern, 0);
24
+ }
25
+ }
26
+ export function globWithLimit(fsys, pattern, depth) {
27
+ let matches = null;
28
+ let err = null;
29
+ {
30
+ // This limit is added to prevent stack exhaustion issues. See
31
+ // CVE-2022-30630.
32
+ let pathSeparatorsLimit = 10000;
33
+ if (depth > 10000) {
34
+ return [null, path.ErrBadPattern];
35
+ }
36
+ {
37
+ let { value: fsysTyped, ok: ok } = $.typeAssert(fsys, 'GlobFS');
38
+ if (ok) {
39
+ return fsysTyped.Glob(pattern);
40
+ }
41
+ }
42
+ // Check pattern is well-formed.
43
+ {
44
+ let [, err] = path.Match(pattern, "");
45
+ if (err != null) {
46
+ return [null, err];
47
+ }
48
+ }
49
+ if (!hasMeta(pattern)) {
50
+ {
51
+ [, err] = Stat(fsys, pattern);
52
+ if (err != null) {
53
+ return [null, null];
54
+ }
55
+ }
56
+ return [$.arrayToSlice([pattern]), null];
57
+ }
58
+ let [dir, file] = path.Split(pattern);
59
+ dir = cleanGlobPath(dir);
60
+ if (!hasMeta(dir)) {
61
+ return glob(fsys, dir, file, null);
62
+ }
63
+ // Prevent infinite recursion. See issue 15879.
64
+ if (dir == pattern) {
65
+ return [null, path.ErrBadPattern];
66
+ }
67
+ let m;
68
+ [m, err] = globWithLimit(fsys, dir, depth + 1);
69
+ if (err != null) {
70
+ return [null, err];
71
+ }
72
+ for (let _i = 0; _i < $.len(m); _i++) {
73
+ const d = m[_i];
74
+ {
75
+ [matches, err] = glob(fsys, d, file, matches);
76
+ if (err != null) {
77
+ return [matches, err];
78
+ }
79
+ }
80
+ }
81
+ return [matches, err];
82
+ }
83
+ }
84
+ // cleanGlobPath prepares path for glob matching.
85
+ export function cleanGlobPath(path) {
86
+ // chop off trailing separator
87
+ switch (path) {
88
+ case "":
89
+ return ".";
90
+ break;
91
+ default:
92
+ return $.sliceString(path, 0, $.len(path) - 1);
93
+ break;
94
+ }
95
+ }
96
+ // glob searches for files matching pattern in the directory dir
97
+ // and appends them to matches, returning the updated slice.
98
+ // If the directory cannot be opened, glob returns the existing matches.
99
+ // New matches are added in lexicographical order.
100
+ export function glob(fs, dir, pattern, matches) {
101
+ let m = null;
102
+ let e = null;
103
+ {
104
+ m = matches;
105
+ let [infos, err] = ReadDir(fs, dir);
106
+ // ignore I/O error
107
+ if (err != null) {
108
+ return [m, e];
109
+ }
110
+ for (let _i = 0; _i < $.len(infos); _i++) {
111
+ const info = infos[_i];
112
+ {
113
+ let n = info.Name();
114
+ let [matched, err] = path.Match(pattern, n);
115
+ if (err != null) {
116
+ return [m, err];
117
+ }
118
+ if (matched) {
119
+ m = $.append(m, path.Join(dir, n));
120
+ }
121
+ }
122
+ }
123
+ return [m, e];
124
+ }
125
+ }
126
+ // hasMeta reports whether path contains any of the magic characters
127
+ // recognized by path.Match.
128
+ export function hasMeta(path) {
129
+ for (let i = 0; i < $.len(path); i++) {
130
+ switch ($.indexString(path, i)) {
131
+ case 42:
132
+ case 63:
133
+ case 91:
134
+ case 92:
135
+ return true;
136
+ break;
137
+ }
138
+ }
139
+ return false;
140
+ }
141
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../../gs/io/fs/glob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from "./format.js";
2
+ export * from "./fs.js";
3
+ export * from "./glob.js";
4
+ export * from "./readdir.js";
5
+ export * from "./readfile.js";
6
+ export * from "./stat.js";
7
+ export * from "./sub.js";
8
+ export * from "./walk.js";
@@ -0,0 +1,9 @@
1
+ export * from "./format.js";
2
+ export * from "./fs.js";
3
+ export * from "./glob.js";
4
+ export * from "./readdir.js";
5
+ export * from "./readfile.js";
6
+ export * from "./stat.js";
7
+ export * from "./sub.js";
8
+ export * from "./walk.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/io/fs/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { FS, DirEntry, FileInfo } from "./fs.js";
3
+ export type ReadDirFS = null | ({
4
+ ReadDir(name: string): [$.Slice<DirEntry>, $.GoError];
5
+ } & FS);
6
+ export declare function ReadDir(fsys: FS, name: string): [$.Slice<DirEntry>, $.GoError];
7
+ export declare function FileInfoToDirEntry(info: FileInfo): DirEntry;