goscript 0.0.84 → 0.1.1
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 -243
- package/cmd/goscript/cmd-test.go +193 -0
- package/cmd/goscript/cmd-test_test.go +76 -0
- package/cmd/goscript/cmd_compile.go +70 -69
- package/cmd/goscript/cmd_compile_test.go +79 -0
- package/cmd/goscript/main.go +11 -5
- package/compiler/build-flags.go +38 -0
- package/compiler/compile-request.go +220 -0
- package/compiler/compiler.go +16 -1336
- package/compiler/compliance_test.go +188 -0
- package/compiler/config.go +6 -13
- package/compiler/diagnostic.go +70 -0
- package/compiler/gotest/owner.go +24 -0
- package/compiler/gotest/package-result.go +67 -0
- package/compiler/gotest/request.go +145 -0
- package/compiler/gotest/result.go +28 -0
- package/compiler/gotest/runner.go +588 -0
- package/compiler/gotest/runner_test.go +627 -0
- package/compiler/gotest/test.go +9 -0
- package/compiler/index.test.ts +28 -28
- package/compiler/index.ts +40 -72
- package/compiler/lowered-program.go +184 -0
- package/compiler/lowering.go +8072 -0
- package/compiler/override-facts.go +307 -0
- package/compiler/override-registry.go +283 -0
- package/compiler/override-registry_test.go +254 -0
- package/compiler/package-graph.go +254 -0
- package/compiler/package-graph_test.go +316 -0
- package/compiler/package-test-function.go +9 -0
- package/compiler/package-test-graph-package.go +40 -0
- package/compiler/package-test-graph-variant.go +105 -0
- package/compiler/package-test-graph.go +117 -0
- package/compiler/package-test-graph_test.go +144 -0
- package/compiler/result.go +13 -0
- package/compiler/runtime-contract.go +439 -0
- package/compiler/runtime-contract_test.go +104 -0
- package/compiler/semantic-model-types.go +113 -0
- package/compiler/semantic-model.go +1422 -0
- package/compiler/semantic-model_test.go +471 -0
- package/compiler/service.go +133 -0
- package/compiler/skeleton_test.go +1775 -0
- package/compiler/tsworkspace/owner.go +334 -0
- package/compiler/tsworkspace/owner_test.go +93 -0
- package/compiler/tsworkspace/result.go +17 -0
- package/compiler/typescript-emitter.go +1040 -0
- package/compiler/wasm/compile.go +2 -3
- package/compiler/wasm/compile_test.go +79 -0
- package/compiler/wasm_api.go +140 -124
- package/dist/compiler/index.d.ts +1 -3
- package/dist/compiler/index.js +31 -55
- package/dist/compiler/index.js.map +1 -1
- package/dist/gs/builtin/builtin.d.ts +33 -2
- package/dist/gs/builtin/builtin.js +217 -6
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +11 -3
- package/dist/gs/builtin/channel.js +12 -0
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/hostio.d.ts +15 -1
- package/dist/gs/builtin/hostio.js +134 -49
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/builtin/index.d.ts +1 -0
- package/dist/gs/builtin/index.js +1 -0
- package/dist/gs/builtin/index.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +23 -3
- package/dist/gs/builtin/slice.js +216 -44
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +16 -2
- package/dist/gs/builtin/type.js +134 -21
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +5 -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 +48 -44
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/bytes.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/context/context.d.ts +5 -4
- package/dist/gs/context/context.js +10 -10
- package/dist/gs/context/context.js.map +1 -1
- 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 +5 -0
- package/dist/gs/crypto/rand/index.js +77 -0
- package/dist/gs/crypto/rand/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 +178 -0
- package/dist/gs/encoding/json/index.js.map +1 -0
- package/dist/gs/errors/errors.d.ts +4 -0
- package/dist/gs/errors/errors.js +81 -0
- 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 +36 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +212 -2
- 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 +825 -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 +163 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +449 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/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/klauspost/compress/internal/le/index.d.ts +9 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js +71 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
- 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 +42 -0
- package/dist/gs/go/scanner/index.js +155 -0
- package/dist/gs/go/scanner/index.js.map +1 -0
- package/dist/gs/go/token/index.d.ts +187 -0
- package/dist/gs/go/token/index.js +578 -0
- package/dist/gs/go/token/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/fs.js.map +1 -1
- 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/readdir.js.map +1 -1
- package/dist/gs/io/fs/readfile.js.map +1 -1
- package/dist/gs/io/fs/readlink.d.ts +8 -0
- package/dist/gs/io/fs/readlink.js +64 -0
- package/dist/gs/io/fs/readlink.js.map +1 -0
- package/dist/gs/io/fs/stat.js.map +1 -1
- package/dist/gs/io/fs/sub.js.map +1 -1
- 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/maps/iter.d.ts +3 -3
- package/dist/gs/maps/iter.js +3 -3
- package/dist/gs/maps/iter.js.map +1 -1
- package/dist/gs/maps/maps.d.ts +2 -2
- 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 +66 -34
- 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 +50 -0
- package/dist/gs/mime/index.js.map +1 -0
- package/dist/gs/net/http/httptest/index.d.ts +11 -0
- package/dist/gs/net/http/httptest/index.js +21 -0
- package/dist/gs/net/http/httptest/index.js.map +1 -0
- package/dist/gs/net/http/index.d.ts +27 -0
- package/dist/gs/net/http/index.js +61 -0
- package/dist/gs/net/http/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 +2 -4
- package/dist/gs/os/error.gs.js.map +1 -1
- package/dist/gs/os/exec.gs.js.map +1 -1
- package/dist/gs/os/exec_posix.gs.js.map +1 -1
- package/dist/gs/os/rawconn_js.gs.js.map +1 -1
- package/dist/gs/os/root_js.gs.js.map +1 -1
- package/dist/gs/os/tempfile.gs.js +66 -9
- package/dist/gs/os/tempfile.gs.js.map +1 -1
- package/dist/gs/os/types.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js +9 -9
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/os/types_unix.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 +3 -1
- package/dist/gs/path/filepath/path.js +133 -4
- package/dist/gs/path/filepath/path.js.map +1 -1
- package/dist/gs/path/match.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 +3 -3
- package/dist/gs/reflect/index.js +2 -2
- package/dist/gs/reflect/index.js.map +1 -1
- package/dist/gs/reflect/map.js +3 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +9 -5
- package/dist/gs/reflect/type.js +233 -21
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/types.js.map +1 -1
- package/dist/gs/reflect/visiblefields.js.map +1 -1
- package/dist/gs/runtime/debug/index.d.ts +2 -0
- package/dist/gs/runtime/debug/index.js +8 -0
- package/dist/gs/runtime/debug/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/slices/slices.d.ts +24 -5
- package/dist/gs/slices/slices.js +214 -5
- package/dist/gs/slices/slices.js.map +1 -1
- package/dist/gs/sort/slice.gs.d.ts +3 -3
- package/dist/gs/sort/slice.gs.js +6 -6
- 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/strconv/atoi.gs.js.map +1 -1
- package/dist/gs/strconv/quote.gs.js.map +1 -1
- package/dist/gs/strings/builder.d.ts +1 -1
- package/dist/gs/strings/builder.js +3 -2
- package/dist/gs/strings/builder.js.map +1 -1
- package/dist/gs/strings/reader.js.map +1 -1
- package/dist/gs/strings/replace.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/atomic/value.gs.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +3 -0
- package/dist/gs/sync/sync.js +39 -0
- 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 +2 -0
- package/dist/gs/syscall/errors.js +8 -0
- package/dist/gs/syscall/errors.js.map +1 -1
- package/dist/gs/syscall/fs.d.ts +43 -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 +375 -0
- package/dist/gs/syscall/js/index.js.map +1 -0
- package/dist/gs/syscall/types.d.ts +22 -0
- 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 +77 -0
- package/dist/gs/testing/testing.js +301 -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 +205 -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 +71 -0
- package/dist/gs/unique/index.js.map +1 -0
- package/go.mod +2 -2
- package/go.sum +9 -0
- package/gs/builtin/builtin.ts +266 -8
- package/gs/builtin/channel.ts +22 -0
- package/gs/builtin/hostio.test.ts +177 -0
- package/gs/builtin/hostio.ts +171 -56
- package/gs/builtin/index.ts +1 -0
- package/gs/builtin/runtime-contract.test.ts +356 -0
- package/gs/builtin/slice.ts +259 -50
- package/gs/builtin/type.ts +188 -30
- package/gs/builtin/varRef.ts +38 -1
- package/gs/bytes/buffer.gs.ts +48 -44
- package/gs/bytes/meta.json +8 -3
- package/gs/bytes/reader.gs.ts +20 -19
- package/gs/context/context.test.ts +41 -0
- package/gs/context/context.ts +22 -26
- 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 +32 -0
- package/gs/crypto/rand/index.ts +90 -0
- package/gs/crypto/rand/meta.json +5 -0
- package/gs/embed/index.ts +20 -0
- package/gs/embed/meta.json +5 -0
- package/gs/encoding/json/index.test.ts +79 -0
- package/gs/encoding/json/index.ts +210 -0
- package/gs/errors/errors.test.ts +82 -0
- package/gs/errors/errors.ts +104 -0
- package/gs/fmt/fmt.ts +56 -16
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +95 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +300 -2
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +159 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1005 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +719 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +40 -0
- package/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/meta.json +3 -1
- package/gs/github.com/klauspost/compress/internal/le/index.test.ts +36 -0
- package/gs/github.com/klauspost/compress/internal/le/index.ts +114 -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 +72 -0
- package/gs/go/scanner/index.ts +204 -0
- package/gs/go/token/index.test.ts +67 -0
- package/gs/go/token/index.ts +686 -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 +77 -0
- package/gs/io/fs/walk.test.ts +61 -0
- package/gs/io/fs/walk.ts +9 -9
- package/gs/io/io.ts +174 -31
- package/gs/io/meta.json +10 -2
- package/gs/maps/iter.ts +12 -6
- package/gs/maps/maps.ts +8 -6
- package/gs/math/bits/index.ts +103 -47
- package/gs/math/const.gs.test.ts +11 -5
- package/gs/math/const.gs.ts +5 -6
- package/gs/mime/index.ts +54 -0
- package/gs/net/http/httptest/index.ts +25 -0
- package/gs/net/http/index.test.ts +20 -0
- package/gs/net/http/index.ts +81 -0
- package/gs/os/dir_unix.gs.ts +2 -3
- package/gs/os/file_unix_js.test.ts +50 -0
- package/gs/os/meta.json +1 -2
- package/gs/os/tempfile.gs.test.ts +85 -0
- package/gs/os/tempfile.gs.ts +71 -11
- package/gs/os/types_js.gs.ts +11 -11
- package/gs/path/filepath/match.test.ts +31 -12
- package/gs/path/filepath/match.ts +178 -3
- package/gs/path/filepath/path.test.ts +25 -0
- package/gs/path/filepath/path.ts +159 -5
- package/gs/path/path.ts +20 -5
- package/gs/reflect/index.ts +2 -1
- package/gs/reflect/map.test.ts +19 -0
- package/gs/reflect/map.ts +4 -0
- package/gs/reflect/type.ts +298 -29
- package/gs/reflect/typefor.test.ts +75 -0
- package/gs/runtime/debug/index.test.ts +24 -0
- package/gs/runtime/debug/index.ts +8 -0
- package/gs/runtime/runtime.test.ts +19 -0
- package/gs/runtime/runtime.ts +98 -3
- package/gs/slices/slices.test.ts +94 -0
- package/gs/slices/slices.ts +245 -5
- package/gs/sort/meta.json +7 -0
- package/gs/sort/slice.gs.ts +16 -7
- package/gs/sort/sort.gs.ts +16 -13
- package/gs/strings/builder.ts +4 -3
- package/gs/sync/atomic/type.gs.ts +13 -14
- package/gs/sync/meta.json +3 -1
- package/gs/sync/sync.test.ts +36 -0
- package/gs/sync/sync.ts +39 -0
- package/gs/syscall/constants.ts +39 -24
- package/gs/syscall/errors.ts +10 -0
- package/gs/syscall/fs.ts +195 -0
- package/gs/syscall/js/index.ts +458 -0
- package/gs/syscall/js/meta.json +4 -0
- package/gs/syscall/net.test.ts +85 -0
- package/gs/syscall/types.ts +56 -0
- package/gs/testing/index.ts +1 -0
- package/gs/testing/meta.json +5 -0
- package/gs/testing/testing.test.ts +90 -0
- package/gs/testing/testing.ts +382 -0
- package/gs/time/time.test.ts +106 -0
- package/gs/time/time.ts +278 -57
- package/gs/unicode/unicode.test.ts +25 -0
- package/gs/unicode/unicode.ts +119 -9
- package/gs/unicode/utf8/utf8.test.ts +13 -0
- package/gs/unicode/utf8/utf8.ts +28 -16
- package/gs/unique/index.ts +91 -0
- package/package.json +14 -13
- package/compiler/analysis.go +0 -3475
- package/compiler/analysis_test.go +0 -338
- package/compiler/assignment.go +0 -580
- package/compiler/builtin_test.go +0 -92
- package/compiler/code-writer.go +0 -115
- package/compiler/compiler_test.go +0 -149
- package/compiler/composite-lit.go +0 -779
- package/compiler/config_test.go +0 -62
- package/compiler/constraint.go +0 -86
- package/compiler/decl.go +0 -801
- package/compiler/expr-call-async.go +0 -188
- package/compiler/expr-call-builtins.go +0 -208
- package/compiler/expr-call-helpers.go +0 -382
- package/compiler/expr-call-make.go +0 -318
- package/compiler/expr-call-type-conversion.go +0 -520
- package/compiler/expr-call.go +0 -413
- package/compiler/expr-selector.go +0 -343
- package/compiler/expr-star.go +0 -82
- package/compiler/expr-type.go +0 -442
- package/compiler/expr-value.go +0 -89
- package/compiler/expr.go +0 -773
- package/compiler/field.go +0 -183
- package/compiler/gs_dependencies_test.go +0 -298
- package/compiler/lit.go +0 -322
- package/compiler/output.go +0 -72
- package/compiler/primitive.go +0 -149
- package/compiler/protobuf.go +0 -697
- package/compiler/sanitize.go +0 -100
- package/compiler/spec-struct.go +0 -995
- package/compiler/spec-value.go +0 -540
- package/compiler/spec.go +0 -725
- package/compiler/stmt-assign.go +0 -664
- package/compiler/stmt-for.go +0 -266
- package/compiler/stmt-range.go +0 -475
- package/compiler/stmt-select.go +0 -262
- package/compiler/stmt-type-switch.go +0 -147
- package/compiler/stmt.go +0 -1308
- package/compiler/type-assert.go +0 -386
- package/compiler/type-info.go +0 -156
- package/compiler/type-utils.go +0 -207
- package/compiler/type.go +0 -892
package/gs/errors/errors.ts
CHANGED
|
@@ -6,6 +6,57 @@ export function New(text: string): $.GoError {
|
|
|
6
6
|
return $.newError(text)
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
export function Errorf(format: string, ...args: any[]): $.GoError {
|
|
10
|
+
return New(formatText(format, args))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function Wrap(err: $.GoError, message: string): $.GoError {
|
|
14
|
+
if (err === null) {
|
|
15
|
+
return null
|
|
16
|
+
}
|
|
17
|
+
return wrapError(err, message)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function Wrapf(
|
|
21
|
+
err: $.GoError,
|
|
22
|
+
format: string,
|
|
23
|
+
...args: any[]
|
|
24
|
+
): $.GoError {
|
|
25
|
+
if (err === null) {
|
|
26
|
+
return null
|
|
27
|
+
}
|
|
28
|
+
return wrapError(err, formatText(format, args))
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function wrapError(err: Exclude<$.GoError, null>, message: string): $.GoError {
|
|
32
|
+
const wrapped = $.newError(`${message}: ${err.Error()}`)
|
|
33
|
+
;(wrapped as any).Unwrap = function (): $.GoError {
|
|
34
|
+
return err
|
|
35
|
+
}
|
|
36
|
+
return wrapped
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function formatText(format: string, args: any[]): string {
|
|
40
|
+
let argIndex = 0
|
|
41
|
+
return format.replace(/%[sdqv%]/g, (match) => {
|
|
42
|
+
if (match === '%%') {
|
|
43
|
+
return '%'
|
|
44
|
+
}
|
|
45
|
+
if (argIndex >= args.length) {
|
|
46
|
+
return match
|
|
47
|
+
}
|
|
48
|
+
const arg = args[argIndex++]
|
|
49
|
+
switch (match) {
|
|
50
|
+
case '%d':
|
|
51
|
+
return String(Number(arg))
|
|
52
|
+
case '%q':
|
|
53
|
+
return JSON.stringify(String(arg))
|
|
54
|
+
default:
|
|
55
|
+
return String(arg)
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
|
|
9
60
|
// ErrUnsupported indicates that a requested operation cannot be performed,
|
|
10
61
|
// because it is unsupported. For example, a call to os.Link when using a
|
|
11
62
|
// file system that does not support hard links.
|
|
@@ -179,6 +230,59 @@ export function As(err: $.GoError, target: any): boolean {
|
|
|
179
230
|
return false
|
|
180
231
|
}
|
|
181
232
|
|
|
233
|
+
// AsType finds the first error in err's tree that matches the generic error
|
|
234
|
+
// type E, returning the matching error and true. Otherwise it returns E's zero
|
|
235
|
+
// value and false.
|
|
236
|
+
export function AsType(
|
|
237
|
+
typeArgs: $.GenericTypeArgs | undefined,
|
|
238
|
+
err: $.GoError,
|
|
239
|
+
): [any, boolean] {
|
|
240
|
+
const descriptor = typeArgs?.E
|
|
241
|
+
const zero = (): any => descriptor?.zero?.() ?? null
|
|
242
|
+
if (err === null || descriptor?.type === undefined) {
|
|
243
|
+
return [zero(), false]
|
|
244
|
+
}
|
|
245
|
+
return asType(err, descriptor.type, zero)
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function asType(
|
|
249
|
+
err: $.GoError,
|
|
250
|
+
typeInfo: $.TypeInfo | string,
|
|
251
|
+
zero: () => any,
|
|
252
|
+
): [any, boolean] {
|
|
253
|
+
if (err === null) {
|
|
254
|
+
return [zero(), false]
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const [asserted, ok] = $.typeAssertTuple<any>(err, typeInfo)
|
|
258
|
+
if (ok) {
|
|
259
|
+
return [asserted, true]
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
if (typeof (err as any).Unwrap === 'function') {
|
|
263
|
+
const result = (err as any).Unwrap()
|
|
264
|
+
if (Array.isArray(result)) {
|
|
265
|
+
for (const wrappedErr of result) {
|
|
266
|
+
if (
|
|
267
|
+
wrappedErr &&
|
|
268
|
+
typeof wrappedErr.Error === 'function'
|
|
269
|
+
) {
|
|
270
|
+
const [matched, matchedOK] = asType(wrappedErr, typeInfo, zero)
|
|
271
|
+
if (matchedOK) {
|
|
272
|
+
return [matched, true]
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return [zero(), false]
|
|
277
|
+
}
|
|
278
|
+
if (result && typeof result.Error === 'function') {
|
|
279
|
+
return asType(result, typeInfo, zero)
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return [zero(), false]
|
|
284
|
+
}
|
|
285
|
+
|
|
182
286
|
// Join returns an error that wraps the given errors.
|
|
183
287
|
// Any nil error values are discarded.
|
|
184
288
|
// Join returns nil if every value in errs is nil.
|
package/gs/fmt/fmt.ts
CHANGED
|
@@ -22,7 +22,7 @@ export interface State {
|
|
|
22
22
|
Flag(c: number): boolean
|
|
23
23
|
Precision(): [number, boolean]
|
|
24
24
|
Width(): [number, boolean]
|
|
25
|
-
Write(b:
|
|
25
|
+
Write(b: $.Bytes): [number, $.GoError | null]
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// Simple printf-style formatting implementation
|
|
@@ -199,7 +199,11 @@ function parseFormat(format: string, args: any[]): string {
|
|
|
199
199
|
const verb = format[j]
|
|
200
200
|
|
|
201
201
|
if (argIndex < args.length) {
|
|
202
|
-
|
|
202
|
+
const arg = args[argIndex]
|
|
203
|
+
let formatted = formatWithState(arg, verb, flags, width, precision)
|
|
204
|
+
if (formatted === null) {
|
|
205
|
+
formatted = formatValue(arg, verb)
|
|
206
|
+
}
|
|
203
207
|
|
|
204
208
|
// Apply width and precision formatting
|
|
205
209
|
if (width && !precision) {
|
|
@@ -217,7 +221,7 @@ function parseFormat(format: string, args: any[]): string {
|
|
|
217
221
|
(verb === 'f' || verb === 'e' || verb === 'g')
|
|
218
222
|
) {
|
|
219
223
|
const p = parseInt(precision)
|
|
220
|
-
const num = Number(
|
|
224
|
+
const num = Number(arg)
|
|
221
225
|
if (verb === 'f') {
|
|
222
226
|
formatted = num.toFixed(p)
|
|
223
227
|
} else if (verb === 'e') {
|
|
@@ -257,6 +261,39 @@ function parseFormat(format: string, args: any[]): string {
|
|
|
257
261
|
return result
|
|
258
262
|
}
|
|
259
263
|
|
|
264
|
+
function formatWithState(
|
|
265
|
+
value: any,
|
|
266
|
+
verb: string,
|
|
267
|
+
flags: string,
|
|
268
|
+
width: string,
|
|
269
|
+
precision: string,
|
|
270
|
+
): string | null {
|
|
271
|
+
if (!value || typeof value.Format !== 'function') {
|
|
272
|
+
return null
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
let out = ''
|
|
276
|
+
const state: State = {
|
|
277
|
+
Flag(c: number): boolean {
|
|
278
|
+
return flags.includes(String.fromCharCode(c))
|
|
279
|
+
},
|
|
280
|
+
Precision(): [number, boolean] {
|
|
281
|
+
return precision === '' ? [0, false] : [parseInt(precision), true]
|
|
282
|
+
},
|
|
283
|
+
Width(): [number, boolean] {
|
|
284
|
+
return width === '' ? [0, false] : [parseInt(width), true]
|
|
285
|
+
},
|
|
286
|
+
Write(b: $.Bytes): [number, $.GoError | null] {
|
|
287
|
+
const text = $.bytesToString(b)
|
|
288
|
+
out += text
|
|
289
|
+
return [text.length, null]
|
|
290
|
+
},
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
value.Format(state, verb.codePointAt(0) ?? 0)
|
|
294
|
+
return out
|
|
295
|
+
}
|
|
296
|
+
|
|
260
297
|
// Global stdout simulation for Print functions
|
|
261
298
|
let stdout = {
|
|
262
299
|
write: (data: string) => {
|
|
@@ -361,34 +398,37 @@ export function Fprintln(w: any, ...a: any[]): [number, $.GoError | null] {
|
|
|
361
398
|
}
|
|
362
399
|
|
|
363
400
|
// Append functions (append to byte slice)
|
|
364
|
-
export function Append(b:
|
|
401
|
+
export function Append(b: $.Bytes, ...a: any[]): $.Bytes {
|
|
365
402
|
const result = a.map(defaultFormat).join(' ')
|
|
366
403
|
const encoded = new TextEncoder().encode(result)
|
|
367
|
-
const
|
|
368
|
-
newArray.
|
|
369
|
-
newArray.set(
|
|
404
|
+
const base = $.bytesToUint8Array(b)
|
|
405
|
+
const newArray = new Uint8Array(base.length + encoded.length)
|
|
406
|
+
newArray.set(base)
|
|
407
|
+
newArray.set(encoded, base.length)
|
|
370
408
|
return newArray
|
|
371
409
|
}
|
|
372
410
|
|
|
373
411
|
export function Appendf(
|
|
374
|
-
b:
|
|
412
|
+
b: $.Bytes,
|
|
375
413
|
format: string,
|
|
376
414
|
...a: any[]
|
|
377
|
-
):
|
|
415
|
+
): $.Bytes {
|
|
378
416
|
const result = parseFormat(format, a)
|
|
379
417
|
const encoded = new TextEncoder().encode(result)
|
|
380
|
-
const
|
|
381
|
-
newArray.
|
|
382
|
-
newArray.set(
|
|
418
|
+
const base = $.bytesToUint8Array(b)
|
|
419
|
+
const newArray = new Uint8Array(base.length + encoded.length)
|
|
420
|
+
newArray.set(base)
|
|
421
|
+
newArray.set(encoded, base.length)
|
|
383
422
|
return newArray
|
|
384
423
|
}
|
|
385
424
|
|
|
386
|
-
export function Appendln(b:
|
|
425
|
+
export function Appendln(b: $.Bytes, ...a: any[]): $.Bytes {
|
|
387
426
|
const result = a.map(defaultFormat).join(' ') + '\n'
|
|
388
427
|
const encoded = new TextEncoder().encode(result)
|
|
389
|
-
const
|
|
390
|
-
newArray.
|
|
391
|
-
newArray.set(
|
|
428
|
+
const base = $.bytesToUint8Array(b)
|
|
429
|
+
const newArray = new Uint8Array(base.length + encoded.length)
|
|
430
|
+
newArray.set(base)
|
|
431
|
+
newArray.set(encoded, base.length)
|
|
392
432
|
return newArray
|
|
393
433
|
}
|
|
394
434
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
AppendVarint,
|
|
5
|
+
CompareEqualVT,
|
|
6
|
+
DecodeFixed32,
|
|
7
|
+
DecodeFixed64,
|
|
8
|
+
DecodeVarint,
|
|
9
|
+
DecodeVarintInt32,
|
|
10
|
+
DecodeVarintInt64,
|
|
11
|
+
DecodeVarintUint32,
|
|
12
|
+
EncodeVarint,
|
|
13
|
+
ErrIntOverflow,
|
|
14
|
+
ErrInvalidLength,
|
|
15
|
+
ErrUnexpectedEndOfGroup,
|
|
16
|
+
SizeOfVarint,
|
|
17
|
+
Skip,
|
|
18
|
+
} from './index.js'
|
|
19
|
+
|
|
20
|
+
class TestValue {
|
|
21
|
+
constructor(private readonly value: string) {}
|
|
22
|
+
|
|
23
|
+
EqualVT(other: TestValue): boolean {
|
|
24
|
+
return this.value == other.value
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
describe('protobuf-go-lite EqualVT helpers', () => {
|
|
29
|
+
it('accepts compiler-emitted runtime type arguments', () => {
|
|
30
|
+
const equal = CompareEqualVT<TestValue>({
|
|
31
|
+
T: { zero: () => null },
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
expect(equal(new TestValue('a'), new TestValue('a'))).toBe(true)
|
|
35
|
+
expect(equal(new TestValue('a'), new TestValue('b'))).toBe(false)
|
|
36
|
+
expect(equal(null, null)).toBe(true)
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
describe('protobuf-go-lite wire helpers', () => {
|
|
41
|
+
it('encodes and decodes varints', () => {
|
|
42
|
+
const buf = new Uint8Array(4)
|
|
43
|
+
|
|
44
|
+
const offset = EncodeVarint(buf, 4, 300)
|
|
45
|
+
|
|
46
|
+
expect(offset).toBe(2)
|
|
47
|
+
expect(Array.from(buf.slice(offset))).toEqual([0xac, 0x02])
|
|
48
|
+
expect(SizeOfVarint(300)).toBe(2)
|
|
49
|
+
expect(DecodeVarint(buf, offset)).toEqual([300, 4, null])
|
|
50
|
+
expect(DecodeVarintInt32(buf, offset)).toEqual([300, 4, null])
|
|
51
|
+
expect(DecodeVarintInt64(buf, offset)).toEqual([300, 4, null])
|
|
52
|
+
expect(DecodeVarintUint32(buf, offset)).toEqual([300, 4, null])
|
|
53
|
+
expect(Array.from(AppendVarint([], 300) as number[])).toEqual([
|
|
54
|
+
0xac,
|
|
55
|
+
0x02,
|
|
56
|
+
])
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
it('decodes fixed64 values', () => {
|
|
60
|
+
expect(DecodeFixed32(new Uint8Array([0x44, 0x33, 0x22, 0x11]), 0)).toEqual([
|
|
61
|
+
0x11223344,
|
|
62
|
+
4,
|
|
63
|
+
null,
|
|
64
|
+
])
|
|
65
|
+
|
|
66
|
+
expect(
|
|
67
|
+
DecodeFixed64(
|
|
68
|
+
new Uint8Array([0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11]),
|
|
69
|
+
0,
|
|
70
|
+
),
|
|
71
|
+
).toEqual([0x1122334455667800, 8, null])
|
|
72
|
+
|
|
73
|
+
const [, , err] = DecodeFixed64(new Uint8Array([1, 2, 3]), 0)
|
|
74
|
+
expect(err?.Error()).toBe('unexpected EOF')
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
it('skips protobuf records', () => {
|
|
78
|
+
expect(Skip(new Uint8Array([0x08, 0x96, 0x01]))).toEqual([3, null])
|
|
79
|
+
expect(Skip(new Uint8Array([0x12, 0x03, 0x61, 0x62, 0x63]))).toEqual([
|
|
80
|
+
5,
|
|
81
|
+
null,
|
|
82
|
+
])
|
|
83
|
+
expect(Skip(new Uint8Array([0x0c]))).toEqual([
|
|
84
|
+
0,
|
|
85
|
+
ErrUnexpectedEndOfGroup,
|
|
86
|
+
])
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
it('reports protobuf wire errors as Go errors', () => {
|
|
90
|
+
expect(ErrInvalidLength?.Error()).toContain('negative length')
|
|
91
|
+
expect(ErrIntOverflow?.Error()).toContain('integer overflow')
|
|
92
|
+
const [, eof] = Skip(new Uint8Array([0x08, 0x80]))
|
|
93
|
+
expect(eof?.Error()).toBe('unexpected EOF')
|
|
94
|
+
})
|
|
95
|
+
})
|
|
@@ -1,14 +1,312 @@
|
|
|
1
|
+
import * as $ from '../../../builtin/index.js'
|
|
2
|
+
|
|
3
|
+
export const ErrInvalidLength = $.newError(
|
|
4
|
+
'proto: negative length found during unmarshaling',
|
|
5
|
+
)
|
|
6
|
+
export const ErrIntOverflow = $.newError('proto: integer overflow')
|
|
7
|
+
export const ErrUnexpectedEndOfGroup = $.newError(
|
|
8
|
+
'proto: unexpected end of group',
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
export interface Message {
|
|
12
|
+
SizeVT(): number
|
|
13
|
+
MarshalToSizedBufferVT(dAtA: $.Slice<number>): [number, $.GoError]
|
|
14
|
+
MarshalVT(): [$.Slice<number>, $.GoError]
|
|
15
|
+
UnmarshalVT(data: $.Slice<number>): $.GoError
|
|
16
|
+
Reset(): void
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface JSONMessage {
|
|
20
|
+
MarshalJSON(): [$.Slice<number>, $.GoError]
|
|
21
|
+
UnmarshalJSON(data: $.Slice<number>): $.GoError
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface CloneMessage extends Message {
|
|
25
|
+
CloneMessageVT(): CloneMessage | null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface CloneVT<T> extends CloneMessage {
|
|
29
|
+
CloneVT(): T
|
|
30
|
+
}
|
|
31
|
+
|
|
1
32
|
export interface EqualVT<T> {
|
|
2
33
|
EqualVT(other: T): boolean
|
|
3
34
|
}
|
|
4
35
|
|
|
5
|
-
export function
|
|
36
|
+
export function CompareComparable<T>(): (t1: T, t2: T) => boolean {
|
|
37
|
+
return (t1, t2) => t1 === t2
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function IsEqualVT<T extends EqualVT<T>>(
|
|
41
|
+
t1: T | null,
|
|
42
|
+
t2: T | null,
|
|
43
|
+
): boolean
|
|
44
|
+
export function IsEqualVT<T extends EqualVT<T>>(
|
|
45
|
+
_typeArgs: unknown,
|
|
46
|
+
t1: T | null,
|
|
47
|
+
t2: T | null,
|
|
48
|
+
): boolean
|
|
49
|
+
export function IsEqualVT<T extends EqualVT<T>>(
|
|
50
|
+
arg0: unknown,
|
|
51
|
+
arg1: T | null,
|
|
52
|
+
arg2?: T | null,
|
|
53
|
+
): boolean {
|
|
54
|
+
const t1 = arg2 === undefined ? (arg0 as T | null) : arg1
|
|
55
|
+
const t2 = arg2 === undefined ? arg1 : arg2
|
|
6
56
|
if (t1 == null || t2 == null) {
|
|
7
57
|
return t1 == t2
|
|
8
58
|
}
|
|
9
59
|
return t1.EqualVT(t2)
|
|
10
60
|
}
|
|
11
61
|
|
|
12
|
-
export function CompareEqualVT<T extends EqualVT<T>>(
|
|
62
|
+
export function CompareEqualVT<T extends EqualVT<T>>(
|
|
63
|
+
_typeArgs?: unknown,
|
|
64
|
+
): (t1: T | null, t2: T | null) => boolean {
|
|
13
65
|
return (t1, t2) => IsEqualVT(t1, t2)
|
|
14
66
|
}
|
|
67
|
+
|
|
68
|
+
export function IsEqualVTSlice<T extends EqualVT<T>>(
|
|
69
|
+
s1: $.Slice<T>,
|
|
70
|
+
s2: $.Slice<T>,
|
|
71
|
+
): boolean {
|
|
72
|
+
if ($.len(s1) !== $.len(s2)) {
|
|
73
|
+
return false
|
|
74
|
+
}
|
|
75
|
+
for (let i = 0; i < $.len(s1); i++) {
|
|
76
|
+
if (!IsEqualVT((s1 as any)[i] as T, (s2 as any)[i] as T)) {
|
|
77
|
+
return false
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return true
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function EncodeVarint(
|
|
84
|
+
dAtA: $.Slice<number>,
|
|
85
|
+
offset: number,
|
|
86
|
+
v: number,
|
|
87
|
+
): number {
|
|
88
|
+
offset -= SizeOfVarint(v)
|
|
89
|
+
const base = offset
|
|
90
|
+
while (v >= 0x80) {
|
|
91
|
+
setByte(dAtA, offset, (v % 0x80) | 0x80)
|
|
92
|
+
v = Math.floor(v / 0x80)
|
|
93
|
+
offset++
|
|
94
|
+
}
|
|
95
|
+
setByte(dAtA, offset, v)
|
|
96
|
+
return base
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function AppendVarint(b: $.Slice<number>, v: number): $.Slice<number> {
|
|
100
|
+
const bytes: number[] = []
|
|
101
|
+
while (v >= 0x80) {
|
|
102
|
+
bytes.push((v % 0x80) | 0x80)
|
|
103
|
+
v = Math.floor(v / 0x80)
|
|
104
|
+
}
|
|
105
|
+
bytes.push(v)
|
|
106
|
+
return $.append(b, ...bytes)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export function ConsumeVarint(b: $.Slice<number>): [number, number] {
|
|
110
|
+
let v = 0
|
|
111
|
+
let shift = 0
|
|
112
|
+
for (let i = 0; i < 10; i++) {
|
|
113
|
+
if (i >= $.len(b)) {
|
|
114
|
+
return [0, -1]
|
|
115
|
+
}
|
|
116
|
+
const value = byteSliceValue(b, i)
|
|
117
|
+
if (shift === 63 && value > 1) {
|
|
118
|
+
return [0, -2]
|
|
119
|
+
}
|
|
120
|
+
v += (value & 0x7f) * 2 ** shift
|
|
121
|
+
if (value < 0x80) {
|
|
122
|
+
return [v, i + 1]
|
|
123
|
+
}
|
|
124
|
+
shift += 7
|
|
125
|
+
}
|
|
126
|
+
return [0, -2]
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export function SizeOfVarint(x: number): number {
|
|
130
|
+
let n = 1
|
|
131
|
+
while (x >= 0x80) {
|
|
132
|
+
x = Math.floor(x / 0x80)
|
|
133
|
+
n++
|
|
134
|
+
}
|
|
135
|
+
return n
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export function DecodeVarint(
|
|
139
|
+
b: $.Slice<number>,
|
|
140
|
+
idx: number,
|
|
141
|
+
): [number, number, $.GoError] {
|
|
142
|
+
const [v, n] = ConsumeVarint($.goSlice(b, idx, undefined))
|
|
143
|
+
if (n < 0) {
|
|
144
|
+
return [0, 0, n === -1 ? ioUnexpectedEOF() : ErrIntOverflow]
|
|
145
|
+
}
|
|
146
|
+
return [v, idx + n, null]
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function DecodeVarintInt32(
|
|
150
|
+
b: $.Slice<number>,
|
|
151
|
+
idx: number,
|
|
152
|
+
): [number, number, $.GoError] {
|
|
153
|
+
const [v, next, err] = DecodeVarint(b, idx)
|
|
154
|
+
return [toInt32(v), next, err]
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export function DecodeVarintInt64(
|
|
158
|
+
b: $.Slice<number>,
|
|
159
|
+
idx: number,
|
|
160
|
+
): [number, number, $.GoError] {
|
|
161
|
+
return DecodeVarint(b, idx)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export function DecodeVarintUint32(
|
|
165
|
+
b: $.Slice<number>,
|
|
166
|
+
idx: number,
|
|
167
|
+
): [number, number, $.GoError] {
|
|
168
|
+
const [v, next, err] = DecodeVarint(b, idx)
|
|
169
|
+
return [v >>> 0, next, err]
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export function DecodeFixed32(
|
|
173
|
+
b: $.Slice<number>,
|
|
174
|
+
idx: number,
|
|
175
|
+
): [number, number, $.GoError] {
|
|
176
|
+
if (idx + 4 > $.len(b)) {
|
|
177
|
+
return [0, 0, ioUnexpectedEOF()]
|
|
178
|
+
}
|
|
179
|
+
const value =
|
|
180
|
+
byteSliceValue(b, idx) +
|
|
181
|
+
byteSliceValue(b, idx + 1) * 2 ** 8 +
|
|
182
|
+
byteSliceValue(b, idx + 2) * 2 ** 16 +
|
|
183
|
+
byteSliceValue(b, idx + 3) * 2 ** 24
|
|
184
|
+
return [value >>> 0, idx + 4, null]
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function DecodeFixed64(
|
|
188
|
+
b: $.Slice<number>,
|
|
189
|
+
idx: number,
|
|
190
|
+
): [number, number, $.GoError] {
|
|
191
|
+
if (idx + 8 > $.len(b)) {
|
|
192
|
+
return [0, 0, ioUnexpectedEOF()]
|
|
193
|
+
}
|
|
194
|
+
const low =
|
|
195
|
+
byteSliceValue(b, idx) +
|
|
196
|
+
byteSliceValue(b, idx + 1) * 2 ** 8 +
|
|
197
|
+
byteSliceValue(b, idx + 2) * 2 ** 16 +
|
|
198
|
+
byteSliceValue(b, idx + 3) * 2 ** 24
|
|
199
|
+
const high =
|
|
200
|
+
byteSliceValue(b, idx + 4) +
|
|
201
|
+
byteSliceValue(b, idx + 5) * 2 ** 8 +
|
|
202
|
+
byteSliceValue(b, idx + 6) * 2 ** 16 +
|
|
203
|
+
byteSliceValue(b, idx + 7) * 2 ** 24
|
|
204
|
+
return [low + high * 2 ** 32, idx + 8, null]
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export function Skip(dAtA: $.Slice<number>): [number, $.GoError] {
|
|
208
|
+
const l = $.len(dAtA)
|
|
209
|
+
let iNdEx = 0
|
|
210
|
+
let depth = 0
|
|
211
|
+
while (iNdEx < l) {
|
|
212
|
+
let wire = 0
|
|
213
|
+
for (let shift = 0; ; shift += 7) {
|
|
214
|
+
if (shift >= 64) {
|
|
215
|
+
return [0, ErrIntOverflow]
|
|
216
|
+
}
|
|
217
|
+
if (iNdEx >= l) {
|
|
218
|
+
return [0, ioUnexpectedEOF()]
|
|
219
|
+
}
|
|
220
|
+
const b = byteSliceValue(dAtA, iNdEx)
|
|
221
|
+
iNdEx++
|
|
222
|
+
wire += (b & 0x7f) * 2 ** shift
|
|
223
|
+
if (b < 0x80) {
|
|
224
|
+
break
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const wireType = wire & 0x7
|
|
229
|
+
switch (wireType) {
|
|
230
|
+
case 0:
|
|
231
|
+
for (let shift = 0; ; shift += 7) {
|
|
232
|
+
if (shift >= 64) {
|
|
233
|
+
return [0, ErrIntOverflow]
|
|
234
|
+
}
|
|
235
|
+
if (iNdEx >= l) {
|
|
236
|
+
return [0, ioUnexpectedEOF()]
|
|
237
|
+
}
|
|
238
|
+
const b = byteSliceValue(dAtA, iNdEx)
|
|
239
|
+
iNdEx++
|
|
240
|
+
if (b < 0x80) {
|
|
241
|
+
break
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
break
|
|
245
|
+
case 1:
|
|
246
|
+
iNdEx += 8
|
|
247
|
+
break
|
|
248
|
+
case 2: {
|
|
249
|
+
let length = 0
|
|
250
|
+
for (let shift = 0; ; shift += 7) {
|
|
251
|
+
if (shift >= 64) {
|
|
252
|
+
return [0, ErrIntOverflow]
|
|
253
|
+
}
|
|
254
|
+
if (iNdEx >= l) {
|
|
255
|
+
return [0, ioUnexpectedEOF()]
|
|
256
|
+
}
|
|
257
|
+
const b = byteSliceValue(dAtA, iNdEx)
|
|
258
|
+
iNdEx++
|
|
259
|
+
length += (b & 0x7f) * 2 ** shift
|
|
260
|
+
if (b < 0x80) {
|
|
261
|
+
break
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
if (length < 0) {
|
|
265
|
+
return [0, ErrInvalidLength]
|
|
266
|
+
}
|
|
267
|
+
iNdEx += length
|
|
268
|
+
break
|
|
269
|
+
}
|
|
270
|
+
case 3:
|
|
271
|
+
depth++
|
|
272
|
+
break
|
|
273
|
+
case 4:
|
|
274
|
+
if (depth === 0) {
|
|
275
|
+
return [0, ErrUnexpectedEndOfGroup]
|
|
276
|
+
}
|
|
277
|
+
depth--
|
|
278
|
+
break
|
|
279
|
+
case 5:
|
|
280
|
+
iNdEx += 4
|
|
281
|
+
break
|
|
282
|
+
default:
|
|
283
|
+
return [0, $.newError(`proto: illegal wireType ${wireType}`)]
|
|
284
|
+
}
|
|
285
|
+
if (iNdEx < 0) {
|
|
286
|
+
return [0, ErrInvalidLength]
|
|
287
|
+
}
|
|
288
|
+
if (depth === 0) {
|
|
289
|
+
return [iNdEx, null]
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return [0, ioUnexpectedEOF()]
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
function byteSliceValue(b: $.Slice<number>, idx: number): number {
|
|
296
|
+
return $.indexStringOrBytes(b, idx)
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
function setByte(b: $.Slice<number>, idx: number, value: number): void {
|
|
300
|
+
if (b == null) {
|
|
301
|
+
throw new Error('assignment to nil byte slice')
|
|
302
|
+
}
|
|
303
|
+
b[idx] = value & 0xff
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function toInt32(v: number): number {
|
|
307
|
+
return v | 0
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
function ioUnexpectedEOF(): $.GoError {
|
|
311
|
+
return $.newError('unexpected EOF')
|
|
312
|
+
}
|