goscript 0.1.4 → 0.2.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 +5 -2
- package/cmd/go_js_wasm_exec/main.go +201 -0
- package/cmd/go_js_wasm_exec/main_test.go +83 -0
- package/cmd/goscript/{cmd_compile.go → cmd-compile.go} +7 -0
- package/cmd/goscript/cmd-test.go +14 -0
- package/cmd/goscript/cmd-test_test.go +1 -1
- package/cmd/goscript-wasm/main.go +38 -6
- package/compiler/compile-request.go +12 -9
- package/compiler/compliance_test.go +0 -1
- package/compiler/config.go +2 -0
- package/compiler/diagnostic.go +104 -12
- package/compiler/diagnostic_test.go +106 -0
- package/compiler/gotest/request.go +28 -0
- package/compiler/gotest/runner.go +354 -44
- package/compiler/gotest/runner_test.go +293 -1
- package/compiler/gotest/testdata/browserapi/browserapi_test.go +20 -0
- package/compiler/gotest/testdata/browserapi/go.mod +3 -0
- package/compiler/index.test.ts +23 -0
- package/compiler/lowered-program.go +33 -24
- package/compiler/lowering.go +746 -194
- package/compiler/lowering_bench_test.go +42 -27
- package/compiler/lowering_internal_test.go +18 -0
- package/compiler/override-facts.go +15 -0
- package/compiler/override-parity-verifier.go +450 -0
- package/compiler/override-parity.go +122 -0
- package/compiler/override-registry_test.go +559 -0
- package/compiler/protobuf-ts-binding.go +567 -0
- package/compiler/protobuf-ts-binding_test.go +402 -0
- package/compiler/runtime-contract.go +4 -0
- package/compiler/runtime-contract_test.go +2 -0
- package/compiler/semantic-model-types.go +9 -4
- package/compiler/semantic-model.go +282 -70
- package/compiler/semantic-model_test.go +82 -1
- package/compiler/service.go +21 -1
- package/compiler/skeleton_test.go +118 -10
- package/compiler/typescript-emitter.go +128 -13
- package/compiler/wasm/compile_test.go +37 -4
- package/compiler/{wasm_api.go → wasm-api.go} +57 -7
- package/dist/gs/builtin/hostio.js +5 -0
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +13 -2
- package/dist/gs/builtin/slice.js +187 -6
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +13 -5
- package/dist/gs/builtin/type.js +153 -60
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +11 -0
- package/dist/gs/builtin/varRef.js +57 -2
- package/dist/gs/builtin/varRef.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.js +1 -1
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/reader.gs.js +1 -1
- package/dist/gs/bytes/reader.gs.js.map +1 -1
- package/dist/gs/compress/zlib/index.d.ts +10 -3
- package/dist/gs/compress/zlib/index.js +50 -16
- package/dist/gs/compress/zlib/index.js.map +1 -1
- package/dist/gs/encoding/json/index.d.ts +114 -0
- package/dist/gs/encoding/json/index.js +544 -36
- package/dist/gs/encoding/json/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +101 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +589 -0
- 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 +1 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +17 -11
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/errors.js +54 -30
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/go/scanner/index.d.ts +2 -0
- package/dist/gs/go/scanner/index.js +29 -5
- package/dist/gs/go/scanner/index.js.map +1 -1
- package/dist/gs/go/token/index.js +22 -6
- package/dist/gs/go/token/index.js.map +1 -1
- package/dist/gs/hash/index.d.ts +6 -0
- package/dist/gs/hash/index.js +20 -0
- package/dist/gs/hash/index.js.map +1 -1
- package/dist/gs/internal/byteorder/index.js +2 -2
- package/dist/gs/internal/byteorder/index.js.map +1 -1
- package/dist/gs/internal/goarch/index.d.ts +43 -3
- package/dist/gs/internal/goarch/index.js +42 -10
- package/dist/gs/internal/goarch/index.js.map +1 -1
- package/dist/gs/io/fs/fs.js +26 -14
- package/dist/gs/io/fs/fs.js.map +1 -1
- package/dist/gs/io/fs/readdir.js +4 -2
- package/dist/gs/io/fs/readdir.js.map +1 -1
- package/dist/gs/io/fs/sub.js +8 -1
- package/dist/gs/io/fs/sub.js.map +1 -1
- package/dist/gs/io/io.d.ts +2 -0
- package/dist/gs/io/io.js.map +1 -1
- package/dist/gs/math/bits/index.d.ts +5 -0
- package/dist/gs/math/bits/index.js +16 -4
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/mime/index.d.ts +16 -0
- package/dist/gs/mime/index.js +315 -6
- package/dist/gs/mime/index.js.map +1 -1
- package/dist/gs/net/http/httptest/index.d.ts +12 -0
- package/dist/gs/net/http/httptest/index.js +85 -6
- package/dist/gs/net/http/httptest/index.js.map +1 -1
- package/dist/gs/net/http/index.d.ts +300 -5
- package/dist/gs/net/http/index.js +1598 -58
- package/dist/gs/net/http/index.js.map +1 -1
- package/dist/gs/os/dir_unix.gs.js +1 -1
- package/dist/gs/os/dir_unix.gs.js.map +1 -1
- package/dist/gs/os/error.gs.js +1 -1
- package/dist/gs/os/error.gs.js.map +1 -1
- package/dist/gs/os/exec.gs.d.ts +1 -0
- package/dist/gs/os/exec.gs.js +4 -8
- package/dist/gs/os/exec.gs.js.map +1 -1
- package/dist/gs/os/exec_posix.gs.js +1 -1
- package/dist/gs/os/exec_posix.gs.js.map +1 -1
- package/dist/gs/os/index.d.ts +1 -1
- package/dist/gs/os/index.js +1 -1
- package/dist/gs/os/index.js.map +1 -1
- package/dist/gs/os/proc.gs.d.ts +4 -0
- package/dist/gs/os/proc.gs.js +12 -6
- package/dist/gs/os/proc.gs.js.map +1 -1
- package/dist/gs/os/root_js.gs.js +1 -1
- package/dist/gs/os/root_js.gs.js.map +1 -1
- package/dist/gs/os/types.gs.js +1 -1
- package/dist/gs/os/types.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js +1 -1
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/os/types_unix.gs.js +1 -1
- package/dist/gs/os/types_unix.gs.js.map +1 -1
- package/dist/gs/path/path.js +11 -7
- package/dist/gs/path/path.js.map +1 -1
- package/dist/gs/reflect/index.d.ts +5 -4
- package/dist/gs/reflect/index.js +4 -3
- package/dist/gs/reflect/index.js.map +1 -1
- package/dist/gs/reflect/map.js +15 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +25 -6
- package/dist/gs/reflect/type.js +1475 -228
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/types.d.ts +14 -6
- package/dist/gs/reflect/types.js +35 -1
- package/dist/gs/reflect/types.js.map +1 -1
- package/dist/gs/reflect/value.d.ts +1 -0
- package/dist/gs/reflect/value.js +83 -41
- package/dist/gs/reflect/value.js.map +1 -1
- package/dist/gs/reflect/visiblefields.js +4 -140
- package/dist/gs/reflect/visiblefields.js.map +1 -1
- package/dist/gs/runtime/pprof/index.d.ts +8 -2
- package/dist/gs/runtime/pprof/index.js +50 -30
- package/dist/gs/runtime/pprof/index.js.map +1 -1
- package/dist/gs/runtime/runtime.js +5 -4
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/runtime/trace/index.js +5 -19
- package/dist/gs/runtime/trace/index.js.map +1 -1
- package/dist/gs/strconv/atoi.gs.js +1 -1
- package/dist/gs/strconv/atoi.gs.js.map +1 -1
- package/dist/gs/strconv/complex.gs.d.ts +3 -0
- package/dist/gs/strconv/complex.gs.js +148 -0
- package/dist/gs/strconv/complex.gs.js.map +1 -0
- package/dist/gs/strconv/index.d.ts +1 -0
- package/dist/gs/strconv/index.js +1 -0
- package/dist/gs/strconv/index.js.map +1 -1
- package/dist/gs/strings/builder.js +1 -1
- package/dist/gs/strings/reader.js +9 -5
- package/dist/gs/strings/reader.js.map +1 -1
- package/dist/gs/strings/replace.js +15 -7
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/strings/strings.d.ts +5 -0
- package/dist/gs/strings/strings.js +57 -5
- package/dist/gs/strings/strings.js.map +1 -1
- package/dist/gs/sync/atomic/doc_64.gs.js +7 -6
- package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -1
- package/dist/gs/sync/atomic/type.gs.js +9 -9
- package/dist/gs/sync/atomic/type.gs.js.map +1 -1
- package/dist/gs/sync/atomic/value.gs.js +2 -2
- package/dist/gs/sync/atomic/value.gs.js.map +1 -1
- package/dist/gs/syscall/env.js +22 -14
- package/dist/gs/syscall/env.js.map +1 -1
- package/dist/gs/testing/testing.js +55 -13
- package/dist/gs/testing/testing.js.map +1 -1
- package/dist/gs/time/time.d.ts +24 -1
- package/dist/gs/time/time.js +43 -3
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unique/index.js +7 -1
- package/dist/gs/unique/index.js.map +1 -1
- package/go.mod +3 -3
- package/go.sum +16 -0
- package/gs/builtin/hostio.test.ts +16 -0
- package/gs/builtin/hostio.ts +7 -0
- package/gs/builtin/runtime-contract.test.ts +246 -21
- package/gs/builtin/slice.ts +269 -24
- package/gs/builtin/type.ts +226 -59
- package/gs/builtin/varRef.ts +85 -2
- package/gs/bytes/buffer.gs.ts +1 -1
- package/gs/bytes/reader.gs.ts +1 -1
- package/gs/compress/zlib/index.test.ts +62 -1
- package/gs/compress/zlib/index.ts +53 -16
- package/gs/compress/zlib/parity.json +51 -0
- package/gs/encoding/json/index.test.ts +360 -6
- package/gs/encoding/json/index.ts +679 -38
- package/gs/encoding/json/parity.json +81 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +373 -3
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +893 -1
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +18 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +17 -11
- package/gs/github.com/pkg/errors/errors.ts +54 -30
- package/gs/go/scanner/index.test.ts +39 -56
- package/gs/go/scanner/index.ts +33 -5
- package/gs/go/scanner/parity.json +27 -0
- package/gs/go/token/index.ts +22 -6
- package/gs/hash/index.test.ts +20 -33
- package/gs/hash/index.ts +28 -0
- package/gs/hash/parity.json +21 -0
- package/gs/internal/byteorder/index.test.ts +2 -2
- package/gs/internal/byteorder/index.ts +2 -2
- package/gs/internal/goarch/index.test.ts +32 -0
- package/gs/internal/goarch/index.ts +45 -13
- package/gs/internal/goarch/parity.json +144 -0
- package/gs/io/fs/fs.ts +26 -14
- package/gs/io/fs/readdir.ts +4 -4
- package/gs/io/fs/sub.ts +8 -1
- package/gs/io/io.ts +1 -0
- package/gs/io/parity.json +162 -0
- package/gs/math/bits/index.test.ts +14 -1
- package/gs/math/bits/index.ts +23 -4
- package/gs/math/bits/parity.json +156 -0
- package/gs/mime/index.test.ts +90 -0
- package/gs/mime/index.ts +369 -6
- package/gs/mime/parity.json +36 -0
- package/gs/net/http/httptest/index.test.ts +98 -2
- package/gs/net/http/httptest/index.ts +101 -6
- package/gs/net/http/httptest/parity.json +15 -0
- package/gs/net/http/index.test.ts +781 -12
- package/gs/net/http/index.ts +1860 -139
- package/gs/net/http/meta.json +16 -1
- package/gs/net/http/parity.json +193 -0
- package/gs/os/dir_unix.gs.ts +1 -1
- package/gs/os/error.gs.ts +1 -1
- package/gs/os/exec.gs.ts +4 -8
- package/gs/os/exec_posix.gs.ts +1 -1
- package/gs/os/index.test.ts +9 -0
- package/gs/os/index.ts +1 -0
- package/gs/os/parity.json +9 -0
- package/gs/os/proc.gs.ts +18 -5
- package/gs/os/proc.test.ts +26 -0
- package/gs/os/root_js.gs.ts +1 -1
- package/gs/os/types.gs.ts +1 -1
- package/gs/os/types_js.gs.ts +1 -1
- package/gs/os/types_unix.gs.ts +1 -1
- package/gs/path/path.ts +11 -7
- package/gs/reflect/field.test.ts +37 -15
- package/gs/reflect/function-types.test.ts +518 -22
- package/gs/reflect/index.ts +8 -6
- package/gs/reflect/map.ts +20 -0
- package/gs/reflect/meta.json +6 -4
- package/gs/reflect/parity.json +234 -0
- package/gs/reflect/sliceat.test.ts +156 -0
- package/gs/reflect/structof.test.ts +401 -0
- package/gs/reflect/type.ts +1961 -317
- package/gs/reflect/typefor.test.ts +530 -10
- package/gs/reflect/types.ts +43 -18
- package/gs/reflect/value.ts +105 -45
- package/gs/reflect/visiblefields.ts +5 -168
- package/gs/runtime/parity.json +24 -0
- package/gs/runtime/pprof/index.test.ts +29 -7
- package/gs/runtime/pprof/index.ts +56 -30
- package/gs/runtime/pprof/parity.json +27 -0
- package/gs/runtime/runtime.test.ts +3 -1
- package/gs/runtime/runtime.ts +4 -3
- package/gs/runtime/trace/index.test.ts +5 -3
- package/gs/runtime/trace/index.ts +8 -20
- package/gs/runtime/trace/parity.json +36 -0
- package/gs/strconv/atoi.gs.ts +1 -1
- package/gs/strconv/complex.gs.ts +174 -0
- package/gs/strconv/complex.test.ts +65 -0
- package/gs/strconv/index.ts +1 -0
- package/gs/strconv/parity.json +120 -0
- package/gs/strings/builder.ts +1 -1
- package/gs/strings/parity.json +186 -0
- package/gs/strings/reader.ts +9 -5
- package/gs/strings/replace.ts +15 -7
- package/gs/strings/strings.test.ts +22 -2
- package/gs/strings/strings.ts +64 -6
- package/gs/sync/atomic/doc_64.gs.ts +6 -7
- package/gs/sync/atomic/doc_64.test.ts +43 -0
- package/gs/sync/atomic/type.gs.ts +9 -9
- package/gs/sync/atomic/value.gs.ts +2 -2
- package/gs/syscall/env.ts +29 -14
- package/gs/testing/testing.test.ts +67 -0
- package/gs/testing/testing.ts +87 -19
- package/gs/time/parity.json +225 -0
- package/gs/time/time.test.ts +20 -2
- package/gs/time/time.ts +49 -7
- package/gs/unique/index.ts +7 -1
- package/package.json +4 -2
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +0 -217
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +0 -926
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +0 -1
- package/gs/github.com/aperturerobotics/starpc/srpc/index.test.ts +0 -38
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +0 -1361
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +0 -46
|
@@ -21,6 +21,67 @@ $.registerInterfaceType('protobuf_go_lite.CloneMessage', null, [
|
|
|
21
21
|
{ name: 'Reset', args: [], returns: [] },
|
|
22
22
|
{ name: 'CloneMessageVT', args: [], returns: [] },
|
|
23
23
|
]);
|
|
24
|
+
export function ClonePtr(v) {
|
|
25
|
+
const value = $.pointerValueOrNil(v);
|
|
26
|
+
return value == null ? null : $.varRef(value);
|
|
27
|
+
}
|
|
28
|
+
export function CloneBytes(v) {
|
|
29
|
+
if (v == null) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (v instanceof Uint8Array) {
|
|
33
|
+
return new Uint8Array(v);
|
|
34
|
+
}
|
|
35
|
+
return $.asArray(v).slice();
|
|
36
|
+
}
|
|
37
|
+
export function CloneSlice(s) {
|
|
38
|
+
if (s == null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (s instanceof Uint8Array) {
|
|
42
|
+
return new Uint8Array(s);
|
|
43
|
+
}
|
|
44
|
+
return $.asArray(s).slice();
|
|
45
|
+
}
|
|
46
|
+
export function CloneMap(m) {
|
|
47
|
+
return m == null ? null : new Map(m);
|
|
48
|
+
}
|
|
49
|
+
export function CloneBytesSlice(s) {
|
|
50
|
+
if (s == null) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return $.asArray(s).map((v) => CloneBytes(v));
|
|
54
|
+
}
|
|
55
|
+
export function CloneBytesMap(m) {
|
|
56
|
+
if (m == null) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const out = new Map();
|
|
60
|
+
for (const [k, v] of m.entries()) {
|
|
61
|
+
out.set(k, CloneBytes(v));
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
export function CloneVTValue(v) {
|
|
66
|
+
const value = $.pointerValueOrNil(v);
|
|
67
|
+
return value == null ? null : value.CloneVT();
|
|
68
|
+
}
|
|
69
|
+
export function CloneVTSlice(s) {
|
|
70
|
+
if (s == null) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return $.asArray(s).map((v) => CloneVTValue(v));
|
|
74
|
+
}
|
|
75
|
+
export function CloneVTMap(m) {
|
|
76
|
+
if (m == null) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const out = new Map();
|
|
80
|
+
for (const [k, v] of m.entries()) {
|
|
81
|
+
out.set(k, CloneVTValue(v));
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
24
85
|
export function CompareComparable() {
|
|
25
86
|
return (t1, t2) => t1 === t2;
|
|
26
87
|
}
|
|
@@ -46,6 +107,387 @@ export function IsEqualVTSlice(s1, s2) {
|
|
|
46
107
|
}
|
|
47
108
|
return true;
|
|
48
109
|
}
|
|
110
|
+
export function EqualPtr(a, b) {
|
|
111
|
+
const av = $.pointerValueOrNil(a);
|
|
112
|
+
const bv = $.pointerValueOrNil(b);
|
|
113
|
+
return ((av == null && bv == null) ||
|
|
114
|
+
(av != null && bv != null && $.comparableEqual(av, bv)));
|
|
115
|
+
}
|
|
116
|
+
export function EqualBytes(a, b) {
|
|
117
|
+
if ($.len(a) !== $.len(b)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const aa = $.asArray(a);
|
|
121
|
+
const bb = $.asArray(b);
|
|
122
|
+
for (let i = 0; i < aa.length; i++) {
|
|
123
|
+
if (aa[i] !== bb[i]) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
export function EqualBytesPresent(a, b) {
|
|
130
|
+
return ((a == null && b == null) || (a != null && b != null && EqualBytes(a, b)));
|
|
131
|
+
}
|
|
132
|
+
export function EqualSlice(a, b) {
|
|
133
|
+
if ($.len(a) !== $.len(b)) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
const aa = $.asArray(a);
|
|
137
|
+
const bb = $.asArray(b);
|
|
138
|
+
for (let i = 0; i < aa.length; i++) {
|
|
139
|
+
if (!$.comparableEqual(aa[i], bb[i])) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
export function EqualMap(a, b) {
|
|
146
|
+
if ($.len(a) !== $.len(b)) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
for (const [k, av] of (a ?? new Map()).entries()) {
|
|
150
|
+
const [bv, ok] = $.mapGet(b, k, undefined);
|
|
151
|
+
if (!ok || !$.comparableEqual(av, bv)) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
export function EqualBytesSlice(a, b) {
|
|
158
|
+
if ($.len(a) !== $.len(b)) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
const aa = $.asArray(a);
|
|
162
|
+
const bb = $.asArray(b);
|
|
163
|
+
for (let i = 0; i < aa.length; i++) {
|
|
164
|
+
if (!EqualBytes(aa[i], bb[i])) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
export function EqualBytesMap(a, b) {
|
|
171
|
+
if ($.len(a) !== $.len(b)) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
for (const [k, av] of (a ?? new Map()).entries()) {
|
|
175
|
+
const [bv, ok] = $.mapGet(b, k, null);
|
|
176
|
+
if (!ok || !EqualBytes(av, bv)) {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
export function EqualVTImplicit(a, b, empty) {
|
|
183
|
+
let av = $.pointerValueOrNil(a);
|
|
184
|
+
let bv = $.pointerValueOrNil(b);
|
|
185
|
+
if (av === bv) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
if (av == null) {
|
|
189
|
+
av = empty();
|
|
190
|
+
}
|
|
191
|
+
if (bv == null) {
|
|
192
|
+
bv = empty();
|
|
193
|
+
}
|
|
194
|
+
return av.EqualVT(bv);
|
|
195
|
+
}
|
|
196
|
+
export function EqualVTSliceImplicit(a, b, empty) {
|
|
197
|
+
if ($.len(a) !== $.len(b)) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
const aa = $.asArray(a);
|
|
201
|
+
const bb = $.asArray(b);
|
|
202
|
+
for (let i = 0; i < aa.length; i++) {
|
|
203
|
+
if (!EqualVTImplicit(aa[i], bb[i], empty)) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
export function EqualVTMapImplicit(a, b, empty) {
|
|
210
|
+
if ($.len(a) !== $.len(b)) {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
for (const [k, av] of (a ?? new Map()).entries()) {
|
|
214
|
+
const [bv, ok] = $.mapGet(b, k, null);
|
|
215
|
+
if (!ok || !EqualVTImplicit(av, bv, empty)) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
const protobufScalarTypeBytes = 12;
|
|
222
|
+
function boundMessageType(ctor) {
|
|
223
|
+
const messageType = ctor.__protobufTypeScriptMessage;
|
|
224
|
+
if (messageType == null) {
|
|
225
|
+
throw new Error('protobuf TypeScript binding is missing message type');
|
|
226
|
+
}
|
|
227
|
+
return messageType;
|
|
228
|
+
}
|
|
229
|
+
function resolveBoundMessageType(value) {
|
|
230
|
+
return typeof value === 'function' ? value() : value;
|
|
231
|
+
}
|
|
232
|
+
function boundFieldGoName(field) {
|
|
233
|
+
if (field.localName.length === 0) {
|
|
234
|
+
return field.localName;
|
|
235
|
+
}
|
|
236
|
+
return field.localName[0].toUpperCase() + field.localName.slice(1);
|
|
237
|
+
}
|
|
238
|
+
function boundFieldValue(source, field) {
|
|
239
|
+
if (source == null) {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
const local = source[field.localName];
|
|
243
|
+
if (local !== undefined) {
|
|
244
|
+
return local;
|
|
245
|
+
}
|
|
246
|
+
return source[boundFieldGoName(field)];
|
|
247
|
+
}
|
|
248
|
+
function toTypeScriptScalarValue(value, field) {
|
|
249
|
+
const unwrapped = $.pointerValueOrNil(value);
|
|
250
|
+
if (field?.kind === 'scalar' &&
|
|
251
|
+
field.T === protobufScalarTypeBytes &&
|
|
252
|
+
unwrapped != null &&
|
|
253
|
+
!(unwrapped instanceof Uint8Array)) {
|
|
254
|
+
return Uint8Array.from($.asArray(unwrapped));
|
|
255
|
+
}
|
|
256
|
+
if (unwrapped instanceof Uint8Array) {
|
|
257
|
+
return unwrapped;
|
|
258
|
+
}
|
|
259
|
+
return unwrapped;
|
|
260
|
+
}
|
|
261
|
+
function toTypeScriptFieldValue(field, value, ctor) {
|
|
262
|
+
value = $.pointerValueOrNil(value);
|
|
263
|
+
if (value == null) {
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
if (field.repeated) {
|
|
267
|
+
return $.asArray(value).map((item) => toTypeScriptFieldValue({ ...field, repeated: false }, item, ctor));
|
|
268
|
+
}
|
|
269
|
+
if (field.kind === 'map') {
|
|
270
|
+
const out = {};
|
|
271
|
+
const valueInfo = field.V;
|
|
272
|
+
const entries = value instanceof Map ? Array.from(value.entries()) : Object.entries(value);
|
|
273
|
+
for (const [key, item] of entries) {
|
|
274
|
+
out[String(key)] =
|
|
275
|
+
valueInfo != null ?
|
|
276
|
+
toTypeScriptFieldValue(valueInfo, item, ctor)
|
|
277
|
+
: toTypeScriptScalarValue(item);
|
|
278
|
+
}
|
|
279
|
+
return out;
|
|
280
|
+
}
|
|
281
|
+
if (field.kind === 'message') {
|
|
282
|
+
const messageType = resolveBoundMessageType(field.T);
|
|
283
|
+
return toTypeScriptMessage(value, messageType, ctor);
|
|
284
|
+
}
|
|
285
|
+
return toTypeScriptScalarValue(value, field);
|
|
286
|
+
}
|
|
287
|
+
function toTypeScriptMessage(value, messageType, ctor) {
|
|
288
|
+
value = $.pointerValueOrNil(value);
|
|
289
|
+
if (value == null) {
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
const fields = messageType.fields?.list();
|
|
293
|
+
if (fields == null) {
|
|
294
|
+
return value;
|
|
295
|
+
}
|
|
296
|
+
const fieldCtors = ctor?.__protobufTypeScriptFields ?? {};
|
|
297
|
+
const out = {};
|
|
298
|
+
for (const field of fields) {
|
|
299
|
+
if (field.oneof != null) {
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
const raw = boundFieldValue(value, field);
|
|
303
|
+
if (raw === undefined || raw === null) {
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
out[field.localName] = toTypeScriptFieldValue(field, raw, fieldCtors[field.localName]);
|
|
307
|
+
}
|
|
308
|
+
return out;
|
|
309
|
+
}
|
|
310
|
+
function fromTypeScriptScalarValue(value) {
|
|
311
|
+
if (value instanceof Uint8Array) {
|
|
312
|
+
return value;
|
|
313
|
+
}
|
|
314
|
+
return value;
|
|
315
|
+
}
|
|
316
|
+
function fromTypeScriptFieldValue(field, value, ctor) {
|
|
317
|
+
if (value == null) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
if (field.repeated) {
|
|
321
|
+
return $.arrayToSlice(value.map((item) => fromTypeScriptFieldValue({ ...field, repeated: false }, item, ctor)));
|
|
322
|
+
}
|
|
323
|
+
if (field.kind === 'map') {
|
|
324
|
+
const valueInfo = field.V;
|
|
325
|
+
const out = new Map();
|
|
326
|
+
for (const [key, item] of Object.entries(value)) {
|
|
327
|
+
out.set(key, valueInfo != null ?
|
|
328
|
+
fromTypeScriptFieldValue(valueInfo, item, ctor)
|
|
329
|
+
: fromTypeScriptScalarValue(item));
|
|
330
|
+
}
|
|
331
|
+
return out;
|
|
332
|
+
}
|
|
333
|
+
if (field.kind === 'message') {
|
|
334
|
+
const messageType = resolveBoundMessageType(field.T);
|
|
335
|
+
if (ctor == null) {
|
|
336
|
+
return value;
|
|
337
|
+
}
|
|
338
|
+
return fromTypeScriptMessage(value, ctor, messageType);
|
|
339
|
+
}
|
|
340
|
+
return fromTypeScriptScalarValue(value);
|
|
341
|
+
}
|
|
342
|
+
function fromTypeScriptWellKnownMessage(value, ctor, messageType) {
|
|
343
|
+
if (messageType?.typeName === 'google.protobuf.Timestamp' &&
|
|
344
|
+
value instanceof Date) {
|
|
345
|
+
const ms = value.getTime();
|
|
346
|
+
const seconds = Math.floor(ms / 1000);
|
|
347
|
+
const nanos = Math.trunc((ms - seconds * 1000) * 1000000);
|
|
348
|
+
return new ctor({ Seconds: seconds, Nanos: nanos });
|
|
349
|
+
}
|
|
350
|
+
return undefined;
|
|
351
|
+
}
|
|
352
|
+
function fromTypeScriptMessage(value, ctor, messageType) {
|
|
353
|
+
if (value == null) {
|
|
354
|
+
return null;
|
|
355
|
+
}
|
|
356
|
+
const wellKnown = fromTypeScriptWellKnownMessage(value, ctor, messageType);
|
|
357
|
+
if (wellKnown !== undefined) {
|
|
358
|
+
return wellKnown;
|
|
359
|
+
}
|
|
360
|
+
const out = new ctor();
|
|
361
|
+
const fields = (messageType ?? boundMessageType(ctor)).fields?.list();
|
|
362
|
+
if (fields == null) {
|
|
363
|
+
return Object.assign(out, value);
|
|
364
|
+
}
|
|
365
|
+
const fieldCtors = ctor.__protobufTypeScriptFields ?? {};
|
|
366
|
+
for (const field of fields) {
|
|
367
|
+
if (field.oneof != null) {
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
const raw = value[field.localName];
|
|
371
|
+
if (raw === undefined || raw === null) {
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
out[boundFieldGoName(field)] = fromTypeScriptFieldValue(field, raw, fieldCtors[field.localName]);
|
|
375
|
+
}
|
|
376
|
+
return out;
|
|
377
|
+
}
|
|
378
|
+
export function CloneBoundMessage(ctor, value) {
|
|
379
|
+
const messageType = boundMessageType(ctor);
|
|
380
|
+
const encoded = toTypeScriptMessage(value, messageType, ctor);
|
|
381
|
+
const cloned = messageType.clone?.(encoded) ?? structuredClone(encoded);
|
|
382
|
+
return fromTypeScriptMessage(cloned, ctor, messageType);
|
|
383
|
+
}
|
|
384
|
+
export function EqualBoundMessage(ctor, a, b) {
|
|
385
|
+
const messageType = boundMessageType(ctor);
|
|
386
|
+
const left = toTypeScriptMessage(a, messageType, ctor);
|
|
387
|
+
const right = toTypeScriptMessage(b, messageType, ctor);
|
|
388
|
+
return (messageType.equals?.(left, right) ??
|
|
389
|
+
JSON.stringify(left) === JSON.stringify(right));
|
|
390
|
+
}
|
|
391
|
+
export function MarshalBoundMessageVT(ctor, value) {
|
|
392
|
+
let typeName = ctor.name;
|
|
393
|
+
try {
|
|
394
|
+
const messageType = boundMessageType(ctor);
|
|
395
|
+
typeName = messageType.typeName ?? typeName;
|
|
396
|
+
return [
|
|
397
|
+
messageType.toBinary(toTypeScriptMessage(value, messageType, ctor)),
|
|
398
|
+
null,
|
|
399
|
+
];
|
|
400
|
+
}
|
|
401
|
+
catch (err) {
|
|
402
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
403
|
+
return [null, $.toGoError(new Error(`marshal ${typeName}: ${msg}`))];
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
export function MarshalBoundMessageToSizedBufferVT(ctor, value, dAtA) {
|
|
407
|
+
const [bytes, err] = MarshalBoundMessageVT(ctor, value);
|
|
408
|
+
if (err != null) {
|
|
409
|
+
return [0, err];
|
|
410
|
+
}
|
|
411
|
+
const byteCount = $.len(bytes);
|
|
412
|
+
const offset = $.len(dAtA) - byteCount;
|
|
413
|
+
const src = $.asArray(bytes);
|
|
414
|
+
for (let i = 0; i < src.length; i++) {
|
|
415
|
+
;
|
|
416
|
+
dAtA[offset + i] = src[i];
|
|
417
|
+
}
|
|
418
|
+
return [byteCount, null];
|
|
419
|
+
}
|
|
420
|
+
export function SizeBoundMessageVT(ctor, value) {
|
|
421
|
+
const [bytes, err] = MarshalBoundMessageVT(ctor, value);
|
|
422
|
+
return err == null ? $.len(bytes) : 0;
|
|
423
|
+
}
|
|
424
|
+
export function UnmarshalBoundMessageVT(ctor, target, data) {
|
|
425
|
+
try {
|
|
426
|
+
const messageType = boundMessageType(ctor);
|
|
427
|
+
const decoded = messageType.fromBinary(Uint8Array.from($.asArray(data)));
|
|
428
|
+
const next = fromTypeScriptMessage(decoded, ctor, messageType);
|
|
429
|
+
$.assignStruct($.pointerValue(target), $.markAsStructValue(next));
|
|
430
|
+
return null;
|
|
431
|
+
}
|
|
432
|
+
catch (err) {
|
|
433
|
+
return $.toGoError(err);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
export function MarshalBoundMessageJSON(ctor, value) {
|
|
437
|
+
try {
|
|
438
|
+
const messageType = boundMessageType(ctor);
|
|
439
|
+
const encoded = toTypeScriptMessage(value, messageType, ctor);
|
|
440
|
+
const json = messageType.toJsonString?.(encoded) ??
|
|
441
|
+
JSON.stringify(messageType.toJson?.(encoded) ?? encoded);
|
|
442
|
+
return [$.stringToBytes(json), null];
|
|
443
|
+
}
|
|
444
|
+
catch (err) {
|
|
445
|
+
return [null, $.toGoError(err)];
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
export function UnmarshalBoundMessageJSON(ctor, target, data) {
|
|
449
|
+
try {
|
|
450
|
+
const messageType = boundMessageType(ctor);
|
|
451
|
+
const text = $.bytesToString(data);
|
|
452
|
+
const decoded = messageType.fromJsonString?.(text) ??
|
|
453
|
+
messageType.fromJson?.(JSON.parse(text));
|
|
454
|
+
const next = fromTypeScriptMessage(decoded, ctor, messageType);
|
|
455
|
+
$.assignStruct($.pointerValue(target), $.markAsStructValue(next));
|
|
456
|
+
return null;
|
|
457
|
+
}
|
|
458
|
+
catch (err) {
|
|
459
|
+
return $.toGoError(err);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
export function MarshalBoundMessageProtoJSON(ctor, value, state) {
|
|
463
|
+
if (state == null) {
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
const [data, err] = MarshalBoundMessageJSON(ctor, value);
|
|
467
|
+
if (err != null) {
|
|
468
|
+
state.SetError(err);
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
state.Write(data);
|
|
472
|
+
}
|
|
473
|
+
export function UnmarshalBoundMessageProtoJSON(ctor, target, state) {
|
|
474
|
+
if (state == null) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
try {
|
|
478
|
+
const messageType = boundMessageType(ctor);
|
|
479
|
+
const decoded = messageType.fromJson?.(state.value);
|
|
480
|
+
const next = fromTypeScriptMessage(decoded, ctor, messageType);
|
|
481
|
+
$.assignStruct($.pointerValue(target), $.markAsStructValue(next));
|
|
482
|
+
}
|
|
483
|
+
catch (err) {
|
|
484
|
+
state.SetError($.toGoError(err));
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
export function MarshalBoundMessageProtoText(ctor, value) {
|
|
488
|
+
const [data, err] = MarshalBoundMessageJSON(ctor, value);
|
|
489
|
+
return err == null ? $.bytesToString(data) : err.Error();
|
|
490
|
+
}
|
|
49
491
|
export function EncodeVarint(dAtA, offset, v) {
|
|
50
492
|
offset -= SizeOfVarint(v);
|
|
51
493
|
const base = offset;
|
|
@@ -96,6 +538,153 @@ export function SizeOfVarint(x) {
|
|
|
96
538
|
}
|
|
97
539
|
return n;
|
|
98
540
|
}
|
|
541
|
+
export function SizeOfZigzag(x) {
|
|
542
|
+
const value = typeof x === 'bigint' ?
|
|
543
|
+
BigInt.asIntN(64, x)
|
|
544
|
+
: BigInt.asIntN(64, BigInt(Math.trunc(x)));
|
|
545
|
+
return SizeOfVarint(BigInt.asUintN(64, (value << 1n) ^ (value >> 63n)));
|
|
546
|
+
}
|
|
547
|
+
export function SizeVarintValue(keySize, v) {
|
|
548
|
+
return keySize + SizeOfVarint(v);
|
|
549
|
+
}
|
|
550
|
+
export function SizeVarintNonZero(keySize, v) {
|
|
551
|
+
return normalizedVarint(v) === 0n ? 0 : SizeVarintValue(keySize, v);
|
|
552
|
+
}
|
|
553
|
+
export function SizeVarintPtr(keySize, v) {
|
|
554
|
+
const value = $.pointerValueOrNil(v);
|
|
555
|
+
return value == null ? 0 : SizeVarintValue(keySize, value);
|
|
556
|
+
}
|
|
557
|
+
export function SizeVarintSlice(keySize, vals) {
|
|
558
|
+
let n = 0;
|
|
559
|
+
for (const v of vals ?? []) {
|
|
560
|
+
n += SizeVarintValue(keySize, v);
|
|
561
|
+
}
|
|
562
|
+
return n;
|
|
563
|
+
}
|
|
564
|
+
export function SizeVarintPacked(keySize, vals) {
|
|
565
|
+
if ($.len(vals) === 0) {
|
|
566
|
+
return 0;
|
|
567
|
+
}
|
|
568
|
+
let l = 0;
|
|
569
|
+
for (const v of vals ?? []) {
|
|
570
|
+
l += SizeOfVarint(v);
|
|
571
|
+
}
|
|
572
|
+
return SizeBytesValue(keySize, l);
|
|
573
|
+
}
|
|
574
|
+
export function SizeZigzagValue(keySize, v) {
|
|
575
|
+
return keySize + SizeOfZigzag(v);
|
|
576
|
+
}
|
|
577
|
+
export function SizeZigzagNonZero(keySize, v) {
|
|
578
|
+
return BigInt.asIntN(64, normalizedVarint(v)) === 0n ?
|
|
579
|
+
0
|
|
580
|
+
: SizeZigzagValue(keySize, v);
|
|
581
|
+
}
|
|
582
|
+
export function SizeZigzagPtr(keySize, v) {
|
|
583
|
+
const value = $.pointerValueOrNil(v);
|
|
584
|
+
return value == null ? 0 : SizeZigzagValue(keySize, value);
|
|
585
|
+
}
|
|
586
|
+
export function SizeZigzagSlice(keySize, vals) {
|
|
587
|
+
let n = 0;
|
|
588
|
+
for (const v of vals ?? []) {
|
|
589
|
+
n += SizeZigzagValue(keySize, v);
|
|
590
|
+
}
|
|
591
|
+
return n;
|
|
592
|
+
}
|
|
593
|
+
export function SizeZigzagPacked(keySize, vals) {
|
|
594
|
+
if ($.len(vals) === 0) {
|
|
595
|
+
return 0;
|
|
596
|
+
}
|
|
597
|
+
let l = 0;
|
|
598
|
+
for (const v of vals ?? []) {
|
|
599
|
+
l += SizeOfZigzag(v);
|
|
600
|
+
}
|
|
601
|
+
return SizeBytesValue(keySize, l);
|
|
602
|
+
}
|
|
603
|
+
export function SizeFixed32Value(keySize) {
|
|
604
|
+
return keySize + 4;
|
|
605
|
+
}
|
|
606
|
+
export function SizeFixed32NonZero(keySize, v) {
|
|
607
|
+
return v === 0 ? 0 : SizeFixed32Value(keySize);
|
|
608
|
+
}
|
|
609
|
+
export function SizeFixed32Ptr(keySize, v) {
|
|
610
|
+
return $.pointerValueOrNil(v) == null ? 0 : SizeFixed32Value(keySize);
|
|
611
|
+
}
|
|
612
|
+
export function SizeFixed32Slice(keySize, vals) {
|
|
613
|
+
return $.len(vals) * SizeFixed32Value(keySize);
|
|
614
|
+
}
|
|
615
|
+
export function SizeFixed32Packed(keySize, vals) {
|
|
616
|
+
return $.len(vals) === 0 ? 0 : SizeBytesValue(keySize, $.len(vals) * 4);
|
|
617
|
+
}
|
|
618
|
+
export function SizeFixed64Value(keySize) {
|
|
619
|
+
return keySize + 8;
|
|
620
|
+
}
|
|
621
|
+
export function SizeFixed64NonZero(keySize, v) {
|
|
622
|
+
return v === 0 || v === 0n ? 0 : SizeFixed64Value(keySize);
|
|
623
|
+
}
|
|
624
|
+
export function SizeFixed64Ptr(keySize, v) {
|
|
625
|
+
return $.pointerValueOrNil(v) == null ? 0 : SizeFixed64Value(keySize);
|
|
626
|
+
}
|
|
627
|
+
export function SizeFixed64Slice(keySize, vals) {
|
|
628
|
+
return $.len(vals) * SizeFixed64Value(keySize);
|
|
629
|
+
}
|
|
630
|
+
export function SizeFixed64Packed(keySize, vals) {
|
|
631
|
+
return $.len(vals) === 0 ? 0 : SizeBytesValue(keySize, $.len(vals) * 8);
|
|
632
|
+
}
|
|
633
|
+
export function SizeBoolValue(keySize) {
|
|
634
|
+
return keySize + 1;
|
|
635
|
+
}
|
|
636
|
+
export function SizeBoolNonZero(keySize, v) {
|
|
637
|
+
return v ? SizeBoolValue(keySize) : 0;
|
|
638
|
+
}
|
|
639
|
+
export function SizeBoolPtr(keySize, v) {
|
|
640
|
+
return $.pointerValueOrNil(v) == null ? 0 : SizeBoolValue(keySize);
|
|
641
|
+
}
|
|
642
|
+
export function SizeBoolSlice(keySize, vals) {
|
|
643
|
+
return $.len(vals) * SizeBoolValue(keySize);
|
|
644
|
+
}
|
|
645
|
+
export function SizeBoolPacked(keySize, vals) {
|
|
646
|
+
return $.len(vals) === 0 ? 0 : SizeBytesValue(keySize, $.len(vals));
|
|
647
|
+
}
|
|
648
|
+
export function SizeStringValue(keySize, v) {
|
|
649
|
+
const l = $.len(v);
|
|
650
|
+
return keySize + l + SizeOfVarint(l);
|
|
651
|
+
}
|
|
652
|
+
export function SizeStringNonEmpty(keySize, v) {
|
|
653
|
+
return $.len(v) === 0 ? 0 : SizeStringValue(keySize, v);
|
|
654
|
+
}
|
|
655
|
+
export function SizeStringPtr(keySize, v) {
|
|
656
|
+
const value = $.pointerValueOrNil(v);
|
|
657
|
+
return value == null ? 0 : SizeStringValue(keySize, value);
|
|
658
|
+
}
|
|
659
|
+
export function SizeStringSlice(keySize, vals) {
|
|
660
|
+
let n = 0;
|
|
661
|
+
for (const v of vals ?? []) {
|
|
662
|
+
n += SizeStringValue(keySize, v);
|
|
663
|
+
}
|
|
664
|
+
return n;
|
|
665
|
+
}
|
|
666
|
+
export function SizeBytesValue(keySize, l) {
|
|
667
|
+
return keySize + l + SizeOfVarint(l);
|
|
668
|
+
}
|
|
669
|
+
export function SizeBytesNonEmpty(keySize, v) {
|
|
670
|
+
return $.len(v) === 0 ? 0 : SizeBytesValue(keySize, $.len(v));
|
|
671
|
+
}
|
|
672
|
+
export function SizeBytesPresent(keySize, v) {
|
|
673
|
+
return v == null ? 0 : SizeBytesValue(keySize, $.len(v));
|
|
674
|
+
}
|
|
675
|
+
export function SizeBytesSlice(keySize, vals) {
|
|
676
|
+
let n = 0;
|
|
677
|
+
for (const v of vals ?? []) {
|
|
678
|
+
n += SizeBytesValue(keySize, $.len(v));
|
|
679
|
+
}
|
|
680
|
+
return n;
|
|
681
|
+
}
|
|
682
|
+
export function SizeMessage(keySize, msgSize) {
|
|
683
|
+
return SizeBytesValue(keySize, msgSize);
|
|
684
|
+
}
|
|
685
|
+
export function SizeGroup(keySize, msgSize) {
|
|
686
|
+
return msgSize + 2 * keySize;
|
|
687
|
+
}
|
|
99
688
|
function normalizedVarint(value) {
|
|
100
689
|
if (typeof value === 'bigint') {
|
|
101
690
|
return BigInt.asUintN(64, value);
|