@tonalisk-labs/kit 1.0.1 → 1.0.6

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 (79) hide show
  1. package/dist/testing/src/config-coverage.d.ts.map +1 -1
  2. package/dist/testing/src/config-coverage.js +3 -2
  3. package/dist/testing/src/config-coverage.js.map +1 -1
  4. package/dist/testing/src/fixtures.d.ts +9 -3
  5. package/dist/testing/src/fixtures.d.ts.map +1 -1
  6. package/dist/testing/src/fixtures.js +98 -42
  7. package/dist/testing/src/fixtures.js.map +1 -1
  8. package/dist/testing/src/floors/node.js +11 -3
  9. package/dist/testing/src/floors/node.js.map +1 -1
  10. package/dist/testing/src/stack/browsers.d.ts +13 -3
  11. package/dist/testing/src/stack/browsers.d.ts.map +1 -1
  12. package/dist/testing/src/stack/browsers.js +117 -14
  13. package/dist/testing/src/stack/browsers.js.map +1 -1
  14. package/dist/testing/src/stack/containers.d.ts +6 -2
  15. package/dist/testing/src/stack/containers.d.ts.map +1 -1
  16. package/dist/testing/src/stack/containers.js +8 -1
  17. package/dist/testing/src/stack/containers.js.map +1 -1
  18. package/dist/testing/src/stack/control.d.ts +18 -3
  19. package/dist/testing/src/stack/control.d.ts.map +1 -1
  20. package/dist/testing/src/stack/control.js +50 -10
  21. package/dist/testing/src/stack/control.js.map +1 -1
  22. package/dist/testing/src/stack/gate-member.d.ts +10 -0
  23. package/dist/testing/src/stack/gate-member.d.ts.map +1 -1
  24. package/dist/testing/src/stack/gate-member.js +68 -7
  25. package/dist/testing/src/stack/gate-member.js.map +1 -1
  26. package/dist/testing/src/stack/gate-server.d.ts +37 -4
  27. package/dist/testing/src/stack/gate-server.d.ts.map +1 -1
  28. package/dist/testing/src/stack/gate-server.js +124 -12
  29. package/dist/testing/src/stack/gate-server.js.map +1 -1
  30. package/dist/testing/src/stack/hold.d.ts +24 -3
  31. package/dist/testing/src/stack/hold.d.ts.map +1 -1
  32. package/dist/testing/src/stack/hold.js +136 -11
  33. package/dist/testing/src/stack/hold.js.map +1 -1
  34. package/dist/testing/src/stack/host.d.ts.map +1 -1
  35. package/dist/testing/src/stack/host.js +26 -6
  36. package/dist/testing/src/stack/host.js.map +1 -1
  37. package/dist/testing/src/stack/lock.d.ts +15 -4
  38. package/dist/testing/src/stack/lock.d.ts.map +1 -1
  39. package/dist/testing/src/stack/lock.js +47 -18
  40. package/dist/testing/src/stack/lock.js.map +1 -1
  41. package/dist/testing/src/stack/preview-child.js +14 -3
  42. package/dist/testing/src/stack/preview-child.js.map +1 -1
  43. package/dist/testing/src/stack/runtime-apple.d.ts.map +1 -1
  44. package/dist/testing/src/stack/runtime-apple.js +16 -0
  45. package/dist/testing/src/stack/runtime-apple.js.map +1 -1
  46. package/dist/testing/src/stack/runtime-docker.d.ts +2 -1
  47. package/dist/testing/src/stack/runtime-docker.d.ts.map +1 -1
  48. package/dist/testing/src/stack/runtime-docker.js +29 -3
  49. package/dist/testing/src/stack/runtime-docker.js.map +1 -1
  50. package/dist/testing/src/stack/runtime.d.ts +10 -0
  51. package/dist/testing/src/stack/runtime.d.ts.map +1 -1
  52. package/dist/testing/src/stack/runtime.js +1 -0
  53. package/dist/testing/src/stack/runtime.js.map +1 -1
  54. package/dist/testing/src/stack/socks.d.ts +25 -0
  55. package/dist/testing/src/stack/socks.d.ts.map +1 -0
  56. package/dist/testing/src/stack/socks.js +195 -0
  57. package/dist/testing/src/stack/socks.js.map +1 -0
  58. package/dist/testing/src/stack/stall.d.ts +36 -0
  59. package/dist/testing/src/stack/stall.d.ts.map +1 -0
  60. package/dist/testing/src/stack/stall.js +93 -0
  61. package/dist/testing/src/stack/stall.js.map +1 -0
  62. package/package.json +4 -4
  63. package/testing/src/config-coverage.ts +3 -2
  64. package/testing/src/fixtures.ts +277 -197
  65. package/testing/src/floors/node.ts +19 -3
  66. package/testing/src/stack/browsers.ts +129 -15
  67. package/testing/src/stack/containers.ts +14 -2
  68. package/testing/src/stack/control.ts +62 -11
  69. package/testing/src/stack/gate-member.ts +90 -8
  70. package/testing/src/stack/gate-server.ts +166 -21
  71. package/testing/src/stack/hold.ts +163 -11
  72. package/testing/src/stack/host.ts +32 -9
  73. package/testing/src/stack/lock.ts +61 -21
  74. package/testing/src/stack/preview-child.ts +21 -4
  75. package/testing/src/stack/runtime-apple.ts +20 -1
  76. package/testing/src/stack/runtime-docker.ts +47 -3
  77. package/testing/src/stack/runtime.ts +11 -0
  78. package/testing/src/stack/socks.ts +233 -0
  79. package/testing/src/stack/stall.ts +145 -0
@@ -1 +1 @@
1
- {"version":3,"file":"browsers.js","sourceRoot":"","sources":["../../../../testing/src/stack/browsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browsers.js","sourceRoot":"","sources":["../../../../testing/src/stack/browsers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Service } from './process.ts';
2
- import type { Address, ContainerSpec, Runtime } from './runtime.ts';
2
+ import type { Address, ContainerSpec, Network, Runtime } from './runtime.ts';
3
3
  export interface Container extends Service {
4
4
  readonly id: string;
5
5
  readonly address: (inner: number) => Address;
@@ -16,7 +16,11 @@ export declare const leftBehind: (labelled: ReadonlyMap<string, string>, began?:
16
16
  /** Removes the containers this host's runs left behind once their run was gone: an exit handler
17
17
  * removes a run's own, but a SIGKILL lets none run. Another run's, still going, stays. */
18
18
  export declare const sweepLeftBehind: (runtime?: Runtime) => Promise<void>;
19
- export declare const container: (spec: ContainerSpec, signal: AbortSignal) => Promise<Container>;
19
+ /** A container started from `spec` once it says it's ready; `started` runs as it starts, before
20
+ * that, for a service that waits on something the host gives it. */
21
+ export declare const container: (spec: ContainerSpec, signal: AbortSignal, started?: (id: string) => Promise<void>) => Promise<Container>;
22
+ /** A running container's address on its network, and the host's there. */
23
+ export declare const networkOf: (id: string) => Promise<Network>;
20
24
  export declare const exec: (id: string, command: readonly string[], signal: AbortSignal) => Promise<string>;
21
25
  /** An exec's command line, for a caller that holds its standard input. */
22
26
  export declare const execLine: (id: string, command: readonly string[]) => readonly [string, ...string[]];
@@ -1 +1 @@
1
- {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/containers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,WAAW,SAAU,SAAQ,OAAO;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAKD;0FAC0F;AAC1F,eAAO,MAAM,SAAS,SACd,MAAM,GAAG,SAAS,aACd,MAAM,CAAC,QAAQ,KACxB,OASF,CAAC;AAEF,eAAO,MAAM,OAAO,SAAsC,CAAC;AAE3D;2EAC2E;AAC3E,eAAO,MAAM,SAAS,8BAA8B,CAAC;AAErD,2EAA2E;AAC3E,eAAO,MAAM,UAAU,aACX,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,UAC7B,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,SACxB,MAAM,KACZ,MAAM,EAAsF,CAAC;AAEhG;2FAC2F;AAC3F,eAAO,MAAM,eAAe,aAAmB,OAAO,KAAa,OAAO,CAAC,IAAI,CAK9E,CAAC;AAkCF,eAAO,MAAM,SAAS,SAAgB,aAAa,UAAU,WAAW,KAAG,OAAO,CAAC,SAAS,CAmB3F,CAAC;AAEF,eAAO,MAAM,IAAI,OACX,MAAM,WACD,SAAS,MAAM,EAAE,UAClB,WAAW,KAClB,OAAO,CAAC,MAAM,CAAsC,CAAC;AAExD,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,OAAQ,MAAM,WAAW,SAAS,MAAM,EAAE,KAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAChE,CAAC"}
1
+ {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/containers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,WAAW,SAAU,SAAQ,OAAO;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9C;AAKD;0FAC0F;AAC1F,eAAO,MAAM,SAAS,SACd,MAAM,GAAG,SAAS,aACd,MAAM,CAAC,QAAQ,KACxB,OASF,CAAC;AAEF,eAAO,MAAM,OAAO,SAAsC,CAAC;AAE3D;2EAC2E;AAC3E,eAAO,MAAM,SAAS,8BAA8B,CAAC;AAErD,2EAA2E;AAC3E,eAAO,MAAM,UAAU,aACX,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,UAC7B,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,SACxB,MAAM,KACZ,MAAM,EAAsF,CAAC;AAEhG;2FAC2F;AAC3F,eAAO,MAAM,eAAe,aAAmB,OAAO,KAAa,OAAO,CAAC,IAAI,CAK9E,CAAC;AAkCF;qEACqE;AACrE,eAAO,MAAM,SAAS,SACd,aAAa,UACX,WAAW,YACT,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,KACtC,OAAO,CAAC,SAAS,CAsBnB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,SAAS,OAAc,MAAM,KAAG,OAAO,CAAC,OAAO,CAAwB,CAAC;AAErF,eAAO,MAAM,IAAI,OACX,MAAM,WACD,SAAS,MAAM,EAAE,UAClB,WAAW,KAClB,OAAO,CAAC,MAAM,CAAsC,CAAC;AAExD,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,OAAQ,MAAM,WAAW,SAAS,MAAM,EAAE,KAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAChE,CAAC"}
@@ -57,7 +57,9 @@ const addressIn = (id, addresses) => (inner) => {
57
57
  }
58
58
  return found;
59
59
  };
60
- export const container = async (spec, signal) => {
60
+ /** A container started from `spec` once it says it's ready; `started` runs as it starts, before
61
+ * that, for a service that waits on something the host gives it. */
62
+ export const container = async (spec, signal, started) => {
61
63
  signal.throwIfAborted();
62
64
  await sweptOnce();
63
65
  const { id, forget } = await created(spec);
@@ -66,6 +68,9 @@ export const container = async (spec, signal) => {
66
68
  forget();
67
69
  };
68
70
  try {
71
+ if (started !== undefined) {
72
+ await started(id);
73
+ }
69
74
  const texts = spec.readyInAnyOrder === true ? spec.ready.map((text) => [text]) : [spec.ready];
70
75
  await Promise.all(texts.map(async (text) => RUNTIME.ready(id, { texts: text, logFile: spec.logFile }, signal)));
71
76
  return { id, stop, address: addressIn(id, await RUNTIME.addresses(id, spec.ports)) };
@@ -76,6 +81,8 @@ export const container = async (spec, signal) => {
76
81
  throw error;
77
82
  }
78
83
  };
84
+ /** A running container's address on its network, and the host's there. */
85
+ export const networkOf = async (id) => RUNTIME.network(id);
79
86
  export const exec = async (id, command, signal) => RUNTIME.exec(id, command, signal);
80
87
  /** An exec's command line, for a caller that holds its standard input. */
81
88
  export const execLine = (id, command) => RUNTIME.execLine(id, command);
@@ -1 +1 @@
1
- {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../testing/src/stack/containers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAQ/C,8EAA8E;AAC9E,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAE5C;0FAC0F;AAC1F,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,IAAwB,EACxB,QAAQ,GAAoB,OAAO,CAAC,QAAQ,EACnC,EAAE;IACX,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxE,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,OAAO,MAAM,gCAAgC,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AAE3D;2EAC2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAErD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,QAAqC,EACrC,KAA+B,EAC/B,IAAa,EACH,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhG;2FAC2F;AAC3F,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,OAAO,GAAY,OAAO,EAAiB,EAAE;IACjF,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,KAAK,GAA6B,EAAE,CAAC;AAE3C,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;IAC1C,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,OAAO,GAAG,KAAK,EAAE,IAAmB,EAA+C,EAAE;IACzF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,EAAE,CAAC;QACT,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,SAAS,GACb,CAAC,EAAU,EAAE,SAAuC,EAAE,EAAE,CACxD,CAAC,KAAa,EAAW,EAAE;IACzB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE,mBAAmB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAmB,EAAE,MAAmB,EAAsB,EAAE;IAC9F,MAAM,CAAC,cAAc,EAAE,CAAC;IACxB,MAAM,SAAS,EAAE,CAAC;IAClB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9F,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAC7F,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wFAAwF;QACxF,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EACvB,EAAU,EACV,OAA0B,EAC1B,MAAmB,EACF,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAExD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,OAA0B,EAAkC,EAAE,CACjG,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../testing/src/stack/containers.ts"],"names":[],"mappings":"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"}
@@ -9,19 +9,34 @@ export declare const STACK_ENV = "KIT_STACK";
9
9
  /** The Linux browser server's key: WebKit rows use it on macOS, whose WebKit guards CryptoKeys with
10
10
  * a keychain prompt, and the visual projects' Chromium, so screenshots match on every machine. */
11
11
  export declare const LINUX_BROWSERS = "linux-browsers";
12
- /** The variable WebKit rows and the visual projects read that server's endpoint from. */
12
+ /** The variable WebKit rows and the visual projects read that server's endpoints from, by engine,
13
+ * in JSON. */
13
14
  export declare const LINUX_ENV = "KIT_LINUX_BROWSERS";
14
15
  export type Action = 'start' | 'stop' | 'restart';
15
16
  /** Asks the stack host to start or stop a target's services, answering its projects' environment.
16
17
  * Plain `node:http`, so no client timeout cuts off a long build: the setup project's bounds it. */
17
18
  export declare const control: (action: Action, key: string) => Promise<Record<string, string>>;
19
+ /** The running test's clock, as Playwright keeps its timeout: when it began, and how long it has
20
+ * waited for holds in fixtures of their own timeout, which aren't charged to it. */
21
+ export interface TestClock {
22
+ start: number;
23
+ waited: number;
24
+ }
25
+ /** Starts the running test's clock (fixtures.ts), at `now`. */
26
+ export declare const testBegins: (now?: number) => void;
27
+ /** When a test must end, by Playwright's count: its start, plus the hold waits it isn't charged,
28
+ * plus its timeout; none for a test with no timeout. A hold's server lets a stillness pass while
29
+ * its holders are inside their deadlines; the test moves them as its timeout moves. */
30
+ export declare const deadlineFrom: (timeout: number, clock?: TestClock) => number | undefined;
31
+ /** `wait` for a hold, its time added to the running test's waits, which its deadline is past. */
32
+ export declare const waitedFor: <Value>(wait: () => Promise<Value>) => Promise<Value>;
18
33
  /**
19
34
  * Holds a target's stack, shared or owned alone, until the returned release is called: the hold
20
35
  * is an open request, so a worker that dies releases it by closing its connection.
21
36
  */
22
37
  export declare const holdStack: (hold: 'share' | 'own', key: string) => Promise<() => void>;
23
- /** A seat among the Linux image's browsers for each context the worker's tests have open at once,
24
- * all taken together and held as a stack hold is, for the worker's life. */
38
+ /** A seat among the Linux image's browsers for each context the test may have open at once, all
39
+ * taken together and held as a stack hold is, for the test's life. */
25
40
  export declare const holdBrowserSeat: (contexts: number) => Promise<() => void>;
26
41
  /** A CPU turn, until the returned release; an abort gives up a turn still waiting. */
27
42
  export declare const holdTurn: (turns: string, signal?: AbortSignal) => Promise<() => void>;
@@ -1 +1 @@
1
- {"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/control.ts"],"names":[],"mappings":"AAOA,oFAAoF;AACpF,eAAO,MAAM,QAAQ,mBAAmB,CAAC;AAEzC,gGAAgG;AAChG,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,oFAAoF;AACpF,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,4EAA4E;AAC5E,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC;mGACmG;AACnG,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,yFAAyF;AACzF,eAAO,MAAM,SAAS,uBAAuB,CAAC;AAE9C,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAelD;oGACoG;AACpG,eAAO,MAAM,OAAO,WAAkB,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBzF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAgB,OAAO,GAAG,KAAK,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,IAAI,CAUpF,CAAC;AAEJ;6EAC6E;AAC7E,eAAO,MAAM,eAAe,aAAoB,MAAM,KAAG,OAAO,CAAC,MAAM,IAAI,CAaxE,CAAC;AAUJ,sFAAsF;AACtF,eAAO,MAAM,QAAQ,UAAiB,MAAM,WAAW,WAAW,KAAG,OAAO,CAAC,MAAM,IAAI,CAC/C,CAAC;AAazC,4CAA4C;AAC5C,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,MAAM,IAAI,CAYvD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAoBD;4FAC4F;AAC5F,eAAO,MAAM,aAAa,UAAgB,WAAW,KAAiB,OAAO,CAAC,IAAI,CAOjF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,KAAK,SAC9B,MAAM,QACP,MAAM,OAAO,CAAC,KAAK,CAAC,KACzB,OAAO,CAAC,KAAK,CAOf,CAAC"}
1
+ {"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/control.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,eAAO,MAAM,QAAQ,mBAAmB,CAAC;AAEzC,gGAAgG;AAChG,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,oFAAoF;AACpF,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,4EAA4E;AAC5E,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC;mGACmG;AACnG,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C;eACe;AACf,eAAO,MAAM,SAAS,uBAAuB,CAAC;AAE9C,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAelD;oGACoG;AACpG,eAAO,MAAM,OAAO,WAAkB,MAAM,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBzF,CAAC;AAEF;qFACqF;AACrF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,+DAA+D;AAC/D,eAAO,MAAM,UAAU,SAAS,MAAM,KAAgB,IAGrD,CAAC;AAEF;;wFAEwF;AACxF,eAAO,MAAM,YAAY,YAAa,MAAM,UAAS,SAAS,KAAa,MAAM,GAAG,SACpB,CAAC;AAEjE,iGAAiG;AACjG,eAAO,MAAM,SAAS,GAAU,KAAK,QAAQ,MAAM,OAAO,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,KAAK,CAOhF,CAAC;AAuBF;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAgB,OAAO,GAAG,KAAK,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,IAAI,CAWpF,CAAC;AAEJ;uEACuE;AACvE,eAAO,MAAM,eAAe,aAAoB,MAAM,KAAG,OAAO,CAAC,MAAM,IAAI,CAcxE,CAAC;AAIJ,sFAAsF;AACtF,eAAO,MAAM,QAAQ,UAAiB,MAAM,WAAW,WAAW,KAAG,OAAO,CAAC,MAAM,IAAI,CACR,CAAC;AAahF,4CAA4C;AAC5C,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,MAAM,IAAI,CAYvD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAoBD;4FAC4F;AAC5F,eAAO,MAAM,aAAa,UAAgB,WAAW,KAAiB,OAAO,CAAC,IAAI,CAOjF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,KAAK,SAC9B,MAAM,QACP,MAAM,OAAO,CAAC,KAAK,CAAC,KACzB,OAAO,CAAC,KAAK,CAOf,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { request } from 'node:http';
2
2
  import { test } from '@playwright/test';
3
+ import { holdCpuTurn } from './gate-member.js';
3
4
  import { WHOLE } from './gate-server.js';
4
5
  import { openHold } from './hold.js';
5
6
  /** The variable naming the stack host, set by the global setup for every worker. */
@@ -13,7 +14,8 @@ export const STACK_ENV = 'KIT_STACK';
13
14
  /** The Linux browser server's key: WebKit rows use it on macOS, whose WebKit guards CryptoKeys with
14
15
  * a keychain prompt, and the visual projects' Chromium, so screenshots match on every machine. */
15
16
  export const LINUX_BROWSERS = 'linux-browsers';
16
- /** The variable WebKit rows and the visual projects read that server's endpoint from. */
17
+ /** The variable WebKit rows and the visual projects read that server's endpoints from, by engine,
18
+ * in JSON. */
17
19
  export const LINUX_ENV = 'KIT_LINUX_BROWSERS';
18
20
  const isEnv = (value) => typeof value === 'object' &&
19
21
  value !== null &&
@@ -51,6 +53,48 @@ export const control = async (action, key) => {
51
53
  call.end();
52
54
  return promise;
53
55
  };
56
+ /** This worker's running test's clock: a worker runs one test at a time. */
57
+ const running = { start: Date.now(), waited: 0 };
58
+ /** Starts the running test's clock (fixtures.ts), at `now`. */
59
+ export const testBegins = (now = Date.now()) => {
60
+ running.start = now;
61
+ running.waited = 0;
62
+ };
63
+ /** When a test must end, by Playwright's count: its start, plus the hold waits it isn't charged,
64
+ * plus its timeout; none for a test with no timeout. A hold's server lets a stillness pass while
65
+ * its holders are inside their deadlines; the test moves them as its timeout moves. */
66
+ export const deadlineFrom = (timeout, clock = running) => timeout > 0 ? clock.start + clock.waited + timeout : undefined;
67
+ /** `wait` for a hold, its time added to the running test's waits, which its deadline is past. */
68
+ export const waitedFor = async (wait) => {
69
+ const asked = Date.now();
70
+ try {
71
+ return await wait();
72
+ }
73
+ finally {
74
+ running.waited += Date.now() - asked;
75
+ }
76
+ };
77
+ const holderDeadline = () => {
78
+ try {
79
+ return deadlineFrom(test.info().timeout);
80
+ }
81
+ catch {
82
+ return undefined;
83
+ }
84
+ };
85
+ /** Who asks for a hold, for its server's holder record: the running test, if any, its worker and
86
+ * its process, so a wait past its bound names who held what. */
87
+ const holderName = () => {
88
+ const worker = process.env['TEST_WORKER_INDEX'];
89
+ const where = `${worker === undefined ? '' : `worker ${worker}, `}pid ${String(process.pid)}`;
90
+ try {
91
+ const info = test.info();
92
+ return `${info.project.name} › ${info.title} (${where})`;
93
+ }
94
+ catch {
95
+ return where;
96
+ }
97
+ };
54
98
  /**
55
99
  * Holds a target's stack, shared or owned alone, until the returned release is called: the hold
56
100
  * is an open request, so a worker that dies releases it by closing its connection.
@@ -58,22 +102,18 @@ export const control = async (action, key) => {
58
102
  export const holdStack = async (hold, key) => openHold(new URL(`/${hold}/${encodeURIComponent(key)}`, required(HOST_ENV, 'the stack host starts in the global setup')), {
59
103
  held: `a ${hold} hold on ${key}`,
60
104
  refused: () => `the stack host refused a ${hold} hold on ${key}`,
61
- });
62
- /** A seat among the Linux image's browsers for each context the worker's tests have open at once,
63
- * all taken together and held as a stack hold is, for the worker's life. */
105
+ }, { who: holderName(), deadline: holderDeadline() });
106
+ /** A seat among the Linux image's browsers for each context the test may have open at once, all
107
+ * taken together and held as a stack hold is, for the test's life. */
64
108
  export const holdBrowserSeat = async (contexts) => openHold(new URL(`/browser/${String(contexts)}`, required(HOST_ENV, 'the stack host starts in the global setup')), {
65
109
  held: 'seats among the Linux browsers',
66
110
  refused: (status) => status === 400
67
111
  ? `the Linux browsers seat fewer than the ${String(contexts)} browserContexts declared`
68
112
  : 'the stack host refused seats among the Linux browsers',
69
- });
113
+ }, { who: holderName(), deadline: holderDeadline() });
70
114
  const runTurns = () => required(CPU_GATE_ENV, 'the global setup joins the CPU gate');
71
- const TURN = {
72
- held: 'a CPU turn',
73
- refused: (status) => `the CPU gate refused a turn (${String(status)}): the run has left it, or lost it`,
74
- };
75
115
  /** A CPU turn, until the returned release; an abort gives up a turn still waiting. */
76
- export const holdTurn = async (turns, signal) => openHold(new URL(turns), TURN, signal);
116
+ export const holdTurn = async (turns, signal) => holdCpuTurn(turns, { signal, who: holderName(), deadline: holderDeadline() });
77
117
  /** The running test's CPU turn in this worker, which runs one test at a time. */
78
118
  const worker = { held: undefined };
79
119
  /** One slot, until the returned release. */
@@ -1 +1 @@
1
- {"version":3,"file":"control.js","sourceRoot":"","sources":["../../../../testing/src/stack/control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control.js","sourceRoot":"","sources":["../../../../testing/src/stack/control.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,14 @@ export declare const isAbsent: (error: unknown) => boolean;
11
11
  /** Joins the gate on `port` as a new run, which joins the next under its name should the gate go,
12
12
  * so its tests' turns go on there; `lost` hears why if it can't. */
13
13
  export declare const joinGate: (port?: number, lost?: (reason: unknown) => void) => Promise<Membership>;
14
+ /** A CPU turn at `turns` (a run's, or with `/whole`, every slot), until the returned release; an
15
+ * abort gives up a turn still waiting. */
16
+ export declare const holdCpuTurn: (turns: string, asking: {
17
+ readonly signal?: AbortSignal | undefined;
18
+ readonly who: string;
19
+ readonly deadline?: number | undefined;
20
+ }) => Promise<() => void>;
21
+ /** Runs `work` holding every slot of the CPU gate on `port`, joined for it alone, once the gate's
22
+ * queue reaches it: no other run's tests share the cores while it runs. */
23
+ export declare const inWholeTurn: <Value>(work: () => Promise<Value>, who: string, port?: number) => Promise<Value>;
14
24
  //# sourceMappingURL=gate-member.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gate-member.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/gate-member.ts"],"names":[],"mappings":"AAyBA,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;6EAC6E;AAC7E,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,OAGgD,CAAC;AA2M3F;qEACqE;AACrE,eAAO,MAAM,QAAQ,yBAEZ,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAC/B,OAAO,CAAC,UAAU,CAuBpB,CAAC"}
1
+ {"version":3,"file":"gate-member.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/gate-member.ts"],"names":[],"mappings":"AA8BA,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;6EAC6E;AAC7E,eAAO,MAAM,QAAQ,UAAW,OAAO,KAAG,OAGgD,CAAC;AAkP3F;qEACqE;AACrE,eAAO,MAAM,QAAQ,yBAEZ,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,KAC/B,OAAO,CAAC,UAAU,CAuBpB,CAAC;AASF;2CAC2C;AAC3C,eAAO,MAAM,WAAW,UACf,MAAM,UACL;IACN,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,KACA,OAAO,CAAC,MAAM,IAAI,CAA2C,CAAC;AAEjE;4EAC4E;AAC5E,eAAO,MAAM,WAAW,GAAU,KAAK,QAC/B,MAAM,OAAO,CAAC,KAAK,CAAC,OACrB,MAAM,oBAEV,OAAO,CAAC,KAAK,CAYf,CAAC"}
@@ -2,7 +2,7 @@ import { spawn } from 'node:child_process';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { once } from 'node:events';
4
4
  import { createServer, request, } from 'node:http';
5
- import { GATE_MARK, GATE_PORT, GATE_SCRIPT, GATE_VERSION, holdOpen, LAUNCH, SERVES, TAKEN, WHOLE, } from './gate-server.js';
5
+ import { answerDeadline, answerHolders, GATE_MARK, GATE_PORT, GATE_SCRIPT, GATE_VERSION, deadlineOf, holderOf, holdIdOf, holdOpen, LAUNCH, SERVES, TAKEN, WHOLE, } from './gate-server.js';
6
6
  import { openHold, statusOf } from './hold.js';
7
7
  /** A gate not there, or closing as the join reaches it (refused, reset, or EPIPE mid-write): each
8
8
  * is answered by starting a gate, as a gate closes its port as it stops. */
@@ -137,7 +137,8 @@ const turnAtGate = async (held, asked, gone) => {
137
137
  },
138
138
  };
139
139
  try {
140
- return await openHold(url, kind, gone);
140
+ const { who, deadline, id } = asked;
141
+ return await openHold(url, kind, { signal: gone, who, deadline, id });
141
142
  }
142
143
  catch (error) {
143
144
  if (held.left || !notYet(error)) {
@@ -147,17 +148,52 @@ const turnAtGate = async (held, asked, gone) => {
147
148
  return turnAtGate(held, asked, gone);
148
149
  }
149
150
  };
151
+ /** A turn's moved deadline, passed on to the gate the turn is held at, which a gate too old to
152
+ * know the route refuses: the turn keeps the deadline it was asked with. */
153
+ const passDeadline = (port, path) => {
154
+ const call = request(`http://127.0.0.1:${String(port)}${path}`, { method: 'POST' }, (answer) => {
155
+ answer.resume();
156
+ });
157
+ call.once('error', () => {
158
+ // A gate gone: there is no turn there to move.
159
+ });
160
+ call.end();
161
+ };
150
162
  /** Serves the run's turns to its holders, in this process or its workers, at a local URL; the
151
163
  * server lets the process end, and stops taking turns as the run leaves. */
152
164
  const serveTurns = async (held) => {
153
165
  const server = createServer({ requestTimeout: 0 }, (incoming, holder) => {
154
166
  incoming.resume();
155
- const asked = { whole: incoming.url === `/cpu/${WHOLE}`, holder };
167
+ const path = incoming.url ?? '';
168
+ if (path === '/holders') {
169
+ answerHolders(holder);
170
+ return;
171
+ }
172
+ if (path.startsWith('/deadline/')) {
173
+ const parts = path.split('/');
174
+ answerDeadline(holder, parts[2] ?? '', parts[3] ?? '');
175
+ passDeadline(held.port, path);
176
+ return;
177
+ }
178
+ const asked = {
179
+ whole: path === `/cpu/${WHOLE}`,
180
+ holder,
181
+ who: holderOf(incoming),
182
+ deadline: deadlineOf(incoming),
183
+ id: holdIdOf(incoming),
184
+ };
156
185
  const turn = { release: () => undefined };
157
- holdOpen(holder, async (gone) => {
158
- turn.release = await turnAtGate(held, asked, gone);
159
- }, () => {
160
- turn.release();
186
+ holdOpen(holder, {
187
+ take: async (gone) => {
188
+ turn.release = await turnAtGate(held, asked, gone);
189
+ },
190
+ give: () => {
191
+ turn.release();
192
+ },
193
+ what: asked.whole ? 'every CPU slot' : 'a CPU turn',
194
+ who: asked.who,
195
+ deadline: asked.deadline,
196
+ id: asked.id,
161
197
  });
162
198
  });
163
199
  server.listen(0, '127.0.0.1');
@@ -195,4 +231,29 @@ export const joinGate = async (port = GATE_PORT, lost) => {
195
231
  },
196
232
  };
197
233
  };
234
+ /** What a CPU turn is called, and what a refusal of one says. */
235
+ const TURN = {
236
+ held: 'a CPU turn',
237
+ refused: (status) => `the CPU gate refused a turn (${String(status)}): the run has left it, or lost it`,
238
+ };
239
+ /** A CPU turn at `turns` (a run's, or with `/whole`, every slot), until the returned release; an
240
+ * abort gives up a turn still waiting. */
241
+ export const holdCpuTurn = async (turns, asking) => openHold(new URL(turns), TURN, asking);
242
+ /** Runs `work` holding every slot of the CPU gate on `port`, joined for it alone, once the gate's
243
+ * queue reaches it: no other run's tests share the cores while it runs. */
244
+ export const inWholeTurn = async (work, who, port = GATE_PORT) => {
245
+ const gate = await joinGate(port);
246
+ try {
247
+ const release = await holdCpuTurn(`${gate.turns}/${WHOLE}`, { who });
248
+ try {
249
+ return await work();
250
+ }
251
+ finally {
252
+ release();
253
+ }
254
+ }
255
+ finally {
256
+ gate.leave();
257
+ }
258
+ };
198
259
  //# sourceMappingURL=gate-member.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gate-member.js","sourceRoot":"","sources":["../../../../testing/src/stack/gate-member.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate-member.js","sourceRoot":"","sources":["../../../../testing/src/stack/gate-member.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { type ServerResponse } from 'node:http';
1
+ import { type IncomingMessage, type ServerResponse } from 'node:http';
2
+ import { type Stillness, type Watch } from './stall.ts';
2
3
  /** The fixed local port the machine's one CPU gate listens on: every run finds it there. */
3
4
  export declare const GATE_PORT = 47391;
4
5
  /** The header the gate answers a join with, so a run never joins some other server. */
@@ -13,17 +14,49 @@ export declare const LAUNCH = "launch";
13
14
  export declare const SLOTS: number;
14
15
  /** The last segment of a turn's path that asks for every slot: a measurement load would skew. */
15
16
  export declare const WHOLE = "whole";
17
+ /** A hold a server serves: how it is taken and given back, what it is, who asked for it and by
18
+ * when their test must end, and the watch over its resource's waits, which counts its holders. */
19
+ export interface Served {
20
+ readonly take: (gone: AbortSignal) => Promise<void>;
21
+ readonly give: () => void;
22
+ readonly what: string;
23
+ readonly who: string;
24
+ readonly deadline?: number | undefined;
25
+ readonly watch?: Watch;
26
+ readonly id?: string | undefined;
27
+ }
28
+ /** The deadline a request gives its holder's test, or none. */
29
+ export declare const deadlineOf: (incoming: IncomingMessage) => number | undefined;
30
+ /** The id a hold's request gives itself, or none. */
31
+ export declare const holdIdOf: (incoming: IncomingMessage) => string | undefined;
32
+ /** Moves the deadline of the hold `id` names to `given`, epoch milliseconds or none at all, as
33
+ * its test's timeout moved: 204, or 404 for a hold this process doesn't serve. A request names
34
+ * only an entry of the table: an id of another shape is looked up nowhere. */
35
+ export declare const answerDeadline: (outgoing: ServerResponse, id: string, given: string) => void;
36
+ /** The holder a request names, decoded, or as sent where it isn't URI-encoded; or that it named
37
+ * none. */
38
+ export declare const holderOf: (incoming: IncomingMessage) => string;
39
+ /** This process's holdings, each named as GET /holders gives it: what, by whom, for how long. */
40
+ export declare const holdingsNamed: () => string;
41
+ /** Answers a GET /holders with this process's holdings, as JSON. */
42
+ export declare const answerHolders: (outgoing: ServerResponse) => void;
16
43
  /** A hold (a stack lock, a CPU turn) lasts as long as its request stays open: granted with the
17
44
  * response head, given back when the caller closes it, however its worker ends. */
18
- export declare const holdOpen: (outgoing: ServerResponse, take: (gone: AbortSignal) => Promise<void>, give: () => void) => void;
45
+ export declare const holdOpen: (outgoing: ServerResponse, served: Served) => void;
19
46
  export interface Semaphore {
20
47
  readonly take: (run: string, slots: number, gone: AbortSignal) => Promise<void>;
21
48
  readonly give: (slots: number) => void;
22
49
  readonly refuse: (run: string) => void;
50
+ /** The watch over its waits, which a server counts each holder in. */
51
+ readonly watch: Watch;
23
52
  }
24
53
  /** The slots, first come, first served, so a whole-machine turn is never starved. A set keeps the
25
- * order with O(1) removal. */
26
- export declare const semaphore: (slots: number) => Semaphore;
54
+ * order with O(1) removal. A wait fails once no slot has changed hands for the stillness's stall,
55
+ * saying `what` stood still. */
56
+ export declare const semaphore: (slots: number, { stillness, what }?: {
57
+ stillness?: Stillness;
58
+ what?: string;
59
+ }) => Semaphore;
27
60
  /** A running gate: its members, the starter's hold among them until it lets go. */
28
61
  export interface Gate {
29
62
  readonly hold: (run: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"gate-server.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/gate-server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmD,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjG,4FAA4F;AAC5F,eAAO,MAAM,SAAS,QAAS,CAAC;AAEhC,uFAAuF;AACvF,eAAO,MAAM,SAAS,qBAAqB,CAAC;AAE5C,8FAA8F;AAC9F,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,mFAAmF;AACnF,eAAO,MAAM,WAAW,QAAuB,CAAC;AAEhD,8EAA8E;AAC9E,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,2EAA2E;AAC3E,eAAO,MAAM,KAAK,QAAyB,CAAC;AAE5C,iGAAiG;AACjG,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B;oFACoF;AACpF,eAAO,MAAM,QAAQ,aACT,cAAc,QAClB,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,QACpC,MAAM,IAAI,KACf,IAsBF,CAAC;AASF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAgDD;+BAC+B;AAC/B,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,SAiBzC,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AA8FD,eAAO,MAAM,SAAS,SAAgB,MAAM,qBAAkB,OAAO,CAAC,IAAI,GAAG,SAAS,CAIrF,CAAC;AAEF;oDACoD;AACpD,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC"}
1
+ {"version":3,"file":"gate-server.d.ts","sourceRoot":"","sources":["../../../../testing/src/stack/gate-server.ts"],"names":[],"mappings":"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"}