goscript 0.1.1 → 0.1.3
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/cmd/goscript/cmd-test.go +104 -11
- package/cmd/goscript/cmd-test_test.go +1 -1
- package/cmd/goscript/cmd_compile.go +9 -0
- package/compiler/compile-request.go +31 -0
- package/compiler/compiler.go +1 -1
- package/compiler/compliance_test.go +0 -2
- package/compiler/config.go +2 -0
- package/compiler/gotest/package-result.go +2 -0
- package/compiler/gotest/request.go +85 -20
- package/compiler/gotest/runner.go +733 -96
- package/compiler/gotest/runner_test.go +647 -3
- package/compiler/lowered-program.go +10 -2
- package/compiler/lowering.go +2676 -349
- package/compiler/override-facts.go +77 -27
- package/compiler/override-registry.go +5 -4
- package/compiler/override-registry_test.go +178 -0
- package/compiler/package-graph_test.go +62 -7
- package/compiler/package-test-graph-variant.go +40 -16
- package/compiler/package-test-graph.go +0 -5
- package/compiler/package-test-graph_test.go +61 -3
- package/compiler/runtime-contract.go +40 -0
- package/compiler/semantic-model-types.go +16 -0
- package/compiler/semantic-model.go +336 -91
- package/compiler/semantic-model_test.go +50 -1
- package/compiler/service.go +9 -3
- package/compiler/skeleton_test.go +2371 -296
- package/compiler/tsworkspace/owner-process-unix_test.go +72 -0
- package/compiler/tsworkspace/owner.go +8 -0
- package/compiler/tsworkspace/tool-process-other.go +14 -0
- package/compiler/tsworkspace/tool-process-unix.go +19 -0
- package/compiler/typescript-emitter.go +149 -10
- package/dist/gs/builtin/builtin.d.ts +20 -1
- package/dist/gs/builtin/builtin.js +246 -26
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +24 -10
- package/dist/gs/builtin/channel.js +143 -34
- 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 +43 -9
- package/dist/gs/builtin/slice.js +437 -234
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +2 -0
- package/dist/gs/builtin/type.js +55 -10
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +2 -0
- package/dist/gs/builtin/varRef.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.js +28 -28
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/bytes.gs.d.ts +7 -5
- package/dist/gs/bytes/bytes.gs.js +10 -4
- package/dist/gs/bytes/bytes.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/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 +1 -1
- package/dist/gs/context/context.js +8 -3
- 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/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/sha1/index.d.ts +5 -0
- package/dist/gs/crypto/sha1/index.js +106 -0
- package/dist/gs/crypto/sha1/index.js.map +1 -0
- 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/encoding/json/index.d.ts +3 -0
- package/dist/gs/encoding/json/index.js +15 -0
- package/dist/gs/encoding/json/index.js.map +1 -1
- package/dist/gs/errors/errors.js +29 -6
- package/dist/gs/errors/errors.js.map +1 -1
- package/dist/gs/fmt/fmt.d.ts +1 -1
- package/dist/gs/fmt/fmt.js +64 -3
- package/dist/gs/fmt/fmt.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +7 -7
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +52 -18
- 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.js +56 -20
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +57 -3
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +366 -1
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -1
- 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.js +3 -2
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -1
- 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/token/index.js +11 -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/io/fs/readlink.js +2 -6
- package/dist/gs/io/fs/readlink.js.map +1 -1
- package/dist/gs/io/fs/walk.js.map +1 -1
- package/dist/gs/io/io.d.ts +8 -5
- package/dist/gs/io/io.js +20 -2
- 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/math/bits/index.js +14 -24
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/mime/index.js +3 -1
- package/dist/gs/mime/index.js.map +1 -1
- package/dist/gs/net/http/httptest/index.d.ts +20 -1
- package/dist/gs/net/http/httptest/index.js +85 -3
- package/dist/gs/net/http/httptest/index.js.map +1 -1
- package/dist/gs/net/http/index.d.ts +118 -6
- package/dist/gs/net/http/index.js +389 -14
- package/dist/gs/net/http/index.js.map +1 -1
- 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/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/os/zero_copy_posix.gs.js +1 -1
- package/dist/gs/os/zero_copy_posix.gs.js.map +1 -1
- package/dist/gs/path/filepath/match.js.map +1 -1
- package/dist/gs/path/filepath/path.d.ts +5 -3
- package/dist/gs/path/filepath/path.js +65 -10
- package/dist/gs/path/filepath/path.js.map +1 -1
- package/dist/gs/reflect/index.d.ts +3 -2
- package/dist/gs/reflect/index.js +2 -1
- 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 +26 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +24 -5
- package/dist/gs/reflect/type.js +390 -38
- 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 +39 -0
- package/dist/gs/runtime/debug/index.js +58 -0
- package/dist/gs/runtime/debug/index.js.map +1 -1
- 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/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 +24 -9
- package/dist/gs/slices/slices.js +229 -24
- 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 +55 -17
- package/dist/gs/sort/slice.gs.js.map +1 -1
- package/dist/gs/strings/builder.js +26 -17
- 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/sync.d.ts +6 -3
- package/dist/gs/sync/sync.js +39 -11
- package/dist/gs/sync/sync.js.map +1 -1
- package/dist/gs/syscall/errors.d.ts +116 -112
- package/dist/gs/syscall/errors.js +38 -1
- package/dist/gs/syscall/errors.js.map +1 -1
- package/dist/gs/syscall/fs.d.ts +2 -8
- package/dist/gs/syscall/fs.js.map +1 -1
- package/dist/gs/syscall/js/index.js +20 -12
- package/dist/gs/syscall/js/index.js.map +1 -1
- package/dist/gs/syscall/types.d.ts +4 -1
- package/dist/gs/syscall/types.js.map +1 -1
- package/dist/gs/testing/testing.d.ts +4 -3
- package/dist/gs/testing/testing.js +21 -4
- package/dist/gs/testing/testing.js.map +1 -1
- package/dist/gs/time/time.js +22 -0
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unicode/unicode.js.map +1 -1
- package/dist/gs/unique/index.js +7 -2
- package/dist/gs/unique/index.js.map +1 -1
- package/go.mod +8 -8
- package/go.sum +14 -23
- package/gs/builtin/builtin.ts +364 -37
- package/gs/builtin/channel.ts +208 -38
- 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 +290 -10
- package/gs/builtin/slice.test.ts +70 -0
- package/gs/builtin/slice.ts +566 -255
- package/gs/builtin/type.ts +63 -10
- package/gs/builtin/varRef.ts +2 -0
- package/gs/bytes/buffer.gs.ts +28 -28
- package/gs/bytes/bytes.gs.ts +19 -10
- package/gs/bytes/bytes.test.ts +17 -0
- package/gs/bytes/iter.gs.ts +13 -14
- 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 +36 -2
- package/gs/context/context.ts +9 -4
- 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/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/sha1/index.test.ts +28 -0
- package/gs/crypto/sha1/index.ts +130 -0
- package/gs/crypto/sha1/meta.json +8 -0
- 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/encoding/json/index.test.ts +25 -3
- package/gs/encoding/json/index.ts +21 -3
- package/gs/errors/errors.test.ts +4 -1
- package/gs/errors/errors.ts +32 -8
- package/gs/fmt/fmt.test.ts +23 -1
- package/gs/fmt/fmt.ts +76 -10
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +62 -7
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +78 -36
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +32 -11
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +122 -43
- package/gs/github.com/aperturerobotics/starpc/srpc/index.test.ts +31 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +518 -4
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +6 -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 +2 -1
- package/gs/github.com/klauspost/compress/internal/le/index.ts +6 -5
- 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/token/index.ts +17 -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/byteorder/index.test.ts +6 -6
- package/gs/io/fs/readlink.ts +40 -48
- package/gs/io/fs/walk.ts +10 -2
- package/gs/io/io.test.ts +64 -0
- package/gs/io/io.ts +34 -13
- package/gs/iter/iter.ts +8 -2
- package/gs/maps/iter.ts +69 -26
- package/gs/maps/maps.test.ts +23 -0
- package/gs/maps/maps.ts +6 -6
- package/gs/math/bits/index.test.ts +20 -0
- package/gs/math/bits/index.ts +15 -28
- package/gs/mime/index.ts +8 -2
- package/gs/net/http/httptest/index.test.ts +85 -0
- package/gs/net/http/httptest/index.ts +113 -3
- package/gs/net/http/index.test.ts +159 -1
- package/gs/net/http/index.ts +515 -15
- 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/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 +94 -15
- package/gs/os/zero_copy_posix.gs.ts +1 -2
- package/gs/path/filepath/match.ts +4 -1
- package/gs/path/filepath/meta.json +6 -0
- package/gs/path/filepath/path.test.ts +57 -2
- package/gs/path/filepath/path.ts +91 -12
- package/gs/reflect/field.test.ts +63 -0
- package/gs/reflect/index.ts +4 -1
- package/gs/reflect/iter.ts +2 -2
- package/gs/reflect/map.test.ts +24 -2
- package/gs/reflect/map.ts +35 -0
- package/gs/reflect/type.ts +543 -60
- 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 +22 -1
- package/gs/runtime/debug/index.ts +88 -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/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 +86 -0
- package/gs/slices/slices.ts +284 -37
- package/gs/sort/slice.gs.ts +73 -23
- package/gs/sort/slice.test.ts +40 -0
- package/gs/strings/builder.test.ts +8 -0
- package/gs/strings/builder.ts +29 -17
- 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/meta.json +1 -0
- package/gs/sync/sync.test.ts +57 -1
- package/gs/sync/sync.ts +45 -13
- package/gs/syscall/errors.ts +158 -115
- package/gs/syscall/fs.ts +8 -8
- package/gs/syscall/js/index.ts +49 -22
- package/gs/syscall/net.test.ts +26 -0
- package/gs/syscall/types.ts +7 -2
- package/gs/testing/testing.test.ts +56 -0
- package/gs/testing/testing.ts +27 -10
- package/gs/time/meta.json +2 -2
- package/gs/time/time.test.ts +4 -0
- package/gs/time/time.ts +33 -2
- package/gs/unicode/unicode.test.ts +14 -3
- package/gs/unicode/unicode.ts +1 -5
- package/gs/unique/index.ts +9 -2
- package/package.json +3 -3
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
//go:build unix
|
|
2
|
+
|
|
3
|
+
package tsworkspace
|
|
4
|
+
|
|
5
|
+
import (
|
|
6
|
+
"context"
|
|
7
|
+
"errors"
|
|
8
|
+
"os"
|
|
9
|
+
"path/filepath"
|
|
10
|
+
"strconv"
|
|
11
|
+
"strings"
|
|
12
|
+
"syscall"
|
|
13
|
+
"testing"
|
|
14
|
+
"time"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
func TestOwnerRunToolCancelsProcessGroup(t *testing.T) {
|
|
18
|
+
dir := t.TempDir()
|
|
19
|
+
pidFile := filepath.Join(dir, "child.pid")
|
|
20
|
+
tool := filepath.Join(dir, "spawn-child.sh")
|
|
21
|
+
script := "#!/bin/sh\n" +
|
|
22
|
+
"sleep 30 &\n" +
|
|
23
|
+
"echo $! > " + strconv.Quote(pidFile) + "\n" +
|
|
24
|
+
"wait\n"
|
|
25
|
+
if err := os.WriteFile(tool, []byte(script), 0o755); err != nil {
|
|
26
|
+
t.Fatal(err.Error())
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
|
30
|
+
defer cancel()
|
|
31
|
+
result := NewOwner(dir, dir).RunTool(ctx, PhaseRuntime, dir, tool)
|
|
32
|
+
if !result.Failed() {
|
|
33
|
+
t.Fatalf("expected canceled tool to fail")
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
pid := readChildPID(t, pidFile)
|
|
37
|
+
deadline := time.Now().Add(2 * time.Second)
|
|
38
|
+
for processExists(pid) && time.Now().Before(deadline) {
|
|
39
|
+
time.Sleep(25 * time.Millisecond)
|
|
40
|
+
}
|
|
41
|
+
if processExists(pid) {
|
|
42
|
+
_ = syscall.Kill(pid, syscall.SIGKILL)
|
|
43
|
+
t.Fatalf("child process %d survived canceled tool", pid)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
func readChildPID(t *testing.T, path string) int {
|
|
48
|
+
t.Helper()
|
|
49
|
+
deadline := time.Now().Add(2 * time.Second)
|
|
50
|
+
var data []byte
|
|
51
|
+
var err error
|
|
52
|
+
for time.Now().Before(deadline) {
|
|
53
|
+
data, err = os.ReadFile(path)
|
|
54
|
+
if err == nil {
|
|
55
|
+
break
|
|
56
|
+
}
|
|
57
|
+
time.Sleep(25 * time.Millisecond)
|
|
58
|
+
}
|
|
59
|
+
if err != nil {
|
|
60
|
+
t.Fatalf("read child pid: %v", err)
|
|
61
|
+
}
|
|
62
|
+
pid, err := strconv.Atoi(strings.TrimSpace(string(data)))
|
|
63
|
+
if err != nil {
|
|
64
|
+
t.Fatalf("parse child pid %q: %v", data, err)
|
|
65
|
+
}
|
|
66
|
+
return pid
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
func processExists(pid int) bool {
|
|
70
|
+
err := syscall.Kill(pid, 0)
|
|
71
|
+
return err == nil || errors.Is(err, syscall.EPERM)
|
|
72
|
+
}
|
|
@@ -106,6 +106,12 @@ func (o *Owner) RunTool(ctx context.Context, phase Phase, dir string, name strin
|
|
|
106
106
|
}
|
|
107
107
|
start := time.Now()
|
|
108
108
|
cmd := exec.CommandContext(ctx, tool, args...)
|
|
109
|
+
configureToolCommand(cmd)
|
|
110
|
+
cmd.Cancel = func() error {
|
|
111
|
+
killToolCommand(cmd)
|
|
112
|
+
return nil
|
|
113
|
+
}
|
|
114
|
+
cmd.WaitDelay = 5 * time.Second
|
|
109
115
|
cmd.Dir = dir
|
|
110
116
|
var output bytes.Buffer
|
|
111
117
|
cmd.Stdout = &output
|
|
@@ -232,6 +238,8 @@ func sourceDirectory() string {
|
|
|
232
238
|
|
|
233
239
|
const nodeAmbientTypes = `declare const process: {
|
|
234
240
|
env?: Record<string, string | undefined>
|
|
241
|
+
chdir?: (directory: string) => void
|
|
242
|
+
cwd?: () => string
|
|
235
243
|
exit?: (code?: number) => never
|
|
236
244
|
}
|
|
237
245
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//go:build unix
|
|
2
|
+
|
|
3
|
+
package tsworkspace
|
|
4
|
+
|
|
5
|
+
import (
|
|
6
|
+
"os/exec"
|
|
7
|
+
"syscall"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
func configureToolCommand(cmd *exec.Cmd) {
|
|
11
|
+
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
func killToolCommand(cmd *exec.Cmd) {
|
|
15
|
+
if cmd == nil || cmd.Process == nil {
|
|
16
|
+
return
|
|
17
|
+
}
|
|
18
|
+
_ = syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
|
|
19
|
+
}
|
|
@@ -126,12 +126,26 @@ func (o *TypeScriptEmitOwner) renderLoweredFile(pkg *loweredPackage, file *lower
|
|
|
126
126
|
if idx != 0 {
|
|
127
127
|
b.WriteString("\n")
|
|
128
128
|
}
|
|
129
|
-
b.WriteString("import
|
|
129
|
+
b.WriteString("import ")
|
|
130
|
+
if imp.typeOnly {
|
|
131
|
+
b.WriteString("type ")
|
|
132
|
+
}
|
|
133
|
+
b.WriteString("* as ")
|
|
130
134
|
b.WriteString(imp.alias)
|
|
131
135
|
b.WriteString(" from \"")
|
|
132
136
|
b.WriteString(imp.source)
|
|
133
137
|
b.WriteString("\"\n")
|
|
134
138
|
}
|
|
139
|
+
sideEffectImports := make(map[string]bool)
|
|
140
|
+
for _, imp := range file.imports {
|
|
141
|
+
if imp.typeOnly || !imp.sideEffect || sideEffectImports[imp.source] {
|
|
142
|
+
continue
|
|
143
|
+
}
|
|
144
|
+
sideEffectImports[imp.source] = true
|
|
145
|
+
b.WriteString("import \"")
|
|
146
|
+
b.WriteString(imp.source)
|
|
147
|
+
b.WriteString("\"\n")
|
|
148
|
+
}
|
|
135
149
|
if len(file.imports) != 0 {
|
|
136
150
|
b.WriteString("\n")
|
|
137
151
|
}
|
|
@@ -251,6 +265,8 @@ func structZeroValueDeps(structType *loweredStruct, names map[string]bool) []str
|
|
|
251
265
|
func renderStruct(b *strings.Builder, structType *loweredStruct, runtimeOwner *RuntimeContractOwner) {
|
|
252
266
|
varRef := runtimeOwner.QualifiedHelper(RuntimeHelperVarRef)
|
|
253
267
|
markStructValue := runtimeOwner.QualifiedHelper(RuntimeHelperMarkAsStructValue)
|
|
268
|
+
cloneStructValue := runtimeOwner.QualifiedHelper(RuntimeHelperCloneStructValue)
|
|
269
|
+
cloneArrayValue := runtimeOwner.QualifiedHelper(RuntimeHelperCloneArrayValue)
|
|
254
270
|
registerStructType := runtimeOwner.QualifiedHelper(RuntimeHelperRegisterStructType)
|
|
255
271
|
if structType.exported {
|
|
256
272
|
b.WriteString("export ")
|
|
@@ -305,9 +321,20 @@ func renderStruct(b *strings.Builder, structType *loweredStruct, runtimeOwner *R
|
|
|
305
321
|
b.WriteString(field.name)
|
|
306
322
|
b.WriteString(" ? ")
|
|
307
323
|
b.WriteString(markStructValue)
|
|
324
|
+
b.WriteString("(")
|
|
325
|
+
b.WriteString(cloneStructValue)
|
|
308
326
|
b.WriteString("(init.")
|
|
309
327
|
b.WriteString(field.name)
|
|
310
|
-
b.WriteString("
|
|
328
|
+
b.WriteString(")) : ")
|
|
329
|
+
b.WriteString(field.zero)
|
|
330
|
+
} else if field.arrayValue {
|
|
331
|
+
b.WriteString("init?.")
|
|
332
|
+
b.WriteString(field.name)
|
|
333
|
+
b.WriteString(" !== undefined ? ")
|
|
334
|
+
b.WriteString(cloneArrayValue)
|
|
335
|
+
b.WriteString("(init.")
|
|
336
|
+
b.WriteString(field.name)
|
|
337
|
+
b.WriteString(") : ")
|
|
311
338
|
b.WriteString(field.zero)
|
|
312
339
|
} else {
|
|
313
340
|
b.WriteString("init?.")
|
|
@@ -337,9 +364,16 @@ func renderStruct(b *strings.Builder, structType *loweredStruct, runtimeOwner *R
|
|
|
337
364
|
b.WriteString("(")
|
|
338
365
|
if field.structValue {
|
|
339
366
|
b.WriteString(markStructValue)
|
|
367
|
+
b.WriteString("(")
|
|
368
|
+
b.WriteString(cloneStructValue)
|
|
340
369
|
b.WriteString("(this._fields.")
|
|
341
370
|
b.WriteString(field.name)
|
|
342
|
-
b.WriteString(".value
|
|
371
|
+
b.WriteString(".value))")
|
|
372
|
+
} else if field.arrayValue {
|
|
373
|
+
b.WriteString(cloneArrayValue)
|
|
374
|
+
b.WriteString("(this._fields.")
|
|
375
|
+
b.WriteString(field.name)
|
|
376
|
+
b.WriteString(".value)")
|
|
343
377
|
} else {
|
|
344
378
|
b.WriteString("this._fields.")
|
|
345
379
|
b.WriteString(field.name)
|
|
@@ -421,6 +455,7 @@ func renderFunction(b *strings.Builder, fn *loweredFunction) {
|
|
|
421
455
|
}
|
|
422
456
|
b.WriteString("function ")
|
|
423
457
|
b.WriteString(fn.name)
|
|
458
|
+
renderFunctionTypeParams(b, fn)
|
|
424
459
|
b.WriteString("(")
|
|
425
460
|
for idx, param := range fn.params {
|
|
426
461
|
if idx != 0 {
|
|
@@ -453,6 +488,7 @@ func renderFunction(b *strings.Builder, fn *loweredFunction) {
|
|
|
453
488
|
renderNamedResults(b, fn.namedResults, 1)
|
|
454
489
|
renderDeferStack(b, fn.deferState, 1)
|
|
455
490
|
renderStmts(b, fn.body, 1)
|
|
491
|
+
renderUnreachableReturn(b, fn, 1)
|
|
456
492
|
b.WriteString("}\n")
|
|
457
493
|
}
|
|
458
494
|
|
|
@@ -463,6 +499,7 @@ func renderMethod(b *strings.Builder, fn *loweredFunction) {
|
|
|
463
499
|
b.WriteString("async ")
|
|
464
500
|
}
|
|
465
501
|
b.WriteString(fn.name)
|
|
502
|
+
renderFunctionTypeParams(b, fn)
|
|
466
503
|
b.WriteString("(")
|
|
467
504
|
for idx, param := range fn.params {
|
|
468
505
|
if idx != 0 {
|
|
@@ -495,10 +532,45 @@ func renderMethod(b *strings.Builder, fn *loweredFunction) {
|
|
|
495
532
|
renderNamedResults(b, fn.namedResults, 2)
|
|
496
533
|
renderDeferStack(b, fn.deferState, 2)
|
|
497
534
|
renderStmts(b, fn.body, 2)
|
|
535
|
+
renderUnreachableReturn(b, fn, 2)
|
|
498
536
|
writeIndent(b, 1)
|
|
499
537
|
b.WriteString("}\n")
|
|
500
538
|
}
|
|
501
539
|
|
|
540
|
+
func renderUnreachableReturn(b *strings.Builder, fn *loweredFunction, indent int) {
|
|
541
|
+
if fn.result == "void" || fn.result == "globalThis.Promise<void>" {
|
|
542
|
+
return
|
|
543
|
+
}
|
|
544
|
+
if loweredStmtsEndWithTerminal(fn.body) {
|
|
545
|
+
return
|
|
546
|
+
}
|
|
547
|
+
writeIndent(b, indent)
|
|
548
|
+
b.WriteString("throw new globalThis.Error(\"goscript: unreachable return\")\n")
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
func loweredStmtsEndWithTerminal(stmts []loweredStmt) bool {
|
|
552
|
+
if len(stmts) == 0 {
|
|
553
|
+
return false
|
|
554
|
+
}
|
|
555
|
+
last := stmts[len(stmts)-1]
|
|
556
|
+
text := strings.TrimSpace(last.text)
|
|
557
|
+
return strings.HasPrefix(text, "return") || strings.HasPrefix(text, "throw ")
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
func renderFunctionTypeParams(b *strings.Builder, fn *loweredFunction) {
|
|
561
|
+
if len(fn.typeParams) == 0 {
|
|
562
|
+
return
|
|
563
|
+
}
|
|
564
|
+
b.WriteString("<")
|
|
565
|
+
for idx, typeParam := range fn.typeParams {
|
|
566
|
+
if idx != 0 {
|
|
567
|
+
b.WriteString(", ")
|
|
568
|
+
}
|
|
569
|
+
b.WriteString(typeParam)
|
|
570
|
+
}
|
|
571
|
+
b.WriteString(">")
|
|
572
|
+
}
|
|
573
|
+
|
|
502
574
|
func receiverValue(fn *loweredFunction) string {
|
|
503
575
|
if fn.receiverValue != "" {
|
|
504
576
|
return fn.receiverValue
|
|
@@ -774,7 +846,7 @@ func renderSelect(b *strings.Builder, stmt *loweredSelect, indent int) {
|
|
|
774
846
|
}
|
|
775
847
|
b.WriteString(">([\n")
|
|
776
848
|
for idx, switchCase := range stmt.cases {
|
|
777
|
-
renderSelectCase(b, switchCase, stmt.external, indent+1)
|
|
849
|
+
renderSelectCase(b, switchCase, stmt.external, stmt.result, indent+1)
|
|
778
850
|
if idx != len(stmt.cases)-1 {
|
|
779
851
|
b.WriteString(",")
|
|
780
852
|
}
|
|
@@ -821,7 +893,9 @@ func renderSelectExternalBodies(b *strings.Builder, stmt *loweredSelect, indent
|
|
|
821
893
|
writeIndent(b, indent+2)
|
|
822
894
|
b.WriteString("{\n")
|
|
823
895
|
writeIndent(b, indent+3)
|
|
824
|
-
b.WriteString("const
|
|
896
|
+
b.WriteString("const ")
|
|
897
|
+
b.WriteString(stmt.result)
|
|
898
|
+
b.WriteString(" = ")
|
|
825
899
|
b.WriteString(stmt.value)
|
|
826
900
|
b.WriteString("\n")
|
|
827
901
|
renderStmts(b, switchCase.prelude, indent+3)
|
|
@@ -839,7 +913,7 @@ func renderSelectExternalBodies(b *strings.Builder, stmt *loweredSelect, indent
|
|
|
839
913
|
}
|
|
840
914
|
}
|
|
841
915
|
|
|
842
|
-
func renderSelectCase(b *strings.Builder, switchCase loweredSelectCase, external bool, indent int) {
|
|
916
|
+
func renderSelectCase(b *strings.Builder, switchCase loweredSelectCase, external bool, resultName string, indent int) {
|
|
843
917
|
writeIndent(b, indent)
|
|
844
918
|
b.WriteString("{\n")
|
|
845
919
|
writeIndent(b, indent+1)
|
|
@@ -865,10 +939,14 @@ func renderSelectCase(b *strings.Builder, switchCase loweredSelectCase, external
|
|
|
865
939
|
b.WriteString(",\n")
|
|
866
940
|
}
|
|
867
941
|
writeIndent(b, indent+1)
|
|
868
|
-
b.WriteString("onSelected: async (
|
|
942
|
+
b.WriteString("onSelected: async (")
|
|
943
|
+
b.WriteString(resultName)
|
|
944
|
+
b.WriteString(") => {\n")
|
|
869
945
|
if external {
|
|
870
946
|
writeIndent(b, indent+2)
|
|
871
|
-
b.WriteString("return
|
|
947
|
+
b.WriteString("return ")
|
|
948
|
+
b.WriteString(resultName)
|
|
949
|
+
b.WriteString("\n")
|
|
872
950
|
writeIndent(b, indent+1)
|
|
873
951
|
b.WriteString("}\n")
|
|
874
952
|
writeIndent(b, indent)
|
|
@@ -876,13 +954,67 @@ func renderSelectCase(b *strings.Builder, switchCase loweredSelectCase, external
|
|
|
876
954
|
return
|
|
877
955
|
}
|
|
878
956
|
renderStmts(b, switchCase.prelude, indent+2)
|
|
879
|
-
|
|
957
|
+
renderSelectCaseStmts(b, switchCase.body, indent+2)
|
|
880
958
|
writeIndent(b, indent+1)
|
|
881
959
|
b.WriteString("}\n")
|
|
882
960
|
writeIndent(b, indent)
|
|
883
961
|
b.WriteString("}")
|
|
884
962
|
}
|
|
885
963
|
|
|
964
|
+
func renderSelectCaseStmts(b *strings.Builder, stmts []loweredStmt, indent int) {
|
|
965
|
+
for idx, stmt := range stmts {
|
|
966
|
+
renderLeadingLines(b, stmt.leading, indent)
|
|
967
|
+
if stmt.rangeFunc != nil {
|
|
968
|
+
renderRangeFunc(b, stmt.rangeFunc, indent)
|
|
969
|
+
continue
|
|
970
|
+
}
|
|
971
|
+
if stmt.switchStmt != nil {
|
|
972
|
+
renderSwitch(b, stmt.switchStmt, indent)
|
|
973
|
+
continue
|
|
974
|
+
}
|
|
975
|
+
if stmt.selectStmt != nil {
|
|
976
|
+
renderSelect(b, stmt.selectStmt, indent)
|
|
977
|
+
continue
|
|
978
|
+
}
|
|
979
|
+
if stmt.typeSwitch != nil {
|
|
980
|
+
renderTypeSwitch(b, stmt.typeSwitch, indent)
|
|
981
|
+
continue
|
|
982
|
+
}
|
|
983
|
+
writeIndent(b, indent)
|
|
984
|
+
if stmt.text == "" && (stmt.hasBlock || len(stmt.children) != 0) {
|
|
985
|
+
b.WriteString("{\n")
|
|
986
|
+
renderSelectCaseStmts(b, stmt.children, indent+1)
|
|
987
|
+
writeIndent(b, indent)
|
|
988
|
+
b.WriteString("}\n")
|
|
989
|
+
continue
|
|
990
|
+
}
|
|
991
|
+
if strings.TrimSpace(stmt.text) == "return" {
|
|
992
|
+
b.WriteString("return $.selectVoidReturn()\n")
|
|
993
|
+
continue
|
|
994
|
+
}
|
|
995
|
+
writeIndentedText(b, stmt.text, indent)
|
|
996
|
+
if !stmt.hasBlock && len(stmt.children) == 0 {
|
|
997
|
+
if idx+1 < len(stmts) && needsASIBarrier(stmt, stmts[idx+1]) {
|
|
998
|
+
b.WriteString(";")
|
|
999
|
+
}
|
|
1000
|
+
b.WriteString("\n")
|
|
1001
|
+
continue
|
|
1002
|
+
}
|
|
1003
|
+
b.WriteString(" {\n")
|
|
1004
|
+
renderSelectCaseStmts(b, stmt.children, indent+1)
|
|
1005
|
+
writeIndent(b, indent)
|
|
1006
|
+
b.WriteString("}")
|
|
1007
|
+
if len(stmt.elseBody) == 0 {
|
|
1008
|
+
b.WriteString("\n")
|
|
1009
|
+
continue
|
|
1010
|
+
}
|
|
1011
|
+
b.WriteString(" else {\n")
|
|
1012
|
+
renderSelectCaseStmts(b, stmt.elseBody, indent+1)
|
|
1013
|
+
writeIndent(b, indent)
|
|
1014
|
+
b.WriteString("}\n")
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
|
|
886
1018
|
func renderTypeSwitch(b *strings.Builder, stmt *loweredTypeSwitch, indent int) {
|
|
887
1019
|
writeIndent(b, indent)
|
|
888
1020
|
b.WriteString("{\n")
|
|
@@ -965,7 +1097,11 @@ func renderTypeSwitchInlineBody(
|
|
|
965
1097
|
indent int,
|
|
966
1098
|
) {
|
|
967
1099
|
if varName == "" {
|
|
968
|
-
|
|
1100
|
+
writeIndent(b, indent)
|
|
1101
|
+
b.WriteString("{\n")
|
|
1102
|
+
renderStmts(b, body, indent+1)
|
|
1103
|
+
writeIndent(b, indent)
|
|
1104
|
+
b.WriteString("}\n")
|
|
969
1105
|
return
|
|
970
1106
|
}
|
|
971
1107
|
writeIndent(b, indent)
|
|
@@ -1002,6 +1138,9 @@ func renderTypeSwitchInlineBody(
|
|
|
1002
1138
|
func renderIndex(pkg *loweredPackage) string {
|
|
1003
1139
|
var lines []string
|
|
1004
1140
|
for _, file := range pkg.files {
|
|
1141
|
+
if file.sideEffect {
|
|
1142
|
+
lines = append(lines, "import \"./"+file.outputName+"\"")
|
|
1143
|
+
}
|
|
1005
1144
|
exports := slices.Clone(file.exports)
|
|
1006
1145
|
slices.Sort(exports)
|
|
1007
1146
|
if len(exports) != 0 {
|
|
@@ -10,11 +10,16 @@ export declare function print(...args: any[]): void;
|
|
|
10
10
|
* @param args Arguments to print
|
|
11
11
|
*/
|
|
12
12
|
export declare function println(...args: any[]): void;
|
|
13
|
+
export declare class GoPanic extends Error {
|
|
14
|
+
readonly value: unknown;
|
|
15
|
+
constructor(value: unknown);
|
|
16
|
+
}
|
|
13
17
|
/**
|
|
14
18
|
* Implementation of Go's built-in panic function
|
|
15
19
|
* @param args Arguments passed to panic
|
|
16
20
|
*/
|
|
17
|
-
export declare function panic(...args:
|
|
21
|
+
export declare function panic(...args: unknown[]): never;
|
|
22
|
+
export declare function panicValue(value: unknown): unknown;
|
|
18
23
|
/**
|
|
19
24
|
* Implementation of Go's built-in clear function.
|
|
20
25
|
* For slices, it sets all elements to their zero value.
|
|
@@ -35,7 +40,9 @@ export declare function assignStruct<T>(target: T, source: T): void;
|
|
|
35
40
|
* variable's address.
|
|
36
41
|
*/
|
|
37
42
|
export declare function pointerValue<T>(value: T | VarRef<T> | null | undefined): T;
|
|
43
|
+
export declare function pointerValueOrNil<T>(value: T | VarRef<T> | null | undefined): T | null;
|
|
38
44
|
export declare function arrayEqual(a: unknown, b: unknown): boolean;
|
|
45
|
+
export declare function comparableEqual(a: unknown, b: unknown): boolean;
|
|
39
46
|
export interface Complex {
|
|
40
47
|
real: number;
|
|
41
48
|
imag: number;
|
|
@@ -48,13 +55,25 @@ export declare function int(value: number | bigint, bits?: number): number;
|
|
|
48
55
|
export declare function uint(value: number | bigint, bits?: number): number;
|
|
49
56
|
export declare function uint64Shl(value: number | bigint, shift: number | bigint): number;
|
|
50
57
|
export declare function uint64Shr(value: number | bigint, shift: number | bigint): number;
|
|
58
|
+
export declare function int64Shl(value: number | bigint, shift: number | bigint): number;
|
|
59
|
+
export declare function int64Shr(value: number | bigint, shift: number | bigint): number;
|
|
51
60
|
export declare function uintShr(value: number | bigint, shift: number | bigint, bits?: number): number;
|
|
52
61
|
export declare function uint64Mul(left: number | bigint, right: number | bigint): number;
|
|
62
|
+
export declare function int64Mul(left: number | bigint, right: number | bigint): number;
|
|
63
|
+
export declare function uint64Div(left: number | bigint, right: number | bigint): number;
|
|
64
|
+
export declare function int64Div(left: number | bigint, right: number | bigint): number;
|
|
65
|
+
export declare function uint64Mod(left: number | bigint, right: number | bigint): number;
|
|
66
|
+
export declare function int64Mod(left: number | bigint, right: number | bigint): number;
|
|
53
67
|
export declare function uint64Add(left: number | bigint, right: number | bigint): number;
|
|
68
|
+
export declare function int64Add(left: number | bigint, right: number | bigint): number;
|
|
54
69
|
export declare function uint64Sub(left: number | bigint, right: number | bigint): number;
|
|
70
|
+
export declare function int64Sub(left: number | bigint, right: number | bigint): number;
|
|
55
71
|
export declare function uint64And(left: number | bigint, right: number | bigint): number;
|
|
72
|
+
export declare function int64And(left: number | bigint, right: number | bigint): number;
|
|
56
73
|
export declare function uint64Or(left: number | bigint, right: number | bigint): number;
|
|
74
|
+
export declare function int64Or(left: number | bigint, right: number | bigint): number;
|
|
57
75
|
export declare function uint64Xor(left: number | bigint, right: number | bigint): number;
|
|
76
|
+
export declare function int64Xor(left: number | bigint, right: number | bigint): number;
|
|
58
77
|
/**
|
|
59
78
|
* Normalizes various byte representations into a `Uint8Array` for protobuf compatibility.
|
|
60
79
|
*
|