goscript 0.1.2 → 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/compiler/lowered-program.go +1 -0
- package/compiler/lowering.go +715 -44
- package/compiler/override-registry_test.go +43 -0
- package/compiler/skeleton_test.go +464 -12
- package/compiler/typescript-emitter.go +28 -2
- package/dist/gs/builtin/channel.js +36 -9
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/type.js +8 -3
- package/dist/gs/builtin/type.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/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/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/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/net/http/httptest/index.js +7 -5
- package/dist/gs/net/http/httptest/index.js.map +1 -1
- package/dist/gs/net/http/index.d.ts +8 -0
- package/dist/gs/net/http/index.js +139 -10
- package/dist/gs/net/http/index.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/gs/builtin/channel.ts +47 -9
- package/gs/builtin/runtime-contract.test.ts +33 -0
- package/gs/builtin/type.ts +12 -3
- package/gs/bytes/bytes.gs.ts +19 -10
- package/gs/bytes/bytes.test.ts +17 -0
- package/gs/context/context.test.ts +5 -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/fmt/fmt.test.ts +20 -0
- package/gs/fmt/fmt.ts +75 -5
- package/gs/github.com/aperturerobotics/util/conc/index.test.ts +1 -1
- package/gs/io/io.test.ts +64 -0
- package/gs/io/io.ts +30 -12
- package/gs/net/http/httptest/index.test.ts +34 -2
- package/gs/net/http/httptest/index.ts +23 -8
- package/gs/net/http/index.test.ts +30 -0
- package/gs/net/http/index.ts +159 -10
- package/gs/os/zero_copy_posix.gs.ts +1 -2
- package/gs/sync/meta.json +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as $ from '@goscript/builtin/index.js';
|
|
2
|
+
import * as bytes from '@goscript/bytes/index.js';
|
|
2
3
|
import * as context from '@goscript/context/index.js';
|
|
3
4
|
import * as errors from '@goscript/errors/index.js';
|
|
4
5
|
import * as time from '@goscript/time/index.js';
|
|
@@ -7,9 +8,14 @@ export const StatusCreated = 201;
|
|
|
7
8
|
export const StatusPartialContent = 206;
|
|
8
9
|
export const StatusMovedPermanently = 301;
|
|
9
10
|
export const StatusBadRequest = 400;
|
|
11
|
+
export const StatusUnauthorized = 401;
|
|
12
|
+
export const StatusForbidden = 403;
|
|
13
|
+
export const StatusMethodNotAllowed = 405;
|
|
10
14
|
export const StatusRequestTimeout = 408;
|
|
11
15
|
export const StatusConflict = 409;
|
|
12
16
|
export const StatusNotFound = 404;
|
|
17
|
+
export const StatusUnsupportedMediaType = 415;
|
|
18
|
+
export const StatusTeapot = 418;
|
|
13
19
|
export const StatusTooManyRequests = 429;
|
|
14
20
|
export const StatusRequestedRangeNotSatisfiable = 416;
|
|
15
21
|
export const StatusInternalServerError = 500;
|
|
@@ -25,6 +31,12 @@ export function StatusText(code) {
|
|
|
25
31
|
return 'OK';
|
|
26
32
|
case StatusMovedPermanently:
|
|
27
33
|
return 'Moved Permanently';
|
|
34
|
+
case StatusUnauthorized:
|
|
35
|
+
return 'Unauthorized';
|
|
36
|
+
case StatusForbidden:
|
|
37
|
+
return 'Forbidden';
|
|
38
|
+
case StatusMethodNotAllowed:
|
|
39
|
+
return 'Method Not Allowed';
|
|
28
40
|
case StatusBadRequest:
|
|
29
41
|
return 'Bad Request';
|
|
30
42
|
case StatusRequestTimeout:
|
|
@@ -33,12 +45,16 @@ export function StatusText(code) {
|
|
|
33
45
|
return 'Conflict';
|
|
34
46
|
case StatusNotFound:
|
|
35
47
|
return 'Not Found';
|
|
48
|
+
case StatusUnsupportedMediaType:
|
|
49
|
+
return 'Unsupported Media Type';
|
|
36
50
|
case StatusTooManyRequests:
|
|
37
51
|
return 'Too Many Requests';
|
|
38
52
|
case StatusPartialContent:
|
|
39
53
|
return 'Partial Content';
|
|
40
54
|
case StatusRequestedRangeNotSatisfiable:
|
|
41
55
|
return 'Requested Range Not Satisfiable';
|
|
56
|
+
case StatusTeapot:
|
|
57
|
+
return "I'm a teapot";
|
|
42
58
|
case StatusInternalServerError:
|
|
43
59
|
return 'Internal Server Error';
|
|
44
60
|
case StatusServiceUnavailable:
|
|
@@ -49,19 +65,35 @@ export function StatusText(code) {
|
|
|
49
65
|
}
|
|
50
66
|
export const Header = Map;
|
|
51
67
|
export function Header_Add(h, key, value) {
|
|
68
|
+
key = canonicalMIMEHeaderKey(key);
|
|
52
69
|
const values = Array.from(h.get(key) ?? []);
|
|
53
70
|
values.push(value);
|
|
54
71
|
h.set(key, $.arrayToSlice(values));
|
|
55
72
|
}
|
|
56
73
|
export function Header_Del(h, key) {
|
|
57
|
-
h.delete(key);
|
|
74
|
+
h.delete(canonicalMIMEHeaderKey(key));
|
|
58
75
|
}
|
|
59
76
|
export function Header_Get(h, key) {
|
|
60
|
-
const values = h.get(key);
|
|
77
|
+
const values = h.get(canonicalMIMEHeaderKey(key));
|
|
61
78
|
return values == null || values.length === 0 ? '' : String(values[0]);
|
|
62
79
|
}
|
|
63
80
|
export function Header_Set(h, key, value) {
|
|
64
|
-
h.set(key, $.arrayToSlice([value]));
|
|
81
|
+
h.set(canonicalMIMEHeaderKey(key), $.arrayToSlice([value]));
|
|
82
|
+
}
|
|
83
|
+
function canonicalMIMEHeaderKey(key) {
|
|
84
|
+
let upper = true;
|
|
85
|
+
let out = '';
|
|
86
|
+
for (let i = 0; i < key.length; i++) {
|
|
87
|
+
const ch = key[i];
|
|
88
|
+
if (ch === '-') {
|
|
89
|
+
upper = true;
|
|
90
|
+
out += ch;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
out += upper ? ch.toUpperCase() : ch.toLowerCase();
|
|
94
|
+
upper = false;
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
65
97
|
}
|
|
66
98
|
class QueryValues extends Map {
|
|
67
99
|
Add(key, value) {
|
|
@@ -73,11 +105,24 @@ class QueryValues extends Map {
|
|
|
73
105
|
const values = this.get(key);
|
|
74
106
|
return values == null || values.length === 0 ? '' : String(values[0]);
|
|
75
107
|
}
|
|
108
|
+
Encode() {
|
|
109
|
+
const params = new URLSearchParams();
|
|
110
|
+
for (const [key, values] of this.entries()) {
|
|
111
|
+
for (const value of Array.from(values ?? [])) {
|
|
112
|
+
params.append(key, String(value));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return params.toString();
|
|
116
|
+
}
|
|
76
117
|
}
|
|
77
118
|
class RequestURL {
|
|
119
|
+
Scheme;
|
|
120
|
+
Host;
|
|
78
121
|
Path;
|
|
79
122
|
RawQuery;
|
|
80
|
-
constructor(path, rawQuery) {
|
|
123
|
+
constructor(path, rawQuery, scheme = '', host = '') {
|
|
124
|
+
this.Scheme = scheme;
|
|
125
|
+
this.Host = host;
|
|
81
126
|
this.Path = path;
|
|
82
127
|
this.RawQuery = rawQuery;
|
|
83
128
|
}
|
|
@@ -88,18 +133,81 @@ class RequestURL {
|
|
|
88
133
|
return values;
|
|
89
134
|
}
|
|
90
135
|
clone() {
|
|
91
|
-
return new RequestURL(this.Path, this.RawQuery);
|
|
136
|
+
return new RequestURL(this.Path, this.RawQuery, this.Scheme, this.Host);
|
|
137
|
+
}
|
|
138
|
+
String() {
|
|
139
|
+
const query = this.RawQuery === '' ? '' : `?${this.RawQuery}`;
|
|
140
|
+
const path = this.Path === '' ? '/' : this.Path;
|
|
141
|
+
if (this.Scheme === '' || this.Host === '') {
|
|
142
|
+
return `${path}${query}`;
|
|
143
|
+
}
|
|
144
|
+
return `${this.Scheme}://${this.Host}${path}${query}`;
|
|
92
145
|
}
|
|
93
146
|
}
|
|
94
147
|
function parseRequestURL(rawURL) {
|
|
95
148
|
try {
|
|
96
149
|
const parsed = new URL(rawURL, 'http://goscript.invalid');
|
|
97
|
-
|
|
150
|
+
const hasHost = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(rawURL);
|
|
151
|
+
return new RequestURL(parsed.pathname, parsed.search.startsWith('?') ? parsed.search.slice(1) : parsed.search, hasHost ? parsed.protocol.replace(/:$/, '') : '', hasHost ? parsed.host : '');
|
|
98
152
|
}
|
|
99
153
|
catch {
|
|
100
154
|
return new RequestURL('', '');
|
|
101
155
|
}
|
|
102
156
|
}
|
|
157
|
+
class responseBody {
|
|
158
|
+
reader;
|
|
159
|
+
constructor(data) {
|
|
160
|
+
this.reader = bytes.NewReader(Uint8Array.from(data ?? []));
|
|
161
|
+
}
|
|
162
|
+
Read(p) {
|
|
163
|
+
return this.reader.Read(p);
|
|
164
|
+
}
|
|
165
|
+
Close() {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
class memoryResponseWriter {
|
|
170
|
+
Code = StatusOK;
|
|
171
|
+
Body = new bytes.Buffer();
|
|
172
|
+
headerMap = new Header();
|
|
173
|
+
wroteHeader = false;
|
|
174
|
+
Header() {
|
|
175
|
+
return this.headerMap;
|
|
176
|
+
}
|
|
177
|
+
Write(p) {
|
|
178
|
+
if (!this.wroteHeader) {
|
|
179
|
+
this.WriteHeader(StatusOK);
|
|
180
|
+
}
|
|
181
|
+
return this.Body.Write(p);
|
|
182
|
+
}
|
|
183
|
+
WriteHeader(statusCode) {
|
|
184
|
+
if (this.wroteHeader) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.wroteHeader = true;
|
|
188
|
+
this.Code = statusCode;
|
|
189
|
+
}
|
|
190
|
+
Result() {
|
|
191
|
+
return new Response({
|
|
192
|
+
Body: new responseBody(this.Body.Bytes()),
|
|
193
|
+
Header: this.headerMap,
|
|
194
|
+
StatusCode: this.Code,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
const inProcessServers = new Map();
|
|
199
|
+
let nextInProcessServerID = 1;
|
|
200
|
+
export function RegisterInProcessServer(handler) {
|
|
201
|
+
const host = `goscript-httptest-${nextInProcessServerID++}.invalid`;
|
|
202
|
+
inProcessServers.set(host, handler ?? { ServeHTTP: NotFound });
|
|
203
|
+
return `http://${host}`;
|
|
204
|
+
}
|
|
205
|
+
export function UnregisterInProcessServer(rawURL) {
|
|
206
|
+
const parsed = parseRequestURL(rawURL);
|
|
207
|
+
if (parsed.Host !== '') {
|
|
208
|
+
inProcessServers.delete(parsed.Host);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
103
211
|
export class Request {
|
|
104
212
|
Method;
|
|
105
213
|
URL;
|
|
@@ -146,18 +254,25 @@ export class Request {
|
|
|
146
254
|
}
|
|
147
255
|
}
|
|
148
256
|
export class Response {
|
|
257
|
+
Status;
|
|
149
258
|
StatusCode;
|
|
150
259
|
Body;
|
|
151
260
|
Header;
|
|
152
261
|
constructor(init) {
|
|
262
|
+
this.Status = init?.Status ?? '';
|
|
153
263
|
this.StatusCode = init?.StatusCode ?? 0;
|
|
154
264
|
this.Body = init?.Body ?? null;
|
|
155
265
|
this.Header = init?.Header ?? new Header();
|
|
266
|
+
if (this.Status === '' && this.StatusCode !== 0) {
|
|
267
|
+
const text = StatusText(this.StatusCode);
|
|
268
|
+
this.Status = text === '' ? String(this.StatusCode) : `${this.StatusCode} ${text}`;
|
|
269
|
+
}
|
|
156
270
|
}
|
|
157
271
|
clone() {
|
|
158
272
|
return new Response({
|
|
159
273
|
Body: this.Body,
|
|
160
274
|
Header: this.Header,
|
|
275
|
+
Status: this.Status,
|
|
161
276
|
StatusCode: this.StatusCode,
|
|
162
277
|
});
|
|
163
278
|
}
|
|
@@ -172,12 +287,26 @@ export class Client {
|
|
|
172
287
|
}
|
|
173
288
|
}
|
|
174
289
|
export const DefaultClient = new Client();
|
|
175
|
-
class
|
|
176
|
-
async RoundTrip(
|
|
177
|
-
|
|
290
|
+
class defaultTransport {
|
|
291
|
+
async RoundTrip(req) {
|
|
292
|
+
const request = $.pointerValue(req);
|
|
293
|
+
if (request == null) {
|
|
294
|
+
return [null, errors.New('net/http: nil Request')];
|
|
295
|
+
}
|
|
296
|
+
const host = request.URL?.Host ?? '';
|
|
297
|
+
const handler = host === '' ? null : inProcessServers.get(host);
|
|
298
|
+
if (handler == null) {
|
|
299
|
+
return [null, errors.New('net/http: Client.Do is not implemented in GoScript')];
|
|
300
|
+
}
|
|
301
|
+
const recorder = new memoryResponseWriter();
|
|
302
|
+
const served = handler.ServeHTTP(recorder, request);
|
|
303
|
+
if (served instanceof Promise) {
|
|
304
|
+
await served;
|
|
305
|
+
}
|
|
306
|
+
return [recorder.Result(), null];
|
|
178
307
|
}
|
|
179
308
|
}
|
|
180
|
-
export const DefaultTransport = new
|
|
309
|
+
export const DefaultTransport = new defaultTransport();
|
|
181
310
|
export function HandlerFunc_ServeHTTP(h, w, r) {
|
|
182
311
|
return h(w, r);
|
|
183
312
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/net/http/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../gs/net/http/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero_copy_posix.gs.js","sourceRoot":"","sources":["../../../gs/os/zero_copy_posix.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,sEAAsE;AACtE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAc;IAC5D,CAAC;QACA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAA;QAClE,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,uGAAuG;AACvG,wFAAwF;AACxF,4GAA4G;AAC5G,MAAM,UAAU,gBAAgB,CAAC,CAAY;IAC5C,6BAA6B;IAC7B,IAAI,MAAM,GAAW,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAEhD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAA0B,CAAC,EAAE,EAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAC,CAAC,CAAA;IAC9H,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,GAAG,EAAG,CAAC,CAAC,CAAA;IACd,OAAO,CAAC,EAAE,EAAE,EAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"zero_copy_posix.gs.js","sourceRoot":"","sources":["../../../gs/os/zero_copy_posix.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,sEAAsE;AACtE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAc;IAC5D,CAAC;QACA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAA;QAClE,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,uGAAuG;AACvG,wFAAwF;AACxF,4GAA4G;AAC5G,MAAM,UAAU,gBAAgB,CAAC,CAAY;IAC5C,6BAA6B;IAC7B,IAAI,MAAM,GAAW,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAEhD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAA0B,CAAC,EAAE,EAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAC,CAAC,CAAA;IAC9H,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,GAAG,EAAG,CAAC,CAAC,CAAA;IACd,OAAO,CAAC,EAAE,EAAE,EAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;AAChC,CAAC"}
|
package/gs/builtin/channel.ts
CHANGED
|
@@ -15,6 +15,38 @@ export interface SelectResult<T> {
|
|
|
15
15
|
id: number
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
function scheduleClosedChannelWake(wake: () => void): void {
|
|
19
|
+
// Closed-channel wakeups represent goroutine scheduling, not an immediate
|
|
20
|
+
// Promise continuation. Keep them on a task boundary so goroutine work queued
|
|
21
|
+
// around the close can observe state published before the blocked receiver
|
|
22
|
+
// resumes.
|
|
23
|
+
setTimeout(wake, 0)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function completeUnbufferedReceive<T>(
|
|
27
|
+
resolveReceive: (value: T) => void,
|
|
28
|
+
value: T,
|
|
29
|
+
): Promise<void> {
|
|
30
|
+
return new Promise<void>((resolve) => {
|
|
31
|
+
queueMicrotask(() => {
|
|
32
|
+
resolveReceive(value)
|
|
33
|
+
queueMicrotask(resolve)
|
|
34
|
+
})
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function completeUnbufferedReceiveWithOk<T>(
|
|
39
|
+
resolveReceive: (result: ChannelReceiveResult<T>) => void,
|
|
40
|
+
result: ChannelReceiveResult<T>,
|
|
41
|
+
): Promise<void> {
|
|
42
|
+
return new Promise<void>((resolve) => {
|
|
43
|
+
queueMicrotask(() => {
|
|
44
|
+
resolveReceive(result)
|
|
45
|
+
queueMicrotask(resolve)
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
}
|
|
49
|
+
|
|
18
50
|
/**
|
|
19
51
|
* Represents a Go channel in TypeScript.
|
|
20
52
|
* Supports asynchronous sending and receiving of values.
|
|
@@ -380,13 +412,14 @@ class BufferedChannel<T> implements Channel<T> {
|
|
|
380
412
|
// Attempt to hand off to a waiting receiver (rendezvous)
|
|
381
413
|
if (this.receivers.length > 0) {
|
|
382
414
|
const receiverTask = this.receivers.shift()!
|
|
383
|
-
|
|
384
|
-
return
|
|
415
|
+
return completeUnbufferedReceive(receiverTask.resolveReceive, value)
|
|
385
416
|
}
|
|
386
417
|
if (this.receiversWithOk.length > 0) {
|
|
387
418
|
const receiverTask = this.receiversWithOk.shift()!
|
|
388
|
-
|
|
389
|
-
|
|
419
|
+
return completeUnbufferedReceiveWithOk(receiverTask.resolveReceive, {
|
|
420
|
+
value,
|
|
421
|
+
ok: true,
|
|
422
|
+
})
|
|
390
423
|
}
|
|
391
424
|
|
|
392
425
|
// If no waiting receivers, try to buffer if space is available
|
|
@@ -536,12 +569,15 @@ class BufferedChannel<T> implements Channel<T> {
|
|
|
536
569
|
|
|
537
570
|
if (this.receivers.length > 0) {
|
|
538
571
|
const receiverTask = this.receivers.shift()!
|
|
539
|
-
|
|
572
|
+
await completeUnbufferedReceive(receiverTask.resolveReceive, value)
|
|
540
573
|
return { value: true, ok: true, id }
|
|
541
574
|
}
|
|
542
575
|
if (this.receiversWithOk.length > 0) {
|
|
543
576
|
const receiverTask = this.receiversWithOk.shift()!
|
|
544
|
-
|
|
577
|
+
await completeUnbufferedReceiveWithOk(receiverTask.resolveReceive, {
|
|
578
|
+
value,
|
|
579
|
+
ok: true,
|
|
580
|
+
})
|
|
545
581
|
return { value: true, ok: true, id }
|
|
546
582
|
}
|
|
547
583
|
|
|
@@ -600,7 +636,7 @@ class BufferedChannel<T> implements Channel<T> {
|
|
|
600
636
|
const sendersToNotify = [...this.senders] // Shallow copy for iteration
|
|
601
637
|
this.senders = []
|
|
602
638
|
for (const senderTask of sendersToNotify) {
|
|
603
|
-
|
|
639
|
+
scheduleClosedChannelWake(() =>
|
|
604
640
|
senderTask.rejectSend(new Error('send on closed channel')),
|
|
605
641
|
)
|
|
606
642
|
}
|
|
@@ -608,13 +644,15 @@ class BufferedChannel<T> implements Channel<T> {
|
|
|
608
644
|
const receiversToNotify = [...this.receivers]
|
|
609
645
|
this.receivers = []
|
|
610
646
|
for (const receiverTask of receiversToNotify) {
|
|
611
|
-
|
|
647
|
+
scheduleClosedChannelWake(() =>
|
|
648
|
+
receiverTask.resolveReceive(this.zeroValue),
|
|
649
|
+
)
|
|
612
650
|
}
|
|
613
651
|
|
|
614
652
|
const receiversWithOkToNotify = [...this.receiversWithOk]
|
|
615
653
|
this.receiversWithOk = []
|
|
616
654
|
for (const receiverTask of receiversWithOkToNotify) {
|
|
617
|
-
|
|
655
|
+
scheduleClosedChannelWake(() =>
|
|
618
656
|
receiverTask.resolveReceive({ value: this.zeroValue, ok: false }),
|
|
619
657
|
)
|
|
620
658
|
}
|
|
@@ -513,6 +513,12 @@ describe('builtin runtime contract helpers', () => {
|
|
|
513
513
|
}),
|
|
514
514
|
).toEqual({ value: null, ok: true })
|
|
515
515
|
|
|
516
|
+
const dogRef = interfaceValue<{ Name(): string } | null>(
|
|
517
|
+
{ value: markAsStructValue(new TypedDog()), __isVarRef: true },
|
|
518
|
+
'*phase5.TypedDog',
|
|
519
|
+
)
|
|
520
|
+
expect(typeAssert<{ Name(): string }>(dogRef, dogInterface).ok).toBe(true)
|
|
521
|
+
|
|
516
522
|
const greet = namedFunction(
|
|
517
523
|
(name: string) => `hello ${name}`,
|
|
518
524
|
'phase5.Greet',
|
|
@@ -570,6 +576,33 @@ describe('builtin runtime contract helpers', () => {
|
|
|
570
576
|
expect(await chanRecvWithOk(channel)).toEqual({ value: 0, ok: false })
|
|
571
577
|
})
|
|
572
578
|
|
|
579
|
+
it('does not resume an unbuffered sender before the waiting receiver accepts the value', async () => {
|
|
580
|
+
const channel = makeChannel<number>(0, 0, 'both')
|
|
581
|
+
let received = 0
|
|
582
|
+
|
|
583
|
+
const receiver = (async () => {
|
|
584
|
+
received = await channel.receive()
|
|
585
|
+
})()
|
|
586
|
+
|
|
587
|
+
await channel.send(7)
|
|
588
|
+
expect(received).toBe(7)
|
|
589
|
+
await receiver
|
|
590
|
+
})
|
|
591
|
+
|
|
592
|
+
it('resumes closed-channel receivers after queued goroutine work', async () => {
|
|
593
|
+
const channel = makeChannel<number>(0, 0, 'both')
|
|
594
|
+
const events: string[] = []
|
|
595
|
+
|
|
596
|
+
const receive = channel.receive().then(() => {
|
|
597
|
+
events.push('receiver')
|
|
598
|
+
})
|
|
599
|
+
channel.close()
|
|
600
|
+
queueMicrotask(() => events.push('queued'))
|
|
601
|
+
|
|
602
|
+
await receive
|
|
603
|
+
expect(events).toEqual(['queued', 'receiver'])
|
|
604
|
+
})
|
|
605
|
+
|
|
573
606
|
it('cancels losing select receive cases', async () => {
|
|
574
607
|
const signal = makeChannel<string>(1, '', 'both')
|
|
575
608
|
const timeout = makeChannel<string>(0, '', 'both')
|
package/gs/builtin/type.ts
CHANGED
|
@@ -562,9 +562,18 @@ function matchesInterfaceType(value: any, info: TypeInfo): boolean {
|
|
|
562
562
|
return false
|
|
563
563
|
}
|
|
564
564
|
|
|
565
|
+
const methodTarget =
|
|
566
|
+
value.__isVarRef === true && 'value' in value ? value.value : value
|
|
567
|
+
if (
|
|
568
|
+
(typeof methodTarget !== 'object' && typeof methodTarget !== 'function') ||
|
|
569
|
+
methodTarget === null
|
|
570
|
+
) {
|
|
571
|
+
return false
|
|
572
|
+
}
|
|
573
|
+
|
|
565
574
|
// For interfaces, check if the value has all the required methods with compatible signatures
|
|
566
575
|
return info.methods.every((requiredMethodSig) => {
|
|
567
|
-
const actualMethod = (
|
|
576
|
+
const actualMethod = (methodTarget as any)[requiredMethodSig.name]
|
|
568
577
|
|
|
569
578
|
// Method must exist and be a function
|
|
570
579
|
if (typeof actualMethod !== 'function') {
|
|
@@ -587,8 +596,8 @@ function matchesInterfaceType(value: any, info: TypeInfo): boolean {
|
|
|
587
596
|
|
|
588
597
|
// If the value has a __goTypeName property, it might be a registered type
|
|
589
598
|
// with more type information available
|
|
590
|
-
if (
|
|
591
|
-
const valueTypeInfo = typeRegistry.get(
|
|
599
|
+
if (methodTarget.__goTypeName) {
|
|
600
|
+
const valueTypeInfo = typeRegistry.get(methodTarget.__goTypeName)
|
|
592
601
|
if (valueTypeInfo && isStructTypeInfo(valueTypeInfo)) {
|
|
593
602
|
// Find the matching method in the value's type info
|
|
594
603
|
const valueMethodSig = valueTypeInfo.methods.find(
|
package/gs/bytes/bytes.gs.ts
CHANGED
|
@@ -8,6 +8,9 @@ import * as utf8 from "@goscript/unicode/utf8/index.js"
|
|
|
8
8
|
// for linkname
|
|
9
9
|
import * as _ from "@goscript/unsafe/index.js"
|
|
10
10
|
|
|
11
|
+
type SyncCallbackResult<T> = T | globalThis.Promise<T>
|
|
12
|
+
type PredicateCallback = ((r: number) => SyncCallbackResult<boolean>) | null
|
|
13
|
+
|
|
11
14
|
// Equal reports whether a and b
|
|
12
15
|
// are the same length and contain the same bytes.
|
|
13
16
|
// A nil argument is equivalent to an empty slice.
|
|
@@ -90,7 +93,7 @@ export function ContainsRune(b: $.Bytes, r: number): boolean {
|
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
// ContainsFunc reports whether any of the UTF-8-encoded code points r within b satisfy f(r).
|
|
93
|
-
export function ContainsFunc(b: $.Bytes, f:
|
|
96
|
+
export function ContainsFunc(b: $.Bytes, f: PredicateCallback): boolean {
|
|
94
97
|
return IndexFunc(b, f) >= 0
|
|
95
98
|
}
|
|
96
99
|
|
|
@@ -794,21 +797,21 @@ export function TrimSuffix(s: $.Bytes, suffix: $.Bytes): $.Bytes {
|
|
|
794
797
|
// IndexFunc interprets s as a sequence of UTF-8-encoded code points.
|
|
795
798
|
// It returns the byte index in s of the first Unicode
|
|
796
799
|
// code point satisfying f(c), or -1 if none do.
|
|
797
|
-
export function IndexFunc(s: $.Bytes, f:
|
|
800
|
+
export function IndexFunc(s: $.Bytes, f: PredicateCallback): number {
|
|
798
801
|
return indexFunc(s, f, true)
|
|
799
802
|
}
|
|
800
803
|
|
|
801
804
|
// LastIndexFunc interprets s as a sequence of UTF-8-encoded code points.
|
|
802
805
|
// It returns the byte index in s of the last Unicode
|
|
803
806
|
// code point satisfying f(c), or -1 if none do.
|
|
804
|
-
export function LastIndexFunc(s: $.Bytes, f:
|
|
807
|
+
export function LastIndexFunc(s: $.Bytes, f: PredicateCallback): number {
|
|
805
808
|
return lastIndexFunc(s, f, true)
|
|
806
809
|
}
|
|
807
810
|
|
|
808
811
|
// indexFunc is the same as IndexFunc except that if
|
|
809
812
|
// truth==false, the sense of the predicate function is
|
|
810
813
|
// inverted.
|
|
811
|
-
export function indexFunc(s: $.Bytes, f:
|
|
814
|
+
export function indexFunc(s: $.Bytes, f: PredicateCallback, truth: boolean): number {
|
|
812
815
|
if (s === null || f === null) {
|
|
813
816
|
return -1
|
|
814
817
|
}
|
|
@@ -817,12 +820,12 @@ export function indexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, truth:
|
|
|
817
820
|
const [r, size] = utf8.DecodeRune($.goSlice(s, i, undefined))
|
|
818
821
|
if (size <= 0) {
|
|
819
822
|
// Invalid UTF-8
|
|
820
|
-
if (f(utf8.RuneError) === truth) {
|
|
823
|
+
if (syncBoolean(f(utf8.RuneError)) === truth) {
|
|
821
824
|
return i
|
|
822
825
|
}
|
|
823
826
|
i++
|
|
824
827
|
} else {
|
|
825
|
-
if (f(r) === truth) {
|
|
828
|
+
if (syncBoolean(f(r)) === truth) {
|
|
826
829
|
return i
|
|
827
830
|
}
|
|
828
831
|
i += size
|
|
@@ -835,7 +838,7 @@ export function indexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, truth:
|
|
|
835
838
|
// lastIndexFunc is the same as LastIndexFunc except that if
|
|
836
839
|
// truth==false, the sense of the predicate function is
|
|
837
840
|
// inverted.
|
|
838
|
-
export function lastIndexFunc(s: $.Bytes, f:
|
|
841
|
+
export function lastIndexFunc(s: $.Bytes, f: PredicateCallback, truth: boolean): number {
|
|
839
842
|
if (s === null || f === null) {
|
|
840
843
|
return -1
|
|
841
844
|
}
|
|
@@ -846,12 +849,12 @@ export function lastIndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, tr
|
|
|
846
849
|
const [r, size] = utf8.DecodeRune($.goSlice(s, i, undefined))
|
|
847
850
|
if (size <= 0) {
|
|
848
851
|
// Invalid UTF-8
|
|
849
|
-
if (f(utf8.RuneError) === truth) {
|
|
852
|
+
if (syncBoolean(f(utf8.RuneError)) === truth) {
|
|
850
853
|
lastIndex = i
|
|
851
854
|
}
|
|
852
855
|
i++
|
|
853
856
|
} else {
|
|
854
|
-
if (f(r) === truth) {
|
|
857
|
+
if (syncBoolean(f(r)) === truth) {
|
|
855
858
|
lastIndex = i
|
|
856
859
|
}
|
|
857
860
|
i += size
|
|
@@ -861,6 +864,13 @@ export function lastIndexFunc(s: $.Bytes, f: ((r: number) => boolean) | null, tr
|
|
|
861
864
|
return lastIndex
|
|
862
865
|
}
|
|
863
866
|
|
|
867
|
+
function syncBoolean(value: SyncCallbackResult<boolean>): boolean {
|
|
868
|
+
if (value instanceof Promise) {
|
|
869
|
+
throw new Error("bytes: asynchronous callback result is not supported")
|
|
870
|
+
}
|
|
871
|
+
return value
|
|
872
|
+
}
|
|
873
|
+
|
|
864
874
|
class asciiSet {
|
|
865
875
|
constructor(public _value: number[]) {}
|
|
866
876
|
|
|
@@ -1285,4 +1295,3 @@ export function CutSuffix(s: $.Bytes, suffix: $.Bytes): [$.Bytes, boolean] {
|
|
|
1285
1295
|
}
|
|
1286
1296
|
return [$.goSlice(s, undefined, $.len(s) - $.len(suffix)), true]
|
|
1287
1297
|
}
|
|
1288
|
-
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/index.js"
|
|
2
|
+
import { IndexFunc } from "./index.js"
|
|
3
|
+
import { describe, expect, test } from "vitest"
|
|
4
|
+
|
|
5
|
+
describe("bytes", () => {
|
|
6
|
+
test("IndexFunc accepts generated async-shaped callbacks", () => {
|
|
7
|
+
const predicate: (r: number) => boolean | Promise<boolean> = (r) => r === 0x62
|
|
8
|
+
|
|
9
|
+
expect(IndexFunc($.stringToBytes("abc"), predicate)).toBe(1)
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
test("IndexFunc rejects actual async callback results", () => {
|
|
13
|
+
expect(() => IndexFunc($.stringToBytes("abc"), async (r) => r === 0x62)).toThrow(
|
|
14
|
+
"bytes: asynchronous callback result is not supported",
|
|
15
|
+
)
|
|
16
|
+
})
|
|
17
|
+
})
|
|
@@ -8,6 +8,10 @@ async function nextMicrotask(): Promise<void> {
|
|
|
8
8
|
await new Promise<void>((resolve) => queueMicrotask(resolve))
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
async function nextTask(): Promise<void> {
|
|
12
|
+
await new Promise<void>((resolve) => setTimeout(resolve, 0))
|
|
13
|
+
}
|
|
14
|
+
|
|
11
15
|
describe('context override', () => {
|
|
12
16
|
it('matches generated struct keys by Go comparable value', () => {
|
|
13
17
|
class Key {
|
|
@@ -39,7 +43,7 @@ describe('context override', () => {
|
|
|
39
43
|
|
|
40
44
|
cancel?.()
|
|
41
45
|
await nextMicrotask()
|
|
42
|
-
await
|
|
46
|
+
await nextTask()
|
|
43
47
|
|
|
44
48
|
expect(called).toBe(true)
|
|
45
49
|
expect(stop()).toBe(false)
|