goscript 0.1.0 → 0.1.2
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/README.md +267 -255
- package/cmd/goscript/cmd-test.go +286 -0
- package/cmd/goscript/cmd-test_test.go +76 -0
- package/cmd/goscript/cmd_compile.go +9 -0
- package/cmd/goscript/main.go +1 -0
- package/compiler/build-flags.go +38 -0
- package/compiler/compile-request.go +33 -0
- package/compiler/compiler.go +1 -1
- package/compiler/compliance_test.go +0 -10
- package/compiler/config.go +2 -0
- package/compiler/gotest/owner.go +24 -0
- package/compiler/gotest/package-result.go +69 -0
- package/compiler/gotest/request.go +210 -0
- package/compiler/gotest/result.go +28 -0
- package/compiler/gotest/runner.go +1225 -0
- package/compiler/gotest/runner_test.go +1271 -0
- package/compiler/gotest/test.go +9 -0
- package/compiler/index.test.ts +1 -1
- package/compiler/lowered-program.go +80 -21
- package/compiler/lowering.go +6754 -602
- package/compiler/override-facts.go +357 -0
- package/compiler/override-registry.go +52 -190
- package/compiler/override-registry_test.go +182 -0
- package/compiler/package-graph.go +50 -27
- package/compiler/package-graph_test.go +99 -9
- package/compiler/package-test-function.go +9 -0
- package/compiler/package-test-graph-package.go +40 -0
- package/compiler/package-test-graph-variant.go +129 -0
- package/compiler/package-test-graph.go +112 -0
- package/compiler/package-test-graph_test.go +202 -0
- package/compiler/runtime-contract.go +229 -29
- package/compiler/runtime-contract_test.go +44 -30
- package/compiler/semantic-model-types.go +25 -6
- package/compiler/semantic-model.go +819 -74
- package/compiler/semantic-model_test.go +104 -0
- package/compiler/service.go +10 -4
- package/compiler/skeleton_test.go +2777 -524
- package/compiler/tsworkspace/owner-process-unix_test.go +72 -0
- package/compiler/tsworkspace/owner.go +342 -0
- package/compiler/tsworkspace/owner_test.go +93 -0
- package/compiler/tsworkspace/result.go +17 -0
- package/compiler/tsworkspace/tool-process-other.go +14 -0
- package/compiler/tsworkspace/tool-process-unix.go +19 -0
- package/compiler/typescript-emitter.go +576 -86
- package/compiler/wasm/compile.go +1 -1
- package/compiler/wasm/compile_test.go +61 -11
- package/compiler/wasm_api.go +172 -7
- package/dist/gs/builtin/builtin.d.ts +40 -3
- package/dist/gs/builtin/builtin.js +430 -22
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +32 -10
- package/dist/gs/builtin/channel.js +119 -25
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/defer.d.ts +1 -0
- package/dist/gs/builtin/defer.js +12 -2
- package/dist/gs/builtin/defer.js.map +1 -1
- package/dist/gs/builtin/hostio.d.ts +9 -0
- package/dist/gs/builtin/hostio.js +25 -0
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/builtin/map.js +40 -6
- package/dist/gs/builtin/map.js.map +1 -1
- package/dist/gs/builtin/print.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +64 -10
- package/dist/gs/builtin/slice.js +619 -244
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +7 -2
- package/dist/gs/builtin/type.js +128 -29
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +7 -0
- package/dist/gs/builtin/varRef.js +23 -0
- package/dist/gs/builtin/varRef.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.js +74 -70
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/iter.gs.js +13 -13
- package/dist/gs/bytes/iter.gs.js.map +1 -1
- package/dist/gs/bytes/reader.gs.js +20 -18
- package/dist/gs/bytes/reader.gs.js.map +1 -1
- package/dist/gs/compress/zlib/index.d.ts +26 -0
- package/dist/gs/compress/zlib/index.js +168 -0
- package/dist/gs/compress/zlib/index.js.map +1 -0
- package/dist/gs/context/context.d.ts +6 -5
- package/dist/gs/context/context.js +17 -12
- package/dist/gs/context/context.js.map +1 -1
- package/dist/gs/crypto/ecdh/index.d.ts +52 -0
- package/dist/gs/crypto/ecdh/index.js +226 -0
- package/dist/gs/crypto/ecdh/index.js.map +1 -0
- package/dist/gs/crypto/ed25519/index.d.ts +34 -0
- package/dist/gs/crypto/ed25519/index.js +160 -0
- package/dist/gs/crypto/ed25519/index.js.map +1 -0
- package/dist/gs/crypto/internal/constanttime/index.d.ts +4 -0
- package/dist/gs/crypto/internal/constanttime/index.js +18 -0
- package/dist/gs/crypto/internal/constanttime/index.js.map +1 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.d.ts +1 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.js +2 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.js.map +1 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.d.ts +1 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.js +2 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.js.map +1 -0
- package/dist/gs/crypto/rand/index.d.ts +2 -0
- package/dist/gs/crypto/rand/index.js +85 -0
- package/dist/gs/crypto/rand/index.js.map +1 -1
- package/dist/gs/crypto/sha256/index.d.ts +8 -0
- package/dist/gs/crypto/sha256/index.js +118 -0
- package/dist/gs/crypto/sha256/index.js.map +1 -0
- package/dist/gs/crypto/sha512/index.d.ts +14 -0
- package/dist/gs/crypto/sha512/index.js +129 -0
- package/dist/gs/crypto/sha512/index.js.map +1 -0
- package/dist/gs/embed/index.d.ts +7 -0
- package/dist/gs/embed/index.js +16 -0
- package/dist/gs/embed/index.js.map +1 -0
- package/dist/gs/encoding/json/index.d.ts +4 -0
- package/dist/gs/encoding/json/index.js +33 -0
- package/dist/gs/encoding/json/index.js.map +1 -1
- package/dist/gs/errors/errors.d.ts +4 -0
- package/dist/gs/errors/errors.js +108 -4
- package/dist/gs/errors/errors.js.map +1 -1
- package/dist/gs/fmt/fmt.d.ts +4 -4
- package/dist/gs/fmt/fmt.js +42 -11
- package/dist/gs/fmt/fmt.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +37 -2
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +245 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +189 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +861 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +217 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +814 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -0
- package/dist/gs/github.com/aperturerobotics/util/conc/index.d.ts +20 -0
- package/dist/gs/github.com/aperturerobotics/util/conc/index.js +134 -0
- package/dist/gs/github.com/aperturerobotics/util/conc/index.js.map +1 -0
- package/dist/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/browser.js.map +1 -1
- package/dist/gs/github.com/hack-pad/safejs/internal/catch/index.d.ts +3 -0
- package/dist/gs/github.com/hack-pad/safejs/internal/catch/index.js +50 -0
- package/dist/gs/github.com/hack-pad/safejs/internal/catch/index.js.map +1 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.d.ts +9 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js +72 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
- package/dist/gs/github.com/mr-tron/base58/base58/index.d.ts +27 -0
- package/dist/gs/github.com/mr-tron/base58/base58/index.js +172 -0
- package/dist/gs/github.com/mr-tron/base58/base58/index.js.map +1 -0
- package/dist/gs/github.com/zeebo/blake3/internal/consts/index.d.ts +21 -0
- package/dist/gs/github.com/zeebo/blake3/internal/consts/index.js +22 -0
- package/dist/gs/github.com/zeebo/blake3/internal/consts/index.js.map +1 -0
- package/dist/gs/go/internal/scannerhooks/index.d.ts +3 -0
- package/dist/gs/go/internal/scannerhooks/index.js +5 -0
- package/dist/gs/go/internal/scannerhooks/index.js.map +1 -0
- package/dist/gs/go/scanner/index.d.ts +13 -0
- package/dist/gs/go/scanner/index.js +35 -0
- package/dist/gs/go/scanner/index.js.map +1 -1
- package/dist/gs/go/token/index.d.ts +156 -0
- package/dist/gs/go/token/index.js +507 -4
- package/dist/gs/go/token/index.js.map +1 -1
- package/dist/gs/hash/fnv/index.d.ts +57 -0
- package/dist/gs/hash/fnv/index.js +299 -0
- package/dist/gs/hash/fnv/index.js.map +1 -0
- package/dist/gs/hash/index.d.ts +17 -0
- package/dist/gs/hash/index.js +94 -0
- package/dist/gs/hash/index.js.map +1 -0
- package/dist/gs/internal/abi/index.d.ts +4 -0
- package/dist/gs/internal/abi/index.js +10 -0
- package/dist/gs/internal/abi/index.js.map +1 -1
- package/dist/gs/internal/bytealg/index.d.ts +2 -0
- package/dist/gs/internal/bytealg/index.js +14 -0
- package/dist/gs/internal/bytealg/index.js.map +1 -1
- package/dist/gs/internal/byteorder/index.d.ts +8 -2
- package/dist/gs/internal/byteorder/index.js +56 -25
- package/dist/gs/internal/byteorder/index.js.map +1 -1
- package/dist/gs/internal/godebug/index.d.ts +12 -0
- package/dist/gs/internal/godebug/index.js +30 -0
- package/dist/gs/internal/godebug/index.js.map +1 -0
- package/dist/gs/io/fs/index.d.ts +1 -0
- package/dist/gs/io/fs/index.js +1 -0
- package/dist/gs/io/fs/index.js.map +1 -1
- package/dist/gs/io/fs/readlink.d.ts +8 -0
- package/dist/gs/io/fs/readlink.js +60 -0
- package/dist/gs/io/fs/readlink.js.map +1 -0
- package/dist/gs/io/fs/walk.d.ts +3 -3
- package/dist/gs/io/fs/walk.js +7 -7
- package/dist/gs/io/fs/walk.js.map +1 -1
- package/dist/gs/io/io.d.ts +40 -6
- package/dist/gs/io/io.js +151 -26
- package/dist/gs/io/io.js.map +1 -1
- package/dist/gs/iter/iter.d.ts +3 -2
- package/dist/gs/iter/iter.js.map +1 -1
- package/dist/gs/maps/iter.d.ts +5 -5
- package/dist/gs/maps/iter.js +48 -21
- package/dist/gs/maps/iter.js.map +1 -1
- package/dist/gs/maps/maps.d.ts +6 -6
- package/dist/gs/maps/maps.js +1 -1
- package/dist/gs/maps/maps.js.map +1 -1
- package/dist/gs/math/bits/index.d.ts +13 -4
- package/dist/gs/math/bits/index.js +70 -48
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/math/const.gs.d.ts +5 -5
- package/dist/gs/math/const.gs.js +4 -4
- package/dist/gs/math/const.gs.js.map +1 -1
- package/dist/gs/mime/index.d.ts +1 -0
- package/dist/gs/mime/index.js +52 -0
- package/dist/gs/mime/index.js.map +1 -0
- package/dist/gs/net/http/httptest/index.d.ts +30 -0
- package/dist/gs/net/http/httptest/index.js +101 -0
- package/dist/gs/net/http/httptest/index.js.map +1 -0
- package/dist/gs/net/http/index.d.ts +131 -0
- package/dist/gs/net/http/index.js +307 -0
- package/dist/gs/net/http/index.js.map +1 -0
- package/dist/gs/net/http/pprof/index.d.ts +8 -0
- package/dist/gs/net/http/pprof/index.js +59 -0
- package/dist/gs/net/http/pprof/index.js.map +1 -0
- package/dist/gs/os/dir_unix.gs.js +2 -2
- package/dist/gs/os/dir_unix.gs.js.map +1 -1
- package/dist/gs/os/error.gs.js +9 -7
- package/dist/gs/os/error.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js +95 -15
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/path/filepath/match.js +165 -3
- package/dist/gs/path/filepath/match.js.map +1 -1
- package/dist/gs/path/filepath/path.d.ts +8 -4
- package/dist/gs/path/filepath/path.js +192 -8
- package/dist/gs/path/filepath/path.js.map +1 -1
- package/dist/gs/path/path.d.ts +4 -1
- package/dist/gs/path/path.js +16 -4
- package/dist/gs/path/path.js.map +1 -1
- package/dist/gs/reflect/index.d.ts +4 -3
- package/dist/gs/reflect/index.js +3 -2
- package/dist/gs/reflect/index.js.map +1 -1
- package/dist/gs/reflect/iter.js +2 -2
- package/dist/gs/reflect/iter.js.map +1 -1
- package/dist/gs/reflect/map.js +29 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +31 -9
- package/dist/gs/reflect/type.js +536 -43
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/types.d.ts +1 -0
- package/dist/gs/reflect/types.js +3 -1
- package/dist/gs/reflect/types.js.map +1 -1
- package/dist/gs/reflect/value.d.ts +4 -1
- package/dist/gs/reflect/value.js +39 -1
- package/dist/gs/reflect/value.js.map +1 -1
- package/dist/gs/reflect/visiblefields.js +1 -1
- package/dist/gs/reflect/visiblefields.js.map +1 -1
- package/dist/gs/runtime/debug/index.d.ts +41 -0
- package/dist/gs/runtime/debug/index.js +66 -0
- package/dist/gs/runtime/debug/index.js.map +1 -0
- package/dist/gs/runtime/pprof/index.d.ts +20 -0
- package/dist/gs/runtime/pprof/index.js +85 -0
- package/dist/gs/runtime/pprof/index.js.map +1 -0
- package/dist/gs/runtime/runtime.d.ts +35 -3
- package/dist/gs/runtime/runtime.js +72 -0
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/runtime/trace/index.d.ts +19 -0
- package/dist/gs/runtime/trace/index.js +64 -0
- package/dist/gs/runtime/trace/index.js.map +1 -0
- package/dist/gs/slices/slices.d.ts +42 -8
- package/dist/gs/slices/slices.js +425 -11
- package/dist/gs/slices/slices.js.map +1 -1
- package/dist/gs/sort/slice.gs.d.ts +5 -3
- package/dist/gs/sort/slice.gs.js +60 -22
- package/dist/gs/sort/slice.gs.js.map +1 -1
- package/dist/gs/sort/sort.gs.d.ts +4 -4
- package/dist/gs/sort/sort.gs.js +11 -8
- package/dist/gs/sort/sort.gs.js.map +1 -1
- package/dist/gs/strings/builder.d.ts +1 -1
- package/dist/gs/strings/builder.js +29 -19
- package/dist/gs/strings/builder.js.map +1 -1
- package/dist/gs/strings/iter.js +140 -75
- package/dist/gs/strings/iter.js.map +1 -1
- package/dist/gs/strings/replace.js +2 -2
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/strings/strings.js +52 -6
- package/dist/gs/strings/strings.js.map +1 -1
- package/dist/gs/sync/atomic/type.gs.d.ts +9 -8
- package/dist/gs/sync/atomic/type.gs.js +0 -2
- package/dist/gs/sync/atomic/type.gs.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +8 -3
- package/dist/gs/sync/sync.js +66 -11
- package/dist/gs/sync/sync.js.map +1 -1
- package/dist/gs/syscall/constants.d.ts +36 -24
- package/dist/gs/syscall/constants.js +12 -0
- package/dist/gs/syscall/constants.js.map +1 -1
- package/dist/gs/syscall/errors.d.ts +117 -111
- package/dist/gs/syscall/errors.js +45 -0
- package/dist/gs/syscall/errors.js.map +1 -1
- package/dist/gs/syscall/fs.d.ts +37 -0
- package/dist/gs/syscall/fs.js +102 -0
- package/dist/gs/syscall/fs.js.map +1 -1
- package/dist/gs/syscall/js/index.d.ts +90 -0
- package/dist/gs/syscall/js/index.js +383 -0
- package/dist/gs/syscall/js/index.js.map +1 -0
- package/dist/gs/syscall/types.d.ts +26 -1
- package/dist/gs/syscall/types.js +45 -1
- package/dist/gs/syscall/types.js.map +1 -1
- package/dist/gs/testing/index.d.ts +1 -0
- package/dist/gs/testing/index.js +2 -0
- package/dist/gs/testing/index.js.map +1 -0
- package/dist/gs/testing/testing.d.ts +78 -0
- package/dist/gs/testing/testing.js +318 -0
- package/dist/gs/testing/testing.js.map +1 -0
- package/dist/gs/time/time.d.ts +41 -4
- package/dist/gs/time/time.js +227 -36
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unicode/unicode.d.ts +23 -1
- package/dist/gs/unicode/unicode.js +79 -10
- package/dist/gs/unicode/unicode.js.map +1 -1
- package/dist/gs/unicode/utf8/utf8.d.ts +4 -4
- package/dist/gs/unicode/utf8/utf8.js +24 -11
- package/dist/gs/unicode/utf8/utf8.js.map +1 -1
- package/dist/gs/unique/index.d.ts +11 -0
- package/dist/gs/unique/index.js +76 -0
- package/dist/gs/unique/index.js.map +1 -0
- package/go.mod +8 -8
- package/go.sum +14 -14
- package/gs/builtin/builtin.ts +585 -27
- package/gs/builtin/channel.ts +183 -29
- package/gs/builtin/defer.ts +13 -2
- package/gs/builtin/hostio.test.ts +1 -0
- package/gs/builtin/hostio.ts +38 -0
- package/gs/builtin/map.ts +46 -6
- package/gs/builtin/print.ts +12 -3
- package/gs/builtin/runtime-contract.test.ts +383 -10
- package/gs/builtin/slice.test.ts +70 -0
- package/gs/builtin/slice.ts +785 -265
- package/gs/builtin/type.ts +160 -41
- package/gs/builtin/varRef.ts +40 -1
- package/gs/bytes/buffer.gs.ts +74 -70
- package/gs/bytes/iter.gs.ts +13 -14
- package/gs/bytes/meta.json +8 -3
- package/gs/bytes/reader.gs.ts +20 -19
- package/gs/compress/zlib/index.test.ts +28 -0
- package/gs/compress/zlib/index.ts +200 -0
- package/gs/compress/zlib/meta.json +3 -0
- package/gs/context/context.test.ts +71 -0
- package/gs/context/context.ts +30 -29
- package/gs/crypto/ecdh/index.test.ts +43 -0
- package/gs/crypto/ecdh/index.ts +274 -0
- package/gs/crypto/ed25519/index.test.ts +41 -0
- package/gs/crypto/ed25519/index.ts +238 -0
- package/gs/crypto/ed25519/meta.json +13 -0
- package/gs/crypto/internal/constanttime/index.test.ts +25 -0
- package/gs/crypto/internal/constanttime/index.ts +22 -0
- package/gs/crypto/internal/fips140deps/byteorder/index.ts +1 -0
- package/gs/crypto/internal/fips140deps/godebug/index.ts +1 -0
- package/gs/crypto/rand/index.test.ts +89 -1
- package/gs/crypto/rand/index.ts +103 -1
- package/gs/crypto/rand/meta.json +4 -1
- package/gs/crypto/sha256/index.test.ts +78 -0
- package/gs/crypto/sha256/index.ts +150 -0
- package/gs/crypto/sha256/meta.json +9 -0
- package/gs/crypto/sha512/index.test.ts +31 -0
- package/gs/crypto/sha512/index.ts +161 -0
- package/gs/crypto/sha512/meta.json +11 -0
- package/gs/embed/index.ts +20 -0
- package/gs/embed/meta.json +5 -0
- package/gs/encoding/json/index.test.ts +39 -3
- package/gs/encoding/json/index.ts +45 -3
- package/gs/errors/errors.test.ts +85 -0
- package/gs/errors/errors.ts +132 -4
- package/gs/fmt/fmt.test.ts +3 -1
- package/gs/fmt/fmt.ts +55 -19
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +128 -1
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +342 -4
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +180 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1084 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/index.test.ts +31 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +1233 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +46 -0
- package/gs/github.com/aperturerobotics/util/conc/index.test.ts +30 -0
- package/gs/github.com/aperturerobotics/util/conc/index.ts +172 -0
- package/gs/github.com/aperturerobotics/util/conc/meta.json +9 -0
- package/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/browser.ts +1 -4
- package/gs/github.com/hack-pad/safejs/internal/catch/index.test.ts +35 -0
- package/gs/github.com/hack-pad/safejs/internal/catch/index.ts +65 -0
- package/gs/github.com/hack-pad/safejs/internal/catch/meta.json +9 -0
- package/gs/github.com/klauspost/compress/internal/le/index.test.ts +37 -0
- package/gs/github.com/klauspost/compress/internal/le/index.ts +115 -0
- package/gs/github.com/mr-tron/base58/base58/index.test.ts +70 -0
- package/gs/github.com/mr-tron/base58/base58/index.ts +231 -0
- package/gs/github.com/mr-tron/base58/base58/meta.json +3 -0
- package/gs/github.com/zeebo/blake3/internal/consts/index.test.ts +46 -0
- package/gs/github.com/zeebo/blake3/internal/consts/index.ts +26 -0
- package/gs/go/internal/scannerhooks/index.test.ts +14 -0
- package/gs/go/internal/scannerhooks/index.ts +9 -0
- package/gs/go/scanner/index.test.ts +22 -0
- package/gs/go/scanner/index.ts +47 -0
- package/gs/go/token/index.test.ts +47 -1
- package/gs/go/token/index.ts +583 -4
- package/gs/hash/fnv/index.test.ts +67 -0
- package/gs/hash/fnv/index.ts +351 -0
- package/gs/hash/fnv/meta.json +3 -0
- package/gs/hash/index.test.ts +37 -0
- package/gs/hash/index.ts +118 -0
- package/gs/hash/meta.json +5 -0
- package/gs/internal/abi/index.test.ts +18 -0
- package/gs/internal/abi/index.ts +14 -0
- package/gs/internal/bytealg/index.test.ts +18 -0
- package/gs/internal/bytealg/index.ts +16 -0
- package/gs/internal/byteorder/index.test.ts +39 -0
- package/gs/internal/byteorder/index.ts +100 -27
- package/gs/internal/godebug/index.test.ts +16 -0
- package/gs/internal/godebug/index.ts +35 -0
- package/gs/io/fs/index.ts +1 -0
- package/gs/io/fs/meta.json +5 -0
- package/gs/io/fs/readlink.test.ts +43 -0
- package/gs/io/fs/readlink.ts +69 -0
- package/gs/io/fs/walk.test.ts +61 -0
- package/gs/io/fs/walk.ts +17 -9
- package/gs/io/io.ts +177 -31
- package/gs/io/meta.json +10 -2
- package/gs/iter/iter.ts +8 -2
- package/gs/maps/iter.ts +75 -26
- package/gs/maps/maps.test.ts +23 -0
- package/gs/maps/maps.ts +13 -11
- package/gs/math/bits/index.test.ts +20 -0
- package/gs/math/bits/index.ts +107 -64
- package/gs/math/const.gs.test.ts +11 -5
- package/gs/math/const.gs.ts +5 -6
- package/gs/mime/index.ts +60 -0
- package/gs/net/http/httptest/index.test.ts +53 -0
- package/gs/net/http/httptest/index.ts +120 -0
- package/gs/net/http/index.test.ts +148 -0
- package/gs/net/http/index.ts +432 -0
- package/gs/net/http/meta.json +6 -0
- package/gs/net/http/pprof/index.test.ts +47 -0
- package/gs/net/http/pprof/index.ts +65 -0
- package/gs/os/dir_unix.gs.ts +2 -3
- package/gs/os/error.gs.ts +9 -10
- package/gs/os/error.test.ts +41 -0
- package/gs/os/file_unix_js.test.ts +55 -0
- package/gs/os/tempfile.gs.test.ts +37 -10
- package/gs/os/types_js.gs.ts +96 -17
- package/gs/path/filepath/match.test.ts +31 -12
- package/gs/path/filepath/match.ts +181 -3
- package/gs/path/filepath/meta.json +6 -0
- package/gs/path/filepath/path.test.ts +80 -0
- package/gs/path/filepath/path.ts +244 -11
- package/gs/path/path.ts +20 -5
- package/gs/reflect/field.test.ts +63 -0
- package/gs/reflect/index.ts +5 -1
- package/gs/reflect/iter.ts +2 -2
- package/gs/reflect/map.test.ts +42 -1
- package/gs/reflect/map.ts +39 -0
- package/gs/reflect/type.ts +728 -65
- package/gs/reflect/typefor.test.ts +100 -0
- package/gs/reflect/types.ts +3 -1
- package/gs/reflect/value.ts +50 -1
- package/gs/reflect/visiblefields.ts +1 -1
- package/gs/runtime/debug/index.test.ts +45 -0
- package/gs/runtime/debug/index.ts +96 -0
- package/gs/runtime/pprof/index.test.ts +36 -0
- package/gs/runtime/pprof/index.ts +104 -0
- package/gs/runtime/pprof/meta.json +6 -0
- package/gs/runtime/runtime.test.ts +19 -0
- package/gs/runtime/runtime.ts +98 -3
- package/gs/runtime/trace/index.test.ts +45 -0
- package/gs/runtime/trace/index.ts +97 -0
- package/gs/runtime/trace/meta.json +7 -0
- package/gs/slices/meta.json +2 -1
- package/gs/slices/slices.test.ts +180 -0
- package/gs/slices/slices.ts +502 -15
- package/gs/sort/meta.json +7 -0
- package/gs/sort/slice.gs.ts +85 -26
- package/gs/sort/slice.test.ts +40 -0
- package/gs/sort/sort.gs.ts +16 -13
- package/gs/strings/builder.test.ts +8 -0
- package/gs/strings/builder.ts +33 -20
- package/gs/strings/iter.test.ts +5 -7
- package/gs/strings/iter.ts +146 -71
- package/gs/strings/replace.test.ts +1 -4
- package/gs/strings/replace.ts +6 -6
- package/gs/strings/strings.test.ts +4 -0
- package/gs/strings/strings.ts +54 -6
- package/gs/sync/atomic/type.gs.ts +13 -14
- package/gs/sync/meta.json +3 -1
- package/gs/sync/sync.test.ts +69 -1
- package/gs/sync/sync.ts +72 -13
- package/gs/syscall/constants.ts +39 -24
- package/gs/syscall/errors.ts +165 -112
- package/gs/syscall/fs.ts +195 -0
- package/gs/syscall/js/index.ts +485 -0
- package/gs/syscall/js/meta.json +4 -0
- package/gs/syscall/net.test.ts +111 -0
- package/gs/syscall/types.ts +63 -2
- package/gs/testing/index.ts +1 -0
- package/gs/testing/meta.json +5 -0
- package/gs/testing/testing.test.ts +146 -0
- package/gs/testing/testing.ts +399 -0
- package/gs/time/meta.json +2 -2
- package/gs/time/time.test.ts +110 -0
- package/gs/time/time.ts +309 -57
- package/gs/unicode/unicode.test.ts +36 -0
- package/gs/unicode/unicode.ts +115 -9
- package/gs/unicode/utf8/utf8.test.ts +13 -0
- package/gs/unicode/utf8/utf8.ts +28 -16
- package/gs/unique/index.ts +98 -0
- package/package.json +3 -2
package/gs/bytes/buffer.gs.ts
CHANGED
|
@@ -66,7 +66,7 @@ export class Buffer {
|
|
|
66
66
|
// The slice aliases the buffer content at least until the next buffer modification,
|
|
67
67
|
// so immediate changes to the slice will affect the result of future reads.
|
|
68
68
|
public Bytes(): $.Bytes {
|
|
69
|
-
const b = this
|
|
69
|
+
const b = $.pointerValue<Buffer>(this)
|
|
70
70
|
return $.goSlice(b.buf, b.off, undefined)
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -75,7 +75,7 @@ export class Buffer {
|
|
|
75
75
|
// passed to an immediately succeeding [Buffer.Write] call.
|
|
76
76
|
// The buffer is only valid until the next write operation on b.
|
|
77
77
|
public AvailableBuffer(): $.Bytes {
|
|
78
|
-
const b = this
|
|
78
|
+
const b = $.pointerValue<Buffer>(this)
|
|
79
79
|
return $.goSlice(b.buf, $.len(b.buf), undefined)
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -84,7 +84,7 @@ export class Buffer {
|
|
|
84
84
|
//
|
|
85
85
|
// To build strings more efficiently, see the [strings.Builder] type.
|
|
86
86
|
public String(): string {
|
|
87
|
-
const b = this
|
|
87
|
+
const b = $.pointerValueOrNil<Buffer>(this)
|
|
88
88
|
if (b == null) {
|
|
89
89
|
// Special case, useful in debugging.
|
|
90
90
|
return "<nil>"
|
|
@@ -97,27 +97,27 @@ export class Buffer {
|
|
|
97
97
|
|
|
98
98
|
// empty reports whether the unread portion of the buffer is empty.
|
|
99
99
|
public empty(): boolean {
|
|
100
|
-
const b = this
|
|
100
|
+
const b = $.pointerValue<Buffer>(this)
|
|
101
101
|
return $.len(b.buf) <= b.off
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
// Len returns the number of bytes of the unread portion of the buffer;
|
|
105
105
|
// b.Len() == len(b.Bytes()).
|
|
106
106
|
public Len(): number {
|
|
107
|
-
const b = this
|
|
107
|
+
const b = $.pointerValue<Buffer>(this)
|
|
108
108
|
return $.len(b.buf) - b.off
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
// Cap returns the capacity of the buffer's underlying byte slice, that is, the
|
|
112
112
|
// total space allocated for the buffer's data.
|
|
113
113
|
public Cap(): number {
|
|
114
|
-
const b = this
|
|
114
|
+
const b = $.pointerValue<Buffer>(this)
|
|
115
115
|
return $.cap(b.buf)
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
// Available returns how many bytes are unused in the buffer.
|
|
119
119
|
public Available(): number {
|
|
120
|
-
const b = this
|
|
120
|
+
const b = $.pointerValue<Buffer>(this)
|
|
121
121
|
return $.cap(b.buf) - $.len(b.buf)
|
|
122
122
|
}
|
|
123
123
|
|
|
@@ -125,7 +125,7 @@ export class Buffer {
|
|
|
125
125
|
// but continues to use the same allocated storage.
|
|
126
126
|
// It panics if n is negative or greater than the length of the buffer.
|
|
127
127
|
public Truncate(n: number): void {
|
|
128
|
-
const b = this
|
|
128
|
+
const b = $.pointerValue<Buffer>(this)
|
|
129
129
|
if (n == 0) {
|
|
130
130
|
b.Reset()
|
|
131
131
|
return
|
|
@@ -141,7 +141,7 @@ export class Buffer {
|
|
|
141
141
|
// but it retains the underlying storage for use by future writes.
|
|
142
142
|
// Reset is the same as [Buffer.Truncate](0).
|
|
143
143
|
public Reset(): void {
|
|
144
|
-
const b = this
|
|
144
|
+
const b = $.pointerValue<Buffer>(this)
|
|
145
145
|
b.buf = $.goSlice(b.buf, undefined, 0)
|
|
146
146
|
b.off = 0
|
|
147
147
|
b.lastRead = 0
|
|
@@ -151,7 +151,7 @@ export class Buffer {
|
|
|
151
151
|
// internal buffer only needs to be resliced.
|
|
152
152
|
// It returns the index where bytes should be written and whether it succeeded.
|
|
153
153
|
public tryGrowByReslice(n: number): [number, boolean] {
|
|
154
|
-
const b = this
|
|
154
|
+
const b = $.pointerValue<Buffer>(this)
|
|
155
155
|
if (b.buf === null) {
|
|
156
156
|
return [0, false]
|
|
157
157
|
}
|
|
@@ -169,7 +169,7 @@ export class Buffer {
|
|
|
169
169
|
// It returns the index where bytes should be written.
|
|
170
170
|
// If the buffer can't grow it will panic with ErrTooLarge.
|
|
171
171
|
public grow(n: number): number {
|
|
172
|
-
const b = this
|
|
172
|
+
const b = $.pointerValue<Buffer>(this)
|
|
173
173
|
let m = b.Len()
|
|
174
174
|
if (m == 0 && b.off != 0) {
|
|
175
175
|
b.Reset()
|
|
@@ -210,7 +210,7 @@ export class Buffer {
|
|
|
210
210
|
// If n is negative, Grow will panic.
|
|
211
211
|
// If the buffer can't grow it will panic with [ErrTooLarge].
|
|
212
212
|
public Grow(n: number): void {
|
|
213
|
-
const b = this
|
|
213
|
+
const b = $.pointerValue<Buffer>(this)
|
|
214
214
|
if (n < 0) {
|
|
215
215
|
$.panic("bytes.Buffer.Grow: negative count")
|
|
216
216
|
}
|
|
@@ -222,7 +222,7 @@ export class Buffer {
|
|
|
222
222
|
// needed. The return value n is the length of p; err is always nil. If the
|
|
223
223
|
// buffer becomes too large, Write will panic with [ErrTooLarge].
|
|
224
224
|
public Write(p: $.Bytes): [number, $.GoError] {
|
|
225
|
-
const b = this
|
|
225
|
+
const b = $.pointerValue<Buffer>(this)
|
|
226
226
|
b.lastRead = 0
|
|
227
227
|
let [m, ok] = b.tryGrowByReslice($.len(p))
|
|
228
228
|
if (!ok) {
|
|
@@ -248,7 +248,7 @@ export class Buffer {
|
|
|
248
248
|
// needed. The return value n is the length of s; err is always nil. If the
|
|
249
249
|
// buffer becomes too large, WriteString will panic with [ErrTooLarge].
|
|
250
250
|
public WriteString(s: string): [number, $.GoError] {
|
|
251
|
-
const b = this
|
|
251
|
+
const b = $.pointerValue<Buffer>(this)
|
|
252
252
|
b.lastRead = 0
|
|
253
253
|
let [m, ok] = b.tryGrowByReslice($.len(s))
|
|
254
254
|
if (!ok) {
|
|
@@ -269,28 +269,30 @@ export class Buffer {
|
|
|
269
269
|
// error except io.EOF encountered during the read is also returned. If the
|
|
270
270
|
// buffer becomes too large, ReadFrom will panic with [ErrTooLarge].
|
|
271
271
|
public ReadFrom(r: io.Reader): [number, $.GoError] {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
272
|
+
return (async (): Promise<[number, $.GoError]> => {
|
|
273
|
+
const b = $.pointerValue<Buffer>(this)
|
|
274
|
+
b.lastRead = 0
|
|
275
|
+
let n = 0
|
|
276
|
+
for (; ; ) {
|
|
277
|
+
let i = b.grow(512)
|
|
278
|
+
b.buf = $.goSlice(b.buf, undefined, i)
|
|
279
|
+
let [m, e] = await (r!.Read($.bytesToUint8Array($.goSlice(b.buf, i, $.cap(b.buf)))) as any)
|
|
280
|
+
if (m < 0) {
|
|
281
|
+
$.panic(errNegativeRead)
|
|
282
|
+
}
|
|
282
283
|
|
|
283
|
-
|
|
284
|
-
|
|
284
|
+
b.buf = $.goSlice(b.buf, undefined, i + m)
|
|
285
|
+
n += (m as number)
|
|
285
286
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
287
|
+
// e is EOF, so return nil explicitly
|
|
288
|
+
if (e == io.EOF) {
|
|
289
|
+
return [n, null]
|
|
290
|
+
}
|
|
291
|
+
if (e != null) {
|
|
292
|
+
return [n, e]
|
|
293
|
+
}
|
|
292
294
|
}
|
|
293
|
-
}
|
|
295
|
+
})() as any
|
|
294
296
|
}
|
|
295
297
|
|
|
296
298
|
// WriteTo writes data to w until the buffer is drained or an error occurs.
|
|
@@ -298,30 +300,32 @@ export class Buffer {
|
|
|
298
300
|
// int, but it is int64 to match the [io.WriterTo] interface. Any error
|
|
299
301
|
// encountered during the write is also returned.
|
|
300
302
|
public WriteTo(w: io.Writer): [number, $.GoError] {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
303
|
+
return (async (): Promise<[number, $.GoError]> => {
|
|
304
|
+
const b = $.pointerValue<Buffer>(this)
|
|
305
|
+
b.lastRead = 0
|
|
306
|
+
let n = 0
|
|
307
|
+
{
|
|
308
|
+
let nBytes = b.Len()
|
|
309
|
+
if (nBytes > 0) {
|
|
310
|
+
let [m, e] = await (w!.Write($.bytesToUint8Array($.goSlice(b.buf, b.off, undefined))) as any)
|
|
311
|
+
if (m > nBytes) {
|
|
312
|
+
$.panic("bytes.Buffer.WriteTo: invalid Write count")
|
|
313
|
+
}
|
|
314
|
+
b.off += m
|
|
315
|
+
n = (m as number)
|
|
316
|
+
if (e != null) {
|
|
317
|
+
return [n, e]
|
|
318
|
+
}
|
|
319
|
+
// all bytes should have been written, by definition of
|
|
320
|
+
// Write method in io.Writer
|
|
321
|
+
if (m != nBytes) {
|
|
322
|
+
return [n, io.ErrShortWrite]
|
|
323
|
+
}
|
|
320
324
|
}
|
|
321
325
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
326
|
+
b.Reset()
|
|
327
|
+
return [n, null]
|
|
328
|
+
})() as any
|
|
325
329
|
}
|
|
326
330
|
|
|
327
331
|
// WriteByte appends the byte c to the buffer, growing the buffer as needed.
|
|
@@ -329,7 +333,7 @@ export class Buffer {
|
|
|
329
333
|
// WriteByte. If the buffer becomes too large, WriteByte will panic with
|
|
330
334
|
// [ErrTooLarge].
|
|
331
335
|
public WriteByte(c: number): $.GoError {
|
|
332
|
-
const b = this
|
|
336
|
+
const b = $.pointerValue<Buffer>(this)
|
|
333
337
|
b.lastRead = 0
|
|
334
338
|
let [m, ok] = b.tryGrowByReslice(1)
|
|
335
339
|
if (!ok) {
|
|
@@ -344,7 +348,7 @@ export class Buffer {
|
|
|
344
348
|
// included to match [bufio.Writer]'s WriteRune. The buffer is grown as needed;
|
|
345
349
|
// if it becomes too large, WriteRune will panic with [ErrTooLarge].
|
|
346
350
|
public WriteRune(r: number): [number, $.GoError] {
|
|
347
|
-
const b = this
|
|
351
|
+
const b = $.pointerValue<Buffer>(this)
|
|
348
352
|
if ((r as number) < utf8.RuneSelf) {
|
|
349
353
|
b.WriteByte($.byte(r))
|
|
350
354
|
return [1, null]
|
|
@@ -363,7 +367,7 @@ export class Buffer {
|
|
|
363
367
|
// buffer has no data to return, err is [io.EOF] (unless len(p) is zero);
|
|
364
368
|
// otherwise it is nil.
|
|
365
369
|
public Read(p: $.Bytes): [number, $.GoError] {
|
|
366
|
-
const b = this
|
|
370
|
+
const b = $.pointerValue<Buffer>(this)
|
|
367
371
|
b.lastRead = 0
|
|
368
372
|
if (b.empty()) {
|
|
369
373
|
// Buffer is empty, reset to recover space.
|
|
@@ -373,7 +377,7 @@ export class Buffer {
|
|
|
373
377
|
}
|
|
374
378
|
return [0, io.EOF]
|
|
375
379
|
}
|
|
376
|
-
const n = $.copy(
|
|
380
|
+
const n = $.copy(p, $.goSlice(b.buf, b.off, undefined))
|
|
377
381
|
b.off += n
|
|
378
382
|
if (n > 0) {
|
|
379
383
|
b.lastRead = -1
|
|
@@ -386,7 +390,7 @@ export class Buffer {
|
|
|
386
390
|
// If there are fewer than n bytes in the buffer, Next returns the entire buffer.
|
|
387
391
|
// The slice is only valid until the next call to a read or write method.
|
|
388
392
|
public Next(n: number): $.Bytes {
|
|
389
|
-
const b = this
|
|
393
|
+
const b = $.pointerValue<Buffer>(this)
|
|
390
394
|
b.lastRead = 0
|
|
391
395
|
let m = b.Len()
|
|
392
396
|
if (n > m) {
|
|
@@ -403,7 +407,7 @@ export class Buffer {
|
|
|
403
407
|
// Peek returns the next n bytes without advancing the buffer.
|
|
404
408
|
// If fewer than n bytes are available, it returns the unread bytes and io.EOF.
|
|
405
409
|
public Peek(n: number): [$.Bytes, $.GoError] {
|
|
406
|
-
const b = this
|
|
410
|
+
const b = $.pointerValue<Buffer>(this)
|
|
407
411
|
if (n < 0) {
|
|
408
412
|
return [null, errors.New("bytes.Buffer.Peek: negative count")]
|
|
409
413
|
}
|
|
@@ -424,7 +428,7 @@ export class Buffer {
|
|
|
424
428
|
// ReadByte reads and returns the next byte from the buffer.
|
|
425
429
|
// If no byte is available, it returns error [io.EOF].
|
|
426
430
|
public ReadByte(): [number, $.GoError] {
|
|
427
|
-
const b = this
|
|
431
|
+
const b = $.pointerValue<Buffer>(this)
|
|
428
432
|
if (b.empty()) {
|
|
429
433
|
// Buffer is empty, reset to recover space.
|
|
430
434
|
b.Reset()
|
|
@@ -442,7 +446,7 @@ export class Buffer {
|
|
|
442
446
|
// If the bytes are an erroneous UTF-8 encoding, it
|
|
443
447
|
// consumes one byte and returns U+FFFD, 1.
|
|
444
448
|
public ReadRune(): [number, number, $.GoError] {
|
|
445
|
-
const b = this
|
|
449
|
+
const b = $.pointerValue<Buffer>(this)
|
|
446
450
|
if (b.empty()) {
|
|
447
451
|
// Buffer is empty, reset to recover space.
|
|
448
452
|
b.Reset()
|
|
@@ -468,7 +472,7 @@ export class Buffer {
|
|
|
468
472
|
// it is stricter than [Buffer.UnreadByte], which will unread the last byte
|
|
469
473
|
// from any read operation.)
|
|
470
474
|
public UnreadRune(): $.GoError {
|
|
471
|
-
const b = this
|
|
475
|
+
const b = $.pointerValue<Buffer>(this)
|
|
472
476
|
if (b.lastRead <= 0) {
|
|
473
477
|
return errors.New("bytes.Buffer: UnreadRune: previous operation was not a successful ReadRune")
|
|
474
478
|
}
|
|
@@ -484,7 +488,7 @@ export class Buffer {
|
|
|
484
488
|
// the last read, if the last read returned an error, or if the read read zero
|
|
485
489
|
// bytes, UnreadByte returns an error.
|
|
486
490
|
public UnreadByte(): $.GoError {
|
|
487
|
-
const b = this
|
|
491
|
+
const b = $.pointerValue<Buffer>(this)
|
|
488
492
|
if (b.lastRead == 0) {
|
|
489
493
|
return errUnreadByte
|
|
490
494
|
}
|
|
@@ -502,7 +506,7 @@ export class Buffer {
|
|
|
502
506
|
// ReadBytes returns err != nil if and only if the returned data does not end in
|
|
503
507
|
// delim.
|
|
504
508
|
public ReadBytes(delim: number): [$.Bytes, $.GoError] {
|
|
505
|
-
const b = this
|
|
509
|
+
const b = $.pointerValue<Buffer>(this)
|
|
506
510
|
let [slice, err] = b.readSlice(delim)
|
|
507
511
|
let line = $.append<number>(null, slice)
|
|
508
512
|
return [line, err]
|
|
@@ -510,7 +514,7 @@ export class Buffer {
|
|
|
510
514
|
|
|
511
515
|
// readSlice is like ReadBytes but returns a reference to internal buffer data.
|
|
512
516
|
public readSlice(delim: number): [$.Bytes, $.GoError] {
|
|
513
|
-
const b = this
|
|
517
|
+
const b = $.pointerValue<Buffer>(this)
|
|
514
518
|
let i = IndexByte($.goSlice(b.buf, b.off, undefined), delim)
|
|
515
519
|
let end = b.off + i + 1
|
|
516
520
|
let err: $.GoError = null
|
|
@@ -532,7 +536,7 @@ export class Buffer {
|
|
|
532
536
|
// ReadString returns err != nil if and only if the returned data does not end
|
|
533
537
|
// in delim.
|
|
534
538
|
public ReadString(delim: number): [string, $.GoError] {
|
|
535
|
-
const b = this
|
|
539
|
+
const b = $.pointerValue<Buffer>(this)
|
|
536
540
|
let slice: $.Bytes
|
|
537
541
|
let err: $.GoError
|
|
538
542
|
[slice, err] = b.readSlice(delim)
|
|
@@ -603,8 +607,8 @@ export function growSlice(b: $.Bytes, n: number): $.Bytes {
|
|
|
603
607
|
// we could rely purely on append to determine the growth rate.
|
|
604
608
|
c = 2 * $.cap(b)
|
|
605
609
|
}
|
|
606
|
-
let b2 = $.
|
|
607
|
-
let i = $.copy(
|
|
610
|
+
let b2 = $.makeSlice<number>(c, c, 'byte')
|
|
611
|
+
let i = $.copy(b2, b)
|
|
608
612
|
return $.goSlice(b2, undefined, i)
|
|
609
613
|
}
|
|
610
614
|
|
package/gs/bytes/iter.gs.ts
CHANGED
|
@@ -13,7 +13,7 @@ import * as utf8 from "@goscript/unicode/utf8/index.js"
|
|
|
13
13
|
// If s does not end in a newline, the final yielded line will not end in a newline.
|
|
14
14
|
// It returns a single-use iterator.
|
|
15
15
|
export function Lines(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
16
|
-
return (_yield: ((p0: $.Bytes) =>
|
|
16
|
+
return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
|
|
17
17
|
for (; $.len(s) > 0; ) {
|
|
18
18
|
let line: $.Bytes = new Uint8Array(0)
|
|
19
19
|
{
|
|
@@ -24,7 +24,7 @@ export function Lines(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
|
24
24
|
[line, s] = [s, null]
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
if (!_yield!($.goSlice(line, undefined, $.len(line), $.len(line)))) {
|
|
27
|
+
if (!await _yield!($.goSlice(line, undefined, $.len(line), $.len(line)))) {
|
|
28
28
|
return
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -34,10 +34,10 @@ export function Lines(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
|
34
34
|
|
|
35
35
|
// explodeSeq returns an iterator over the runes in s.
|
|
36
36
|
export function explodeSeq(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
37
|
-
return (_yield: ((p0: $.Bytes) =>
|
|
37
|
+
return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
|
|
38
38
|
for (; $.len(s) > 0; ) {
|
|
39
39
|
let [, size] = utf8.DecodeRune(s)
|
|
40
|
-
if (!_yield!($.goSlice(s, undefined, size, size))) {
|
|
40
|
+
if (!await _yield!($.goSlice(s, undefined, size, size))) {
|
|
41
41
|
return
|
|
42
42
|
}
|
|
43
43
|
s = $.goSlice(s, size, undefined)
|
|
@@ -51,19 +51,19 @@ export function splitSeq(s: $.Bytes, sep: $.Bytes, sepSave: number): iter.Seq<$.
|
|
|
51
51
|
if ($.len(sep) == 0) {
|
|
52
52
|
return explodeSeq(s)
|
|
53
53
|
}
|
|
54
|
-
return (_yield: ((p0: $.Bytes) =>
|
|
54
|
+
return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
|
|
55
55
|
for (; ; ) {
|
|
56
56
|
let i = Index(s, sep)
|
|
57
57
|
if (i < 0) {
|
|
58
58
|
break
|
|
59
59
|
}
|
|
60
60
|
let frag = $.goSlice(s, undefined, i + sepSave)
|
|
61
|
-
if (!_yield!($.goSlice(frag, undefined, $.len(frag), $.len(frag)))) {
|
|
61
|
+
if (!await _yield!($.goSlice(frag, undefined, $.len(frag), $.len(frag)))) {
|
|
62
62
|
return
|
|
63
63
|
}
|
|
64
64
|
s = $.goSlice(s, i + $.len(sep), undefined)
|
|
65
65
|
}
|
|
66
|
-
_yield!($.goSlice(s, undefined, $.len(s), $.len(s)))
|
|
66
|
+
await _yield!($.goSlice(s, undefined, $.len(s), $.len(s)))
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -88,7 +88,7 @@ export function SplitAfterSeq(s: $.Bytes, sep: $.Bytes): iter.Seq<$.Bytes> {
|
|
|
88
88
|
// The iterator yields the same subslices that would be returned by [Fields](s),
|
|
89
89
|
// but without constructing a new slice containing the subslices.
|
|
90
90
|
export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
91
|
-
return (_yield: ((p0: $.Bytes) =>
|
|
91
|
+
return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
|
|
92
92
|
let start = -1
|
|
93
93
|
for (let i = 0; i < $.len(s); ) {
|
|
94
94
|
let size = 1
|
|
@@ -100,7 +100,7 @@ export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
|
100
100
|
}
|
|
101
101
|
if (isSpace) {
|
|
102
102
|
if (start >= 0) {
|
|
103
|
-
if (!_yield!($.goSlice(s, start, i, i))) {
|
|
103
|
+
if (!await _yield!($.goSlice(s, start, i, i))) {
|
|
104
104
|
return
|
|
105
105
|
}
|
|
106
106
|
start = -1
|
|
@@ -111,7 +111,7 @@ export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
|
111
111
|
i += size
|
|
112
112
|
}
|
|
113
113
|
if (start >= 0) {
|
|
114
|
-
_yield!($.goSlice(s, start, $.len(s), $.len(s)))
|
|
114
|
+
await _yield!($.goSlice(s, start, $.len(s), $.len(s)))
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -121,7 +121,7 @@ export function FieldsSeq(s: $.Bytes): iter.Seq<$.Bytes> {
|
|
|
121
121
|
// The iterator yields the same subslices that would be returned by [FieldsFunc](s),
|
|
122
122
|
// but without constructing a new slice containing the subslices.
|
|
123
123
|
export function FieldsFuncSeq(s: $.Bytes, f: ((p0: number) => boolean) | null): iter.Seq<$.Bytes> {
|
|
124
|
-
return (_yield: ((p0: $.Bytes) =>
|
|
124
|
+
return async (_yield: ((p0: $.Bytes) => iter.YieldResult) | null): Promise<void> => {
|
|
125
125
|
let start = -1
|
|
126
126
|
for (let i = 0; i < $.len(s); ) {
|
|
127
127
|
let size = 1
|
|
@@ -131,7 +131,7 @@ export function FieldsFuncSeq(s: $.Bytes, f: ((p0: number) => boolean) | null):
|
|
|
131
131
|
}
|
|
132
132
|
if (f!(r)) {
|
|
133
133
|
if (start >= 0) {
|
|
134
|
-
if (!_yield!($.goSlice(s, start, i, i))) {
|
|
134
|
+
if (!await _yield!($.goSlice(s, start, i, i))) {
|
|
135
135
|
return
|
|
136
136
|
}
|
|
137
137
|
start = -1
|
|
@@ -142,8 +142,7 @@ export function FieldsFuncSeq(s: $.Bytes, f: ((p0: number) => boolean) | null):
|
|
|
142
142
|
i += size
|
|
143
143
|
}
|
|
144
144
|
if (start >= 0) {
|
|
145
|
-
_yield!($.goSlice(s, start, $.len(s), $.len(s)))
|
|
145
|
+
await _yield!($.goSlice(s, start, $.len(s), $.len(s)))
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
|
-
|
package/gs/bytes/meta.json
CHANGED
package/gs/bytes/reader.gs.ts
CHANGED
|
@@ -80,7 +80,7 @@ export class Reader {
|
|
|
80
80
|
return [0, io.EOF]
|
|
81
81
|
}
|
|
82
82
|
r.prevRune = -1
|
|
83
|
-
const n = $.copy(
|
|
83
|
+
const n = $.copy(b, $.goSlice(r.s, r.i, undefined))
|
|
84
84
|
r.i += (n as number)
|
|
85
85
|
return [n, null]
|
|
86
86
|
}
|
|
@@ -94,7 +94,7 @@ export class Reader {
|
|
|
94
94
|
if (off >= ($.len(r.s) as number)) {
|
|
95
95
|
return [0, io.EOF]
|
|
96
96
|
}
|
|
97
|
-
const n = $.copy(
|
|
97
|
+
const n = $.copy(b, $.goSlice(r.s, off, undefined))
|
|
98
98
|
let err: $.GoError = null
|
|
99
99
|
if (n < $.len(b)) {
|
|
100
100
|
err = io.EOF
|
|
@@ -187,22 +187,24 @@ export class Reader {
|
|
|
187
187
|
|
|
188
188
|
// WriteTo implements the [io.WriterTo] interface.
|
|
189
189
|
public WriteTo(w: io.Writer): [number, $.GoError] {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
190
|
+
return (async (): Promise<[number, $.GoError]> => {
|
|
191
|
+
const r = this
|
|
192
|
+
r.prevRune = -1
|
|
193
|
+
if (r.i >= ($.len(r.s) as number)) {
|
|
194
|
+
return [0, null]
|
|
195
|
+
}
|
|
196
|
+
const b = $.goSlice(r.s, r.i, undefined)
|
|
197
|
+
const [m, err] = await (w!.Write($.bytesToUint8Array(b)) as any)
|
|
198
|
+
if (m > $.len(b)) {
|
|
199
|
+
$.panic("bytes.Reader.WriteTo: invalid Write count")
|
|
200
|
+
}
|
|
201
|
+
r.i += (m as number)
|
|
202
|
+
const n = (m as number)
|
|
203
|
+
if (m != $.len(b) && err == null) {
|
|
204
|
+
return [n, io.ErrShortWrite]
|
|
205
|
+
}
|
|
206
|
+
return [n, err]
|
|
207
|
+
})() as any
|
|
206
208
|
}
|
|
207
209
|
|
|
208
210
|
// Reset resets the [Reader] to be reading from b.
|
|
@@ -227,4 +229,3 @@ export class Reader {
|
|
|
227
229
|
export function NewReader(b: $.Bytes): Reader {
|
|
228
230
|
return new Reader({s: $.normalizeBytes(b), i: 0, prevRune: -1})
|
|
229
231
|
}
|
|
230
|
-
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import * as $ from '@goscript/builtin/index.js'
|
|
4
|
+
import * as bytes from '@goscript/bytes/index.js'
|
|
5
|
+
import * as io from '@goscript/io/index.js'
|
|
6
|
+
|
|
7
|
+
import { NewReader, NewWriter } from './index.js'
|
|
8
|
+
|
|
9
|
+
describe('compress/zlib override', () => {
|
|
10
|
+
test('round trips bytes through writer and reader', async () => {
|
|
11
|
+
const input = $.stringToBytes('hello compressed world')
|
|
12
|
+
const buf = $.markAsStructValue(new bytes.Buffer())
|
|
13
|
+
const writer = NewWriter(buf)
|
|
14
|
+
|
|
15
|
+
const [written, writeErr] = writer.Write(input)
|
|
16
|
+
expect(writeErr).toBeNull()
|
|
17
|
+
expect(written).toBe(input.length)
|
|
18
|
+
expect(await writer.Close()).toBeNull()
|
|
19
|
+
|
|
20
|
+
const [reader, readerErr] = await NewReader(bytes.NewReader(buf.Bytes()))
|
|
21
|
+
expect(readerErr).toBeNull()
|
|
22
|
+
expect(reader).not.toBeNull()
|
|
23
|
+
|
|
24
|
+
const [out, readErr] = await io.ReadAll(reader!)
|
|
25
|
+
expect(readErr).toBeNull()
|
|
26
|
+
expect($.bytesToString(out)).toBe('hello compressed world')
|
|
27
|
+
})
|
|
28
|
+
})
|