goscript 0.0.26 → 0.0.29

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 (228) hide show
  1. package/README.md +4 -4
  2. package/cmd/goscript/cmd_compile.go +0 -3
  3. package/cmd/goscript/deps.go +11 -0
  4. package/compiler/analysis.go +298 -55
  5. package/compiler/assignment.go +2 -2
  6. package/compiler/builtin_test.go +1 -1
  7. package/compiler/compiler.go +200 -68
  8. package/compiler/compiler_test.go +17 -24
  9. package/compiler/composite-lit.go +32 -8
  10. package/compiler/decl.go +6 -6
  11. package/compiler/expr-call.go +170 -15
  12. package/compiler/expr-selector.go +100 -0
  13. package/compiler/expr.go +1 -1
  14. package/compiler/protobuf.go +557 -0
  15. package/compiler/spec-struct.go +4 -0
  16. package/compiler/spec-value.go +89 -10
  17. package/compiler/spec.go +254 -1
  18. package/compiler/stmt-assign.go +35 -0
  19. package/compiler/type-assert.go +87 -0
  20. package/compiler/type.go +4 -1
  21. package/dist/gs/builtin/builtin.d.ts +20 -1
  22. package/dist/gs/builtin/builtin.js +95 -4
  23. package/dist/gs/builtin/builtin.js.map +1 -1
  24. package/dist/gs/builtin/slice.d.ts +1 -1
  25. package/dist/gs/builtin/slice.js +21 -2
  26. package/dist/gs/builtin/slice.js.map +1 -1
  27. package/dist/gs/errors/errors.d.ts +5 -6
  28. package/dist/gs/errors/errors.js.map +1 -1
  29. package/dist/gs/internal/oserror/errors.d.ts +6 -0
  30. package/dist/gs/internal/oserror/errors.js +7 -0
  31. package/dist/gs/internal/oserror/errors.js.map +1 -0
  32. package/dist/gs/internal/oserror/index.d.ts +1 -0
  33. package/dist/gs/internal/oserror/index.js +2 -0
  34. package/dist/gs/internal/oserror/index.js.map +1 -0
  35. package/dist/gs/io/fs/format.d.ts +3 -0
  36. package/dist/gs/io/fs/format.js +56 -0
  37. package/dist/gs/io/fs/format.js.map +1 -0
  38. package/dist/gs/io/fs/fs.d.ts +79 -0
  39. package/dist/gs/io/fs/fs.js +200 -0
  40. package/dist/gs/io/fs/fs.js.map +1 -0
  41. package/dist/gs/io/fs/glob.d.ts +10 -0
  42. package/dist/gs/io/fs/glob.js +141 -0
  43. package/dist/gs/io/fs/glob.js.map +1 -0
  44. package/dist/gs/io/fs/index.d.ts +8 -0
  45. package/dist/gs/io/fs/index.js +9 -0
  46. package/dist/gs/io/fs/index.js.map +1 -0
  47. package/dist/gs/io/fs/readdir.d.ts +7 -0
  48. package/dist/gs/io/fs/readdir.js +152 -0
  49. package/dist/gs/io/fs/readdir.js.map +1 -0
  50. package/dist/gs/io/fs/readfile.d.ts +6 -0
  51. package/dist/gs/io/fs/readfile.js +118 -0
  52. package/dist/gs/io/fs/readfile.js.map +1 -0
  53. package/dist/gs/io/fs/stat.d.ts +6 -0
  54. package/dist/gs/io/fs/stat.js +87 -0
  55. package/dist/gs/io/fs/stat.js.map +1 -0
  56. package/dist/gs/io/fs/sub.d.ts +6 -0
  57. package/dist/gs/io/fs/sub.js +172 -0
  58. package/dist/gs/io/fs/sub.js.map +1 -0
  59. package/dist/gs/io/fs/walk.d.ts +7 -0
  60. package/dist/gs/io/fs/walk.js +76 -0
  61. package/dist/gs/io/fs/walk.js.map +1 -0
  62. package/dist/gs/io/index.d.ts +1 -0
  63. package/dist/gs/io/index.js +2 -0
  64. package/dist/gs/io/index.js.map +1 -0
  65. package/dist/gs/io/io.d.ts +107 -0
  66. package/dist/gs/io/io.js +385 -0
  67. package/dist/gs/io/io.js.map +1 -0
  68. package/dist/gs/path/index.d.ts +2 -0
  69. package/dist/gs/path/index.js +3 -0
  70. package/dist/gs/path/index.js.map +1 -0
  71. package/dist/gs/path/match.d.ts +6 -0
  72. package/dist/gs/path/match.js +281 -0
  73. package/dist/gs/path/match.js.map +1 -0
  74. package/dist/gs/path/path.d.ts +7 -0
  75. package/dist/gs/path/path.js +256 -0
  76. package/dist/gs/path/path.js.map +1 -0
  77. package/dist/gs/strings/builder.d.ts +18 -0
  78. package/dist/gs/strings/builder.js +205 -0
  79. package/dist/gs/strings/builder.js.map +1 -0
  80. package/dist/gs/strings/clone.d.ts +1 -0
  81. package/dist/gs/strings/clone.js +16 -0
  82. package/dist/gs/strings/clone.js.map +1 -0
  83. package/dist/gs/strings/compare.d.ts +1 -0
  84. package/dist/gs/strings/compare.js +14 -0
  85. package/dist/gs/strings/compare.js.map +1 -0
  86. package/dist/gs/strings/index.d.ts +2 -0
  87. package/dist/gs/strings/index.js +3 -0
  88. package/dist/gs/strings/index.js.map +1 -0
  89. package/dist/gs/strings/iter.d.ts +8 -0
  90. package/dist/gs/strings/iter.js +160 -0
  91. package/dist/gs/strings/iter.js.map +1 -0
  92. package/dist/gs/strings/reader.d.ts +34 -0
  93. package/dist/gs/strings/reader.js +418 -0
  94. package/dist/gs/strings/reader.js.map +1 -0
  95. package/dist/gs/strings/replace.d.ts +106 -0
  96. package/dist/gs/strings/replace.js +1136 -0
  97. package/dist/gs/strings/replace.js.map +1 -0
  98. package/dist/gs/strings/search.d.ts +24 -0
  99. package/dist/gs/strings/search.js +169 -0
  100. package/dist/gs/strings/search.js.map +1 -0
  101. package/dist/gs/strings/strings.d.ts +47 -0
  102. package/dist/gs/strings/strings.js +418 -0
  103. package/dist/gs/strings/strings.js.map +1 -0
  104. package/dist/gs/stringslite/index.d.ts +1 -0
  105. package/dist/gs/stringslite/index.js +2 -0
  106. package/dist/gs/stringslite/index.js.map +1 -0
  107. package/dist/gs/stringslite/strings.d.ts +11 -0
  108. package/dist/gs/stringslite/strings.js +67 -0
  109. package/dist/gs/stringslite/strings.js.map +1 -0
  110. package/dist/gs/sync/index.d.ts +1 -0
  111. package/dist/gs/sync/index.js +2 -0
  112. package/dist/gs/sync/index.js.map +1 -0
  113. package/dist/gs/sync/sync.d.ts +79 -0
  114. package/dist/gs/sync/sync.js +392 -0
  115. package/dist/gs/sync/sync.js.map +1 -0
  116. package/dist/gs/time/time.d.ts +11 -2
  117. package/dist/gs/time/time.js +337 -12
  118. package/dist/gs/time/time.js.map +1 -1
  119. package/dist/gs/unicode/index.d.ts +1 -0
  120. package/dist/gs/unicode/index.js +2 -0
  121. package/dist/gs/unicode/index.js.map +1 -0
  122. package/dist/gs/unicode/unicode.d.ts +105 -0
  123. package/dist/gs/unicode/unicode.js +332 -0
  124. package/dist/gs/unicode/unicode.js.map +1 -0
  125. package/dist/gs/unicode/utf8/index.d.ts +1 -0
  126. package/dist/gs/unicode/utf8/index.js +3 -0
  127. package/dist/gs/unicode/utf8/index.js.map +1 -0
  128. package/dist/gs/unicode/utf8/utf8.d.ts +20 -0
  129. package/dist/gs/unicode/utf8/utf8.js +196 -0
  130. package/dist/gs/unicode/utf8/utf8.js.map +1 -0
  131. package/dist/gs/unsafe/index.d.ts +1 -0
  132. package/dist/gs/unsafe/index.js +2 -0
  133. package/dist/gs/unsafe/index.js.map +1 -0
  134. package/dist/gs/unsafe/unsafe.d.ts +11 -0
  135. package/dist/gs/unsafe/unsafe.js +44 -0
  136. package/dist/gs/unsafe/unsafe.js.map +1 -0
  137. package/go.mod +2 -1
  138. package/go.sum +6 -2
  139. package/gs/README.md +6 -0
  140. package/gs/builtin/builtin.ts +171 -0
  141. package/gs/builtin/channel.ts +683 -0
  142. package/gs/builtin/defer.ts +58 -0
  143. package/gs/builtin/index.ts +1 -0
  144. package/gs/builtin/io.ts +22 -0
  145. package/gs/builtin/map.ts +50 -0
  146. package/gs/builtin/slice.ts +1030 -0
  147. package/gs/builtin/type.ts +1106 -0
  148. package/gs/builtin/varRef.ts +25 -0
  149. package/gs/cmp/godoc.txt +8 -0
  150. package/gs/cmp/index.ts +29 -0
  151. package/gs/context/context.ts +401 -0
  152. package/gs/context/godoc.txt +69 -0
  153. package/gs/context/index.ts +1 -0
  154. package/gs/errors/errors.ts +223 -0
  155. package/gs/errors/godoc.txt +63 -0
  156. package/gs/errors/index.ts +1 -0
  157. package/gs/internal/goarch/godoc.txt +39 -0
  158. package/gs/internal/goarch/index.ts +18 -0
  159. package/gs/internal/oserror/errors.ts +14 -0
  160. package/gs/internal/oserror/index.ts +1 -0
  161. package/gs/io/fs/format.ts +65 -0
  162. package/gs/io/fs/fs.ts +359 -0
  163. package/gs/io/fs/glob.ts +167 -0
  164. package/gs/io/fs/godoc.txt +35 -0
  165. package/gs/io/fs/index.ts +8 -0
  166. package/gs/io/fs/readdir.ts +126 -0
  167. package/gs/io/fs/readfile.ts +77 -0
  168. package/gs/io/fs/stat.ts +38 -0
  169. package/gs/io/fs/sub.ts +208 -0
  170. package/gs/io/fs/walk.ts +89 -0
  171. package/gs/io/godoc.txt +61 -0
  172. package/gs/io/index.ts +1 -0
  173. package/gs/io/io.go +75 -0
  174. package/gs/io/io.ts +546 -0
  175. package/gs/iter/godoc.txt +203 -0
  176. package/gs/iter/index.ts +1 -0
  177. package/gs/iter/iter.ts +117 -0
  178. package/gs/math/bits/index.ts +356 -0
  179. package/gs/math/godoc.txt +76 -0
  180. package/gs/path/index.ts +2 -0
  181. package/gs/path/match.ts +307 -0
  182. package/gs/path/path.ts +301 -0
  183. package/gs/runtime/godoc.txt +331 -0
  184. package/gs/runtime/index.ts +1 -0
  185. package/gs/runtime/runtime.ts +178 -0
  186. package/gs/slices/godoc.txt +44 -0
  187. package/gs/slices/index.ts +1 -0
  188. package/gs/slices/slices.ts +22 -0
  189. package/gs/strings/builder.test.ts +121 -0
  190. package/gs/strings/builder.ts +223 -0
  191. package/gs/strings/clone.test.ts +43 -0
  192. package/gs/strings/clone.ts +17 -0
  193. package/gs/strings/compare.test.ts +84 -0
  194. package/gs/strings/compare.ts +13 -0
  195. package/gs/strings/godoc.txt +66 -0
  196. package/gs/strings/index.ts +2 -0
  197. package/gs/strings/iter.test.ts +343 -0
  198. package/gs/strings/iter.ts +171 -0
  199. package/gs/strings/reader.test.ts +242 -0
  200. package/gs/strings/reader.ts +451 -0
  201. package/gs/strings/replace.test.ts +181 -0
  202. package/gs/strings/replace.ts +1310 -0
  203. package/gs/strings/search.test.ts +214 -0
  204. package/gs/strings/search.ts +213 -0
  205. package/gs/strings/strings.test.ts +477 -0
  206. package/gs/strings/strings.ts +510 -0
  207. package/gs/stringslite/godoc.txt +17 -0
  208. package/gs/stringslite/index.ts +1 -0
  209. package/gs/stringslite/strings.ts +82 -0
  210. package/gs/sync/godoc.txt +21 -0
  211. package/gs/sync/index.ts +1 -0
  212. package/gs/sync/sync.go +64 -0
  213. package/gs/sync/sync.ts +449 -0
  214. package/gs/time/godoc.txt +116 -0
  215. package/gs/time/index.ts +1 -0
  216. package/gs/time/time.ts +585 -0
  217. package/gs/unicode/godoc.txt +52 -0
  218. package/gs/unicode/index.ts +1 -0
  219. package/gs/unicode/unicode.go +38 -0
  220. package/gs/unicode/unicode.ts +418 -0
  221. package/gs/unicode/utf8/godoc.txt +22 -0
  222. package/gs/unicode/utf8/index.ts +2 -0
  223. package/gs/unicode/utf8/utf8.ts +227 -0
  224. package/gs/unsafe/godoc.txt +19 -0
  225. package/gs/unsafe/index.ts +1 -0
  226. package/gs/unsafe/unsafe.test.ts +68 -0
  227. package/gs/unsafe/unsafe.ts +77 -0
  228. package/package.json +4 -3
@@ -0,0 +1,172 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { ValidPath, PathError, ErrInvalid } from "./fs.js";
3
+ import { ReadDir } from "./readdir.js";
4
+ import { ReadFile } from "./readfile.js";
5
+ import { Glob } from "./glob.js";
6
+ import * as errors from "@goscript/errors/index.js";
7
+ import * as path from "@goscript/path/index.js";
8
+ $.registerInterfaceType('SubFS', null, // Zero value for interface is null
9
+ [{ name: "Sub", args: [{ name: "dir", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: "FS" }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }]);
10
+ // Sub returns an [FS] corresponding to the subtree rooted at fsys's dir.
11
+ //
12
+ // If dir is ".", Sub returns fsys unchanged.
13
+ // Otherwise, if fs implements [SubFS], Sub returns fsys.Sub(dir).
14
+ // Otherwise, Sub returns a new [FS] implementation sub that,
15
+ // in effect, implements sub.Open(name) as fsys.Open(path.Join(dir, name)).
16
+ // The implementation also translates calls to ReadDir, ReadFile, and Glob appropriately.
17
+ //
18
+ // Note that Sub(os.DirFS("/"), "prefix") is equivalent to os.DirFS("/prefix")
19
+ // and that neither of them guarantees to avoid operating system
20
+ // accesses outside "/prefix", because the implementation of [os.DirFS]
21
+ // does not check for symbolic links inside "/prefix" that point to
22
+ // other directories. That is, [os.DirFS] is not a general substitute for a
23
+ // chroot-style security mechanism, and Sub does not change that fact.
24
+ export function Sub(fsys, dir) {
25
+ if (!ValidPath(dir)) {
26
+ return [null, new PathError({ Err: ErrInvalid, Op: "sub", Path: dir })];
27
+ }
28
+ if (dir == ".") {
29
+ return [fsys, null];
30
+ }
31
+ {
32
+ let { value: fsysTyped, ok: ok } = $.typeAssert(fsys, 'SubFS');
33
+ if (ok) {
34
+ return fsysTyped.Sub(dir);
35
+ }
36
+ }
37
+ return [new subFS({}), null];
38
+ }
39
+ class subFS {
40
+ get fsys() {
41
+ return this._fields.fsys.value;
42
+ }
43
+ set fsys(value) {
44
+ this._fields.fsys.value = value;
45
+ }
46
+ get dir() {
47
+ return this._fields.dir.value;
48
+ }
49
+ set dir(value) {
50
+ this._fields.dir.value = value;
51
+ }
52
+ _fields;
53
+ constructor(init) {
54
+ this._fields = {
55
+ fsys: $.varRef(init?.fsys ?? null),
56
+ dir: $.varRef(init?.dir ?? "")
57
+ };
58
+ }
59
+ clone() {
60
+ const cloned = new subFS();
61
+ cloned._fields = {
62
+ fsys: $.varRef(this._fields.fsys.value),
63
+ dir: $.varRef(this._fields.dir.value)
64
+ };
65
+ return cloned;
66
+ }
67
+ // fullName maps name to the fully-qualified name dir/name.
68
+ fullName(op, name) {
69
+ const f = this;
70
+ if (!ValidPath(name)) {
71
+ return ["", new PathError({ Err: ErrInvalid, Op: op, Path: name })];
72
+ }
73
+ return [path.Join(f.dir, name), null];
74
+ }
75
+ // shorten maps name, which should start with f.dir, back to the suffix after f.dir.
76
+ shorten(name) {
77
+ const f = this;
78
+ if (name == f.dir) {
79
+ return [".", true];
80
+ }
81
+ if ($.len(name) >= $.len(f.dir) + 2 && $.indexString(name, $.len(f.dir)) == 47 && $.sliceString(name, undefined, $.len(f.dir)) == f.dir) {
82
+ return [$.sliceString(name, $.len(f.dir) + 1, undefined), true];
83
+ }
84
+ return ["", false];
85
+ }
86
+ // fixErr shortens any reported names in PathErrors by stripping f.dir.
87
+ fixErr(err) {
88
+ const f = this;
89
+ {
90
+ let { value: e, ok: ok } = $.typeAssert(err, { kind: $.TypeKind.Pointer, elemType: 'PathError' });
91
+ if (ok) {
92
+ {
93
+ let [short, ok] = f.shorten(e.Path);
94
+ if (ok) {
95
+ e.Path = short;
96
+ }
97
+ }
98
+ }
99
+ }
100
+ return err;
101
+ }
102
+ Open(name) {
103
+ const f = this;
104
+ let [full, err] = f.fullName("open", name);
105
+ if (err != null) {
106
+ return [null, err];
107
+ }
108
+ let file;
109
+ [file, err] = f.fsys.Open(full);
110
+ return [file, f.fixErr(err)];
111
+ }
112
+ ReadDir(name) {
113
+ const f = this;
114
+ let [full, err] = f.fullName("read", name);
115
+ if (err != null) {
116
+ return [null, err];
117
+ }
118
+ let dir;
119
+ [dir, err] = ReadDir(f.fsys, full);
120
+ return [dir, f.fixErr(err)];
121
+ }
122
+ ReadFile(name) {
123
+ const f = this;
124
+ let [full, err] = f.fullName("read", name);
125
+ if (err != null) {
126
+ return [new Uint8Array(0), err];
127
+ }
128
+ let data;
129
+ [data, err] = ReadFile(f.fsys, full);
130
+ return [data, f.fixErr(err)];
131
+ }
132
+ Glob(pattern) {
133
+ const f = this;
134
+ {
135
+ let [, err] = path.Match(pattern, "");
136
+ if (err != null) {
137
+ return [null, err];
138
+ }
139
+ }
140
+ if (pattern == ".") {
141
+ return [$.arrayToSlice(["."]), null];
142
+ }
143
+ let full = f.dir + "/" + pattern;
144
+ let [list, err] = Glob(f.fsys, full);
145
+ for (let i = 0; i < $.len(list); i++) {
146
+ const name = list[i];
147
+ {
148
+ let [shortName, ok] = f.shorten(name);
149
+ // can't use fmt in this package
150
+ if (!ok) {
151
+ return [null, errors.New("invalid result from inner fsys Glob: " + shortName + " not in " + f.dir)];
152
+ }
153
+ list[i] = shortName;
154
+ }
155
+ }
156
+ return [list, f.fixErr(err)];
157
+ }
158
+ Sub(dir) {
159
+ const f = this;
160
+ if (dir == ".") {
161
+ return [f, null];
162
+ }
163
+ let [full, err] = f.fullName("sub", dir);
164
+ if (err != null) {
165
+ return [null, err];
166
+ }
167
+ return [new subFS({}), null];
168
+ }
169
+ // Register this type with the runtime type system
170
+ static __typeInfo = $.registerStructType('subFS', new subFS(), [{ name: "fullName", args: [{ name: "op", type: { kind: $.TypeKind.Basic, name: "string" } }, { name: "name", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "shorten", args: [{ name: "name", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }, { type: { kind: $.TypeKind.Basic, name: "boolean" } }] }, { name: "fixErr", args: [{ name: "err", type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }], returns: [{ type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { 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' } }] }] } }] }, { name: "ReadDir", args: [{ name: "name", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: { kind: $.TypeKind.Slice, elemType: "DirEntry" } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { name: "ReadFile", args: [{ name: "name", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: { kind: $.TypeKind.Slice, elemType: { kind: $.TypeKind.Basic, name: "number" } } }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }, { 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' } }] }] } }] }, { name: "Sub", args: [{ name: "dir", type: { kind: $.TypeKind.Basic, name: "string" } }], returns: [{ type: "FS" }, { type: { kind: $.TypeKind.Interface, name: 'GoError', methods: [{ name: 'Error', args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }] }] } }] }], subFS, { "fsys": "FS", "dir": { kind: $.TypeKind.Basic, name: "string" } });
171
+ }
172
+ //# sourceMappingURL=sub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sub.js","sourceRoot":"","sources":["../../../../gs/io/fs/sub.ts"],"names":[],"mappings":"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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,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,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,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,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,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,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,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,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,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,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,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,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,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,CAAC,EAC7jF,KAAK,EACL,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAC,CAClE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { FS, DirEntry } from "./fs.js";
3
+ export declare let SkipDir: $.GoError;
4
+ export declare let SkipAll: $.GoError;
5
+ export type WalkDirFunc = ((path: string, d: DirEntry, err: $.GoError) => $.GoError) | null;
6
+ export declare function walkDir(fsys: FS, name: string, d: DirEntry, walkDirFn: WalkDirFunc): $.GoError;
7
+ export declare function WalkDir(fsys: FS, root: string, fn: WalkDirFunc): $.GoError;
@@ -0,0 +1,76 @@
1
+ import * as $ from "@goscript/builtin/builtin.js";
2
+ import { FileInfoToDirEntry, ReadDir } from "./readdir.js";
3
+ import { Stat } from "./stat.js";
4
+ import * as errors from "@goscript/errors/index.js";
5
+ import * as path from "@goscript/path/index.js";
6
+ export let SkipDir = errors.New("skip this directory");
7
+ export let SkipAll = errors.New("skip everything and stop the walk");
8
+ // walkDir recursively descends path, calling walkDirFn.
9
+ export function walkDir(fsys, name, d, walkDirFn) {
10
+ // Successfully skipped directory.
11
+ {
12
+ let err = walkDirFn(name, d, null);
13
+ if (err != null || !d.IsDir()) {
14
+ // Successfully skipped directory.
15
+ if (err == SkipDir && d.IsDir()) {
16
+ // Successfully skipped directory.
17
+ err = null;
18
+ }
19
+ return err;
20
+ }
21
+ }
22
+ let [dirs, err] = ReadDir(fsys, name);
23
+ // Second call, to report ReadDir error.
24
+ if (err != null) {
25
+ // Second call, to report ReadDir error.
26
+ err = walkDirFn(name, d, err);
27
+ if (err != null) {
28
+ if (err == SkipDir && d.IsDir()) {
29
+ err = null;
30
+ }
31
+ return err;
32
+ }
33
+ }
34
+ for (let _i = 0; _i < $.len(dirs); _i++) {
35
+ const d1 = dirs[_i];
36
+ {
37
+ let name1 = path.Join(name, d1.Name());
38
+ {
39
+ let err = walkDir(fsys, name1, d1, walkDirFn);
40
+ if (err != null) {
41
+ if (err == SkipDir) {
42
+ break;
43
+ }
44
+ return err;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ return null;
50
+ }
51
+ // WalkDir walks the file tree rooted at root, calling fn for each file or
52
+ // directory in the tree, including root.
53
+ //
54
+ // All errors that arise visiting files and directories are filtered by fn:
55
+ // see the [fs.WalkDirFunc] documentation for details.
56
+ //
57
+ // The files are walked in lexical order, which makes the output deterministic
58
+ // but requires WalkDir to read an entire directory into memory before proceeding
59
+ // to walk that directory.
60
+ //
61
+ // WalkDir does not follow symbolic links found in directories,
62
+ // but if root itself is a symbolic link, its target will be walked.
63
+ export function WalkDir(fsys, root, fn) {
64
+ let [info, err] = Stat(fsys, root);
65
+ if (err != null) {
66
+ err = fn(root, null, err);
67
+ }
68
+ else {
69
+ err = walkDir(fsys, root, FileInfoToDirEntry(info), fn);
70
+ }
71
+ if (err == SkipDir || err == SkipAll) {
72
+ return null;
73
+ }
74
+ return err;
75
+ }
76
+ //# sourceMappingURL=walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../../../gs/io/fs/walk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './io.js';
@@ -0,0 +1,2 @@
1
+ export * from './io.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/io/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
@@ -0,0 +1,107 @@
1
+ import * as $ from '@goscript/builtin/builtin.js';
2
+ export declare const EOF: $.GoError;
3
+ export declare const ErrClosedPipe: $.GoError;
4
+ export declare const ErrNoProgress: $.GoError;
5
+ export declare const ErrShortBuffer: $.GoError;
6
+ export declare const ErrShortWrite: $.GoError;
7
+ export declare const ErrUnexpectedEOF: $.GoError;
8
+ export declare const SeekStart = 0;
9
+ export declare const SeekCurrent = 1;
10
+ export declare const SeekEnd = 2;
11
+ export interface Reader {
12
+ Read(p: Uint8Array): [number, $.GoError];
13
+ }
14
+ export interface Writer {
15
+ Write(p: Uint8Array): [number, $.GoError];
16
+ }
17
+ export interface Closer {
18
+ Close(): $.GoError;
19
+ }
20
+ export interface Seeker {
21
+ Seek(offset: number, whence: number): [number, $.GoError];
22
+ }
23
+ export interface ReadWriter extends Reader, Writer {
24
+ }
25
+ export interface ReadCloser extends Reader, Closer {
26
+ }
27
+ export interface WriteCloser extends Writer, Closer {
28
+ }
29
+ export interface ReadWriteCloser extends Reader, Writer, Closer {
30
+ }
31
+ export interface ReadSeeker extends Reader, Seeker {
32
+ }
33
+ export interface WriteSeeker extends Writer, Seeker {
34
+ }
35
+ export interface ReadWriteSeeker extends Reader, Writer, Seeker {
36
+ }
37
+ export interface ReaderAt {
38
+ ReadAt(p: Uint8Array, off: number): [number, $.GoError];
39
+ }
40
+ export interface WriterAt {
41
+ WriteAt(p: Uint8Array, off: number): [number, $.GoError];
42
+ }
43
+ export interface ByteReader {
44
+ ReadByte(): [number, $.GoError];
45
+ }
46
+ export interface ByteWriter {
47
+ WriteByte(c: number): $.GoError;
48
+ }
49
+ export interface ByteScanner extends ByteReader {
50
+ UnreadByte(): $.GoError;
51
+ }
52
+ export interface RuneReader {
53
+ ReadRune(): [number, number, $.GoError];
54
+ }
55
+ export interface RuneScanner extends RuneReader {
56
+ UnreadRune(): $.GoError;
57
+ }
58
+ export interface StringWriter {
59
+ WriteString(s: string): [number, $.GoError];
60
+ }
61
+ export interface WriterTo {
62
+ WriteTo(w: Writer): [number, $.GoError];
63
+ }
64
+ export interface ReaderFrom {
65
+ ReadFrom(r: Reader): [number, $.GoError];
66
+ }
67
+ export declare const Discard: Writer;
68
+ export declare function WriteString(w: Writer, s: string): [number, $.GoError];
69
+ export declare class LimitedReader implements Reader {
70
+ R: Reader;
71
+ N: number;
72
+ constructor(r: Reader, n: number);
73
+ Read(p: Uint8Array): [number, $.GoError];
74
+ }
75
+ export declare function LimitReader(r: Reader, n: number): Reader;
76
+ export declare class SectionReader implements Reader, Seeker, ReaderAt {
77
+ private r;
78
+ private base;
79
+ private off;
80
+ private limit;
81
+ constructor(r: ReaderAt, off: number, n: number);
82
+ Read(p: Uint8Array): [number, $.GoError];
83
+ Seek(offset: number, whence: number): [number, $.GoError];
84
+ ReadAt(p: Uint8Array, off: number): [number, $.GoError];
85
+ Size(): number;
86
+ }
87
+ export declare function NewSectionReader(r: ReaderAt, off: number, n: number): SectionReader;
88
+ export declare class OffsetWriter implements Writer, WriterAt {
89
+ private w;
90
+ private base;
91
+ private off;
92
+ constructor(w: WriterAt, off: number);
93
+ Write(p: Uint8Array): [number, $.GoError];
94
+ WriteAt(p: Uint8Array, off: number): [number, $.GoError];
95
+ Seek(offset: number, whence: number): [number, $.GoError];
96
+ }
97
+ export declare function NewOffsetWriter(w: WriterAt, off: number): OffsetWriter;
98
+ export declare function Copy(dst: Writer, src: Reader): [number, $.GoError];
99
+ export declare function CopyBuffer(dst: Writer, src: Reader, buf: Uint8Array | null): [number, $.GoError];
100
+ export declare function CopyN(dst: Writer, src: Reader, n: number): [number, $.GoError];
101
+ export declare function ReadAtLeast(r: Reader, buf: Uint8Array, min: number): [number, $.GoError];
102
+ export declare function ReadFull(r: Reader, buf: Uint8Array): [number, $.GoError];
103
+ export declare function ReadAll(r: Reader): [Uint8Array, $.GoError];
104
+ export declare function NopCloser(r: Reader): ReadCloser;
105
+ export declare function MultiReader(...readers: Reader[]): Reader;
106
+ export declare function MultiWriter(...writers: Writer[]): Writer;
107
+ export declare function TeeReader(r: Reader, w: Writer): Reader;