goscript 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/compiler/gotest/runner.go +98 -0
  2. package/compiler/gotest/runner_test.go +45 -0
  3. package/compiler/lowering.go +4 -2
  4. package/compiler/protobuf-ts-binding.go +1 -1
  5. package/compiler/protobuf-ts-binding_test.go +109 -0
  6. package/compiler/skeleton_test.go +4 -1
  7. package/dist/gs/builtin/hostio.js +2 -2
  8. package/dist/gs/builtin/hostio.js.map +1 -1
  9. package/dist/gs/crypto/aes/index.d.ts +15 -0
  10. package/dist/gs/crypto/aes/index.js +57 -0
  11. package/dist/gs/crypto/aes/index.js.map +1 -0
  12. package/dist/gs/crypto/cipher/index.d.ts +41 -0
  13. package/dist/gs/crypto/cipher/index.js +255 -0
  14. package/dist/gs/crypto/cipher/index.js.map +1 -0
  15. package/dist/gs/golang.org/x/crypto/chacha20poly1305/index.d.ts +31 -0
  16. package/dist/gs/golang.org/x/crypto/chacha20poly1305/index.js +117 -0
  17. package/dist/gs/golang.org/x/crypto/chacha20poly1305/index.js.map +1 -0
  18. package/dist/gs/io/io.js +18 -2
  19. package/dist/gs/io/io.js.map +1 -1
  20. package/dist/gs/runtime/debug/index.js +2 -1
  21. package/dist/gs/runtime/debug/index.js.map +1 -1
  22. package/go.mod +2 -2
  23. package/go.sum +2 -0
  24. package/gs/builtin/hostio.test.ts +8 -3
  25. package/gs/builtin/hostio.ts +2 -4
  26. package/gs/crypto/aes/index.test.ts +120 -0
  27. package/gs/crypto/aes/index.ts +76 -0
  28. package/gs/crypto/cipher/index.ts +345 -0
  29. package/gs/crypto/cipher/meta.json +6 -0
  30. package/gs/golang.org/x/crypto/chacha20poly1305/index.test.ts +91 -0
  31. package/gs/golang.org/x/crypto/chacha20poly1305/index.ts +245 -0
  32. package/gs/io/io.test.ts +56 -1
  33. package/gs/io/io.ts +19 -2
  34. package/gs/runtime/debug/index.test.ts +32 -4
  35. package/gs/runtime/debug/index.ts +5 -2
  36. package/package.json +10 -3
@@ -141,6 +141,10 @@ func (r *Runner) runPackageTools(
141
141
  if len(indexes) == 0 {
142
142
  return
143
143
  }
144
+ if phase := materializeRuntimeModuleShims(req, outputRoots); phase.Failed() {
145
+ markRuntimeFailures(result, indexes, OwnerTestRunner, phase.Error)
146
+ return
147
+ }
144
148
  if len(indexes) == 1 {
145
149
  r.runPackageTypeCheckAndRuntime(ctx, req, workspace, result, outputRoots, indexes[0])
146
150
  return
@@ -286,6 +290,100 @@ func (r *Runner) runPackageRuntimes(
286
290
  r.runPackageRuntimesIndividually(ctx, req, workspace, result, outputRoots, indexes)
287
291
  }
288
292
 
293
+ func materializeRuntimeModuleShims(req *normalizedRequest, outputRoots []string) tsworkspace.Result {
294
+ if req.RuntimeBackend != RuntimeBackendBun {
295
+ return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace}
296
+ }
297
+ seen := make(map[string]bool)
298
+ shimRoots := runtimeModuleShimRoots(req, outputRoots)
299
+ for _, outputRoot := range outputRoots {
300
+ if outputRoot == "" {
301
+ continue
302
+ }
303
+ root := filepath.Join(outputRoot, "@goscript")
304
+ if _, err := os.Stat(root); err != nil {
305
+ if os.IsNotExist(err) {
306
+ continue
307
+ }
308
+ return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace, Error: errors.Wrap(err, "stat GoScript runtime output root").Error()}
309
+ }
310
+ err := filepath.WalkDir(root, func(path string, entry os.DirEntry, err error) error {
311
+ if err != nil {
312
+ return err
313
+ }
314
+ if entry.IsDir() || filepath.Ext(path) != ".ts" {
315
+ return nil
316
+ }
317
+ rel, err := filepath.Rel(root, path)
318
+ if err != nil {
319
+ return err
320
+ }
321
+ shimRel := filepath.Join("node_modules", "@goscript", strings.TrimSuffix(rel, ".ts")+".js")
322
+ for _, shimRoot := range shimRoots {
323
+ shimPath := filepath.Join(shimRoot, shimRel)
324
+ seenKey := shimPath
325
+ if seen[seenKey] {
326
+ continue
327
+ }
328
+ seen[seenKey] = true
329
+ shimDir := filepath.Dir(shimPath)
330
+ importPath, err := filepath.Rel(shimDir, path)
331
+ if err != nil {
332
+ return err
333
+ }
334
+ importPath = filepath.ToSlash(importPath)
335
+ if !strings.HasPrefix(importPath, ".") {
336
+ importPath = "./" + importPath
337
+ }
338
+ if err := writeRuntimeModuleShim(shimPath, "export * from "+strconv.Quote(importPath)+"\n"); err != nil {
339
+ return err
340
+ }
341
+ }
342
+ return nil
343
+ })
344
+ if err != nil {
345
+ return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace, Error: errors.Wrap(err, "materialize GoScript runtime module shims").Error()}
346
+ }
347
+ }
348
+ return tsworkspace.Result{Phase: tsworkspace.PhaseWorkspace}
349
+ }
350
+
351
+ func runtimeModuleShimRoots(req *normalizedRequest, outputRoots []string) []string {
352
+ seen := make(map[string]bool)
353
+ var roots []string
354
+ for _, root := range append([]string{req.WorkDir}, outputRoots...) {
355
+ if root == "" {
356
+ continue
357
+ }
358
+ clean := filepath.Clean(root)
359
+ if seen[clean] {
360
+ continue
361
+ }
362
+ seen[clean] = true
363
+ roots = append(roots, clean)
364
+ }
365
+ return roots
366
+ }
367
+
368
+ func writeRuntimeModuleShim(path string, data string) error {
369
+ if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
370
+ return err
371
+ }
372
+ return os.WriteFile(path, []byte(data), 0o644)
373
+ }
374
+
375
+ func markRuntimeFailures(result *Result, indexes []int, owner Owner, message string) {
376
+ for _, idx := range indexes {
377
+ if idx < 0 || idx >= len(result.Packages) {
378
+ continue
379
+ }
380
+ result.Packages[idx].Action = ActionFail
381
+ result.Packages[idx].Owner = owner
382
+ result.Packages[idx].Phases.Runtime = PhaseStatusFail
383
+ result.Packages[idx].Error = message
384
+ }
385
+ }
386
+
289
387
  func (r *Runner) runPackageRuntimesIndividually(
290
388
  ctx context.Context,
291
389
  req *normalizedRequest,
@@ -1629,6 +1629,51 @@ func TestRenderRuntimeTypeScriptProjectDisablesEmit(t *testing.T) {
1629
1629
  }
1630
1630
  }
1631
1631
 
1632
+ func TestMaterializeRuntimeModuleShimsReexportsGeneratedTypeScript(t *testing.T) {
1633
+ workDir := t.TempDir()
1634
+ outputRoot := filepath.Join(workDir, "output")
1635
+ for _, name := range []string{
1636
+ "errors/index.ts",
1637
+ "github.com/s4wave/spacewave/core/plugin/space/config.gs.ts",
1638
+ } {
1639
+ path := filepath.Join(outputRoot, "@goscript", filepath.FromSlash(name))
1640
+ if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
1641
+ t.Fatalf("create output parent: %v", err)
1642
+ }
1643
+ if err := os.WriteFile(path, []byte("export const value = 1\n"), 0o644); err != nil {
1644
+ t.Fatalf("write output file: %v", err)
1645
+ }
1646
+ }
1647
+
1648
+ req := &normalizedRequest{
1649
+ WorkDir: workDir,
1650
+ RuntimeBackend: RuntimeBackendBun,
1651
+ }
1652
+ phase := materializeRuntimeModuleShims(req, []string{outputRoot})
1653
+ if phase.Failed() {
1654
+ t.Fatalf("materialize shims: %s", phase.Error)
1655
+ }
1656
+ for _, root := range []string{workDir, outputRoot} {
1657
+ for _, name := range []string{
1658
+ "errors/index.js",
1659
+ "github.com/s4wave/spacewave/core/plugin/space/config.gs.js",
1660
+ } {
1661
+ path := filepath.Join(root, "node_modules", "@goscript", filepath.FromSlash(name))
1662
+ data, err := os.ReadFile(path)
1663
+ if err != nil {
1664
+ t.Fatalf("read shim %s: %v", name, err)
1665
+ }
1666
+ text := string(data)
1667
+ if !strings.Contains(text, ".ts\"") {
1668
+ t.Fatalf("shim should re-export generated TypeScript: %s", text)
1669
+ }
1670
+ if strings.Contains(text, workDir) {
1671
+ t.Fatalf("shim should use a portable relative import, got: %s", text)
1672
+ }
1673
+ }
1674
+ }
1675
+ }
1676
+
1632
1677
  func TestRenderTypeScriptProjectsCanUseIncrementalBuildInfo(t *testing.T) {
1633
1678
  req := &normalizedRequest{
1634
1679
  WorkDir: "/work",
@@ -4554,6 +4554,8 @@ func shortDeclNeedsTypeAnnotation(typ types.Type) bool {
4554
4554
  return true
4555
4555
  case *types.Slice:
4556
4556
  return true
4557
+ case *types.Chan:
4558
+ return true
4557
4559
  default:
4558
4560
  return false
4559
4561
  }
@@ -8688,7 +8690,7 @@ func (o *LoweringOwner) lowerPointerValueExpr(ctx lowerFileContext, expr ast.Exp
8688
8690
  return value, diagnostics
8689
8691
  }
8690
8692
  if ref, diagnostics, ok := o.lowerUnsafeArrayPointerRefExpr(ctx, expr); ok {
8691
- return ref + ".value", diagnostics
8693
+ return ref + "!.value", diagnostics
8692
8694
  }
8693
8695
  if ref, diagnostics, ok := o.lowerUnsafePointerRefExpr(ctx, expr); ok {
8694
8696
  return ref + ".value", diagnostics
@@ -8925,7 +8927,7 @@ func sameLoweredSourceExpr(ctx lowerFileContext, left ast.Expr, right ast.Expr)
8925
8927
 
8926
8928
  func (o *LoweringOwner) lowerPointerStorageExpr(ctx lowerFileContext, expr ast.Expr) (string, []Diagnostic) {
8927
8929
  if ref, diagnostics, ok := o.lowerUnsafeArrayPointerRefExpr(ctx, expr); ok {
8928
- return ref + ".value", diagnostics
8930
+ return ref + "!.value", diagnostics
8929
8931
  }
8930
8932
  if ref, diagnostics, ok := o.lowerUnsafePointerRefExpr(ctx, expr); ok {
8931
8933
  return ref + ".value", diagnostics
@@ -194,7 +194,7 @@ func protobufTypeScriptBindingExportedConsts(tsPath string) map[string]bool {
194
194
  return nil
195
195
  }
196
196
  exports := make(map[string]bool)
197
- for _, line := range strings.Split(string(data), "\n") {
197
+ for line := range strings.SplitSeq(string(data), "\n") {
198
198
  line = strings.TrimSpace(line)
199
199
  if !strings.HasPrefix(line, "export const ") {
200
200
  continue
@@ -80,6 +80,115 @@ func NewFoo() Foo {
80
80
  }
81
81
  }
82
82
 
83
+ func TestProtobufTypeScriptBindingRewritesGeneratedMethodsToBoundHelpers(t *testing.T) {
84
+ dir := t.TempDir()
85
+ writeTestFile(t, dir, "go.mod", `module example.test/protobufbindingmethods
86
+
87
+ go 1.25
88
+
89
+ require github.com/aperturerobotics/protobuf-go-lite v0.0.0
90
+
91
+ replace github.com/aperturerobotics/protobuf-go-lite => ./protobuf-go-lite
92
+ `)
93
+ writeTestFile(t, dir, "protobuf-go-lite/go.mod", `module github.com/aperturerobotics/protobuf-go-lite
94
+
95
+ go 1.25
96
+ `)
97
+ writeTestFile(t, dir, "protobuf-go-lite/protobuf-go-lite.go", `package protobuf_go_lite
98
+
99
+ type CloneMessage interface {
100
+ CloneMessageVT() CloneMessage
101
+ }
102
+ `)
103
+ writeTestFile(t, dir, "foo.pb.go", `package protobufbindingmethods
104
+
105
+ import protobuf_go_lite "github.com/aperturerobotics/protobuf-go-lite"
106
+
107
+ type Foo struct {
108
+ Name string
109
+ }
110
+
111
+ func (x *Foo) CloneMessageVT() protobuf_go_lite.CloneMessage {
112
+ println("inline CloneMessageVT marker")
113
+ return x.CloneVT()
114
+ }
115
+
116
+ func (x *Foo) CloneVT() *Foo {
117
+ println("inline CloneVT marker")
118
+ return &Foo{Name: x.Name}
119
+ }
120
+
121
+ func (x *Foo) EqualVT(other *Foo) bool {
122
+ println("inline EqualVT marker")
123
+ return other != nil && x.Name == other.Name
124
+ }
125
+
126
+ func (x *Foo) MarshalVT() ([]byte, error) {
127
+ println("inline MarshalVT marker")
128
+ return []byte(x.Name), nil
129
+ }
130
+
131
+ func (x *Foo) MarshalToSizedBufferVT(data []byte) (int, error) {
132
+ println("inline MarshalToSizedBufferVT marker")
133
+ return copy(data, x.Name), nil
134
+ }
135
+
136
+ func (x *Foo) SizeVT() int {
137
+ println("inline SizeVT marker")
138
+ return len(x.Name)
139
+ }
140
+
141
+ func (x *Foo) UnmarshalVT(data []byte) error {
142
+ println("inline UnmarshalVT marker")
143
+ x.Name = string(data)
144
+ return nil
145
+ }
146
+
147
+ func (x *Foo) Reset() {
148
+ println("inline Reset marker")
149
+ *x = Foo{}
150
+ }
151
+ `)
152
+ writeTestFile(t, dir, "foo.pb.ts", `export interface Foo {
153
+ name?: string
154
+ }
155
+ export const Foo = {} as any
156
+ `)
157
+
158
+ out := filepath.Join(dir, "out")
159
+ comp, err := NewCompiler(&Config{
160
+ Dir: dir,
161
+ OutputPath: out,
162
+ ProtobufTypeScriptBinding: true,
163
+ }, nil, nil)
164
+ if err != nil {
165
+ t.Fatal(err)
166
+ }
167
+ if _, err := comp.CompilePackages(context.Background(), "."); err != nil {
168
+ t.Fatalf("compile with protobuf TypeScript binding: %v", err)
169
+ }
170
+
171
+ binding := readTestFile(t, filepath.Join(out, "@goscript", "example.test", "protobufbindingmethods", "foo.pb.ts"))
172
+ wantSnippets := []string{
173
+ `$.interfaceValue<protobuf_go_lite.CloneMessage | null>(protobuf_go_lite.CloneBoundMessage(Foo, this) as any, "*protobufbindingmethods.Foo")`,
174
+ `return protobuf_go_lite.CloneBoundMessage(Foo, this) as any`,
175
+ `protobuf_go_lite.EqualBoundMessage(Foo, this, other)`,
176
+ `protobuf_go_lite.MarshalBoundMessageVT(Foo, this)`,
177
+ `protobuf_go_lite.MarshalBoundMessageToSizedBufferVT(Foo, this, data)`,
178
+ `protobuf_go_lite.SizeBoundMessageVT(Foo, this)`,
179
+ `protobuf_go_lite.UnmarshalBoundMessageVT(Foo, this, data)`,
180
+ `$.assignStruct($.pointerValue<Foo>(this), $.markAsStructValue(new Foo()))`,
181
+ }
182
+ for _, snippet := range wantSnippets {
183
+ if !strings.Contains(binding, snippet) {
184
+ t.Fatalf("binding file should rewrite generated methods through %q, got:\n%s", snippet, binding)
185
+ }
186
+ }
187
+ if strings.Contains(binding, "inline ") {
188
+ t.Fatalf("binding file should not preserve inline generated method bodies, got:\n%s", binding)
189
+ }
190
+ }
191
+
83
192
  func TestProtobufTypeScriptBindingEmitsMetadataForPreservedOneofFiles(t *testing.T) {
84
193
  dir := t.TempDir()
85
194
  writeTestFile(t, dir, "go.mod", "module example.test/oneofpb\n\ngo 1.25\n")
@@ -1541,6 +1541,9 @@ func TestCompilePackagesLowersUnsafeBytePointerArithmetic(t *testing.T) {
1541
1541
  if !strings.Contains(text, "$.arrayPointerFromIndexRef<number>($.indexRef($.pointerValue<number[]>(words), 0), 64, 4, 1)") {
1542
1542
  t.Fatalf("missing byte-view array pointer conversion:\n%s", text)
1543
1543
  }
1544
+ if !strings.Contains(text, "($.arrayPointerFromIndexRef<number>($.indexRef(dst!, 0), 64, 1, 1) as unknown as $.VarRef<Uint8Array> | null)!.value =") {
1545
+ t.Fatalf("missing non-null byte-view array pointer storage:\n%s", text)
1546
+ }
1544
1547
  }
1545
1548
 
1546
1549
  func TestCompilePackagesEmitsStructMethodsAndPointerAssertions(t *testing.T) {
@@ -3436,7 +3439,7 @@ func TestCompilePackagesEmitsAsyncChannelsSelectAndDefer(t *testing.T) {
3436
3439
  for _, want := range []string{
3437
3440
  "Process(v: number): number | globalThis.Promise<number>",
3438
3441
  "public async Process(v: number): globalThis.Promise<number>",
3439
- "let ch = $.makeChannel<number>(1, 0, \"both\")",
3442
+ "let ch: $.Channel<number> | null = $.makeChannel<number>(1, 0, \"both\")",
3440
3443
  "await $.chanSend($.pointerValue<Worker>(w).ch, v)",
3441
3444
  "return await $.chanRecv($.pointerValue<Worker>(w).ch)",
3442
3445
  "await using __defer = new $.AsyncDisposableStack()",
@@ -204,7 +204,7 @@ function detectHostRuntime() {
204
204
  return writeAllSync((chunk) => nodeFS.writeSync(fd, chunk, 0, chunk.length, null), buffer);
205
205
  }
206
206
  if (fd === 1 || fd === 2) {
207
- fallbackConsoleWriter(fd === 2 ? 'error' : 'log')(decoder.decode(buffer));
207
+ fallbackConsoleWriter('log')(decoder.decode(buffer));
208
208
  return buffer.length;
209
209
  }
210
210
  throw new HostUnsupportedError();
@@ -231,7 +231,7 @@ function detectHostRuntime() {
231
231
  writeAllText((chunk) => nodeFS.writeSync(2, chunk, 0, chunk.length, null), data);
232
232
  return;
233
233
  }
234
- fallbackConsoleWriter('error')(data);
234
+ fallbackConsoleWriter('log')(data);
235
235
  };
236
236
  return {
237
237
  deno,
@@ -1 +1 @@
1
- {"version":3,"file":"hostio.js","sourceRoot":"","sources":["../../../gs/builtin/hostio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hostio.js","sourceRoot":"","sources":["../../../gs/builtin/hostio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import type * as cipher from '@goscript/crypto/cipher/index.js';
3
+ export declare const BlockSize = 16;
4
+ export type KeySizeError = number;
5
+ export declare class AESBlock implements cipher.Block {
6
+ private readonly key;
7
+ private keyPromise;
8
+ constructor(key: Uint8Array);
9
+ BlockSize(): number;
10
+ Encrypt(dst: $.Bytes, src: $.Bytes): void;
11
+ Decrypt(dst: $.Bytes, src: $.Bytes): void;
12
+ webCryptoKey(): Promise<CryptoKey>;
13
+ }
14
+ export declare function KeySizeError_Error(k: KeySizeError): string;
15
+ export declare function NewCipher(key: $.Bytes): [cipher.Block | null, $.GoError];
@@ -0,0 +1,57 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import { ecb } from '@noble/ciphers/aes.js';
3
+ export const BlockSize = 16;
4
+ export class AESBlock {
5
+ key;
6
+ keyPromise = null;
7
+ constructor(key) {
8
+ this.key = key;
9
+ }
10
+ BlockSize() {
11
+ return BlockSize;
12
+ }
13
+ Encrypt(dst, src) {
14
+ const srcBytes = $.bytesToUint8Array(src);
15
+ if (srcBytes.length < BlockSize) {
16
+ $.panic('crypto/aes: input not full block');
17
+ }
18
+ if ($.len(dst) < BlockSize) {
19
+ $.panic('crypto/aes: output not full block');
20
+ }
21
+ const out = ecb(this.key, { disablePadding: true }).encrypt(srcBytes.subarray(0, BlockSize));
22
+ $.copy(dst, out);
23
+ }
24
+ Decrypt(dst, src) {
25
+ const srcBytes = $.bytesToUint8Array(src);
26
+ if (srcBytes.length < BlockSize) {
27
+ $.panic('crypto/aes: input not full block');
28
+ }
29
+ if ($.len(dst) < BlockSize) {
30
+ $.panic('crypto/aes: output not full block');
31
+ }
32
+ const out = ecb(this.key, { disablePadding: true }).decrypt(srcBytes.subarray(0, BlockSize));
33
+ $.copy(dst, out);
34
+ }
35
+ async webCryptoKey() {
36
+ this.keyPromise ??= subtleCrypto().importKey('raw', this.key, 'AES-GCM', false, ['encrypt', 'decrypt']);
37
+ return this.keyPromise;
38
+ }
39
+ }
40
+ export function KeySizeError_Error(k) {
41
+ return `crypto/aes: invalid key size ${k}`;
42
+ }
43
+ export function NewCipher(key) {
44
+ const k = $.len(key);
45
+ if (k !== 16 && k !== 24 && k !== 32) {
46
+ return [null, $.newError(KeySizeError_Error(k))];
47
+ }
48
+ return [new AESBlock($.bytesToUint8Array(key).slice()), null];
49
+ }
50
+ function subtleCrypto() {
51
+ const subtle = globalThis.crypto?.subtle;
52
+ if (subtle == null) {
53
+ throw new Error('crypto/aes: WebCrypto AES-GCM is unavailable');
54
+ }
55
+ return subtle;
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/crypto/aes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ export type Block = {
3
+ BlockSize(): number;
4
+ Decrypt(dst: $.Bytes, src: $.Bytes): void;
5
+ Encrypt(dst: $.Bytes, src: $.Bytes): void;
6
+ };
7
+ export type AEAD = {
8
+ NonceSize(): number;
9
+ Open(dst: $.Bytes, nonce: $.Bytes, ciphertext: $.Bytes, additionalData: $.Bytes): [$.Bytes, $.GoError] | Promise<[$.Bytes, $.GoError]>;
10
+ Overhead(): number;
11
+ Seal(dst: $.Bytes, nonce: $.Bytes, plaintext: $.Bytes, additionalData: $.Bytes): $.Bytes | Promise<$.Bytes>;
12
+ };
13
+ export type Stream = {
14
+ XORKeyStream(dst: $.Bytes, src: $.Bytes): void;
15
+ };
16
+ export type BlockMode = {
17
+ BlockSize(): number;
18
+ CryptBlocks(dst: $.Bytes, src: $.Bytes): void;
19
+ };
20
+ export declare function NewGCM(block: Block | null): [AEAD | null, $.GoError];
21
+ export declare function NewGCMWithNonceSize(block: Block | null, size: number): [AEAD | null, $.GoError];
22
+ export declare function NewGCMWithTagSize(block: Block | null, tagSize: number): [AEAD | null, $.GoError];
23
+ export declare function NewGCMWithRandomNonce(_block: Block | null): [AEAD | null, $.GoError];
24
+ export declare function NewCBCDecrypter(_b: Block | null, _iv: $.Bytes): BlockMode;
25
+ export declare function NewCBCEncrypter(_b: Block | null, _iv: $.Bytes): BlockMode;
26
+ export declare function NewCFBDecrypter(_b: Block | null, _iv: $.Bytes): Stream;
27
+ export declare function NewCFBEncrypter(_b: Block | null, _iv: $.Bytes): Stream;
28
+ export declare function NewCTR(_b: Block | null, _iv: $.Bytes): Stream;
29
+ export declare function NewOFB(_b: Block | null, _iv: $.Bytes): Stream;
30
+ export declare class StreamReader {
31
+ constructor(_init?: Partial<{
32
+ S: Stream;
33
+ R: unknown;
34
+ }>);
35
+ }
36
+ export declare class StreamWriter {
37
+ constructor(_init?: Partial<{
38
+ S: Stream;
39
+ W: unknown;
40
+ }>);
41
+ }