skuba 4.2.0-beta.6 → 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 (232) hide show
  1. package/README.md +1 -1
  2. package/lib/api/buildkite/annotate.js +8 -19
  3. package/lib/api/buildkite/annotate.js.map +1 -1
  4. package/lib/api/git/commit.js +6 -17
  5. package/lib/api/git/commit.js.map +1 -1
  6. package/lib/api/git/commitAllChanges.js +4 -13
  7. package/lib/api/git/commitAllChanges.js.map +1 -1
  8. package/lib/api/git/currentBranch.js +5 -14
  9. package/lib/api/git/currentBranch.js.map +1 -1
  10. package/lib/api/git/getChangedFiles.js +3 -12
  11. package/lib/api/git/getChangedFiles.js.map +1 -1
  12. package/lib/api/git/log.js +7 -17
  13. package/lib/api/git/log.js.map +1 -1
  14. package/lib/api/git/push.js +7 -19
  15. package/lib/api/git/push.js.map +1 -1
  16. package/lib/api/git/remote.js +5 -14
  17. package/lib/api/git/remote.js.map +1 -1
  18. package/lib/api/git/reset.js +6 -15
  19. package/lib/api/git/reset.js.map +1 -1
  20. package/lib/api/github/checkRun.js +4 -13
  21. package/lib/api/github/checkRun.js.map +1 -1
  22. package/lib/api/github/environment.js +2 -3
  23. package/lib/api/github/environment.js.map +1 -1
  24. package/lib/api/github/issueComment.js +15 -28
  25. package/lib/api/github/issueComment.js.map +1 -1
  26. package/lib/api/github/pullRequest.js +8 -17
  27. package/lib/api/github/pullRequest.js.map +1 -1
  28. package/lib/api/jest/index.d.ts +26 -11
  29. package/lib/api/net/compose.js +3 -12
  30. package/lib/api/net/compose.js.map +1 -1
  31. package/lib/api/net/socket.js +30 -43
  32. package/lib/api/net/socket.js.map +1 -1
  33. package/lib/api/net/waitFor.js +4 -13
  34. package/lib/api/net/waitFor.js.map +1 -1
  35. package/lib/cli/adapter/eslint.d.ts +2 -1
  36. package/lib/cli/adapter/eslint.js +10 -15
  37. package/lib/cli/adapter/eslint.js.map +1 -1
  38. package/lib/cli/adapter/prettier.js +12 -24
  39. package/lib/cli/adapter/prettier.js.map +1 -1
  40. package/lib/cli/build/tsc.js +2 -11
  41. package/lib/cli/build/tsc.js.map +1 -1
  42. package/lib/cli/configure/analyseConfiguration.js +7 -16
  43. package/lib/cli/configure/analyseConfiguration.js.map +1 -1
  44. package/lib/cli/configure/analyseDependencies.js +22 -28
  45. package/lib/cli/configure/analyseDependencies.js.map +1 -1
  46. package/lib/cli/configure/analysis/files.js +3 -12
  47. package/lib/cli/configure/analysis/files.js.map +1 -1
  48. package/lib/cli/configure/analysis/git.js +4 -13
  49. package/lib/cli/configure/analysis/git.js.map +1 -1
  50. package/lib/cli/configure/analysis/package.js +7 -13
  51. package/lib/cli/configure/analysis/package.js.map +1 -1
  52. package/lib/cli/configure/analysis/project.js +13 -23
  53. package/lib/cli/configure/analysis/project.js.map +1 -1
  54. package/lib/cli/configure/ensureTemplateCompletion.js +6 -15
  55. package/lib/cli/configure/ensureTemplateCompletion.js.map +1 -1
  56. package/lib/cli/configure/getEntryPoint.js +3 -12
  57. package/lib/cli/configure/getEntryPoint.js.map +1 -1
  58. package/lib/cli/configure/getProjectType.js +3 -13
  59. package/lib/cli/configure/getProjectType.js.map +1 -1
  60. package/lib/cli/configure/index.js +21 -30
  61. package/lib/cli/configure/index.js.map +1 -1
  62. package/lib/cli/configure/modules/eslint.js +10 -29
  63. package/lib/cli/configure/modules/eslint.js.map +1 -1
  64. package/lib/cli/configure/modules/ignore.js +3 -12
  65. package/lib/cli/configure/modules/ignore.js.map +1 -1
  66. package/lib/cli/configure/modules/jest.js +14 -33
  67. package/lib/cli/configure/modules/jest.js.map +1 -1
  68. package/lib/cli/configure/modules/package.js +21 -21
  69. package/lib/cli/configure/modules/package.js.map +1 -1
  70. package/lib/cli/configure/modules/prettier.js +9 -28
  71. package/lib/cli/configure/modules/prettier.js.map +1 -1
  72. package/lib/cli/configure/modules/renovate.js +13 -30
  73. package/lib/cli/configure/modules/renovate.js.map +1 -1
  74. package/lib/cli/configure/modules/skubaDive.js +7 -5
  75. package/lib/cli/configure/modules/skubaDive.js.map +1 -1
  76. package/lib/cli/configure/modules/tsconfig.js +12 -18
  77. package/lib/cli/configure/modules/tsconfig.js.map +1 -1
  78. package/lib/cli/configure/processing/json.js +1 -1
  79. package/lib/cli/configure/processing/json.js.map +1 -1
  80. package/lib/cli/configure/processing/package.js +5 -5
  81. package/lib/cli/configure/processing/package.js.map +1 -1
  82. package/lib/cli/configure/processing/prettier.js +4 -1
  83. package/lib/cli/configure/processing/prettier.js.map +1 -1
  84. package/lib/cli/configure/processing/typescript.js +4 -7
  85. package/lib/cli/configure/processing/typescript.js.map +1 -1
  86. package/lib/cli/configure/refreshIgnoreFiles.js +13 -21
  87. package/lib/cli/configure/refreshIgnoreFiles.js.map +1 -1
  88. package/lib/cli/format.js +5 -14
  89. package/lib/cli/format.js.map +1 -1
  90. package/lib/cli/help.js +3 -12
  91. package/lib/cli/help.js.map +1 -1
  92. package/lib/cli/init/getConfig.js +63 -56
  93. package/lib/cli/init/getConfig.js.map +1 -1
  94. package/lib/cli/init/git.js +9 -18
  95. package/lib/cli/init/git.js.map +1 -1
  96. package/lib/cli/init/index.js +14 -23
  97. package/lib/cli/init/index.js.map +1 -1
  98. package/lib/cli/init/prompts.js +3 -12
  99. package/lib/cli/init/prompts.js.map +1 -1
  100. package/lib/cli/init/types.js +7 -2
  101. package/lib/cli/init/types.js.map +1 -1
  102. package/lib/cli/init/writePackageJson.js +5 -14
  103. package/lib/cli/init/writePackageJson.js.map +1 -1
  104. package/lib/cli/lint/annotate/buildkite/index.js +3 -12
  105. package/lib/cli/lint/annotate/buildkite/index.js.map +1 -1
  106. package/lib/cli/lint/annotate/github/eslint.js +10 -2
  107. package/lib/cli/lint/annotate/github/eslint.js.map +1 -1
  108. package/lib/cli/lint/annotate/github/index.js +3 -12
  109. package/lib/cli/lint/annotate/github/index.js.map +1 -1
  110. package/lib/cli/lint/annotate/github/tsc.js +1 -1
  111. package/lib/cli/lint/annotate/github/tsc.js.map +1 -1
  112. package/lib/cli/lint/annotate/index.js +3 -12
  113. package/lib/cli/lint/annotate/index.js.map +1 -1
  114. package/lib/cli/lint/autofix.d.ts +7 -1
  115. package/lib/cli/lint/autofix.js +26 -27
  116. package/lib/cli/lint/autofix.js.map +1 -1
  117. package/lib/cli/lint/external.js +37 -59
  118. package/lib/cli/lint/external.js.map +1 -1
  119. package/lib/cli/lint/index.js +5 -14
  120. package/lib/cli/lint/index.js.map +1 -1
  121. package/lib/cli/lint/internal.js +7 -16
  122. package/lib/cli/lint/internal.js.map +1 -1
  123. package/lib/cli/lint/tsc.js +4 -13
  124. package/lib/cli/lint/tsc.js.map +1 -1
  125. package/lib/cli/node.js +3 -12
  126. package/lib/cli/node.js.map +1 -1
  127. package/lib/cli/release.js +3 -12
  128. package/lib/cli/release.js.map +1 -1
  129. package/lib/cli/start.js +4 -14
  130. package/lib/cli/start.js.map +1 -1
  131. package/lib/cli/test/index.js +1 -2
  132. package/lib/cli/test/index.js.map +1 -1
  133. package/lib/cli/test/reporters/github/annotations.js +7 -7
  134. package/lib/cli/test/reporters/github/annotations.js.map +1 -1
  135. package/lib/cli/test/reporters/github/index.d.ts +2 -2
  136. package/lib/cli/test/reporters/github/index.js +37 -37
  137. package/lib/cli/test/reporters/github/index.js.map +1 -1
  138. package/lib/cli/version.js +3 -12
  139. package/lib/cli/version.js.map +1 -1
  140. package/lib/skuba.js +3 -12
  141. package/lib/skuba.js.map +1 -1
  142. package/lib/utils/args.d.ts +1 -1
  143. package/lib/utils/args.js +7 -11
  144. package/lib/utils/args.js.map +1 -1
  145. package/lib/utils/command.d.ts +1 -1
  146. package/lib/utils/command.js +0 -1
  147. package/lib/utils/command.js.map +1 -1
  148. package/lib/utils/copy.js +11 -20
  149. package/lib/utils/copy.js.map +1 -1
  150. package/lib/utils/dir.js +9 -18
  151. package/lib/utils/dir.js.map +1 -1
  152. package/lib/utils/error.d.ts +14 -0
  153. package/lib/utils/error.js +16 -2
  154. package/lib/utils/error.js.map +1 -1
  155. package/lib/utils/exec.js +25 -29
  156. package/lib/utils/exec.js.map +1 -1
  157. package/lib/utils/logo.js +4 -14
  158. package/lib/utils/logo.js.map +1 -1
  159. package/lib/utils/manifest.js +6 -15
  160. package/lib/utils/manifest.js.map +1 -1
  161. package/lib/utils/version.js +12 -22
  162. package/lib/utils/version.js.map +1 -1
  163. package/lib/utils/wait.d.ts +17 -0
  164. package/lib/utils/wait.js +32 -0
  165. package/lib/utils/wait.js.map +1 -0
  166. package/lib/utils/worker.js +4 -12
  167. package/lib/utils/worker.js.map +1 -1
  168. package/lib/wrapper/functionHandler.js +2 -11
  169. package/lib/wrapper/functionHandler.js.map +1 -1
  170. package/lib/wrapper/http.js +6 -15
  171. package/lib/wrapper/http.js.map +1 -1
  172. package/lib/wrapper/main.js +2 -11
  173. package/lib/wrapper/main.js.map +1 -1
  174. package/lib/wrapper/requestListener.js +3 -13
  175. package/lib/wrapper/requestListener.js.map +1 -1
  176. package/package.json +19 -29
  177. package/template/base/tsconfig.json +2 -1
  178. package/template/express-rest-api/.buildkite/pipeline.yml +5 -4
  179. package/template/express-rest-api/Dockerfile +3 -3
  180. package/template/greeter/.buildkite/pipeline.yml +2 -1
  181. package/template/koa-rest-api/.buildkite/pipeline.yml +5 -4
  182. package/template/koa-rest-api/Dockerfile +3 -3
  183. package/template/koa-rest-api/package.json +5 -5
  184. package/template/koa-rest-api/src/api/jobs/getJobs.ts +2 -2
  185. package/template/koa-rest-api/src/api/jobs/postJob.ts +2 -2
  186. package/template/koa-rest-api/src/framework/logging.ts +8 -5
  187. package/template/koa-rest-api/src/framework/metrics.ts +2 -2
  188. package/template/koa-rest-api/src/framework/server.test.ts +21 -21
  189. package/template/koa-rest-api/src/framework/server.ts +4 -3
  190. package/template/koa-rest-api/src/listen.ts +2 -2
  191. package/template/koa-rest-api/src/testing/logging.ts +5 -20
  192. package/template/lambda-sqs-worker/.buildkite/pipeline.yml +2 -1
  193. package/template/lambda-sqs-worker/.nvmrc +1 -1
  194. package/template/lambda-sqs-worker/Dockerfile +1 -1
  195. package/template/lambda-sqs-worker/package.json +4 -4
  196. package/template/lambda-sqs-worker/serverless.yml +2 -2
  197. package/template/lambda-sqs-worker/src/app.test.ts +9 -9
  198. package/template/lambda-sqs-worker/src/app.ts +2 -1
  199. package/template/lambda-sqs-worker/src/framework/handler.test.ts +10 -10
  200. package/template/lambda-sqs-worker/src/framework/handler.ts +14 -17
  201. package/template/lambda-sqs-worker/src/framework/logging.ts +11 -6
  202. package/template/lambda-sqs-worker/src/testing/logging.ts +7 -5
  203. package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +2 -1
  204. package/template/lambda-sqs-worker-cdk/.nvmrc +1 -1
  205. package/template/lambda-sqs-worker-cdk/Dockerfile +1 -1
  206. package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +2 -2
  207. package/template/lambda-sqs-worker-cdk/infra/appStack.ts +1 -1
  208. package/template/lambda-sqs-worker-cdk/package.json +9 -11
  209. package/template/oss-npm-package/tsconfig.json +2 -1
  210. package/template/private-npm-package/.buildkite/pipeline.yml +1 -1
  211. package/template/private-npm-package/tsconfig.json +2 -1
  212. package/lib/cli/changesets/coreAdapter.d.ts +0 -9
  213. package/lib/cli/changesets/coreAdapter.js +0 -19
  214. package/lib/cli/changesets/coreAdapter.js.map +0 -1
  215. package/lib/cli/changesets/gitUtils.d.ts +0 -17
  216. package/lib/cli/changesets/gitUtils.js +0 -128
  217. package/lib/cli/changesets/gitUtils.js.map +0 -1
  218. package/lib/cli/changesets/githubAdapter.d.ts +0 -3
  219. package/lib/cli/changesets/githubAdapter.js +0 -8
  220. package/lib/cli/changesets/githubAdapter.js.map +0 -1
  221. package/lib/cli/changesets/index.d.ts +0 -1
  222. package/lib/cli/changesets/index.js +0 -94
  223. package/lib/cli/changesets/index.js.map +0 -1
  224. package/lib/cli/changesets/readChangesetState.d.ts +0 -6
  225. package/lib/cli/changesets/readChangesetState.js +0 -34
  226. package/lib/cli/changesets/readChangesetState.js.map +0 -1
  227. package/lib/cli/changesets/run.d.ts +0 -22
  228. package/lib/cli/changesets/run.js +0 -196
  229. package/lib/cli/changesets/run.js.map +0 -1
  230. package/lib/cli/changesets/utils.d.ts +0 -30
  231. package/lib/cli/changesets/utils.js +0 -130
  232. package/lib/cli/changesets/utils.js.map +0 -1
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.runRequestListener = void 0;
13
4
  const validation_1 = require("../utils/validation");
@@ -18,8 +9,7 @@ const isConfig = (data) => (0, validation_1.isFunction)(data) || (0, validation_
18
9
  *
19
10
  * This supports Express and Koa applications out of the box.
20
11
  */
21
- const runRequestListener = ({ availablePort, entryPoint, }) => __awaiter(void 0, void 0, void 0, function* () {
22
- var _a, _b;
12
+ const runRequestListener = async ({ availablePort, entryPoint, }) => {
23
13
  if (!isConfig(entryPoint)) {
24
14
  // Assume an executable script with weird exports
25
15
  return;
@@ -35,13 +25,13 @@ const runRequestListener = ({ availablePort, entryPoint, }) => __awaiter(void 0,
35
25
  }
36
26
  const requestListener = typeof config === 'function'
37
27
  ? config
38
- : (_a = config.requestListener) !== null && _a !== void 0 ? _a : (_b = config.callback) === null || _b === void 0 ? void 0 : _b.call(config);
28
+ : config.requestListener ?? config.callback?.();
39
29
  if (typeof requestListener !== 'function') {
40
30
  // Assume an executable script with non-request listener exports
41
31
  return;
42
32
  }
43
33
  const port = (0, validation_1.isIpPort)(config.port) ? config.port : availablePort;
44
34
  return (0, http_1.serveRequestListener)(requestListener, port);
45
- });
35
+ };
46
36
  exports.runRequestListener = runRequestListener;
47
37
  //# sourceMappingURL=requestListener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestListener.js","sourceRoot":"","sources":["../../src/wrapper/requestListener.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,oDAAqE;AAErE,iCAA8C;AAiB9C,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAyC,EAAE,CACxE,IAAA,uBAAU,EAAC,IAAI,CAAC,IAAI,IAAA,qBAAQ,EAAC,IAAI,CAAC,CAAC;AAOrC;;;;GAIG;AACI,MAAM,kBAAkB,GAAG,CAAO,EACvC,aAAa,EACb,UAAU,GACL,EAAiB,EAAE;;IACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QACzB,iDAAiD;QACjD,OAAO;KACR;IAED,IAAI,MAAM,GAAG,UAAU,CAAC;IAExB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC1D,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC,8CAA8C;QAC9C,OAAO;KACR;IAED,MAAM,eAAe,GACnB,OAAO,MAAM,KAAK,UAAU;QAC1B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAA,MAAM,CAAC,eAAe,mCAAI,MAAA,MAAM,CAAC,QAAQ,sDAAI,CAAC;IAEpD,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,gEAAgE;QAChE,OAAO;KACR;IAED,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjE,OAAO,IAAA,2BAAoB,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAA,CAAC;AAlCW,QAAA,kBAAkB,sBAkC7B"}
1
+ {"version":3,"file":"requestListener.js","sourceRoot":"","sources":["../../src/wrapper/requestListener.ts"],"names":[],"mappings":";;;AAEA,oDAAqE;AAErE,iCAA8C;AAiB9C,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAyC,EAAE,CACxE,IAAA,uBAAU,EAAC,IAAI,CAAC,IAAI,IAAA,qBAAQ,EAAC,IAAI,CAAC,CAAC;AAOrC;;;;GAIG;AACI,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,aAAa,EACb,UAAU,GACL,EAAiB,EAAE;IACxB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QACzB,iDAAiD;QACjD,OAAO;KACR;IAED,IAAI,MAAM,GAAG,UAAU,CAAC;IAExB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAC1D,0CAA0C;QAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;KACzB;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC,8CAA8C;QAC9C,OAAO;KACR;IAED,MAAM,eAAe,GACnB,OAAO,MAAM,KAAK,UAAU;QAC1B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEpD,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,gEAAgE;QAChE,OAAO;KACR;IAED,MAAM,IAAI,GAAG,IAAA,qBAAQ,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;IAEjE,OAAO,IAAA,2BAAoB,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AAlCW,QAAA,kBAAkB,sBAkC7B"}
package/package.json CHANGED
@@ -6,13 +6,9 @@
6
6
  "url": "https://github.com/seek-oss/skuba/issues"
7
7
  },
8
8
  "dependencies": {
9
- "@changesets/cli": "^2.22.0",
10
- "@changesets/pre": "^1.0.10",
11
- "@changesets/read": "^0.5.4",
12
- "@manypkg/get-packages": "^1.1.3",
13
9
  "@octokit/rest": "^18.12.0",
14
10
  "@octokit/types": "^6.34.0",
15
- "@types/jest": "^27.4.0",
11
+ "@types/jest": "^27.5.0",
16
12
  "@types/node": ">=14.18",
17
13
  "chalk": "^4.1.0",
18
14
  "concurrently": "^7.0.0",
@@ -20,7 +16,7 @@
20
16
  "ejs": "^3.1.6",
21
17
  "enquirer": "^2.3.6",
22
18
  "eslint": "^8.11.0",
23
- "eslint-config-skuba": "1.0.16",
19
+ "eslint-config-skuba": "1.1.0",
24
20
  "execa": "^5.0.0",
25
21
  "fdir": "^5.0.0",
26
22
  "fs-extra": "^10.0.0",
@@ -29,54 +25,49 @@
29
25
  "ignore": "^5.1.8",
30
26
  "is-installed-globally": "^0.4.0",
31
27
  "isomorphic-git": "^1.11.1",
32
- "jest": "^27.4.5",
28
+ "jest": "^28.1.0",
33
29
  "latest-version": "^5.1.0",
34
30
  "lodash.mergewith": "^4.6.2",
35
- "mdast-util-to-string": "^2.0.0",
36
- "module-alias": "^2.2.2",
37
31
  "normalize-package-data": "^4.0.0",
38
32
  "npm-run-path": "^4.0.1",
39
33
  "npm-which": "^3.0.1",
40
34
  "picomatch": "^2.2.2",
41
35
  "prettier": "~2.6.0",
42
36
  "read-pkg-up": "^7.0.1",
43
- "remark-parse": "^9.0.0",
44
- "remark-stringify": "^9.0.1",
45
37
  "runtypes": "^6.0.0",
46
38
  "semantic-release": "^19.0.0",
47
39
  "serialize-error": "^8.0.1",
48
40
  "simple-git": "^3.5.0",
49
41
  "strip-ansi": "^6.0.1",
50
- "ts-jest": "^27.1.2",
51
- "ts-node": "^10.5.0",
42
+ "ts-jest": "^28.0.2",
43
+ "ts-node": "^10.7.0",
52
44
  "ts-node-dev": "^2.0.0-0",
53
- "tsconfig-paths": "^3.11.0",
45
+ "tsconfig-paths": "^4.0.0",
54
46
  "tsconfig-seek": "1.0.2",
55
- "typescript": "~4.6.2",
56
- "unified": "^9.2.2"
47
+ "typescript": "~4.6.4"
57
48
  },
58
49
  "description": "SEEK development toolkit for backend applications and packages",
59
50
  "devDependencies": {
51
+ "@changesets/cli": "2.22.0",
60
52
  "@changesets/get-github-info": "0.5.0",
61
- "@changesets/types": "4.1.0",
62
- "@jest/reporters": "27.5.1",
63
- "@types/ejs": "3.1.0",
53
+ "@jest/reporters": "28.1.0",
54
+ "@types/ejs": "3.1.1",
64
55
  "@types/express": "4.17.13",
65
56
  "@types/fs-extra": "9.0.13",
66
57
  "@types/koa": "2.13.4",
67
- "@types/lodash.mergewith": "4.6.6",
58
+ "@types/lodash.mergewith": "4.6.7",
68
59
  "@types/module-alias": "2.0.1",
69
60
  "@types/npm-which": "3.0.1",
70
61
  "@types/picomatch": "2.3.0",
71
62
  "@types/supertest": "2.0.12",
72
- "enhanced-resolve": "5.9.2",
73
- "express": "4.17.3",
63
+ "enhanced-resolve": "5.9.3",
64
+ "express": "4.18.1",
74
65
  "jsonfile": "6.1.0",
75
66
  "koa": "2.13.4",
76
- "memfs": "3.4.1",
77
- "semver": "7.3.5",
78
- "supertest": "6.2.2",
79
- "type-fest": "2.12.1"
67
+ "memfs": "3.4.3",
68
+ "semver": "7.3.7",
69
+ "supertest": "6.2.3",
70
+ "type-fest": "2.12.2"
80
71
  },
81
72
  "engines": {
82
73
  "node": ">=14.18"
@@ -108,8 +99,7 @@
108
99
  "url": "git+https://github.com/seek-oss/skuba.git"
109
100
  },
110
101
  "resolutions": {
111
- "**/@types/node": ">=14.18",
112
- "semantic-release/@semantic-release/npm/npm/**/ansi-regex": "5.0.1"
102
+ "**/@types/node": ">=14.18"
113
103
  },
114
104
  "scripts": {
115
105
  "build": "ts-node --transpile-only src/skuba build && scripts/postbuild.sh",
@@ -133,5 +123,5 @@
133
123
  "version": "4.0.0"
134
124
  },
135
125
  "types": "./lib/index.d.ts",
136
- "version": "4.2.0-beta.6"
126
+ "version": "4.2.1"
137
127
  }
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "baseUrl": ".",
4
+ "lib": ["ES2020"],
4
5
  "outDir": "lib",
5
6
  "paths": {
6
7
  "src": ["src"]
7
8
  },
8
- "target": "es2020"
9
+ "target": "ES2020"
9
10
  },
10
11
  "exclude": ["lib*/**/*"],
11
12
  "extends": "skuba/config/tsconfig.json"
@@ -9,7 +9,7 @@ configs:
9
9
  NPM_READ_TOKEN: arn:aws:secretsmanager:ap-southeast-2:987872074697:secret:npm/npm-read-token
10
10
 
11
11
  - &docker-ecr-cache
12
- seek-oss/docker-ecr-cache#v1.11.0:
12
+ seek-oss/docker-ecr-cache#v2.0.0:
13
13
  cache-on:
14
14
  - package.json
15
15
  - yarn.lock
@@ -53,6 +53,7 @@ steps:
53
53
  - *docker-ecr-cache
54
54
  - docker-compose#v3.9.0:
55
55
  run: app
56
+ timeout_in_minutes: 10
56
57
 
57
58
  - label: 📦 Build & Package
58
59
  depends_on: warm-prod
@@ -60,7 +61,7 @@ steps:
60
61
  - *aws-sm
61
62
  - *private-npm
62
63
  - *docker-ecr-cache
63
- - seek-jobs/gantry#v1.6.2:
64
+ - seek-jobs/gantry#v1.7.0:
64
65
  command: build
65
66
  file: gantry.build.yml
66
67
  region: <%- region %>
@@ -77,7 +78,7 @@ steps:
77
78
  concurrency_group: <%- teamName %>/deploy/gantry/<%- devGantryEnvironmentName %>
78
79
  key: deploy-dev
79
80
  plugins:
80
- - seek-jobs/gantry#v1.6.2:
81
+ - seek-jobs/gantry#v1.7.0:
81
82
  command: apply
82
83
  environment: <%- devGantryEnvironmentName %>
83
84
  file: gantry.apply.yml
@@ -92,7 +93,7 @@ steps:
92
93
  concurrency_group: <%- teamName %>/deploy/gantry/<%- prodGantryEnvironmentName %>
93
94
  depends_on: deploy-dev
94
95
  plugins:
95
- - seek-jobs/gantry#v1.6.2:
96
+ - seek-jobs/gantry#v1.7.0:
96
97
  command: apply
97
98
  environment: <%- prodGantryEnvironmentName %>
98
99
  file: gantry.apply.yml
@@ -25,13 +25,13 @@ COPY --from=build /workdir/lib lib
25
25
 
26
26
  COPY --from=deps /workdir/node_modules node_modules
27
27
 
28
- ENV NODE_ENV production
28
+ ENV NODE_ENV=production
29
29
 
30
30
  # https://nodejs.org/api/cli.html#cli_node_options_options
31
- ENV NODE_OPTIONS --enable-source-maps
31
+ ENV NODE_OPTIONS=--enable-source-maps
32
32
 
33
33
  ARG PORT=8001
34
- ENV PORT ${PORT}
34
+ ENV PORT=${PORT}
35
35
  EXPOSE ${PORT}
36
36
 
37
37
  CMD ["lib/listen.js"]
@@ -9,7 +9,7 @@ configs:
9
9
  NPM_READ_TOKEN: arn:aws:secretsmanager:ap-southeast-2:987872074697:secret:npm/npm-read-token
10
10
 
11
11
  - &docker-ecr-cache
12
- seek-oss/docker-ecr-cache#v1.11.0:
12
+ seek-oss/docker-ecr-cache#v2.0.0:
13
13
  cache-on:
14
14
  - package.json
15
15
  - yarn.lock
@@ -34,3 +34,4 @@ steps:
34
34
  - *docker-ecr-cache
35
35
  - docker-compose#v3.9.0:
36
36
  run: app
37
+ timeout_in_minutes: 10
@@ -9,7 +9,7 @@ configs:
9
9
  NPM_READ_TOKEN: arn:aws:secretsmanager:ap-southeast-2:987872074697:secret:npm/npm-read-token
10
10
 
11
11
  - &docker-ecr-cache
12
- seek-oss/docker-ecr-cache#v1.11.0:
12
+ seek-oss/docker-ecr-cache#v2.0.0:
13
13
  cache-on:
14
14
  - package.json
15
15
  - yarn.lock
@@ -53,6 +53,7 @@ steps:
53
53
  - *docker-ecr-cache
54
54
  - docker-compose#v3.9.0:
55
55
  run: app
56
+ timeout_in_minutes: 10
56
57
 
57
58
  - label: 📦 Build & Package
58
59
  depends_on: warm-prod
@@ -60,7 +61,7 @@ steps:
60
61
  - *aws-sm
61
62
  - *private-npm
62
63
  - *docker-ecr-cache
63
- - seek-jobs/gantry#v1.6.2:
64
+ - seek-jobs/gantry#v1.7.0:
64
65
  command: build
65
66
  file: gantry.build.yml
66
67
  region: <%- region %>
@@ -77,7 +78,7 @@ steps:
77
78
  concurrency_group: <%- teamName %>/deploy/gantry/<%- devGantryEnvironmentName %>
78
79
  key: deploy-dev
79
80
  plugins:
80
- - seek-jobs/gantry#v1.6.2:
81
+ - seek-jobs/gantry#v1.7.0:
81
82
  command: apply
82
83
  environment: <%- devGantryEnvironmentName %>
83
84
  file: gantry.apply.yml
@@ -92,7 +93,7 @@ steps:
92
93
  concurrency_group: <%- teamName %>/deploy/gantry/<%- prodGantryEnvironmentName %>
93
94
  depends_on: deploy-dev
94
95
  plugins:
95
- - seek-jobs/gantry#v1.6.2:
96
+ - seek-jobs/gantry#v1.7.0:
96
97
  command: apply
97
98
  environment: <%- prodGantryEnvironmentName %>
98
99
  file: gantry.apply.yml
@@ -25,13 +25,13 @@ COPY --from=build /workdir/lib lib
25
25
 
26
26
  COPY --from=deps /workdir/node_modules node_modules
27
27
 
28
- ENV NODE_ENV production
28
+ ENV NODE_ENV=production
29
29
 
30
30
  # https://nodejs.org/api/cli.html#cli_node_options_options
31
- ENV NODE_OPTIONS --enable-source-maps
31
+ ENV NODE_OPTIONS=--enable-source-maps
32
32
 
33
33
  ARG PORT=8001
34
- ENV PORT ${PORT}
34
+ ENV PORT=${PORT}
35
35
  EXPOSE ${PORT}
36
36
 
37
37
  CMD ["--require", "./lib/tracing.js", "./lib/listen.js"]
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "dependencies": {
3
3
  "@koa/router": "^10.1.1",
4
- "@opentelemetry/api": "^1.0.4",
4
+ "@opentelemetry/api": "^1.1.0",
5
5
  "@opentelemetry/exporter-collector-grpc": "^0.25.0",
6
- "@opentelemetry/instrumentation-aws-sdk": "^0.6.0",
7
- "@opentelemetry/instrumentation-http": "^0.27.0",
8
- "@opentelemetry/sdk-node": "^0.27.0",
6
+ "@opentelemetry/instrumentation-aws-sdk": "^0.7.0",
7
+ "@opentelemetry/instrumentation-http": "^0.28.0",
8
+ "@opentelemetry/sdk-node": "^0.28.0",
9
9
  "@seek/logger": "^5.0.1",
10
10
  "aws-sdk": "^2.1039.0",
11
11
  "hot-shots": "^9.0.0",
@@ -15,7 +15,7 @@
15
15
  "runtypes": "^6.4.1",
16
16
  "runtypes-filter": "^0.6.0",
17
17
  "seek-datadog-custom-metrics": "^4.0.0",
18
- "seek-koala": "^5.1.0",
18
+ "seek-koala": "^5.2.0",
19
19
  "skuba-dive": "^2.0.0",
20
20
  "uuid": "^8.3.2"
21
21
  },
@@ -1,4 +1,4 @@
1
- import { contextLogger } from 'src/framework/logging';
1
+ import { logger } from 'src/framework/logging';
2
2
  import { metricsClient } from 'src/framework/metrics';
3
3
  import * as storage from 'src/storage/jobs';
4
4
  import { Middleware } from 'src/types/koa';
@@ -7,7 +7,7 @@ export const getJobsHandler: Middleware = async (ctx) => {
7
7
  const jobs = await storage.readJobs();
8
8
 
9
9
  // no PII in these jobs
10
- contextLogger(ctx).debug({ jobs }, 'read jobs');
10
+ logger.debug({ jobs }, 'read jobs');
11
11
 
12
12
  metricsClient.increment('job.reads', jobs.length);
13
13
 
@@ -1,4 +1,4 @@
1
- import { contextLogger } from 'src/framework/logging';
1
+ import { logger } from 'src/framework/logging';
2
2
  import { metricsClient } from 'src/framework/metrics';
3
3
  import { validateRequestBody } from 'src/framework/validation';
4
4
  import * as storage from 'src/storage/jobs';
@@ -11,7 +11,7 @@ export const postJobHandler: Middleware = async (ctx) => {
11
11
  const job = await storage.createJob(jobInput);
12
12
 
13
13
  // no PII in these jobs
14
- contextLogger(ctx).debug({ job }, 'created job');
14
+ logger.debug({ job }, 'created job');
15
15
 
16
16
  metricsClient.increment('job.creations');
17
17
 
@@ -2,14 +2,20 @@ import createLogger from '@seek/logger';
2
2
  import { RequestLogging } from 'seek-koala';
3
3
 
4
4
  import { config } from 'src/config';
5
- import { Context } from 'src/types/koa';
6
5
 
7
- export const rootLogger = createLogger({
6
+ const { createContextMiddleware, mixin } =
7
+ RequestLogging.createContextStorage();
8
+
9
+ export const contextMiddleware = createContextMiddleware();
10
+
11
+ export const logger = createLogger({
8
12
  base: {
9
13
  environment: config.environment,
10
14
  version: config.version,
11
15
  },
12
16
 
17
+ mixin,
18
+
13
19
  level: config.logLevel,
14
20
 
15
21
  name: config.name,
@@ -17,6 +23,3 @@ export const rootLogger = createLogger({
17
23
  transport:
18
24
  config.environment === 'local' ? { target: 'pino-pretty' } : undefined,
19
25
  });
20
-
21
- export const contextLogger = (ctx: Context) =>
22
- rootLogger.child(RequestLogging.contextFields(ctx));
@@ -3,9 +3,9 @@ import { createStatsDClient } from 'seek-datadog-custom-metrics';
3
3
 
4
4
  import { config } from 'src/config';
5
5
 
6
- import { rootLogger } from './logging';
6
+ import { logger } from './logging';
7
7
 
8
8
  /* istanbul ignore next: StatsD client is not our responsibility */
9
9
  export const metricsClient = createStatsDClient(StatsD, config, (err) =>
10
- rootLogger.error({ err }, 'StatsD error'),
10
+ logger.error({ err }, 'StatsD error'),
11
11
  );
@@ -1,6 +1,6 @@
1
1
  import Router from '@koa/router';
2
2
 
3
- import { rootLogger } from 'src/testing/logging';
3
+ import { logger } from 'src/testing/logging';
4
4
  import { metricsClient } from 'src/testing/metrics';
5
5
  import { agentFromRouter } from 'src/testing/server';
6
6
  import { chance } from 'src/testing/types';
@@ -15,10 +15,10 @@ const router = new Router()
15
15
  const agent = agentFromRouter(router);
16
16
 
17
17
  describe('createApp', () => {
18
- beforeAll(rootLogger.spy);
18
+ beforeAll(logger.spy);
19
19
 
20
20
  afterEach(metricsClient.clear);
21
- afterEach(rootLogger.clear);
21
+ afterEach(logger.clear);
22
22
 
23
23
  it('handles root route', async () => {
24
24
  middleware.mockImplementation((ctx) => (ctx.body = ''));
@@ -29,9 +29,9 @@ describe('createApp', () => {
29
29
  .expect('server', /.+/)
30
30
  .expect('x-api-version', /.+/);
31
31
 
32
- expect(rootLogger.error).not.toBeCalled();
32
+ expect(logger.error).not.toBeCalled();
33
33
 
34
- expect(rootLogger.info).not.toBeCalled();
34
+ expect(logger.info).not.toBeCalled();
35
35
 
36
36
  metricsClient.expectTagSubset(['env:test', 'version:test']);
37
37
  metricsClient.expectTagSubset([
@@ -51,9 +51,9 @@ describe('createApp', () => {
51
51
  .expect('server', /.+/)
52
52
  .expect('x-api-version', /.+/);
53
53
 
54
- expect(rootLogger.error).not.toBeCalled();
54
+ expect(logger.error).not.toBeCalled();
55
55
 
56
- expect(rootLogger.info).not.toBeCalled();
56
+ expect(logger.info).not.toBeCalled();
57
57
 
58
58
  metricsClient.expectTagSubset([
59
59
  'http_method:put',
@@ -72,9 +72,9 @@ describe('createApp', () => {
72
72
  .expect('server', /.+/)
73
73
  .expect('x-api-version', /.+/);
74
74
 
75
- expect(rootLogger.error).not.toBeCalled();
75
+ expect(logger.error).not.toBeCalled();
76
76
 
77
- expect(rootLogger.info).nthCalledWith(
77
+ expect(logger.info).nthCalledWith(
78
78
  1,
79
79
  expect.objectContaining({ status: 404 }),
80
80
  'Client error',
@@ -102,9 +102,9 @@ describe('createApp', () => {
102
102
  .expect('server', /.+/)
103
103
  .expect('x-api-version', /.+/);
104
104
 
105
- expect(rootLogger.error).not.toBeCalled();
105
+ expect(logger.error).not.toBeCalled();
106
106
 
107
- expect(rootLogger.info).nthCalledWith(
107
+ expect(logger.info).nthCalledWith(
108
108
  1,
109
109
  expect.objectContaining({ status: 400 }),
110
110
  'Client error',
@@ -129,9 +129,9 @@ describe('createApp', () => {
129
129
  .expect('server', /.+/)
130
130
  .expect('x-api-version', /.+/);
131
131
 
132
- expect(rootLogger.error).not.toBeCalled();
132
+ expect(logger.error).not.toBeCalled();
133
133
 
134
- expect(rootLogger.info).nthCalledWith(
134
+ expect(logger.info).nthCalledWith(
135
135
  1,
136
136
  expect.objectContaining({ err: expect.any(Error), status: 400 }),
137
137
  'Client error',
@@ -156,13 +156,13 @@ describe('createApp', () => {
156
156
  .expect('server', /.+/)
157
157
  .expect('x-api-version', /.+/);
158
158
 
159
- expect(rootLogger.error).nthCalledWith(
159
+ expect(logger.error).nthCalledWith(
160
160
  1,
161
161
  expect.objectContaining({ err: expect.any(Error), status: 500 }),
162
162
  'Server error',
163
163
  );
164
164
 
165
- expect(rootLogger.info).not.toBeCalled();
165
+ expect(logger.info).not.toBeCalled();
166
166
 
167
167
  metricsClient.expectTagSubset([
168
168
  'http_method:get',
@@ -185,13 +185,13 @@ describe('createApp', () => {
185
185
  .expect('server', /.+/)
186
186
  .expect('x-api-version', /.+/);
187
187
 
188
- expect(rootLogger.error).nthCalledWith(
188
+ expect(logger.error).nthCalledWith(
189
189
  1,
190
190
  expect.objectContaining({ err, status: 500 }),
191
191
  'Server error',
192
192
  );
193
193
 
194
- expect(rootLogger.info).not.toBeCalled();
194
+ expect(logger.info).not.toBeCalled();
195
195
 
196
196
  metricsClient.expectTagSubset([
197
197
  'http_method:get',
@@ -213,13 +213,13 @@ describe('createApp', () => {
213
213
  .expect('server', /.+/)
214
214
  .expect('x-api-version', /.+/);
215
215
 
216
- expect(rootLogger.error).nthCalledWith(
216
+ expect(logger.error).nthCalledWith(
217
217
  1,
218
218
  expect.objectContaining({ err: null, status: 500 }),
219
219
  'Server error',
220
220
  );
221
221
 
222
- expect(rootLogger.info).not.toBeCalled();
222
+ expect(logger.info).not.toBeCalled();
223
223
 
224
224
  metricsClient.expectTagSubset([
225
225
  'http_method:get',
@@ -242,13 +242,13 @@ describe('createApp', () => {
242
242
  .expect('server', /.+/)
243
243
  .expect('x-api-version', /.+/);
244
244
 
245
- expect(rootLogger.error).nthCalledWith(
245
+ expect(logger.error).nthCalledWith(
246
246
  1,
247
247
  expect.objectContaining({ err, status: 500 }),
248
248
  'Server error',
249
249
  );
250
250
 
251
- expect(rootLogger.info).not.toBeCalled();
251
+ expect(logger.info).not.toBeCalled();
252
252
 
253
253
  metricsClient.expectTagSubset([
254
254
  'http_method:get',
@@ -9,7 +9,7 @@ import {
9
9
  } from 'seek-koala';
10
10
 
11
11
  import { config } from 'src/config';
12
- import { rootLogger } from 'src/framework/logging';
12
+ import { contextMiddleware, logger } from 'src/framework/logging';
13
13
  import { metricsClient } from 'src/framework/metrics';
14
14
 
15
15
  const metrics = MetricsMiddleware.create(
@@ -26,8 +26,8 @@ const requestLogging = RequestLogging.createMiddleware((ctx, fields, err) => {
26
26
  }
27
27
 
28
28
  return ctx.status < 500
29
- ? rootLogger.info(fields, 'Client error')
30
- : rootLogger.error(fields, 'Server error');
29
+ ? logger.info(fields, 'Client error')
30
+ : logger.error(fields, 'Server error');
31
31
  });
32
32
 
33
33
  const version = VersionMiddleware.create({
@@ -43,6 +43,7 @@ export const createApp = <State, Context>(
43
43
  // https://github.com/seek-oss/koala/tree/master/src/secureHeaders
44
44
  // https://github.com/venables/koa-helmet
45
45
  // .use(SecureHeaders.middleware)
46
+ .use(contextMiddleware)
46
47
  .use(requestLogging)
47
48
  .use(metrics)
48
49
  .use(ErrorMiddleware.handle)
@@ -2,7 +2,7 @@ import './register';
2
2
 
3
3
  import app from './app';
4
4
  import { config } from './config';
5
- import { rootLogger } from './framework/logging';
5
+ import { logger } from './framework/logging';
6
6
 
7
7
  // This implements a minimal version of `koa-cluster`'s interface
8
8
  // If your application is deployed with more than 1 vCPU you can delete this
@@ -12,6 +12,6 @@ const listener = app.listen(config.port, () => {
12
12
  const address = listener.address();
13
13
 
14
14
  if (typeof address === 'object' && address) {
15
- rootLogger.debug(`listening on port ${address.port}`);
15
+ logger.debug(`listening on port ${address.port}`);
16
16
  }
17
17
  });
@@ -1,31 +1,16 @@
1
1
  import * as logging from 'src/framework/logging';
2
2
 
3
- export const contextLogger = {
3
+ export const logger = {
4
4
  error: jest.fn(),
5
5
  info: jest.fn(),
6
6
 
7
7
  clear: () => {
8
- contextLogger.error.mockClear();
9
- contextLogger.info.mockClear();
10
- },
11
-
12
- spy: () =>
13
- jest.spyOn(logging, 'contextLogger').mockReturnValue(contextLogger as any),
14
- };
15
-
16
- export const rootLogger = {
17
- error: jest.fn(),
18
- info: jest.fn(),
19
-
20
- clear: () => {
21
- rootLogger.error.mockClear();
22
- rootLogger.info.mockClear();
8
+ logger.error.mockClear();
9
+ logger.info.mockClear();
23
10
  },
24
11
 
25
12
  spy: () => {
26
- jest
27
- .spyOn(logging.rootLogger, 'error')
28
- .mockImplementation(rootLogger.error);
29
- jest.spyOn(logging.rootLogger, 'info').mockImplementation(rootLogger.info);
13
+ jest.spyOn(logging.logger, 'error').mockImplementation(logger.error);
14
+ jest.spyOn(logging.logger, 'info').mockImplementation(logger.info);
30
15
  },
31
16
  };
@@ -9,7 +9,7 @@ configs:
9
9
  NPM_READ_TOKEN: arn:aws:secretsmanager:ap-southeast-2:987872074697:secret:npm/npm-read-token
10
10
 
11
11
  - &docker-ecr-cache
12
- seek-oss/docker-ecr-cache#v1.11.0:
12
+ seek-oss/docker-ecr-cache#v2.0.0:
13
13
  cache-on:
14
14
  - package.json
15
15
  - yarn.lock
@@ -63,6 +63,7 @@ steps:
63
63
  - *docker-ecr-cache
64
64
  - docker-compose#v3.9.0:
65
65
  run: app
66
+ timeout_in_minutes: 10
66
67
 
67
68
  - agents:
68
69
  queue: <%- devBuildkiteQueueName %>
@@ -1 +1 @@
1
- 14
1
+ 16