skuba 4.2.1-beta.0 → 4.2.1

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 (55) hide show
  1. package/README.md +1 -1
  2. package/lib/api/jest/index.d.ts +26 -11
  3. package/lib/cli/adapter/eslint.d.ts +2 -1
  4. package/lib/cli/adapter/eslint.js +5 -1
  5. package/lib/cli/adapter/eslint.js.map +1 -1
  6. package/lib/cli/lint/annotate/buildkite/index.js.map +1 -1
  7. package/lib/cli/lint/autofix.d.ts +7 -1
  8. package/lib/cli/lint/autofix.js +14 -7
  9. package/lib/cli/lint/autofix.js.map +1 -1
  10. package/lib/cli/lint/external.js +16 -16
  11. package/lib/cli/lint/external.js.map +1 -1
  12. package/lib/cli/test/reporters/github/index.d.ts +2 -2
  13. package/lib/cli/test/reporters/github/index.js +11 -1
  14. package/lib/cli/test/reporters/github/index.js.map +1 -1
  15. package/lib/utils/args.js +1 -1
  16. package/lib/utils/args.js.map +1 -1
  17. package/lib/utils/error.d.ts +14 -0
  18. package/lib/utils/error.js +14 -1
  19. package/lib/utils/error.js.map +1 -1
  20. package/lib/utils/version.js +3 -4
  21. package/lib/utils/version.js.map +1 -1
  22. package/lib/utils/wait.d.ts +17 -0
  23. package/lib/utils/wait.js +32 -0
  24. package/lib/utils/wait.js.map +1 -0
  25. package/package.json +18 -19
  26. package/template/express-rest-api/.buildkite/pipeline.yml +2 -1
  27. package/template/greeter/.buildkite/pipeline.yml +2 -1
  28. package/template/koa-rest-api/.buildkite/pipeline.yml +2 -1
  29. package/template/koa-rest-api/package.json +5 -5
  30. package/template/koa-rest-api/src/api/jobs/getJobs.ts +2 -2
  31. package/template/koa-rest-api/src/api/jobs/postJob.ts +2 -2
  32. package/template/koa-rest-api/src/framework/logging.ts +8 -5
  33. package/template/koa-rest-api/src/framework/metrics.ts +2 -2
  34. package/template/koa-rest-api/src/framework/server.test.ts +21 -21
  35. package/template/koa-rest-api/src/framework/server.ts +4 -3
  36. package/template/koa-rest-api/src/listen.ts +2 -2
  37. package/template/koa-rest-api/src/testing/logging.ts +5 -20
  38. package/template/lambda-sqs-worker/.buildkite/pipeline.yml +2 -1
  39. package/template/lambda-sqs-worker/.nvmrc +1 -1
  40. package/template/lambda-sqs-worker/Dockerfile +1 -1
  41. package/template/lambda-sqs-worker/package.json +4 -4
  42. package/template/lambda-sqs-worker/serverless.yml +2 -2
  43. package/template/lambda-sqs-worker/src/app.test.ts +9 -9
  44. package/template/lambda-sqs-worker/src/app.ts +2 -1
  45. package/template/lambda-sqs-worker/src/framework/handler.test.ts +10 -10
  46. package/template/lambda-sqs-worker/src/framework/handler.ts +14 -17
  47. package/template/lambda-sqs-worker/src/framework/logging.ts +11 -6
  48. package/template/lambda-sqs-worker/src/testing/logging.ts +7 -5
  49. package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +2 -1
  50. package/template/lambda-sqs-worker-cdk/.nvmrc +1 -1
  51. package/template/lambda-sqs-worker-cdk/Dockerfile +1 -1
  52. package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +2 -2
  53. package/template/lambda-sqs-worker-cdk/infra/appStack.ts +1 -1
  54. package/template/lambda-sqs-worker-cdk/package.json +9 -11
  55. package/template/private-npm-package/.buildkite/pipeline.yml +1 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![GitHub Release](https://github.com/seek-oss/skuba/workflows/Release/badge.svg?branch=master)](https://github.com/seek-oss/skuba/actions?query=workflow%3ARelease)
6
6
  [![GitHub Validate](https://github.com/seek-oss/skuba/workflows/Validate/badge.svg?branch=master)](https://github.com/seek-oss/skuba/actions?query=workflow%3AValidate)
7
- [![Node.js version](https://img.shields.io/badge/node-%3E%3D%2012-brightgreen)](https://nodejs.org/en/)
7
+ [![Node.js version](https://img.shields.io/badge/node-%3E%3D%2014.18-brightgreen)](https://nodejs.org/en/)
8
8
  [![npm package](https://img.shields.io/npm/v/skuba)](https://www.npmjs.com/package/skuba)
9
9
 
10
10
  ---
@@ -11,7 +11,7 @@ declare type DefaultOptions = 'collectCoverage' | 'collectCoverageFrom' | 'colle
11
11
  *
12
12
  * This concatenates array options like `testPathIgnorePatterns`.
13
13
  */
14
- export declare const mergePreset: <AdditionalOptions extends "filter" | "json" | "silent" | "name" | "cache" | "runner" | "projects" | "timers" | "rootDir" | "automock" | "bail" | "cacheDirectory" | "ci" | "clearMocks" | "changedFilesWithAncestor" | "changedSince" | "collectCoverage" | "collectCoverageFrom" | "collectCoverageOnlyFrom" | "coverageDirectory" | "coveragePathIgnorePatterns" | "coverageProvider" | "coverageReporters" | "coverageThreshold" | "dependencyExtractor" | "detectLeaks" | "detectOpenHandles" | "displayName" | "expand" | "extensionsToTreatAsEsm" | "extraGlobals" | "findRelatedTests" | "forceCoverageMatch" | "forceExit" | "globals" | "globalSetup" | "globalTeardown" | "haste" | "injectGlobals" | "reporters" | "logHeapUsage" | "lastCommit" | "listTests" | "maxConcurrency" | "maxWorkers" | "moduleDirectories" | "moduleFileExtensions" | "moduleLoader" | "moduleNameMapper" | "modulePathIgnorePatterns" | "modulePaths" | "noStackTrace" | "notify" | "notifyMode" | "onlyChanged" | "onlyFailures" | "outputFile" | "passWithNoTests" | "preprocessorIgnorePatterns" | "preset" | "prettierPath" | "replname" | "resetMocks" | "resetModules" | "resolver" | "restoreMocks" | "roots" | "runTestsByPath" | "scriptPreprocessor" | "setupFiles" | "setupTestFrameworkScriptFile" | "setupFilesAfterEnv" | "skipFilter" | "skipNodeResolution" | "slowTestThreshold" | "snapshotResolver" | "snapshotSerializers" | "snapshotFormat" | "errorOnDeprecated" | "testEnvironment" | "testEnvironmentOptions" | "testFailureExitCode" | "testLocationInResults" | "testMatch" | "testNamePattern" | "testPathDirs" | "testPathIgnorePatterns" | "testRegex" | "testResultsProcessor" | "testRunner" | "testSequencer" | "testURL" | "testTimeout" | "transform" | "transformIgnorePatterns" | "watchPathIgnorePatterns" | "unmockedModulePathPatterns" | "updateSnapshot" | "useStderr" | "verbose" | "watch" | "watchAll" | "watchman" | "watchPlugins">(options: Pick<Partial<{
14
+ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" | "silent" | "cache" | "runner" | "projects" | "id" | "automock" | "cacheDirectory" | "clearMocks" | "coveragePathIgnorePatterns" | "dependencyExtractor" | "detectLeaks" | "detectOpenHandles" | "displayName" | "errorOnDeprecated" | "extensionsToTreatAsEsm" | "fakeTimers" | "forceCoverageMatch" | "globalSetup" | "globalTeardown" | "globals" | "haste" | "injectGlobals" | "moduleDirectories" | "moduleFileExtensions" | "moduleNameMapper" | "modulePathIgnorePatterns" | "modulePaths" | "prettierPath" | "resetMocks" | "resetModules" | "resolver" | "restoreMocks" | "rootDir" | "roots" | "runtime" | "sandboxInjectedGlobals" | "setupFiles" | "setupFilesAfterEnv" | "skipFilter" | "skipNodeResolution" | "slowTestThreshold" | "snapshotResolver" | "snapshotSerializers" | "snapshotFormat" | "testEnvironment" | "testEnvironmentOptions" | "testMatch" | "testLocationInResults" | "testPathIgnorePatterns" | "testRegex" | "testRunner" | "transform" | "transformIgnorePatterns" | "watchPathIgnorePatterns" | "unmockedModulePathPatterns" | "bail" | "ci" | "changedFilesWithAncestor" | "changedSince" | "collectCoverage" | "collectCoverageFrom" | "collectCoverageOnlyFrom" | "coverageDirectory" | "coverageProvider" | "coverageReporters" | "coverageThreshold" | "expand" | "findRelatedTests" | "forceExit" | "reporters" | "logHeapUsage" | "lastCommit" | "listTests" | "maxConcurrency" | "maxWorkers" | "noStackTrace" | "notify" | "notifyMode" | "onlyChanged" | "onlyFailures" | "outputFile" | "passWithNoTests" | "preset" | "replname" | "runTestsByPath" | "testFailureExitCode" | "testNamePattern" | "testResultsProcessor" | "testSequencer" | "testTimeout" | "updateSnapshot" | "useStderr" | "verbose" | "watch" | "watchAll" | "watchman" | "watchPlugins">(options: Pick<Partial<{
15
15
  automock: boolean;
16
16
  bail: number | boolean;
17
17
  cache: boolean;
@@ -39,7 +39,9 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
39
39
  displayName: string | Config.DisplayName;
40
40
  expand: boolean;
41
41
  extensionsToTreatAsEsm: string[];
42
- extraGlobals: string[];
42
+ fakeTimers: Config.GlobalFakeTimersConfig & ((Config.FakeTimersConfig & {
43
+ now?: number | undefined;
44
+ }) | Config.LegacyFakeTimersConfig);
43
45
  filter: string;
44
46
  findRelatedTests: boolean;
45
47
  forceCoverageMatch: string[];
@@ -49,6 +51,7 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
49
51
  globalSetup: string | null | undefined;
50
52
  globalTeardown: string | null | undefined;
51
53
  haste: Config.HasteConfig;
54
+ id: string;
52
55
  injectGlobals: boolean;
53
56
  reporters: (string | Config.ReporterConfig)[];
54
57
  logHeapUsage: boolean;
@@ -58,13 +61,11 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
58
61
  maxWorkers: string | number;
59
62
  moduleDirectories: string[];
60
63
  moduleFileExtensions: string[];
61
- moduleLoader: string;
62
64
  moduleNameMapper: {
63
65
  [key: string]: string | string[];
64
66
  };
65
67
  modulePathIgnorePatterns: string[];
66
68
  modulePaths: string[];
67
- name: string;
68
69
  noStackTrace: boolean;
69
70
  notify: boolean;
70
71
  notifyMode: string;
@@ -72,7 +73,6 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
72
73
  onlyFailures: boolean;
73
74
  outputFile: string;
74
75
  passWithNoTests: boolean;
75
- preprocessorIgnorePatterns: string[];
76
76
  preset: string | null | undefined;
77
77
  prettierPath: string | null | undefined;
78
78
  projects: (string | Config.InitialProjectOptions)[];
@@ -85,9 +85,9 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
85
85
  roots: string[];
86
86
  runner: string;
87
87
  runTestsByPath: boolean;
88
- scriptPreprocessor: string;
88
+ runtime: string;
89
+ sandboxInjectedGlobals: string[];
89
90
  setupFiles: string[];
90
- setupTestFrameworkScriptFile: string;
91
91
  setupFilesAfterEnv: string[];
92
92
  silent: boolean;
93
93
  skipFilter: boolean;
@@ -95,7 +95,25 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
95
95
  slowTestThreshold: number;
96
96
  snapshotResolver: string;
97
97
  snapshotSerializers: string[];
98
- snapshotFormat: Config.PrettyFormatOptions;
98
+ snapshotFormat: {
99
+ readonly callToJSON?: boolean | undefined;
100
+ readonly escapeRegex?: boolean | undefined;
101
+ readonly escapeString?: boolean | undefined;
102
+ readonly highlight?: boolean | undefined;
103
+ readonly indent?: number | undefined;
104
+ readonly maxDepth?: number | undefined;
105
+ readonly maxWidth?: number | undefined;
106
+ readonly min?: boolean | undefined;
107
+ readonly printBasicPrototype?: boolean | undefined;
108
+ readonly printFunctionName?: boolean | undefined;
109
+ readonly theme?: {
110
+ readonly value?: string | undefined;
111
+ readonly tag?: string | undefined;
112
+ readonly content?: string | undefined;
113
+ readonly comment?: string | undefined;
114
+ readonly prop?: string | undefined;
115
+ } | undefined;
116
+ };
99
117
  errorOnDeprecated: boolean;
100
118
  testEnvironment: string;
101
119
  testEnvironmentOptions: Record<string, unknown>;
@@ -103,15 +121,12 @@ export declare const mergePreset: <AdditionalOptions extends "filter" | "json" |
103
121
  testLocationInResults: boolean;
104
122
  testMatch: string[];
105
123
  testNamePattern: string;
106
- testPathDirs: string[];
107
124
  testPathIgnorePatterns: string[];
108
125
  testRegex: string | string[];
109
126
  testResultsProcessor: string;
110
127
  testRunner: string;
111
128
  testSequencer: string;
112
- testURL: string;
113
129
  testTimeout: number;
114
- timers: "real" | "fake" | "modern" | "legacy";
115
130
  transform: {
116
131
  [regex: string]: string | Config.TransformerConfig;
117
132
  };
@@ -6,8 +6,9 @@ export interface ESLintResult {
6
6
  }
7
7
  export interface ESLintOutput {
8
8
  errors: ESLintResult[];
9
- warnings: ESLintResult[];
9
+ fixable: boolean;
10
10
  ok: boolean;
11
11
  output: string;
12
+ warnings: ESLintResult[];
12
13
  }
13
14
  export declare const runESLint: (mode: 'format' | 'lint', logger: Logger) => Promise<ESLintOutput>;
@@ -48,8 +48,12 @@ const runESLint = async (mode, logger) => {
48
48
  logger.plain(`Processed ${(0, logging_1.pluralise)(results.length, 'file')} in ${logger.timing(start, end)}.`);
49
49
  const errors = [];
50
50
  const warnings = [];
51
+ let fixable = false;
51
52
  for (const result of results) {
52
53
  const relativePath = path_1.default.relative(cwd, result.filePath);
54
+ if (result.fixableErrorCount + result.fixableWarningCount) {
55
+ fixable = true;
56
+ }
53
57
  if (result.errorCount) {
54
58
  errors.push({
55
59
  filePath: relativePath,
@@ -70,7 +74,7 @@ const runESLint = async (mode, logger) => {
70
74
  if (output) {
71
75
  logger.plain(output);
72
76
  }
73
- return { ok, output, errors, warnings };
77
+ return { errors, fixable, ok, output, warnings };
74
78
  };
75
79
  exports.runESLint = runESLint;
76
80
  //# sourceMappingURL=eslint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/buildkite/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuD;AAKvD,qCAAmD;AACnD,yCAAuD;AACvD,+BAA6C;AAEtC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,MAAoB,EACpB,QAAwB,EACxB,KAAc,EACd,eAAkC,EACnB,EAAE;IACjB,IAAI,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE;QACrC,OAAO;KACR;IAED,MAAM,eAAe,GAAW;QAC9B,gDAAgD;QAChD,GAAG,IAAA,gCAAuB,EAAC,MAAM,CAAC;QAClC,GAAG,IAAA,oCAAyB,EAAC,QAAQ,CAAC;QACtC,GAAG,IAAA,0BAAoB,EAAC,KAAK,EAAE,eAAe,CAAC;KAChD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,MAAM,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE;QACxC,OAAO,EAAE,qBAAqB;QAC9B,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,0BAA0B,8BAsBrC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/lint/annotate/buildkite/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuD;AAKvD,qCAAmD;AACnD,yCAAuD;AACvD,+BAA6C;AAEtC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,MAAoB,EACpB,QAAwB,EACxB,KAAc,EACd,eAAkC,EACnB,EAAE;IACjB,IAAI,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAK,EAAE;QACrC,OAAO;KACR;IAED,MAAM,eAAe,GAAG;QACtB,gDAAgD;QAChD,GAAG,IAAA,gCAAuB,EAAC,MAAM,CAAC;QAClC,GAAG,IAAA,oCAAyB,EAAC,QAAQ,CAAC;QACtC,GAAG,IAAA,0BAAoB,EAAC,KAAK,EAAE,eAAe,CAAC;KAChD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,MAAM,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE;QACxC,OAAO,EAAE,qBAAqB;QAC9B,kBAAkB,EAAE,IAAI;QACxB,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,0BAA0B,8BAsBrC"}
@@ -1,2 +1,8 @@
1
1
  import type { Input } from './types';
2
- export declare const autofix: (input: Pick<Input, 'debug'>) => Promise<void>;
2
+ interface AutofixParameters {
3
+ debug: Input['debug'];
4
+ eslint: boolean;
5
+ prettier: boolean;
6
+ }
7
+ export declare const autofix: (params: AutofixParameters) => Promise<void>;
8
+ export {};
@@ -34,6 +34,7 @@ const eslint_1 = require("../../cli/adapter/eslint");
34
34
  const prettier_1 = require("../../cli/adapter/prettier");
35
35
  const env_1 = require("../../utils/env");
36
36
  const logging_1 = require("../../utils/logging");
37
+ const wait_1 = require("../../utils/wait");
37
38
  const AUTOFIX_COMMIT_MESSAGE = 'Run `skuba format`';
38
39
  const shouldPush = async ({ currentBranch, dir, }) => {
39
40
  if (!(0, env_1.isCiEnv)()) {
@@ -63,7 +64,10 @@ const shouldPush = async ({ currentBranch, dir, }) => {
63
64
  // Allow the push attempt to go ahead if our guards have been cleared.
64
65
  return true;
65
66
  };
66
- const autofix = async (input) => {
67
+ const autofix = async (params) => {
68
+ if (!params.eslint && !params.prettier) {
69
+ return;
70
+ }
67
71
  const dir = process.cwd();
68
72
  let currentBranch;
69
73
  try {
@@ -73,12 +77,15 @@ const autofix = async (input) => {
73
77
  if (!(await shouldPush({ currentBranch, dir }))) {
74
78
  return;
75
79
  }
76
- // Naively try to autofix issues as we can't tell from ESLint output.
77
80
  try {
78
81
  logging_1.log.newline();
79
- logging_1.log.warn(`Trying to autofix with ESLint and Prettier...`);
80
- const logger = (0, logging_1.createLogger)(input.debug);
81
- await (0, eslint_1.runESLint)('format', logger);
82
+ logging_1.log.warn(`Trying to autofix with ${params.eslint ? 'ESLint and ' : ''}Prettier...`);
83
+ const logger = (0, logging_1.createLogger)(params.debug);
84
+ if (params.eslint) {
85
+ await (0, eslint_1.runESLint)('format', logger);
86
+ }
87
+ // Unconditionally re-run Prettier; reaching here means we have pre-existing
88
+ // format violations or may have created new ones through ESLint fixes.
82
89
  await (0, prettier_1.runPrettier)('format', logger);
83
90
  const ref = await Git.commitAllChanges({
84
91
  dir,
@@ -87,7 +94,7 @@ const autofix = async (input) => {
87
94
  if (!ref) {
88
95
  return logging_1.log.warn('No autofixes detected.');
89
96
  }
90
- await (process.env.GITHUB_ACTIONS
97
+ await (0, wait_1.throwOnTimeout)(process.env.GITHUB_ACTIONS
91
98
  ? // GitHub's checkout action should preconfigure the Git CLI.
92
99
  (0, simple_git_1.default)().push()
93
100
  : // In other CI environments (Buildkite) we fall back to GitHub App auth.
@@ -96,7 +103,7 @@ const autofix = async (input) => {
96
103
  dir: process.cwd(),
97
104
  ref,
98
105
  remoteRef: currentBranch,
99
- }));
106
+ }), { s: 30 });
100
107
  logging_1.log.warn(`Pushed fix commit ${ref}.`);
101
108
  }
102
109
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"autofix.js","sourceRoot":"","sources":["../../../src/cli/lint/autofix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autofix.js","sourceRoot":"","sources":["../../../src/cli/lint/autofix.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ exports.externalLint = exports.StreamInterceptor = void 0;
7
7
  const stream_1 = __importDefault(require("stream"));
8
8
  const util_1 = require("util");
9
9
  const logging_1 = require("../../utils/logging");
10
+ const wait_1 = require("../../utils/wait");
10
11
  const annotate_1 = require("./annotate");
11
12
  const autofix_1 = require("./autofix");
12
13
  const eslint_1 = require("./eslint");
@@ -68,28 +69,27 @@ const externalLint = async (input) => {
68
69
  tscOutputStream.pipe(input.tscOutputStream ?? process.stdout);
69
70
  const { eslint, prettier, tscOk } = await lint({ ...input, tscOutputStream });
70
71
  try {
71
- await (0, annotate_1.createAnnotations)(eslint, prettier, tscOk, tscOutputStream);
72
+ await (0, wait_1.throwOnTimeout)((0, annotate_1.createAnnotations)(eslint, prettier, tscOk, tscOutputStream), { s: 30 });
72
73
  }
73
74
  catch (err) {
74
75
  logging_1.log.warn('Failed to annotate lint results.');
75
76
  logging_1.log.subtle((0, util_1.inspect)(err));
76
77
  }
77
- if (eslint.ok && prettier.ok && tscOk) {
78
- return;
78
+ if (!eslint.ok || !prettier.ok || !tscOk) {
79
+ const tools = [
80
+ ...(eslint.ok ? [] : ['ESLint']),
81
+ ...(prettier.ok ? [] : ['Prettier']),
82
+ ...(tscOk ? [] : ['tsc']),
83
+ ];
84
+ logging_1.log.newline();
85
+ logging_1.log.err(`${tools.join(', ')} found issues that require triage.`);
86
+ process.exitCode = 1;
79
87
  }
80
- const tools = [
81
- ...(eslint.ok ? [] : ['ESLint']),
82
- ...(prettier.ok ? [] : ['Prettier']),
83
- ...(tscOk ? [] : ['tsc']),
84
- ];
85
- logging_1.log.newline();
86
- logging_1.log.err(`${tools.join(', ')} found issues that require triage.`);
87
- process.exitCode = 1;
88
- if (eslint.ok && prettier.ok) {
89
- // If these are fine then the issue lies with tsc, which we can't autofix.
90
- return;
91
- }
92
- await (0, autofix_1.autofix)(input);
88
+ await (0, autofix_1.autofix)({
89
+ debug: input.debug,
90
+ eslint: eslint.fixable,
91
+ prettier: !prettier.ok,
92
+ });
93
93
  };
94
94
  exports.externalLint = externalLint;
95
95
  //# sourceMappingURL=external.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cli/lint/external.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/cli/lint/external.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { Context, Reporter } from '@jest/reporters';
1
+ import type { Reporter, TestContext } from '@jest/reporters';
2
2
  import type { AggregatedResult } from '@jest/test-result';
3
3
  export default class GitHubReporter implements Pick<Reporter, 'onRunComplete'> {
4
- onRunComplete(_contexts: Set<Context>, { testResults }: AggregatedResult): Promise<void>;
4
+ onRunComplete(_contexts: Set<TestContext>, { testResults }: AggregatedResult): Promise<void>;
5
5
  }
@@ -27,12 +27,14 @@ const util_1 = require("util");
27
27
  const GitHub = __importStar(require("../../../../api/github"));
28
28
  const environment_1 = require("../../../../api/github/environment");
29
29
  const logging_1 = require("../../../../utils/logging");
30
+ const wait_1 = require("../../../../utils/wait");
30
31
  const annotations_1 = require("./annotations");
31
32
  class GitHubReporter {
32
33
  async onRunComplete(_contexts, { testResults }) {
33
34
  if (!(0, environment_1.enabledFromEnvironment)()) {
34
35
  return;
35
36
  }
37
+ let lastCheckRun;
36
38
  try {
37
39
  const entries = (0, annotations_1.generateAnnotationEntries)(testResults);
38
40
  const build = (0, environment_1.buildNameFromEnvironment)();
@@ -44,18 +46,26 @@ class GitHubReporter {
44
46
  const summary = isOk
45
47
  ? '`skuba test` passed.'
46
48
  : '`skuba test` found issues that require triage.';
47
- await GitHub.createCheckRun({
49
+ const checkRun = {
48
50
  name,
49
51
  annotations,
50
52
  conclusion: isOk ? 'success' : 'failure',
51
53
  summary,
52
54
  title: `${build} ${isOk ? 'passed' : 'failed'}`,
55
+ };
56
+ lastCheckRun = checkRun;
57
+ await (0, wait_1.throwOnTimeout)(GitHub.createCheckRun(checkRun), {
58
+ s: 30,
53
59
  });
54
60
  }
55
61
  }
56
62
  catch (err) {
57
63
  logging_1.log.warn('Failed to report test results to GitHub.');
58
64
  logging_1.log.subtle((0, util_1.inspect)(err));
65
+ if (lastCheckRun) {
66
+ logging_1.log.subtle('Last request:');
67
+ logging_1.log.subtle(JSON.stringify(lastCheckRun));
68
+ }
59
69
  }
60
70
  }
61
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/test/reporters/github/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA+B;AAK/B,+DAAiD;AACjD,oEAG4C;AAC5C,uDAAgD;AAEhD,+CAA0D;AAE1D,MAAqB,cAAc;IACjC,KAAK,CAAC,aAAa,CACjB,SAAuB,EACvB,EAAE,WAAW,EAAoB;QAEjC,IAAI,CAAC,IAAA,oCAAsB,GAAE,EAAE;YAC7B,OAAO;SACR;QAED,IAAI;YACF,MAAM,OAAO,GAAG,IAAA,uCAAyB,EAAC,WAAW,CAAC,CAAC;YAEvD,MAAM,KAAK,GAAG,IAAA,sCAAwB,GAAE,CAAC;YAEzC,uCAAuC;YACvC,0EAA0E;YAC1E,KAAK,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,OAAO,EAAE;gBAClD,MAAM,IAAI,GAAG,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAEnE,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBAEjC,MAAM,OAAO,GAAG,IAAI;oBAClB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,gDAAgD,CAAC;gBAErD,MAAM,MAAM,CAAC,cAAc,CAAC;oBAC1B,IAAI;oBACJ,WAAW;oBACX,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACxC,OAAO;oBACP,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAChD,CAAC,CAAC;aACJ;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,aAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACrD,aAAG,CAAC,MAAM,CAAC,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC,CAAC;SAC1B;IACH,CAAC;CACF;AAtCD,iCAsCC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/test/reporters/github/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA+B;AAK/B,+DAAiD;AACjD,oEAG4C;AAC5C,uDAAgD;AAChD,iDAAwD;AAExD,+CAA0D;AAE1D,MAAqB,cAAc;IACjC,KAAK,CAAC,aAAa,CACjB,SAA2B,EAC3B,EAAE,WAAW,EAAoB;QAEjC,IAAI,CAAC,IAAA,oCAAsB,GAAE,EAAE;YAC7B,OAAO;SACR;QAID,IAAI,YAAkC,CAAC;QAEvC,IAAI;YACF,MAAM,OAAO,GAAG,IAAA,uCAAyB,EAAC,WAAW,CAAC,CAAC;YAEvD,MAAM,KAAK,GAAG,IAAA,sCAAwB,GAAE,CAAC;YAEzC,uCAAuC;YACvC,0EAA0E;YAC1E,KAAK,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,OAAO,EAAE;gBAClD,MAAM,IAAI,GAAG,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAEnE,MAAM,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;gBAEjC,MAAM,OAAO,GAAG,IAAI;oBAClB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,gDAAgD,CAAC;gBAErD,MAAM,QAAQ,GAAa;oBACzB,IAAI;oBACJ,WAAW;oBACX,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBACxC,OAAO;oBACP,KAAK,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;iBAChD,CAAC;gBAEF,YAAY,GAAG,QAAQ,CAAC;gBAExB,MAAM,IAAA,qBAAc,EAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;oBACpD,CAAC,EAAE,EAAE;iBACN,CAAC,CAAC;aACJ;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,aAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACrD,aAAG,CAAC,MAAM,CAAC,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC,CAAC;YAEzB,IAAI,YAAY,EAAE;gBAChB,aAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC5B,aAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;CACF;AArDD,iCAqDC"}
package/lib/utils/args.js CHANGED
@@ -12,7 +12,7 @@ const hasSerialFlag = (args = process.argv, env = process.env) => args.some((arg
12
12
  Boolean(
13
13
  // Run serially on SEEK's central npm publishing pipeline.
14
14
  // Exhausting agents here can cause grief.
15
- env.BUILDKITE_AGENT_META_DATA_QUEUE?.split(',').includes('artefacts:npm'));
15
+ env.BUILDKITE_AGENT_META_DATA_QUEUE?.split(',').some((queueName) => queueName.startsWith('artefacts:npm')));
16
16
  exports.hasSerialFlag = hasSerialFlag;
17
17
  /**
18
18
  * Parse process arguments.
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/utils/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/utils/args.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { inspect } from 'util';
1
3
  import * as t from 'runtypes';
2
4
  export declare type ConcurrentlyErrors = t.Static<typeof ConcurrentlyErrors>;
3
5
  export declare const ConcurrentlyErrors: t.Array<t.Record<{
@@ -8,6 +10,18 @@ export declare const ConcurrentlyErrors: t.Array<t.Record<{
8
10
  index: t.Number;
9
11
  exitCode: t.Number;
10
12
  }, false>, false>;
13
+ /**
14
+ * Creates an error that returns its plain `message` rather than a full stack
15
+ * trace when `util.inspect`ed.
16
+ *
17
+ * This can be useful for terser handling and logging of known error scenarios
18
+ * that have descriptive messages.
19
+ *
20
+ * https://nodejs.org/api/util.html#custom-inspection-functions-on-objects
21
+ */
22
+ export declare const createTerseError: (message?: string | undefined) => Error & {
23
+ [inspect.custom]: () => string | undefined;
24
+ };
11
25
  export declare const handleCliError: (err: unknown) => void;
12
26
  export declare const isErrorWithCode: <T>(err: unknown, code: T) => err is Record<PropertyKey, unknown> & {
13
27
  code: T;
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  return result;
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.isErrorWithCode = exports.handleCliError = exports.ConcurrentlyErrors = void 0;
27
+ exports.isErrorWithCode = exports.handleCliError = exports.createTerseError = exports.ConcurrentlyErrors = void 0;
28
28
  const util_1 = require("util");
29
29
  const t = __importStar(require("runtypes"));
30
30
  const logging_1 = require("./logging");
@@ -37,6 +37,19 @@ exports.ConcurrentlyErrors = t.Array(t.Record({
37
37
  index: t.Number,
38
38
  exitCode: t.Number,
39
39
  }));
40
+ /**
41
+ * Creates an error that returns its plain `message` rather than a full stack
42
+ * trace when `util.inspect`ed.
43
+ *
44
+ * This can be useful for terser handling and logging of known error scenarios
45
+ * that have descriptive messages.
46
+ *
47
+ * https://nodejs.org/api/util.html#custom-inspection-functions-on-objects
48
+ */
49
+ const createTerseError = (message) => Object.assign(new Error(message), {
50
+ [util_1.inspect.custom]: () => message,
51
+ });
52
+ exports.createTerseError = createTerseError;
40
53
  const isExecaError = (err) => (0, validation_1.hasNumberProp)(err, 'exitCode');
41
54
  const handleCliError = (err) => {
42
55
  if (isExecaError(err)) {
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5B,+BAA+B;AAG/B,4CAA8B;AAE9B,uCAAgC;AAChC,6CAAsD;AAIzC,QAAA,kBAAkB,GAAG,CAAC,CAAC,KAAK,CACvC,CAAC,CAAC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,IAAI,EAAE,CAAC,CAAC,MAAM;KACf,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CACH,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAY,EAAqB,EAAE,CACvD,IAAA,0BAAa,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAE1B,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,EAAE;IAC7C,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAChC,OAAO;KACR;IAED,aAAG,CAAC,GAAG,CAAC,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO;AACT,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEK,MAAM,eAAe,GAAG,CAC7B,GAAY,EACZ,IAAO,EAC4C,EAAE,CACrD,IAAA,oBAAO,EAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AAJ/B,QAAA,eAAe,mBAIgB"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;AAE5B,+BAA+B;AAG/B,4CAA8B;AAE9B,uCAAgC;AAChC,6CAAsD;AAIzC,QAAA,kBAAkB,GAAG,CAAC,CAAC,KAAK,CACvC,CAAC,CAAC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,IAAI,EAAE,CAAC,CAAC,MAAM;KACf,CAAC;IACF,KAAK,EAAE,CAAC,CAAC,MAAM;IACf,QAAQ,EAAE,CAAC,CAAC,MAAM;CACnB,CAAC,CACH,CAAC;AAEF;;;;;;;;GAQG;AACI,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACnD,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;IAChC,CAAC,cAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO;CAChC,CAAC,CAAC;AAHQ,QAAA,gBAAgB,oBAGxB;AAEL,MAAM,YAAY,GAAG,CAAC,GAAY,EAAqB,EAAE,CACvD,IAAA,0BAAa,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAE1B,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,EAAE;IAC7C,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;QACrB,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAChC,OAAO;KACR;IAED,aAAG,CAAC,GAAG,CAAC,IAAA,cAAO,EAAC,GAAG,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,OAAO;AACT,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEK,MAAM,eAAe,GAAG,CAC7B,GAAY,EACZ,IAAO,EAC4C,EAAE,CACrD,IAAA,oBAAO,EAAC,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;AAJ/B,QAAA,eAAe,mBAIgB"}
@@ -6,12 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getSkubaVersionInfo = exports.getSkubaVersion = void 0;
7
7
  const latest_version_1 = __importDefault(require("latest-version"));
8
8
  const manifest_1 = require("./manifest");
9
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ const wait_1 = require("./wait");
10
10
  const latestSkubaVersion = async () => {
11
11
  try {
12
- // Don't pull an Apple; bail out before holding up the command for too long
13
- const result = await Promise.race([(0, latest_version_1.default)('skuba'), sleep(2000)]);
14
- return typeof result === 'string' ? result : null;
12
+ const result = await (0, wait_1.withTimeout)((0, latest_version_1.default)('skuba'), { s: 2 });
13
+ return result.ok ? result.value : null;
15
14
  }
16
15
  catch {
17
16
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAE3C,yCAA8C;AAE9C,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAC3B,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1D,MAAM,kBAAkB,GAAG,KAAK,IAA4B,EAAE;IAC5D,IAAI;QACF,2EAA2E;QAC3E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAA,wBAAa,EAAC,OAAO,CAAC,EAAE,KAAK,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC;QAE1E,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;KACnD;IAAC,MAAM;QACN,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,KAAK,IAAqB,EAAE;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,2BAAgB,GAAE,CAAC;IAE7C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B;AAgBK,MAAM,mBAAmB,GAAG,KAAK,IAA+B,EAAE;IACvE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,IAAA,uBAAe,GAAE;QACjB,kBAAkB,EAAE;KACrB,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,IAAI,EAAE;QACnB,6DAA6D;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,MAAM;SACP,CAAC;KACH;IAED,OAAO;QACL,OAAO,EAAE,MAAM,KAAK,KAAK;QACzB,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,mBAAmB,uBAoB9B"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2C;AAE3C,yCAA8C;AAC9C,iCAAqC;AAErC,MAAM,kBAAkB,GAAG,KAAK,IAA4B,EAAE;IAC5D,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAW,EAAC,IAAA,wBAAa,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;KACxC;IAAC,MAAM;QACN,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,KAAK,IAAqB,EAAE;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,2BAAgB,GAAE,CAAC;IAE7C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B;AAgBK,MAAM,mBAAmB,GAAG,KAAK,IAA+B,EAAE;IACvE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,IAAA,uBAAe,GAAE;QACjB,kBAAkB,EAAE;KACrB,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,IAAI,EAAE;QACnB,6DAA6D;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,MAAM;SACP,CAAC;KACH;IAED,OAAO;QACL,OAAO,EAAE,MAAM,KAAK,KAAK;QACzB,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,mBAAmB,uBAoB9B"}
@@ -0,0 +1,17 @@
1
+ interface Timeout extends PromiseLike<void> {
2
+ clear?: () => void;
3
+ }
4
+ export declare const sleep: (ms: number) => Timeout;
5
+ export declare const throwOnTimeout: <T>(promise: PromiseLike<T>, { s }: {
6
+ s: number;
7
+ }) => Promise<T>;
8
+ declare type TimeoutResult<T> = {
9
+ ok: true;
10
+ value: T;
11
+ } | {
12
+ ok: false;
13
+ };
14
+ export declare const withTimeout: <T>(promise: T | PromiseLike<T>, { s }: {
15
+ s: number;
16
+ }) => Promise<TimeoutResult<T>>;
17
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withTimeout = exports.throwOnTimeout = exports.sleep = void 0;
4
+ const error_1 = require("./error");
5
+ const logging_1 = require("./logging");
6
+ const sleep = (ms) => {
7
+ let timeout;
8
+ return Object.assign(new Promise((resolve) => (timeout = setTimeout(resolve, ms))), { clear: () => clearTimeout(timeout) });
9
+ };
10
+ exports.sleep = sleep;
11
+ const throwOnTimeout = async (promise, { s }) => {
12
+ const result = await (0, exports.withTimeout)(promise, { s });
13
+ if (!result.ok) {
14
+ throw (0, error_1.createTerseError)(`Timed out after ${(0, logging_1.pluralise)(s, 'second')}`);
15
+ }
16
+ return result.value;
17
+ };
18
+ exports.throwOnTimeout = throwOnTimeout;
19
+ const withTimeout = async (promise, { s }) => {
20
+ const timeout = (0, exports.sleep)(s * 1000);
21
+ try {
22
+ return await Promise.race([
23
+ Promise.resolve(promise).then((value) => ({ ok: true, value })),
24
+ timeout.then(() => ({ ok: false })),
25
+ ]);
26
+ }
27
+ finally {
28
+ timeout.clear?.();
29
+ }
30
+ };
31
+ exports.withTimeout = withTimeout;
32
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/utils/wait.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAC3C,uCAAsC;AAM/B,MAAM,KAAK,GAAG,CAAC,EAAU,EAAW,EAAE;IAC3C,IAAI,OAAuB,CAAC;IAE5B,OAAO,MAAM,CAAC,MAAM,CAClB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EACnE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CACvC,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,KAAK,SAOhB;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,OAAuB,EACvB,EAAE,CAAC,EAAiB,EACR,EAAE;IACd,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAW,EAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;QACd,MAAM,IAAA,wBAAgB,EAAC,mBAAmB,IAAA,mBAAS,EAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;KACrE;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB;AAIK,MAAM,WAAW,GAAG,KAAK,EAC9B,OAA2B,EAC3B,EAAE,CAAC,EAAiB,EACO,EAAE;IAC7B,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,CAAC,GAAG,IAAK,CAAC,CAAC;IAEjC,IAAI;QACF,OAAO,MAAM,OAAO,CAAC,IAAI,CAAmB;YAC1C,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;SACpC,CAAC,CAAC;KACJ;YAAS;QACR,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;KACnB;AACH,CAAC,CAAC;AAdW,QAAA,WAAW,eActB"}