goscript 0.1.3 → 0.1.4

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 (117) hide show
  1. package/cmd/goscript/cmd_compile.go +28 -8
  2. package/cmd/goscript/cmd_compile_test.go +105 -6
  3. package/compiler/build-flags.go +9 -10
  4. package/compiler/gotest/runner_test.go +127 -0
  5. package/compiler/lowering.go +596 -136
  6. package/compiler/lowering_bench_test.go +350 -0
  7. package/compiler/package-graph.go +61 -4
  8. package/compiler/package-graph_test.go +30 -0
  9. package/compiler/semantic-model-types.go +8 -0
  10. package/compiler/semantic-model.go +447 -22
  11. package/compiler/semantic-model_test.go +138 -0
  12. package/compiler/skeleton_test.go +948 -14
  13. package/compiler/typescript-emitter.go +19 -2
  14. package/dist/gs/builtin/builtin.d.ts +2 -2
  15. package/dist/gs/builtin/builtin.js +20 -0
  16. package/dist/gs/builtin/builtin.js.map +1 -1
  17. package/dist/gs/builtin/slice.js +5 -0
  18. package/dist/gs/builtin/slice.js.map +1 -1
  19. package/dist/gs/builtin/type.d.ts +1 -1
  20. package/dist/gs/builtin/type.js +72 -5
  21. package/dist/gs/builtin/type.js.map +1 -1
  22. package/dist/gs/compress/zlib/index.d.ts +3 -3
  23. package/dist/gs/compress/zlib/index.js +88 -26
  24. package/dist/gs/compress/zlib/index.js.map +1 -1
  25. package/dist/gs/crypto/sha1/index.js +2 -5
  26. package/dist/gs/crypto/sha1/index.js.map +1 -1
  27. package/dist/gs/crypto/sha256/index.js +2 -5
  28. package/dist/gs/crypto/sha256/index.js.map +1 -1
  29. package/dist/gs/crypto/sha512/index.js +2 -5
  30. package/dist/gs/crypto/sha512/index.js.map +1 -1
  31. package/dist/gs/embed/index.d.ts +6 -0
  32. package/dist/gs/embed/index.js +210 -5
  33. package/dist/gs/embed/index.js.map +1 -1
  34. package/dist/gs/fmt/fmt.d.ts +3 -3
  35. package/dist/gs/fmt/fmt.js +29 -16
  36. package/dist/gs/fmt/fmt.js.map +1 -1
  37. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +118 -6
  38. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -1
  39. package/dist/gs/github.com/go-git/go-billy/v6/osfs/index.d.ts +45 -0
  40. package/dist/gs/github.com/go-git/go-billy/v6/osfs/index.js +229 -0
  41. package/dist/gs/github.com/go-git/go-billy/v6/osfs/index.js.map +1 -0
  42. package/dist/gs/io/fs/readdir.js +5 -3
  43. package/dist/gs/io/fs/readdir.js.map +1 -1
  44. package/dist/gs/io/io.d.ts +10 -6
  45. package/dist/gs/io/io.js +87 -42
  46. package/dist/gs/io/io.js.map +1 -1
  47. package/dist/gs/math/bits/index.d.ts +26 -5
  48. package/dist/gs/math/bits/index.js +13 -24
  49. package/dist/gs/math/bits/index.js.map +1 -1
  50. package/dist/gs/net/http/index.d.ts +3 -1
  51. package/dist/gs/net/http/index.js +18 -1
  52. package/dist/gs/net/http/index.js.map +1 -1
  53. package/dist/gs/os/types_js.gs.d.ts +6 -2
  54. package/dist/gs/os/types_js.gs.js +169 -8
  55. package/dist/gs/os/types_js.gs.js.map +1 -1
  56. package/dist/gs/reflect/type.d.ts +1 -0
  57. package/dist/gs/reflect/type.js +80 -51
  58. package/dist/gs/reflect/type.js.map +1 -1
  59. package/dist/gs/strings/reader.d.ts +1 -1
  60. package/dist/gs/strings/reader.js +2 -2
  61. package/dist/gs/strings/reader.js.map +1 -1
  62. package/dist/gs/sync/sync.d.ts +2 -1
  63. package/dist/gs/sync/sync.js +37 -16
  64. package/dist/gs/sync/sync.js.map +1 -1
  65. package/dist/gs/syscall/js/index.js +9 -0
  66. package/dist/gs/syscall/js/index.js.map +1 -1
  67. package/dist/gs/testing/testing.js +8 -6
  68. package/dist/gs/testing/testing.js.map +1 -1
  69. package/gs/builtin/builtin.ts +25 -2
  70. package/gs/builtin/runtime-contract.test.ts +45 -0
  71. package/gs/builtin/slice.ts +7 -0
  72. package/gs/builtin/type.ts +85 -5
  73. package/gs/compress/zlib/index.test.ts +97 -0
  74. package/gs/compress/zlib/index.ts +117 -27
  75. package/gs/compress/zlib/meta.json +4 -1
  76. package/gs/crypto/sha1/index.test.ts +19 -2
  77. package/gs/crypto/sha1/index.ts +3 -6
  78. package/gs/crypto/sha256/index.test.ts +14 -2
  79. package/gs/crypto/sha256/index.ts +3 -6
  80. package/gs/crypto/sha512/index.test.ts +17 -2
  81. package/gs/crypto/sha512/index.ts +3 -6
  82. package/gs/embed/index.test.ts +87 -0
  83. package/gs/embed/index.ts +229 -5
  84. package/gs/fmt/fmt.test.ts +41 -3
  85. package/gs/fmt/fmt.ts +40 -17
  86. package/gs/fmt/meta.json +6 -1
  87. package/gs/github.com/aperturerobotics/starpc/srpc/index.test.ts +8 -1
  88. package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +139 -11
  89. package/gs/github.com/go-git/go-billy/v6/osfs/index.test.ts +110 -0
  90. package/gs/github.com/go-git/go-billy/v6/osfs/index.ts +280 -0
  91. package/gs/github.com/go-git/go-billy/v6/osfs/meta.json +8 -0
  92. package/gs/io/fs/readdir.test.ts +38 -0
  93. package/gs/io/fs/readdir.ts +7 -3
  94. package/gs/io/io.test.ts +77 -6
  95. package/gs/io/io.ts +114 -52
  96. package/gs/io/meta.json +7 -1
  97. package/gs/math/bits/index.ts +52 -28
  98. package/gs/net/http/index.test.ts +16 -0
  99. package/gs/net/http/index.ts +19 -2
  100. package/gs/os/file_unix_js.test.ts +52 -0
  101. package/gs/os/meta.json +4 -0
  102. package/gs/os/readdir.test.ts +56 -0
  103. package/gs/os/types_js.gs.ts +169 -8
  104. package/gs/reflect/deepequal.test.ts +10 -1
  105. package/gs/reflect/type.ts +91 -56
  106. package/gs/reflect/typefor.test.ts +31 -1
  107. package/gs/strings/meta.json +5 -2
  108. package/gs/strings/reader.test.ts +2 -2
  109. package/gs/strings/reader.ts +2 -2
  110. package/gs/sync/meta.json +1 -0
  111. package/gs/sync/sync.test.ts +41 -1
  112. package/gs/sync/sync.ts +41 -16
  113. package/gs/syscall/js/index.test.ts +18 -0
  114. package/gs/syscall/js/index.ts +12 -0
  115. package/gs/testing/testing.test.ts +32 -3
  116. package/gs/testing/testing.ts +13 -10
  117. package/package.json +1 -1
@@ -1,16 +1,221 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ import * as io from '@goscript/io/index.js';
1
3
  import * as fs from '@goscript/io/fs/index.js';
4
+ import * as time from '@goscript/time/index.js';
2
5
  export class FS {
6
+ files;
7
+ constructor(files) {
8
+ this.files = files ?? new Map();
9
+ }
10
+ clone() {
11
+ const files = new Map();
12
+ for (const [name, data] of this.files) {
13
+ files.set(name, data.slice());
14
+ }
15
+ return $.markAsStructValue(new FS(files));
16
+ }
3
17
  Open(name) {
4
- return [null, pathError('open', name)];
18
+ const err = validatePath('open', name);
19
+ if (err != null) {
20
+ return [null, err];
21
+ }
22
+ const data = this.files.get(name);
23
+ if (data !== undefined) {
24
+ return [new embedFile(name, data), null];
25
+ }
26
+ const entries = this.dirEntries(name);
27
+ if (entries === null) {
28
+ return [null, pathError('open', name, fs.ErrNotExist)];
29
+ }
30
+ return [new embedFile(name, null, entries), null];
5
31
  }
6
32
  ReadDir(name) {
7
- return [null, pathError('read', name)];
33
+ const err = validatePath('read', name);
34
+ if (err != null) {
35
+ return [null, err];
36
+ }
37
+ const entries = this.dirEntries(name);
38
+ if (entries === null) {
39
+ return [null, pathError('read', name, fs.ErrNotExist)];
40
+ }
41
+ return [entries, null];
8
42
  }
9
43
  ReadFile(name) {
10
- return [new Uint8Array(0), pathError('read', name)];
44
+ const err = validatePath('read', name);
45
+ if (err != null) {
46
+ return [new Uint8Array(0), err];
47
+ }
48
+ const data = this.files.get(name);
49
+ if (data === undefined) {
50
+ const err = this.dirExists(name) ? fs.ErrInvalid : fs.ErrNotExist;
51
+ return [new Uint8Array(0), pathError('read', name, err)];
52
+ }
53
+ return [data.slice(), null];
54
+ }
55
+ Stat(name) {
56
+ const err = validatePath('stat', name);
57
+ if (err != null) {
58
+ return [null, err];
59
+ }
60
+ const data = this.files.get(name);
61
+ if (data !== undefined) {
62
+ return [new embedFileInfo(baseName(name), data.byteLength, 0o444), null];
63
+ }
64
+ if (!this.dirExists(name)) {
65
+ return [null, pathError('stat', name, fs.ErrNotExist)];
66
+ }
67
+ return [new embedFileInfo(baseName(name), 0, fs.ModeDir | 0o555), null];
68
+ }
69
+ dirEntries(name) {
70
+ if (!this.dirExists(name)) {
71
+ return null;
72
+ }
73
+ const prefix = name === '.' ? '' : name + '/';
74
+ const entries = new Map();
75
+ for (const [filePath, data] of this.files) {
76
+ if (prefix !== '' && !filePath.startsWith(prefix)) {
77
+ continue;
78
+ }
79
+ const rest = prefix === '' ? filePath : filePath.slice(prefix.length);
80
+ if (rest === '') {
81
+ continue;
82
+ }
83
+ const slash = rest.indexOf('/');
84
+ const childName = slash === -1 ? rest : rest.slice(0, slash);
85
+ if (entries.has(childName)) {
86
+ continue;
87
+ }
88
+ const isDir = slash !== -1;
89
+ const info = isDir ?
90
+ new embedFileInfo(childName, 0, fs.ModeDir | 0o555)
91
+ : new embedFileInfo(childName, data.byteLength, 0o444);
92
+ entries.set(childName, new embedDirEntry(info));
93
+ }
94
+ return Array.from(entries.values()).sort((a, b) => a.Name().localeCompare(b.Name()));
95
+ }
96
+ dirExists(name) {
97
+ if (name === '.') {
98
+ return true;
99
+ }
100
+ const prefix = name + '/';
101
+ for (const path of this.files.keys()) {
102
+ if (path.startsWith(prefix)) {
103
+ return true;
104
+ }
105
+ }
106
+ return false;
11
107
  }
12
108
  }
13
- function pathError(op, name) {
14
- return new fs.PathError({ Op: op, Path: name, Err: fs.ErrNotExist });
109
+ class embedFile {
110
+ name;
111
+ data;
112
+ entries;
113
+ offset = 0;
114
+ dirOffset = 0;
115
+ constructor(name, data, entries = []) {
116
+ this.name = name;
117
+ this.data = data;
118
+ this.entries = entries;
119
+ }
120
+ Close() {
121
+ return null;
122
+ }
123
+ Read(buffer) {
124
+ if (this.data === null) {
125
+ return [0, pathError('read', this.name, fs.ErrInvalid)];
126
+ }
127
+ if (this.offset >= this.data.byteLength) {
128
+ return [0, io.EOF];
129
+ }
130
+ const n = Math.min(buffer.byteLength, this.data.byteLength - this.offset);
131
+ buffer.set(this.data.subarray(this.offset, this.offset + n));
132
+ this.offset += n;
133
+ return [n, null];
134
+ }
135
+ ReadDir(n) {
136
+ if (this.data !== null) {
137
+ return [null, pathError('readdir', this.name, fs.ErrInvalid)];
138
+ }
139
+ const allEntries = this.entries ?? [];
140
+ if (n <= 0) {
141
+ const entries = allEntries.slice(this.dirOffset);
142
+ this.dirOffset = allEntries.length;
143
+ return [entries, null];
144
+ }
145
+ if (this.dirOffset >= allEntries.length) {
146
+ return [[], io.EOF];
147
+ }
148
+ const entries = allEntries.slice(this.dirOffset, this.dirOffset + n);
149
+ this.dirOffset += entries.length;
150
+ return [entries, null];
151
+ }
152
+ Stat() {
153
+ if (this.data === null) {
154
+ return [new embedFileInfo(baseName(this.name), 0, fs.ModeDir | 0o555), null];
155
+ }
156
+ return [new embedFileInfo(baseName(this.name), this.data.byteLength, 0o444), null];
157
+ }
158
+ }
159
+ class embedFileInfo {
160
+ name;
161
+ size;
162
+ mode;
163
+ constructor(name, size, mode) {
164
+ this.name = name;
165
+ this.size = size;
166
+ this.mode = mode;
167
+ }
168
+ IsDir() {
169
+ return fs.FileMode_IsDir(this.mode);
170
+ }
171
+ ModTime() {
172
+ return new time.Time();
173
+ }
174
+ Mode() {
175
+ return this.mode;
176
+ }
177
+ Name() {
178
+ return this.name;
179
+ }
180
+ Size() {
181
+ return this.size;
182
+ }
183
+ Sys() {
184
+ return null;
185
+ }
186
+ }
187
+ class embedDirEntry {
188
+ info;
189
+ constructor(info) {
190
+ this.info = info;
191
+ }
192
+ Info() {
193
+ return [this.info, null];
194
+ }
195
+ IsDir() {
196
+ return this.info.IsDir();
197
+ }
198
+ Name() {
199
+ return this.info.Name();
200
+ }
201
+ Type() {
202
+ return fs.fileModeType(this.info.Mode());
203
+ }
204
+ }
205
+ function validatePath(op, name) {
206
+ if (!fs.ValidPath(name)) {
207
+ return pathError(op, name, fs.ErrInvalid);
208
+ }
209
+ return null;
210
+ }
211
+ function pathError(op, name, err) {
212
+ return new fs.PathError({ Op: op, Path: name, Err: err });
213
+ }
214
+ function baseName(name) {
215
+ const idx = name.lastIndexOf('/');
216
+ if (idx === -1) {
217
+ return name;
218
+ }
219
+ return name.slice(idx + 1);
15
220
  }
16
221
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/embed/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAE9C,MAAM,OAAO,EAAE;IACb,IAAI,CAAC,IAAY;QACf,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IACrD,CAAC;CACF;AAED,SAAS,SAAS,CAAC,EAAU,EAAE,IAAY;IACzC,OAAO,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;AACtE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../gs/embed/index.ts"],"names":[],"mappings":"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"}
@@ -20,9 +20,9 @@ export declare function Println(...a: any[]): [number, $.GoError | null];
20
20
  export declare function Sprint(...a: any[]): string;
21
21
  export declare function Sprintf(format: string, ...a: any[]): string;
22
22
  export declare function Sprintln(...a: any[]): string;
23
- export declare function Fprint(w: any, ...a: any[]): [number, $.GoError | null];
24
- export declare function Fprintf(w: any, format: string, ...a: any[]): [number, $.GoError | null];
25
- export declare function Fprintln(w: any, ...a: any[]): [number, $.GoError | null];
23
+ export declare function Fprint(w: any, ...a: any[]): Promise<[number, $.GoError | null]>;
24
+ export declare function Fprintf(w: any, format: string, ...a: any[]): Promise<[number, $.GoError | null]>;
25
+ export declare function Fprintln(w: any, ...a: any[]): Promise<[number, $.GoError | null]>;
26
26
  export declare function Append(b: $.Bytes, ...a: any[]): $.Bytes;
27
27
  export declare function Appendf(b: $.Bytes, format: string, ...a: any[]): $.Bytes;
28
28
  export declare function Appendln(b: $.Bytes, ...a: any[]): $.Bytes;
@@ -11,15 +11,23 @@ function formatValue(value, verb) {
11
11
  switch (verb) {
12
12
  case 'v': // default format
13
13
  return defaultFormat(value);
14
+ case 'w': // wrapped error
15
+ return defaultFormat(value);
14
16
  case 'd': // decimal integer
15
17
  return String(Math.trunc(Number(value)));
16
18
  case 'f': // decimal point, no exponent
17
19
  return Number(value).toString();
18
20
  case 's': // string
19
- return String(value);
21
+ if (typeof value === 'string')
22
+ return value;
23
+ if (value instanceof Uint8Array)
24
+ return $.bytesToString(value);
25
+ return defaultFormat(value);
20
26
  case 't': // boolean
21
27
  return value ? 'true' : 'false';
22
28
  case 'T': // type (approximate Go names for primitives we need)
29
+ if (hasGoTypeName(value))
30
+ return value.__goType;
23
31
  if (typeof value === 'number') {
24
32
  return Number.isInteger(value) ? 'int' : 'float64';
25
33
  }
@@ -64,6 +72,11 @@ function formatValue(value, verb) {
64
72
  return String(value);
65
73
  }
66
74
  }
75
+ function hasGoTypeName(value) {
76
+ return (value !== null &&
77
+ typeof value === 'object' &&
78
+ typeof value.__goType === 'string');
79
+ }
67
80
  function defaultFormat(value) {
68
81
  if (value === null || value === undefined)
69
82
  return '<nil>';
@@ -104,6 +117,9 @@ function defaultFormat(value) {
104
117
  // Ignore error by continuing to next case.
105
118
  }
106
119
  }
120
+ if ('__goValue' in value) {
121
+ return defaultFormat(value.__goValue);
122
+ }
107
123
  // Basic Map/Set rendering
108
124
  if (value instanceof Map) {
109
125
  const parts = [];
@@ -313,8 +329,14 @@ export function Sprintf(format, ...a) {
313
329
  export function Sprintln(...a) {
314
330
  return a.map(defaultFormat).join(' ') + '\n';
315
331
  }
332
+ async function writeToWriter(w, out) {
333
+ if (w && w.Write) {
334
+ return await w.Write(new TextEncoder().encode(out));
335
+ }
336
+ return [0, $.newError('Writer does not implement Write method')];
337
+ }
316
338
  // Fprint functions (write to Writer) - simplified implementation
317
- export function Fprint(w, ...a) {
339
+ export async function Fprint(w, ...a) {
318
340
  // Same spacing as Print
319
341
  let out = '';
320
342
  for (let i = 0; i < a.length; i++) {
@@ -326,26 +348,17 @@ export function Fprint(w, ...a) {
326
348
  }
327
349
  out += defaultFormat(a[i]);
328
350
  }
329
- if (w && w.Write) {
330
- return w.Write(new TextEncoder().encode(out));
331
- }
332
- return [0, $.newError('Writer does not implement Write method')];
351
+ return await writeToWriter(w, out);
333
352
  }
334
- export function Fprintf(w, format, ...a) {
353
+ export async function Fprintf(w, format, ...a) {
335
354
  const result = parseFormat(format, a);
336
- if (w && w.Write) {
337
- return w.Write(new TextEncoder().encode(result));
338
- }
339
- return [0, $.newError('Writer does not implement Write method')];
355
+ return await writeToWriter(w, result);
340
356
  }
341
- export function Fprintln(w, ...a) {
357
+ export async function Fprintln(w, ...a) {
342
358
  // Same behavior as Println
343
359
  const body = a.map(defaultFormat).join(' ');
344
360
  const result = body + '\n';
345
- if (w && w.Write) {
346
- return w.Write(new TextEncoder().encode(result));
347
- }
348
- return [0, $.newError('Writer does not implement Write method')];
361
+ return await writeToWriter(w, result);
349
362
  }
350
363
  // Append functions (append to byte slice)
351
364
  export function Append(b, ...a) {
@@ -1 +1 @@
1
- {"version":3,"file":"fmt.js","sourceRoot":"","sources":["../../../gs/fmt/fmt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fmt.js","sourceRoot":"","sources":["../../../gs/fmt/fmt.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,32 @@ export class RawMessage {
67
67
  export function NewRawMessage(data, copy) {
68
68
  return new RawMessage({ data, copy });
69
69
  }
70
+ $.registerInterfaceType('srpc.Client', null, [
71
+ {
72
+ name: 'ExecCall',
73
+ args: [
74
+ { name: 'ctx', type: 'context.Context' },
75
+ { name: 'service', type: { kind: $.TypeKind.Basic, name: 'string' } },
76
+ { name: 'method', type: { kind: $.TypeKind.Basic, name: 'string' } },
77
+ { name: 'in', type: 'srpc.Message' },
78
+ { name: 'out', type: 'srpc.Message' },
79
+ ],
80
+ returns: [{ name: '_r0', type: 'error' }],
81
+ },
82
+ {
83
+ name: 'NewStream',
84
+ args: [
85
+ { name: 'ctx', type: 'context.Context' },
86
+ { name: 'service', type: { kind: $.TypeKind.Basic, name: 'string' } },
87
+ { name: 'method', type: { kind: $.TypeKind.Basic, name: 'string' } },
88
+ { name: 'firstMsg', type: 'srpc.Message' },
89
+ ],
90
+ returns: [
91
+ { name: '_r0', type: 'srpc.Stream' },
92
+ { name: '_r1', type: 'error' },
93
+ ],
94
+ },
95
+ ]);
70
96
  export class ClientSet {
71
97
  clients;
72
98
  constructor(init) {
@@ -255,6 +281,77 @@ class memoryStream {
255
281
  }
256
282
  }
257
283
  }
284
+ class streamQueue {
285
+ queue = [];
286
+ waiters = [];
287
+ closed = false;
288
+ send(msg) {
289
+ if (this.closed) {
290
+ return ErrCompleted;
291
+ }
292
+ const waiter = this.waiters.shift();
293
+ if (waiter != null) {
294
+ waiter(msg, null);
295
+ return null;
296
+ }
297
+ this.queue.push(msg);
298
+ return null;
299
+ }
300
+ recv(msg) {
301
+ const next = this.queue.shift();
302
+ if (next !== undefined) {
303
+ if (msg != null && next != null) {
304
+ Object.assign(msg, next);
305
+ }
306
+ return null;
307
+ }
308
+ if (this.closed) {
309
+ return io.EOF;
310
+ }
311
+ return new Promise((resolve) => {
312
+ this.waiters.push((sent, err) => {
313
+ if (msg != null && sent != null) {
314
+ Object.assign(msg, sent);
315
+ }
316
+ resolve(err);
317
+ });
318
+ });
319
+ }
320
+ close() {
321
+ this.closed = true;
322
+ for (const waiter of this.waiters.splice(0)) {
323
+ waiter(null, io.EOF);
324
+ }
325
+ return null;
326
+ }
327
+ }
328
+ class pairedMemoryStream {
329
+ ctx;
330
+ incoming;
331
+ outgoing;
332
+ constructor(ctx, incoming, outgoing) {
333
+ this.ctx = ctx;
334
+ this.incoming = incoming;
335
+ this.outgoing = outgoing;
336
+ }
337
+ Context() {
338
+ return this.ctx;
339
+ }
340
+ MsgSend(msg) {
341
+ return this.outgoing.send(msg);
342
+ }
343
+ MsgRecv(msg) {
344
+ return this.incoming.recv(msg);
345
+ }
346
+ CloseSend() {
347
+ return this.outgoing.close();
348
+ }
349
+ Close() {
350
+ const incomingErr = this.incoming.close();
351
+ const outgoingErr = this.outgoing.close();
352
+ return incomingErr ?? outgoingErr;
353
+ }
354
+ }
258
355
  class streamWithClose {
259
356
  stream;
260
357
  closeFn;
@@ -461,7 +558,7 @@ class transportClient {
461
558
  if (output != null) {
462
559
  output.Reset();
463
560
  }
464
- return await writer?.Close() ?? null;
561
+ return (await writer?.Close()) ?? null;
465
562
  }
466
563
  async NewStream(ctx, service, method, firstMsg) {
467
564
  if (this.openStream == null) {
@@ -524,14 +621,26 @@ class invokerClient {
524
621
  if (this.invoker == null) {
525
622
  return [null, ErrNoAvailableClients];
526
623
  }
527
- const stream = new memoryStream(this.contextFn == null ? ctx : this.contextFn(ctx), firstMsg);
528
- const pending = Promise.resolve(this.invoker.InvokeMethod(service, method, stream));
624
+ const streamCtx = this.contextFn == null ? ctx : this.contextFn(ctx);
625
+ const clientInput = new streamQueue();
626
+ const serverInput = new streamQueue();
627
+ const clientStream = new pairedMemoryStream(streamCtx, clientInput, serverInput);
628
+ const serverStream = new pairedMemoryStream(streamCtx, serverInput, clientInput);
629
+ if (firstMsg != null) {
630
+ const err = serverInput.send(firstMsg);
631
+ if (err != null) {
632
+ return [null, err];
633
+ }
634
+ }
635
+ const pending = Promise.resolve(this.invoker.InvokeMethod(service, method, serverStream));
529
636
  pending.then(([handled, err]) => {
530
637
  if (!handled || err != null) {
531
- stream.Close();
638
+ clientStream.Close();
639
+ return;
532
640
  }
641
+ serverStream.CloseSend();
533
642
  });
534
- return [stream, null];
643
+ return [clientStream, null];
535
644
  }
536
645
  }
537
646
  export function NewClientWithInvoker(invoker, contextFn = null) {
@@ -638,7 +747,10 @@ export function NewPacketReadWriter(rw) {
638
747
  return new PacketReadWriter(rw);
639
748
  }
640
749
  export function NewServerPipe(server) {
641
- const openStream = ((_ctx, _msgHandler, _closeHandler) => [new closedPacketWriter(), null]);
750
+ const openStream = ((_ctx, _msgHandler, _closeHandler) => [
751
+ new closedPacketWriter(),
752
+ null,
753
+ ]);
642
754
  if (server != null) {
643
755
  openStream.__server = server;
644
756
  }