goscript 0.2.3 → 0.2.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 (46) hide show
  1. package/compiler/lowering.go +57 -8
  2. package/compiler/override-registry_test.go +125 -0
  3. package/compiler/skeleton_test.go +49 -2
  4. package/dist/gs/compress/gzip/index.d.ts +41 -0
  5. package/dist/gs/compress/gzip/index.js +235 -0
  6. package/dist/gs/compress/gzip/index.js.map +1 -0
  7. package/dist/gs/io/fs/glob.js +1 -1
  8. package/dist/gs/io/fs/glob.js.map +1 -1
  9. package/dist/gs/io/fs/readlink.d.ts +1 -1
  10. package/dist/gs/io/fs/readlink.js +2 -2
  11. package/dist/gs/io/fs/readlink.js.map +1 -1
  12. package/dist/gs/io/fs/stat.d.ts +4 -2
  13. package/dist/gs/io/fs/stat.js +12 -73
  14. package/dist/gs/io/fs/stat.js.map +1 -1
  15. package/dist/gs/io/fs/sub.d.ts +2 -2
  16. package/dist/gs/io/fs/sub.js +7 -7
  17. package/dist/gs/io/fs/sub.js.map +1 -1
  18. package/dist/gs/io/fs/walk.js +1 -1
  19. package/dist/gs/io/fs/walk.js.map +1 -1
  20. package/dist/gs/net/http/index.d.ts +18 -14
  21. package/dist/gs/net/http/index.js +44 -23
  22. package/dist/gs/net/http/index.js.map +1 -1
  23. package/dist/gs/net/http/pprof/index.d.ts +5 -5
  24. package/dist/gs/net/http/pprof/index.js +21 -21
  25. package/dist/gs/net/http/pprof/index.js.map +1 -1
  26. package/gs/builtin/runtime-contract.test.ts +25 -0
  27. package/gs/compress/gzip/index.test.ts +86 -0
  28. package/gs/compress/gzip/index.ts +297 -0
  29. package/gs/compress/gzip/meta.json +6 -0
  30. package/gs/compress/gzip/parity.json +45 -0
  31. package/gs/embed/index.test.ts +1 -1
  32. package/gs/io/fs/glob.ts +1 -1
  33. package/gs/io/fs/meta.json +3 -0
  34. package/gs/io/fs/readlink.test.ts +2 -2
  35. package/gs/io/fs/readlink.ts +5 -2
  36. package/gs/io/fs/stat.test.ts +79 -0
  37. package/gs/io/fs/stat.ts +24 -10
  38. package/gs/io/fs/sub.test.ts +93 -0
  39. package/gs/io/fs/sub.ts +9 -9
  40. package/gs/io/fs/walk.ts +1 -1
  41. package/gs/net/http/index.test.ts +207 -2
  42. package/gs/net/http/index.ts +68 -37
  43. package/gs/net/http/meta.json +3 -1
  44. package/gs/net/http/pprof/index.test.ts +4 -4
  45. package/gs/net/http/pprof/index.ts +30 -27
  46. package/package.json +1 -1
@@ -50,10 +50,10 @@ export function ReadLink(fsys, name) {
50
50
  }
51
51
  return sym.ReadLink(name);
52
52
  }
53
- export function Lstat(fsys, name) {
53
+ export async function Lstat(fsys, name) {
54
54
  const { value: sym, ok } = $.typeAssert(fsys, 'ReadLinkFS');
55
55
  if (!ok) {
56
- return Stat(fsys, name);
56
+ return await Stat(fsys, name);
57
57
  }
58
58
  return sym.Lstat(name);
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readlink.js","sourceRoot":"","sources":["../../../../gs/io/fs/readlink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAShC,CAAC,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,EAAE;IAC1C;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1E,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACpD;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;yBAChE;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1E,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;yBAChE;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,QAAQ,CAAC,IAAQ,EAAE,IAAY;IAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAa,IAAI,EAAE,YAAY,CAAC,CAAA;IACvE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC;IACD,OAAO,GAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAQ,EAAE,IAAY;IAC1C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAa,IAAI,EAAE,YAAY,CAAC,CAAA;IACvE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACzB,CAAC;IACD,OAAO,GAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"readlink.js","sourceRoot":"","sources":["../../../../gs/io/fs/readlink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAShC,CAAC,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,EAAE;IAC1C;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1E,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACpD;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;yBAChE;qBACF;iBACF;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC1E,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;yBAChE;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,QAAQ,CAAC,IAAQ,EAAE,IAAY;IAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAa,IAAI,EAAE,YAAY,CAAC,CAAA;IACvE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,EAAE,EAAE,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC;IACD,OAAO,GAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,IAAQ,EACR,IAAY;IAEZ,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAa,IAAI,EAAE,YAAY,CAAC,CAAA;IACvE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,GAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import * as $ from '@goscript/builtin/index.js';
2
2
  import { FS, FileInfo } from './fs.js';
3
+ type maybePromise<T> = T | Promise<T>;
3
4
  export type StatFS = null | ({
4
- Stat(name: string): [FileInfo, $.GoError];
5
+ Stat(name: string): maybePromise<[FileInfo, $.GoError]>;
5
6
  } & FS);
6
- export declare function Stat(fsys: FS, name: string): [FileInfo, $.GoError];
7
+ export declare function Stat(fsys: FS, name: string): Promise<[FileInfo, $.GoError]>;
8
+ export {};
@@ -1,55 +1,3 @@
1
- var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
- if (value !== null && value !== void 0) {
3
- if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
- var dispose, inner;
5
- if (async) {
6
- if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
- dispose = value[Symbol.asyncDispose];
8
- }
9
- if (dispose === void 0) {
10
- if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
- dispose = value[Symbol.dispose];
12
- if (async) inner = dispose;
13
- }
14
- if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
- if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
- env.stack.push({ value: value, dispose: dispose, async: async });
17
- }
18
- else if (async) {
19
- env.stack.push({ async: true });
20
- }
21
- return value;
22
- };
23
- var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
- return function (env) {
25
- function fail(e) {
26
- env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
- env.hasError = true;
28
- }
29
- var r, s = 0;
30
- function next() {
31
- while (r = env.stack.pop()) {
32
- try {
33
- if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
- if (r.dispose) {
35
- var result = r.dispose.call(r.value);
36
- if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
- }
38
- else s |= 1;
39
- }
40
- catch (e) {
41
- fail(e);
42
- }
43
- }
44
- if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
- if (env.hasError) throw env.error;
46
- }
47
- return next();
48
- };
49
- })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
- var e = new Error(message);
51
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
- });
53
1
  import * as $ from '@goscript/builtin/index.js';
54
2
  $.registerInterfaceType('StatFS', null, // Zero value for interface is null
55
3
  [
@@ -80,31 +28,22 @@ $.registerInterfaceType('StatFS', null, // Zero value for interface is null
80
28
  //
81
29
  // If fs implements [StatFS], Stat calls fs.Stat.
82
30
  // Otherwise, Stat opens the [File] to stat it.
83
- export function Stat(fsys, name) {
84
- const env_1 = { stack: [], error: void 0, hasError: false };
85
- try {
86
- const __defer = __addDisposableResource(env_1, new $.DisposableStack(), false);
87
- {
88
- let { value: fsysTyped, ok: ok } = $.typeAssert(fsys, 'StatFS');
89
- if (ok) {
90
- return fsysTyped.Stat(name);
91
- }
92
- }
93
- let [file, err] = fsys.Open(name);
94
- if (err != null) {
95
- return [null, err];
31
+ export async function Stat(fsys, name) {
32
+ {
33
+ let { value: fsysTyped, ok: ok } = $.typeAssert(fsys, 'StatFS');
34
+ if (ok) {
35
+ return await fsysTyped.Stat(name);
96
36
  }
97
- __defer.defer(() => {
98
- file.Close();
99
- });
100
- return file.Stat();
101
37
  }
102
- catch (e_1) {
103
- env_1.error = e_1;
104
- env_1.hasError = true;
38
+ let [file, err] = await fsys.Open(name);
39
+ if (err != null) {
40
+ return [null, err];
41
+ }
42
+ try {
43
+ return await file.Stat();
105
44
  }
106
45
  finally {
107
- __disposeResources(env_1);
46
+ await file.Close();
108
47
  }
109
48
  }
110
49
  //# sourceMappingURL=stat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../../gs/io/fs/stat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAW/C,CAAC,CAAC,qBAAqB,CACrB,QAAQ,EACR,IAAI,EAAE,mCAAmC;AACzC;IACE;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SACnE;QACD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;yBAChE;qBACF;iBACF;aACF;SACF;KACF;CACF,CACF,CAAA;AAED,4EAA4E;AAC5E,EAAE;AACF,iDAAiD;AACjD,+CAA+C;AAC/C,MAAM,UAAU,IAAI,CAAC,IAAQ,EAAE,IAAY;;;QACzC,MAAM,OAAO,kCAAG,IAAI,CAAC,CAAC,eAAe,EAAE,QAAA,CAAA;QACvC,CAAC;YACC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAS,IAAI,EAAE,QAAQ,CAAC,CAAA;YACvE,IAAI,EAAE,EAAE,CAAC;gBACP,OAAO,SAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACpB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACjB,IAAK,CAAC,KAAK,EAAE,CAAA;QACf,CAAC,CAAC,CAAA;QACF,OAAO,IAAK,CAAC,IAAI,EAAE,CAAA;;;;;;;;;AACrB,CAAC"}
1
+ {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../../gs/io/fs/stat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAsB/C,CAAC,CAAC,qBAAqB,CACrB,QAAQ,EACR,IAAI,EAAE,mCAAmC;AACzC;IACE;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SACnE;QACD,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,UAAU,EAAE;YACpB;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS;oBAC1B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,EAAE;4BACR,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;yBAChE;qBACF;iBACF;aACF;SACF;KACF;CACF,CACF,CAAA;AAED,4EAA4E;AAC5E,EAAE;AACF,iDAAiD;AACjD,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,IAAQ,EACR,IAAY;IAEZ,CAAC;QACC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAS,IAAI,EAAE,QAAQ,CAAC,CAAA;QACvE,IAAI,EAAE,EAAE,CAAC;YACP,OAAO,MAAM,SAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,MAAO,IAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACpB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAO,IAAmB,CAAC,IAAI,EAAE,CAAA;IAC1C,CAAC;YAAS,CAAC;QACT,MAAO,IAAmB,CAAC,KAAK,EAAE,CAAA;IACpC,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as $ from '@goscript/builtin/index.js';
2
2
  import { FS } from './fs.js';
3
3
  export type SubFS = null | ({
4
- Sub(dir: string): [FS, $.GoError];
4
+ Sub(dir: string): [FS, $.GoError] | Promise<[FS, $.GoError]>;
5
5
  } & FS);
6
- export declare function Sub(fsys: FS, dir: string): [FS, $.GoError];
6
+ export declare function Sub(fsys: FS, dir: string): Promise<[FS, $.GoError]>;
@@ -42,7 +42,7 @@ $.registerInterfaceType('SubFS', null, // Zero value for interface is null
42
42
  // does not check for symbolic links inside "/prefix" that point to
43
43
  // other directories. That is, [os.DirFS] is not a general substitute for a
44
44
  // chroot-style security mechanism, and Sub does not change that fact.
45
- export function Sub(fsys, dir) {
45
+ export async function Sub(fsys, dir) {
46
46
  if (!ValidPath(dir)) {
47
47
  return [null, new PathError({ Err: ErrInvalid, Op: 'sub', Path: dir })];
48
48
  }
@@ -52,10 +52,10 @@ export function Sub(fsys, dir) {
52
52
  {
53
53
  let { value: fsysTyped, ok: ok } = $.typeAssert(fsys, 'SubFS');
54
54
  if (ok) {
55
- return fsysTyped.Sub(dir);
55
+ return await fsysTyped.Sub(dir);
56
56
  }
57
57
  }
58
- return [new subFS({}), null];
58
+ return [new subFS({ fsys, dir }), null];
59
59
  }
60
60
  class subFS {
61
61
  get fsys() {
@@ -125,14 +125,14 @@ class subFS {
125
125
  }
126
126
  return err;
127
127
  }
128
- Open(name) {
128
+ async Open(name) {
129
129
  const f = this;
130
130
  let [full, err] = f.fullName('open', name);
131
131
  if (err != null) {
132
132
  return [null, err];
133
133
  }
134
134
  let file;
135
- [file, err] = f.fsys.Open(full);
135
+ [file, err] = await f.fsys.Open(full);
136
136
  return [file, f.fixErr(err)];
137
137
  }
138
138
  async ReadDir(name) {
@@ -192,11 +192,11 @@ class subFS {
192
192
  if (dir == '.') {
193
193
  return [f, null];
194
194
  }
195
- let [_full, err] = f.fullName('sub', dir);
195
+ let [full, err] = f.fullName('sub', dir);
196
196
  if (err != null) {
197
197
  return [null, err];
198
198
  }
199
- return [new subFS({}), null];
199
+ return [new subFS({ fsys: f.fsys, dir: full }), null];
200
200
  }
201
201
  // Register this type with the runtime type system
202
202
  static __typeInfo = $.registerStructType('subFS', new subFS(), [
@@ -1 +1 @@
1
- {"version":3,"file":"sub.js","sourceRoot":"","sources":["../../../../gs/io/fs/sub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sub.js","sourceRoot":"","sources":["../../../../gs/io/fs/sub.ts"],"names":[],"mappings":"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"}
@@ -61,7 +61,7 @@ export async function walkDir(fsys, name, d, walkDirFn) {
61
61
  // WalkDir does not follow symbolic links found in directories,
62
62
  // but if root itself is a symbolic link, its target will be walked.
63
63
  export async function WalkDir(fsys, root, fn) {
64
- let [info, err] = Stat(fsys, root);
64
+ let [info, err] = await Stat(fsys, root);
65
65
  if (err != null) {
66
66
  err = await fn(root, null, err);
67
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../../../gs/io/fs/walk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAA;AAEnD,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAA;AAE/C,MAAM,CAAC,IAAI,OAAO,GAAc,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAEjE,MAAM,CAAC,IAAI,OAAO,GAAc,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;AAU/E,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAQ,EACR,IAAY,EACZ,CAAW,EACX,SAAsB;IAEtB,kCAAkC;IAClC,CAAC;QACC,IAAI,GAAG,GAAG,MAAM,SAAU,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACzC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAE,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B,kCAAkC;YAClC,IAAI,GAAG,IAAI,OAAO,IAAI,CAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjC,kCAAkC;gBAClC,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE3C,wCAAwC;IACxC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,wCAAwC;QACxC,GAAG,GAAG,MAAM,SAAU,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;QACpC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,IAAI,GAAG,IAAI,OAAO,IAAI,CAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjC,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;IACH,CAAC;IAED,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,IAAK,CAAC,EAAE,CAAC,CAAA;QACpB,CAAC;YACC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YACvC,CAAC;gBACC,IAAI,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;gBACnD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;wBACnB,MAAK;oBACP,CAAC;oBACD,OAAO,GAAG,CAAA;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0EAA0E;AAC1E,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,0BAA0B;AAC1B,EAAE;AACF,+DAA+D;AAC/D,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAQ,EACR,IAAY,EACZ,EAAe;IAEf,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAClC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,GAAG,GAAG,MAAM,EAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IAClC,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;IACD,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"walk.js","sourceRoot":"","sources":["../../../../gs/io/fs/walk.ts"],"names":[],"mappings":"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"}
@@ -125,18 +125,22 @@ export declare const StateHijacked = 3;
125
125
  export declare const StateClosed = 4;
126
126
  export declare function StatusText(code: number): string;
127
127
  export type Header = Map<string, $.Slice<string>>;
128
+ type HeaderBox = {
129
+ __goValue: HeaderValue;
130
+ };
131
+ type HeaderValue = Header | $.VarRef<Header> | HeaderBox;
128
132
  export declare const Header: {
129
133
  new (entries?: Iterable<readonly [string, $.Slice<string>]> | null): Header;
130
134
  };
131
135
  export declare function CanonicalHeaderKey(s: string): string;
132
- export declare function Header_Add(h: Header, key: string, value: string): void;
133
- export declare function Header_Del(h: Header, key: string): void;
134
- export declare function Header_Get(h: Header, key: string): string;
135
- export declare function Header_Set(h: Header, key: string, value: string): void;
136
- export declare function Header_Values(h: Header, key: string): $.Slice<string>;
137
- export declare function Header_Clone(h: Header): Header;
138
- export declare function Header_Write(h: Header, w: io.Writer): $.GoError;
139
- export declare function Header_WriteSubset(h: Header, w: io.Writer, exclude: Map<string, boolean> | null): $.GoError;
136
+ export declare function Header_Add(h: HeaderValue, key: string, value: string): void;
137
+ export declare function Header_Del(h: HeaderValue, key: string): void;
138
+ export declare function Header_Get(h: HeaderValue, key: string): string;
139
+ export declare function Header_Set(h: HeaderValue, key: string, value: string): void;
140
+ export declare function Header_Values(h: HeaderValue, key: string): $.Slice<string>;
141
+ export declare function Header_Clone(h: HeaderValue): Header;
142
+ export declare function Header_Write(h: HeaderValue, w: io.Writer): $.GoError;
143
+ export declare function Header_WriteSubset(h: HeaderValue, w: io.Writer, exclude: Map<string, boolean> | null): $.GoError;
140
144
  export type Dir = string;
141
145
  export interface CookieJar {
142
146
  SetCookies(u: any, cookies: $.Slice<Cookie | $.VarRef<Cookie> | null>): void;
@@ -164,13 +168,13 @@ export declare class Cookie {
164
168
  constructor(init?: Partial<Cookie>);
165
169
  String(): string;
166
170
  }
167
- export declare function SetCookie(w: ResponseWriter | null, cookie: Cookie | $.VarRef<Cookie> | null): void;
171
+ export declare function SetCookie(w: ResponseWriter | null, cookie: Cookie | $.VarRef<Cookie> | null): Promise<void>;
168
172
  export declare function RegisterInProcessServer(handler: Handler | null): string;
169
173
  export declare function UnregisterInProcessServer(rawURL: string): void;
170
174
  export interface ResponseWriter {
171
- Header(): Header;
172
- Write(p: $.Slice<number>): [number, $.GoError];
173
- WriteHeader(statusCode: number): void;
175
+ Header(): Header | Promise<Header>;
176
+ Write(p: $.Slice<number>): [number, $.GoError] | Promise<[number, $.GoError]>;
177
+ WriteHeader(statusCode: number): void | Promise<void>;
174
178
  }
175
179
  export declare class Request {
176
180
  Method: string;
@@ -314,7 +318,7 @@ export declare function NewFileTransport(root: FileSystem | null): RoundTripper;
314
318
  export declare function NewFileTransportFS(fsys: fs.FS): RoundTripper;
315
319
  type maybePromise<T> = T | Promise<T>;
316
320
  export interface FileSystem {
317
- Open(name: string): [File | null, $.GoError];
321
+ Open(name: string): maybePromise<[File | null, $.GoError]>;
318
322
  }
319
323
  export interface File extends io.Closer, io.Reader, io.Seeker {
320
324
  Readdir(count: number): [$.Slice<fs.FileInfo> | null, $.GoError];
@@ -428,7 +432,7 @@ export declare function RedirectHandler(url: string, code: number): Handler;
428
432
  export declare function TimeoutHandler(handler: Handler | null, _dt: number, msg: string): Handler;
429
433
  export declare function Error(w: ResponseWriter | null, error: string, code: number): void;
430
434
  export declare function NotFound(w: ResponseWriter | null, _r: Request | $.VarRef<Request> | null): void;
431
- export declare function Redirect(w: ResponseWriter | null, _r: Request | $.VarRef<Request> | null, url: string, code: number): void;
435
+ export declare function Redirect(w: ResponseWriter | null, _r: Request | $.VarRef<Request> | null, url: string, code: number): Promise<void>;
432
436
  export declare function ParseTime(text: string): [time.Time, $.GoError];
433
437
  export declare function DetectContentType(data: $.Slice<number>): string;
434
438
  export declare function ParseHTTPVersion(vers: string): [number, number, boolean];
@@ -4,6 +4,8 @@ import * as context from '@goscript/context/index.js';
4
4
  import * as errors from '@goscript/errors/index.js';
5
5
  import * as fs from '@goscript/io/fs/fs.js';
6
6
  import * as io from '@goscript/io/index.js';
7
+ import * as mime from '@goscript/mime/index.js';
8
+ import * as path from '@goscript/path/index.js';
7
9
  import * as strings from '@goscript/strings/index.js';
8
10
  import * as time from '@goscript/time/index.js';
9
11
  export const StatusContinue = 100;
@@ -210,28 +212,39 @@ export const Header = Map;
210
212
  export function CanonicalHeaderKey(s) {
211
213
  return canonicalMIMEHeaderKey(s);
212
214
  }
215
+ function headerMap(h) {
216
+ let value = $.pointerValue(h);
217
+ while (value !== null &&
218
+ value !== undefined &&
219
+ typeof value === 'object' &&
220
+ '__goValue' in value) {
221
+ value = $.pointerValue(value.__goValue);
222
+ }
223
+ return value;
224
+ }
213
225
  export function Header_Add(h, key, value) {
226
+ const headers = headerMap(h);
214
227
  key = canonicalMIMEHeaderKey(key);
215
- const values = Array.from(h.get(key) ?? []);
228
+ const values = Array.from(headers.get(key) ?? []);
216
229
  values.push(value);
217
- h.set(key, $.arrayToSlice(values));
230
+ headers.set(key, $.arrayToSlice(values));
218
231
  }
219
232
  export function Header_Del(h, key) {
220
- h.delete(canonicalMIMEHeaderKey(key));
233
+ headerMap(h).delete(canonicalMIMEHeaderKey(key));
221
234
  }
222
235
  export function Header_Get(h, key) {
223
- const values = h.get(canonicalMIMEHeaderKey(key));
236
+ const values = headerMap(h).get(canonicalMIMEHeaderKey(key));
224
237
  return values == null || values.length === 0 ? '' : String(values[0]);
225
238
  }
226
239
  export function Header_Set(h, key, value) {
227
- h.set(canonicalMIMEHeaderKey(key), $.arrayToSlice([value]));
240
+ headerMap(h).set(canonicalMIMEHeaderKey(key), $.arrayToSlice([value]));
228
241
  }
229
242
  export function Header_Values(h, key) {
230
- return h.get(canonicalMIMEHeaderKey(key)) ?? null;
243
+ return headerMap(h).get(canonicalMIMEHeaderKey(key)) ?? null;
231
244
  }
232
245
  export function Header_Clone(h) {
233
246
  const cloned = new Header();
234
- for (const [key, values] of h.entries()) {
247
+ for (const [key, values] of headerMap(h).entries()) {
235
248
  cloned.set(key, $.arrayToSlice(Array.from(values ?? [])));
236
249
  }
237
250
  return cloned;
@@ -240,7 +253,7 @@ export function Header_Write(h, w) {
240
253
  return Header_WriteSubset(h, w, null);
241
254
  }
242
255
  export function Header_WriteSubset(h, w, exclude) {
243
- for (const [key, values] of h.entries()) {
256
+ for (const [key, values] of headerMap(h).entries()) {
244
257
  if (exclude?.get(key) === true) {
245
258
  continue;
246
259
  }
@@ -505,12 +518,12 @@ function asciiLower(value) {
505
518
  }
506
519
  return [value.toLowerCase(), true];
507
520
  }
508
- export function SetCookie(w, cookie) {
521
+ export async function SetCookie(w, cookie) {
509
522
  const c = $.pointerValue(cookie);
510
523
  if (w == null || c == null) {
511
524
  return;
512
525
  }
513
- Header_Add(w.Header(), 'Set-Cookie', c.String());
526
+ Header_Add(await w.Header(), 'Set-Cookie', c.String());
514
527
  }
515
528
  class memoryResponseWriter {
516
529
  Code = StatusOK;
@@ -1217,9 +1230,9 @@ async function readFetchBody(fetched, requestContext, abortFetch) {
1217
1230
  }
1218
1231
  export function FS(fsys) {
1219
1232
  return {
1220
- Open(name) {
1233
+ async Open(name) {
1221
1234
  const cleaned = cleanFileServerPath(name);
1222
- const [file, err] = fsys?.Open(cleaned) ?? [null, fs.ErrInvalid];
1235
+ const [file, err] = (await fsys?.Open(cleaned)) ?? [null, fs.ErrInvalid];
1223
1236
  if (err != null || file == null) {
1224
1237
  return [null, err];
1225
1238
  }
@@ -1266,17 +1279,22 @@ export function FileServer(root) {
1266
1279
  NotFound(w, req);
1267
1280
  return;
1268
1281
  }
1269
- const [data, readErr] = await io.ReadAll(file);
1270
- if (readErr != null) {
1271
- Error(w, readErr.Error(), StatusInternalServerError);
1272
- return;
1282
+ const header = await w.Header();
1283
+ if (Header_Get(header, 'Content-Type') === '') {
1284
+ const contentType = mime.TypeByExtension(path.Ext(info?.Name?.() || req.URL?.Path || ''));
1285
+ if (contentType !== '') {
1286
+ Header_Set(header, 'Content-Type', contentType);
1287
+ }
1273
1288
  }
1274
1289
  if (info?.Size != null) {
1275
- Header_Set(w.Header(), 'Content-Length', String(info.Size()));
1290
+ Header_Set(header, 'Content-Length', String(info.Size()));
1276
1291
  }
1277
- w.WriteHeader(StatusOK);
1292
+ await w.WriteHeader(StatusOK);
1278
1293
  if (req.Method !== MethodHead) {
1279
- w.Write(data);
1294
+ const [, copyErr] = await io.Copy(w, file);
1295
+ if (copyErr != null) {
1296
+ return;
1297
+ }
1280
1298
  }
1281
1299
  }
1282
1300
  finally {
@@ -1683,7 +1701,7 @@ export function NotFoundHandler() {
1683
1701
  export function RedirectHandler(url, code) {
1684
1702
  return {
1685
1703
  ServeHTTP(w, r) {
1686
- Redirect(w, r, url, code);
1704
+ return Redirect(w, r, url, code);
1687
1705
  },
1688
1706
  };
1689
1707
  }
@@ -1705,12 +1723,15 @@ export function Error(w, error, code) {
1705
1723
  export function NotFound(w, _r) {
1706
1724
  Error(w, '404 page not found', StatusNotFound);
1707
1725
  }
1708
- export function Redirect(w, _r, url, code) {
1709
- const header = w?.Header();
1726
+ export async function Redirect(w, _r, url, code) {
1727
+ if (w == null) {
1728
+ return;
1729
+ }
1730
+ const header = await w.Header();
1710
1731
  if (header != null) {
1711
1732
  Header_Set(header, 'Location', url);
1712
1733
  }
1713
- w?.WriteHeader(code);
1734
+ await w.WriteHeader(code);
1714
1735
  }
1715
1736
  export function ParseTime(text) {
1716
1737
  const date = new globalThis.Date(text);