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
|
@@ -190,18 +190,27 @@ export class MarshalState {
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
public Sub(js: JsonStream | null): MarshalState | null {
|
|
193
|
-
return new MarshalState({
|
|
193
|
+
return new MarshalState({
|
|
194
|
+
config: this.configValue,
|
|
195
|
+
stream: js ?? new JsonStream(),
|
|
196
|
+
})
|
|
194
197
|
}
|
|
195
198
|
|
|
196
199
|
public WithField(field: string): MarshalState | null {
|
|
197
|
-
const next = new MarshalState({
|
|
200
|
+
const next = new MarshalState({
|
|
201
|
+
config: this.configValue,
|
|
202
|
+
stream: this.stream,
|
|
203
|
+
})
|
|
198
204
|
next.fields = new Set(this.fields)
|
|
199
205
|
next.fields.add(field)
|
|
200
206
|
return next
|
|
201
207
|
}
|
|
202
208
|
|
|
203
209
|
public WithFieldMask(...paths: string[]): MarshalState | null {
|
|
204
|
-
const next = new MarshalState({
|
|
210
|
+
const next = new MarshalState({
|
|
211
|
+
config: this.configValue,
|
|
212
|
+
stream: this.stream,
|
|
213
|
+
})
|
|
205
214
|
next.fields = new Set([...this.fields, ...paths])
|
|
206
215
|
return next
|
|
207
216
|
}
|
|
@@ -238,7 +247,10 @@ export class MarshalState {
|
|
|
238
247
|
this.WriteString(`${x}s`)
|
|
239
248
|
}
|
|
240
249
|
|
|
241
|
-
public WriteEnum(
|
|
250
|
+
public WriteEnum(
|
|
251
|
+
x: number,
|
|
252
|
+
...valueMaps: Array<Map<number, string> | Record<number, string> | null>
|
|
253
|
+
): void {
|
|
242
254
|
if (this.configValue.EnumsAsInts) {
|
|
243
255
|
this.WriteEnumNumber(x)
|
|
244
256
|
return
|
|
@@ -250,7 +262,10 @@ export class MarshalState {
|
|
|
250
262
|
this.WriteInt32(x)
|
|
251
263
|
}
|
|
252
264
|
|
|
253
|
-
public WriteEnumString(
|
|
265
|
+
public WriteEnumString(
|
|
266
|
+
x: number,
|
|
267
|
+
...valueMaps: Array<Map<number, string> | Record<number, string> | null>
|
|
268
|
+
): void {
|
|
254
269
|
const value = enumStringValue(x, valueMaps)
|
|
255
270
|
if (value == null) {
|
|
256
271
|
this.WriteEnumNumber(x)
|
|
@@ -382,7 +397,10 @@ export class MarshalState {
|
|
|
382
397
|
this.writeArray(vs, (v) => this.WriteUint64(v))
|
|
383
398
|
}
|
|
384
399
|
|
|
385
|
-
private writeArray<T>(
|
|
400
|
+
private writeArray<T>(
|
|
401
|
+
values: $.Slice<T>,
|
|
402
|
+
writeValue: (value: T) => void,
|
|
403
|
+
): void {
|
|
386
404
|
this.WriteArrayStart()
|
|
387
405
|
let wrote = false
|
|
388
406
|
for (const value of sliceValues(values)) {
|
|
@@ -406,13 +424,15 @@ export class UnmarshalState {
|
|
|
406
424
|
private objectEntries: Array<[string, unknown]> | null = null
|
|
407
425
|
private objectIndex = 0
|
|
408
426
|
|
|
409
|
-
constructor(
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
427
|
+
constructor(
|
|
428
|
+
init?: Partial<{
|
|
429
|
+
config: UnmarshalerConfig
|
|
430
|
+
value: unknown
|
|
431
|
+
root: UnmarshalState
|
|
432
|
+
fieldMaskPaths: Set<string>
|
|
433
|
+
path: string[]
|
|
434
|
+
}>,
|
|
435
|
+
) {
|
|
416
436
|
this.configValue = init?.config?.clone() ?? DefaultUnmarshalerConfig.clone()
|
|
417
437
|
this.value = init?.value ?? null
|
|
418
438
|
this.root = init?.root ?? this
|
|
@@ -488,7 +508,9 @@ export class UnmarshalState {
|
|
|
488
508
|
return $.varRef(numberFromJSON(this.value))
|
|
489
509
|
}
|
|
490
510
|
|
|
491
|
-
public ReadEnum(
|
|
511
|
+
public ReadEnum(
|
|
512
|
+
...valueMaps: Array<Map<string, number> | Record<string, number> | null>
|
|
513
|
+
): number {
|
|
492
514
|
if (typeof this.value === 'number') {
|
|
493
515
|
return Math.trunc(this.value)
|
|
494
516
|
}
|
|
@@ -505,11 +527,12 @@ export class UnmarshalState {
|
|
|
505
527
|
}
|
|
506
528
|
|
|
507
529
|
public ReadFieldMask(): FieldMask | null {
|
|
508
|
-
const paths =
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
530
|
+
const paths =
|
|
531
|
+
typeof this.value === 'string' ?
|
|
532
|
+
this.value.split(',').filter((part) => part !== '')
|
|
533
|
+
: Array.isArray(recordValue(this.value)?.paths) ?
|
|
534
|
+
sliceValues(recordValue(this.value)?.paths as $.Slice<string>)
|
|
535
|
+
: []
|
|
513
536
|
return { GetPaths: () => $.arrayToSlice(paths) }
|
|
514
537
|
}
|
|
515
538
|
|
|
@@ -671,15 +694,33 @@ export class UnmarshalState {
|
|
|
671
694
|
})
|
|
672
695
|
}
|
|
673
696
|
|
|
674
|
-
public ReadWrappedBool(): boolean {
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
public
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
public
|
|
681
|
-
|
|
682
|
-
|
|
697
|
+
public ReadWrappedBool(): boolean {
|
|
698
|
+
return this.readWrapped(() => this.ReadBool())
|
|
699
|
+
}
|
|
700
|
+
public ReadWrappedBytes(): $.Slice<number> {
|
|
701
|
+
return this.readWrapped(() => this.ReadBytes())
|
|
702
|
+
}
|
|
703
|
+
public ReadWrappedFloat32(): number {
|
|
704
|
+
return this.readWrapped(() => this.ReadFloat32())
|
|
705
|
+
}
|
|
706
|
+
public ReadWrappedFloat64(): number {
|
|
707
|
+
return this.readWrapped(() => this.ReadFloat64())
|
|
708
|
+
}
|
|
709
|
+
public ReadWrappedInt32(): number {
|
|
710
|
+
return this.readWrapped(() => this.ReadInt32())
|
|
711
|
+
}
|
|
712
|
+
public ReadWrappedInt64(): number {
|
|
713
|
+
return this.readWrapped(() => this.ReadInt64())
|
|
714
|
+
}
|
|
715
|
+
public ReadWrappedString(): string {
|
|
716
|
+
return this.readWrapped(() => this.ReadString())
|
|
717
|
+
}
|
|
718
|
+
public ReadWrappedUint32(): number {
|
|
719
|
+
return this.readWrapped(() => this.ReadUint32())
|
|
720
|
+
}
|
|
721
|
+
public ReadWrappedUint64(): number {
|
|
722
|
+
return this.readWrapped(() => this.ReadUint64())
|
|
723
|
+
}
|
|
683
724
|
|
|
684
725
|
public SetError(err: $.GoError): void {
|
|
685
726
|
this.root.err = err
|
|
@@ -726,7 +767,10 @@ export class UnmarshalState {
|
|
|
726
767
|
return 0
|
|
727
768
|
}
|
|
728
769
|
|
|
729
|
-
public WithField(
|
|
770
|
+
public WithField(
|
|
771
|
+
_field: string,
|
|
772
|
+
_mask: boolean = true,
|
|
773
|
+
): UnmarshalState | null {
|
|
730
774
|
return new UnmarshalState({
|
|
731
775
|
config: this.configValue,
|
|
732
776
|
value: this.value,
|
|
@@ -772,7 +816,10 @@ export class UnmarshalState {
|
|
|
772
816
|
}
|
|
773
817
|
const keys = Object.keys(record)
|
|
774
818
|
if (keys.length !== 1) {
|
|
775
|
-
this.SetErrorf(
|
|
819
|
+
this.SetErrorf(
|
|
820
|
+
'unexpected %q field in wrapped value',
|
|
821
|
+
keys.find((key) => key !== 'value') ?? '',
|
|
822
|
+
)
|
|
776
823
|
return read()
|
|
777
824
|
}
|
|
778
825
|
const original = this.value
|
|
@@ -787,13 +834,22 @@ export function NewJsonStream(wr: unknown): JsonStream | null {
|
|
|
787
834
|
return new JsonStream(wr)
|
|
788
835
|
}
|
|
789
836
|
|
|
790
|
-
export function NewMarshalState(
|
|
837
|
+
export function NewMarshalState(
|
|
838
|
+
config: MarshalerConfig,
|
|
839
|
+
stream: JsonStream | null,
|
|
840
|
+
): MarshalState | null {
|
|
791
841
|
return new MarshalState({ config, stream: stream ?? new JsonStream() })
|
|
792
842
|
}
|
|
793
843
|
|
|
794
|
-
export function NewUnmarshalState(
|
|
844
|
+
export function NewUnmarshalState(
|
|
845
|
+
data: $.Slice<number>,
|
|
846
|
+
config: UnmarshalerConfig,
|
|
847
|
+
): UnmarshalState | null {
|
|
795
848
|
try {
|
|
796
|
-
return new UnmarshalState({
|
|
849
|
+
return new UnmarshalState({
|
|
850
|
+
config,
|
|
851
|
+
value: JSON.parse(bytesToString(data)),
|
|
852
|
+
})
|
|
797
853
|
} catch (err) {
|
|
798
854
|
const state = new UnmarshalState({ config })
|
|
799
855
|
state.SetError($.newError(err instanceof Error ? err.message : String(err)))
|
|
@@ -801,11 +857,16 @@ export function NewUnmarshalState(data: $.Slice<number>, config: UnmarshalerConf
|
|
|
801
857
|
}
|
|
802
858
|
}
|
|
803
859
|
|
|
804
|
-
export function Marshal(
|
|
860
|
+
export function Marshal(
|
|
861
|
+
c: MarshalerConfig,
|
|
862
|
+
m: Marshaler | null,
|
|
863
|
+
): [$.Slice<number>, $.GoError] {
|
|
805
864
|
return c.Marshal(m)
|
|
806
865
|
}
|
|
807
866
|
|
|
808
|
-
export function MarshalMap<
|
|
867
|
+
export function MarshalMap<
|
|
868
|
+
M extends Map<string, Marshaler> | Record<string, Marshaler>,
|
|
869
|
+
>(
|
|
809
870
|
_typeArgs: $.GenericTypeArgs | undefined,
|
|
810
871
|
c: MarshalerConfig,
|
|
811
872
|
mm: M,
|
|
@@ -824,7 +885,9 @@ export function MarshalMap<M extends Map<string, Marshaler> | Record<string, Mar
|
|
|
824
885
|
value?.MarshalProtoJSON(state)
|
|
825
886
|
})
|
|
826
887
|
state.WriteObjectEnd()
|
|
827
|
-
return state.Err() == null ?
|
|
888
|
+
return state.Err() == null ?
|
|
889
|
+
[stringToBytes(stream.String()), null]
|
|
890
|
+
: [null, state.Err()]
|
|
828
891
|
}
|
|
829
892
|
|
|
830
893
|
export function MarshalSlice<S extends $.Slice<Marshaler>>(
|
|
@@ -842,14 +905,22 @@ export function MarshalSlice<S extends $.Slice<Marshaler>>(
|
|
|
842
905
|
value?.MarshalProtoJSON(state)
|
|
843
906
|
})
|
|
844
907
|
state.WriteArrayEnd()
|
|
845
|
-
return state.Err() == null ?
|
|
908
|
+
return state.Err() == null ?
|
|
909
|
+
[stringToBytes(stream.String()), null]
|
|
910
|
+
: [null, state.Err()]
|
|
846
911
|
}
|
|
847
912
|
|
|
848
|
-
export function GetEnumString(
|
|
913
|
+
export function GetEnumString(
|
|
914
|
+
x: number,
|
|
915
|
+
...valueMaps: Array<Map<number, string> | Record<number, string> | null>
|
|
916
|
+
): string {
|
|
849
917
|
return enumStringValue(x, valueMaps) ?? String(x)
|
|
850
918
|
}
|
|
851
919
|
|
|
852
|
-
export function ParseEnumString(
|
|
920
|
+
export function ParseEnumString(
|
|
921
|
+
v: string,
|
|
922
|
+
...valueMaps: Array<Map<string, number> | Record<string, number> | null>
|
|
923
|
+
): [number, $.GoError] {
|
|
853
924
|
for (const valueMap of valueMaps) {
|
|
854
925
|
const value = lookupStringMap(valueMap, v)
|
|
855
926
|
if (value !== undefined) {
|
|
@@ -857,10 +928,14 @@ export function ParseEnumString(v: string, ...valueMaps: Array<Map<string, numbe
|
|
|
857
928
|
}
|
|
858
929
|
}
|
|
859
930
|
const parsed = Number(v)
|
|
860
|
-
return Number.isFinite(parsed) ?
|
|
931
|
+
return Number.isFinite(parsed) ?
|
|
932
|
+
[parsed, null]
|
|
933
|
+
: [0, $.newError(`invalid enum ${v}`)]
|
|
861
934
|
}
|
|
862
935
|
|
|
863
|
-
function sliceValues<T>(
|
|
936
|
+
function sliceValues<T>(
|
|
937
|
+
values: $.Slice<T> | readonly T[] | null | undefined,
|
|
938
|
+
): T[] {
|
|
864
939
|
return Array.from((values ?? []) as Iterable<T>)
|
|
865
940
|
}
|
|
866
941
|
|
|
@@ -953,7 +1028,10 @@ function enumStringValue(
|
|
|
953
1028
|
return null
|
|
954
1029
|
}
|
|
955
1030
|
|
|
956
|
-
function lookupStringMap(
|
|
1031
|
+
function lookupStringMap(
|
|
1032
|
+
valueMap: Map<string, number> | Record<string, number> | null,
|
|
1033
|
+
key: string,
|
|
1034
|
+
): number | undefined {
|
|
957
1035
|
if (valueMap == null) {
|
|
958
1036
|
return undefined
|
|
959
1037
|
}
|
|
@@ -964,7 +1042,8 @@ function formatError(format: string, args: unknown[]): string {
|
|
|
964
1042
|
return format.replace(/%[vqsd]/g, () => String(args.shift()))
|
|
965
1043
|
}
|
|
966
1044
|
|
|
967
|
-
const base64Alphabet =
|
|
1045
|
+
const base64Alphabet =
|
|
1046
|
+
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
|
968
1047
|
|
|
969
1048
|
function base64Encode(bytes: $.Slice<number>): string {
|
|
970
1049
|
const data = sliceValues(bytes)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
|
|
3
|
+
import * as context from '@goscript/context/index.js'
|
|
4
|
+
|
|
5
|
+
import { MuxedConn, NewWebSocketConn } from './index.js'
|
|
6
|
+
|
|
7
|
+
describe('starpc/srpc override', () => {
|
|
8
|
+
it('wraps websocket connections with the same outbound direction as Go', () => {
|
|
9
|
+
const conn = { Close: () => null }
|
|
10
|
+
|
|
11
|
+
const [serverConn, serverErr] = NewWebSocketConn(
|
|
12
|
+
context.Background(),
|
|
13
|
+
conn,
|
|
14
|
+
true,
|
|
15
|
+
null,
|
|
16
|
+
)
|
|
17
|
+
const [clientConn, clientErr] = NewWebSocketConn(
|
|
18
|
+
context.Background(),
|
|
19
|
+
conn,
|
|
20
|
+
false,
|
|
21
|
+
null,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
expect(serverErr).toBeNull()
|
|
25
|
+
expect(clientErr).toBeNull()
|
|
26
|
+
expect(serverConn).toBeInstanceOf(MuxedConn)
|
|
27
|
+
expect(clientConn).toBeInstanceOf(MuxedConn)
|
|
28
|
+
expect(serverConn?.outbound).toBe(false)
|
|
29
|
+
expect(clientConn?.outbound).toBe(true)
|
|
30
|
+
})
|
|
31
|
+
})
|