goscript 0.0.29 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/compiler.go +8 -1
- package/compiler/index.ts +1 -1
- package/compiler/stmt-assign.go +14 -0
- package/dist/compiler/index.js +1 -1
- package/dist/compiler/index.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +6 -6
- package/dist/gs/builtin/channel.js +3 -3
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/slice.js +3 -9
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/context/context.js +2 -2
- package/dist/gs/context/context.js.map +1 -1
- package/dist/gs/internal/oserror/errors.d.ts +1 -1
- package/dist/gs/internal/oserror/errors.js +6 -6
- package/dist/gs/internal/oserror/index.d.ts +1 -1
- package/dist/gs/internal/oserror/index.js +1 -1
- package/dist/gs/internal/oserror/index.js.map +1 -1
- package/dist/gs/io/fs/format.d.ts +1 -1
- package/dist/gs/io/fs/format.js +12 -12
- package/dist/gs/io/fs/format.js.map +1 -1
- package/dist/gs/io/fs/fs.d.ts +2 -2
- package/dist/gs/io/fs/fs.js +258 -36
- package/dist/gs/io/fs/fs.js.map +1 -1
- package/dist/gs/io/fs/glob.d.ts +2 -2
- package/dist/gs/io/fs/glob.js +40 -14
- package/dist/gs/io/fs/glob.js.map +1 -1
- package/dist/gs/io/fs/index.d.ts +8 -8
- package/dist/gs/io/fs/index.js +8 -8
- package/dist/gs/io/fs/readdir.d.ts +2 -2
- package/dist/gs/io/fs/readdir.js +78 -9
- package/dist/gs/io/fs/readdir.js.map +1 -1
- package/dist/gs/io/fs/readfile.d.ts +2 -2
- package/dist/gs/io/fs/readfile.js +31 -13
- package/dist/gs/io/fs/readfile.js.map +1 -1
- package/dist/gs/io/fs/stat.d.ts +2 -2
- package/dist/gs/io/fs/stat.js +25 -2
- package/dist/gs/io/fs/stat.js.map +1 -1
- package/dist/gs/io/fs/sub.d.ts +2 -2
- package/dist/gs/io/fs/sub.js +264 -28
- package/dist/gs/io/fs/sub.js.map +1 -1
- package/dist/gs/io/fs/walk.d.ts +2 -2
- package/dist/gs/io/fs/walk.js +7 -7
- package/dist/gs/io/fs/walk.js.map +1 -1
- package/dist/gs/iter/iter.js +1 -1
- package/dist/gs/iter/iter.js.map +1 -1
- package/dist/gs/path/index.d.ts +2 -2
- package/dist/gs/path/index.js +2 -2
- package/dist/gs/path/match.d.ts +1 -1
- package/dist/gs/path/match.js +39 -33
- package/dist/gs/path/match.js.map +1 -1
- package/dist/gs/path/path.js +53 -24
- package/dist/gs/path/path.js.map +1 -1
- package/dist/gs/runtime/runtime.d.ts +3 -3
- package/dist/gs/runtime/runtime.js +3 -3
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/strings/builder.d.ts +1 -1
- package/dist/gs/strings/builder.js +1 -1
- package/dist/gs/strings/builder.js.map +1 -1
- package/dist/gs/strings/clone.js.map +1 -1
- package/dist/gs/strings/compare.js.map +1 -1
- package/dist/gs/strings/replace.js +4 -2
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/strings/strings.js +0 -12
- package/dist/gs/strings/strings.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +5 -5
- package/dist/gs/sync/sync.js +5 -5
- package/dist/gs/sync/sync.js.map +1 -1
- package/dist/gs/time/time.d.ts +2 -2
- package/dist/gs/time/time.js +62 -16
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unsafe/unsafe.d.ts +8 -8
- package/dist/gs/unsafe/unsafe.js +8 -8
- package/dist/gs/unsafe/unsafe.js.map +1 -1
- package/gs/builtin/builtin.ts +1 -1
- package/gs/builtin/channel.ts +6 -6
- package/gs/builtin/slice.ts +3 -9
- package/gs/context/context.ts +2 -2
- package/gs/internal/oserror/errors.ts +7 -8
- package/gs/internal/oserror/index.ts +7 -1
- package/gs/io/fs/format.ts +39 -40
- package/gs/io/fs/fs.ts +446 -222
- package/gs/io/fs/glob.ts +164 -131
- package/gs/io/fs/index.ts +8 -8
- package/gs/io/fs/readdir.ts +188 -106
- package/gs/io/fs/readfile.ts +79 -58
- package/gs/io/fs/stat.ts +49 -25
- package/gs/io/fs/sub.ts +422 -181
- package/gs/io/fs/walk.ts +67 -63
- package/gs/iter/iter.ts +1 -1
- package/gs/path/index.ts +2 -2
- package/gs/path/match.ts +263 -250
- package/gs/path/path.ts +259 -232
- package/gs/runtime/runtime.ts +4 -4
- package/gs/strings/builder.test.ts +0 -1
- package/gs/strings/builder.ts +1 -1
- package/gs/strings/clone.ts +0 -2
- package/gs/strings/compare.ts +0 -2
- package/gs/strings/iter.test.ts +0 -1
- package/gs/strings/replace.test.ts +3 -4
- package/gs/strings/replace.ts +4 -7
- package/gs/strings/strings.test.ts +6 -6
- package/gs/strings/strings.ts +0 -14
- package/gs/sync/sync.ts +5 -5
- package/gs/time/time.ts +86 -29
- package/gs/unsafe/unsafe.ts +8 -8
- package/package.json +1 -1
package/gs/io/fs/readfile.ts
CHANGED
|
@@ -1,24 +1,54 @@
|
|
|
1
|
-
import * as $ from
|
|
2
|
-
import { FS } from
|
|
1
|
+
import * as $ from '@goscript/builtin/builtin.js'
|
|
2
|
+
import { FS } from './fs.js'
|
|
3
3
|
|
|
4
|
-
import * as io from
|
|
4
|
+
import * as io from '@goscript/io/index.js'
|
|
5
5
|
|
|
6
|
-
export type ReadFileFS =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
export type ReadFileFS =
|
|
7
|
+
| null
|
|
8
|
+
| ({
|
|
9
|
+
// ReadFile reads the named file and returns its contents.
|
|
10
|
+
// A successful call returns a nil error, not io.EOF.
|
|
11
|
+
// (Because ReadFile reads the whole file, the expected EOF
|
|
12
|
+
// from the final Read is not treated as an error to be reported.)
|
|
13
|
+
//
|
|
14
|
+
// The caller is permitted to modify the returned byte slice.
|
|
15
|
+
// This method should return a copy of the underlying data.
|
|
16
|
+
ReadFile(name: string): [Uint8Array, $.GoError]
|
|
17
|
+
} & FS)
|
|
16
18
|
|
|
17
19
|
$.registerInterfaceType(
|
|
18
20
|
'ReadFileFS',
|
|
19
21
|
null, // Zero value for interface is null
|
|
20
|
-
[
|
|
21
|
-
|
|
22
|
+
[
|
|
23
|
+
{
|
|
24
|
+
name: 'ReadFile',
|
|
25
|
+
args: [
|
|
26
|
+
{ name: 'name', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
27
|
+
],
|
|
28
|
+
returns: [
|
|
29
|
+
{
|
|
30
|
+
type: {
|
|
31
|
+
kind: $.TypeKind.Slice,
|
|
32
|
+
elemType: { kind: $.TypeKind.Basic, name: 'number' },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
type: {
|
|
37
|
+
kind: $.TypeKind.Interface,
|
|
38
|
+
name: 'GoError',
|
|
39
|
+
methods: [
|
|
40
|
+
{
|
|
41
|
+
name: 'Error',
|
|
42
|
+
args: [],
|
|
43
|
+
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
)
|
|
22
52
|
|
|
23
53
|
// ReadFile reads the named file from the file system fs and returns its contents.
|
|
24
54
|
// A successful call returns a nil error, not [io.EOF].
|
|
@@ -29,49 +59,40 @@ $.registerInterfaceType(
|
|
|
29
59
|
// Otherwise ReadFile calls fs.Open and uses Read and Close
|
|
30
60
|
// on the returned [File].
|
|
31
61
|
export function ReadFile(fsys: FS, name: string): [Uint8Array, $.GoError] {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
62
|
+
using __defer = new $.DisposableStack()
|
|
63
|
+
{
|
|
64
|
+
let { value: fsysTyped, ok: ok } = $.typeAssert<ReadFileFS>(
|
|
65
|
+
fsys,
|
|
66
|
+
'ReadFileFS',
|
|
67
|
+
)
|
|
68
|
+
if (ok) {
|
|
69
|
+
return fsysTyped!.ReadFile(name)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
39
72
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
73
|
+
let [file, err] = fsys!.Open(name)
|
|
74
|
+
if (err != null) {
|
|
75
|
+
return [new Uint8Array(0), err]
|
|
76
|
+
}
|
|
77
|
+
__defer.defer(() => {
|
|
78
|
+
file!.Close()
|
|
79
|
+
})
|
|
47
80
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
data = newData
|
|
66
|
-
}
|
|
67
|
-
let [n, err] = file!.Read(data.subarray($.len(data), $.cap(data)))
|
|
68
|
-
data = data.subarray(0, $.len(data) + n)
|
|
69
|
-
if (err != null) {
|
|
70
|
-
if (err == io.EOF) {
|
|
71
|
-
err = null
|
|
72
|
-
}
|
|
73
|
-
return [data, err]
|
|
74
|
-
}
|
|
75
|
-
}
|
|
81
|
+
let data = new Uint8Array(0)
|
|
82
|
+
for (;;) {
|
|
83
|
+
if ($.len(data) >= $.cap(data)) {
|
|
84
|
+
// Grow the array by creating a new larger one
|
|
85
|
+
let newData = new Uint8Array($.len(data) * 2 + 1)
|
|
86
|
+
newData.set(data)
|
|
87
|
+
data = newData
|
|
88
|
+
}
|
|
89
|
+
let [n, err] = file!.Read(data.subarray($.len(data), $.cap(data)))
|
|
90
|
+
data = data.subarray(0, $.len(data) + n)
|
|
91
|
+
if (err != null) {
|
|
92
|
+
if (err == io.EOF) {
|
|
93
|
+
err = null
|
|
94
|
+
}
|
|
95
|
+
return [data, err]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
76
98
|
}
|
|
77
|
-
|
package/gs/io/fs/stat.ts
CHANGED
|
@@ -1,38 +1,62 @@
|
|
|
1
|
-
import * as $ from
|
|
2
|
-
import { FS, FileInfo } from
|
|
1
|
+
import * as $ from '@goscript/builtin/builtin.js'
|
|
2
|
+
import { FS, FileInfo } from './fs.js'
|
|
3
3
|
|
|
4
|
-
export type StatFS =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export type StatFS =
|
|
5
|
+
| null
|
|
6
|
+
| ({
|
|
7
|
+
// Stat returns a FileInfo describing the file.
|
|
8
|
+
// If there is an error, it should be of type *PathError.
|
|
9
|
+
Stat(name: string): [FileInfo, $.GoError]
|
|
10
|
+
} & FS)
|
|
9
11
|
|
|
10
12
|
$.registerInterfaceType(
|
|
11
13
|
'StatFS',
|
|
12
14
|
null, // Zero value for interface is null
|
|
13
|
-
[
|
|
14
|
-
|
|
15
|
+
[
|
|
16
|
+
{
|
|
17
|
+
name: 'Stat',
|
|
18
|
+
args: [
|
|
19
|
+
{ name: 'name', type: { kind: $.TypeKind.Basic, name: 'string' } },
|
|
20
|
+
],
|
|
21
|
+
returns: [
|
|
22
|
+
{ type: 'FileInfo' },
|
|
23
|
+
{
|
|
24
|
+
type: {
|
|
25
|
+
kind: $.TypeKind.Interface,
|
|
26
|
+
name: 'GoError',
|
|
27
|
+
methods: [
|
|
28
|
+
{
|
|
29
|
+
name: 'Error',
|
|
30
|
+
args: [],
|
|
31
|
+
returns: [{ type: { kind: $.TypeKind.Basic, name: 'string' } }],
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
)
|
|
15
40
|
|
|
16
41
|
// Stat returns a [FileInfo] describing the named file from the file system.
|
|
17
42
|
//
|
|
18
43
|
// If fs implements [StatFS], Stat calls fs.Stat.
|
|
19
44
|
// Otherwise, Stat opens the [File] to stat it.
|
|
20
45
|
export function Stat(fsys: FS, name: string): [FileInfo, $.GoError] {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
46
|
+
using __defer = new $.DisposableStack()
|
|
47
|
+
{
|
|
48
|
+
let { value: fsysTyped, ok: ok } = $.typeAssert<StatFS>(fsys, 'StatFS')
|
|
49
|
+
if (ok) {
|
|
50
|
+
return fsysTyped!.Stat(name)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
28
53
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
54
|
+
let [file, err] = fsys!.Open(name)
|
|
55
|
+
if (err != null) {
|
|
56
|
+
return [null, err]
|
|
57
|
+
}
|
|
58
|
+
__defer.defer(() => {
|
|
59
|
+
file!.Close()
|
|
60
|
+
})
|
|
61
|
+
return file!.Stat()
|
|
37
62
|
}
|
|
38
|
-
|