skuba 4.0.0 โ†’ 4.2.0-beta.0

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 (73) hide show
  1. package/lib/api/git/commitAllChanges.d.ts +1 -1
  2. package/lib/api/git/commitAllChanges.js +4 -1
  3. package/lib/api/git/commitAllChanges.js.map +1 -1
  4. package/lib/api/git/currentBranch.d.ts +10 -0
  5. package/lib/api/git/currentBranch.js +41 -0
  6. package/lib/api/git/currentBranch.js.map +1 -0
  7. package/lib/api/git/index.d.ts +2 -1
  8. package/lib/api/git/index.js +4 -1
  9. package/lib/api/git/index.js.map +1 -1
  10. package/lib/api/git/log.d.ts +9 -2
  11. package/lib/api/git/log.js +24 -5
  12. package/lib/api/git/log.js.map +1 -1
  13. package/lib/api/git/remote.d.ts +4 -2
  14. package/lib/api/git/remote.js +22 -5
  15. package/lib/api/git/remote.js.map +1 -1
  16. package/lib/api/github/environment.d.ts +0 -4
  17. package/lib/api/github/environment.js +3 -7
  18. package/lib/api/github/environment.js.map +1 -1
  19. package/lib/cli/adapter/eslint.js +16 -1
  20. package/lib/cli/adapter/eslint.js.map +1 -1
  21. package/lib/cli/configure/analysis/package.js +1 -1
  22. package/lib/cli/configure/analysis/package.js.map +1 -1
  23. package/lib/cli/configure/modules/package.js +1 -1
  24. package/lib/cli/configure/modules/package.js.map +1 -1
  25. package/lib/cli/configure/processing/package.d.ts +1 -0
  26. package/lib/cli/format.js +3 -2
  27. package/lib/cli/format.js.map +1 -1
  28. package/lib/cli/init/git.d.ts +0 -1
  29. package/lib/cli/init/git.js +1 -11
  30. package/lib/cli/init/git.js.map +1 -1
  31. package/lib/cli/init/index.js +7 -3
  32. package/lib/cli/init/index.js.map +1 -1
  33. package/lib/cli/lint/autofix.d.ts +2 -0
  34. package/lib/cli/lint/autofix.js +114 -0
  35. package/lib/cli/lint/autofix.js.map +1 -0
  36. package/lib/cli/lint/external.js +6 -0
  37. package/lib/cli/lint/external.js.map +1 -1
  38. package/lib/cli/node.js +5 -2
  39. package/lib/cli/node.js.map +1 -1
  40. package/lib/cli/start.js +3 -4
  41. package/lib/cli/start.js.map +1 -1
  42. package/lib/utils/env.d.ts +5 -0
  43. package/lib/utils/env.js +9 -0
  44. package/lib/utils/env.js.map +1 -0
  45. package/package.json +78 -64
  46. package/template/base/jest.config.ts +6 -0
  47. package/template/express-rest-api/.buildkite/pipeline.yml +13 -22
  48. package/template/express-rest-api/.env +1 -0
  49. package/template/express-rest-api/docker-compose.yml +3 -1
  50. package/template/express-rest-api/gantry.apply.yml +2 -0
  51. package/template/express-rest-api/gantry.build.yml +2 -1
  52. package/template/express-rest-api/package.json +2 -2
  53. package/template/greeter/.buildkite/pipeline.yml +4 -9
  54. package/template/greeter/docker-compose.yml +3 -1
  55. package/template/greeter/package.json +2 -2
  56. package/template/koa-rest-api/.buildkite/pipeline.yml +13 -22
  57. package/template/koa-rest-api/.env +1 -0
  58. package/template/koa-rest-api/docker-compose.yml +3 -1
  59. package/template/koa-rest-api/gantry.apply.yml +2 -0
  60. package/template/koa-rest-api/gantry.build.yml +2 -1
  61. package/template/koa-rest-api/package.json +3 -3
  62. package/template/lambda-sqs-worker/.buildkite/pipeline.yml +16 -22
  63. package/template/lambda-sqs-worker/.env +1 -0
  64. package/template/lambda-sqs-worker/docker-compose.yml +3 -1
  65. package/template/lambda-sqs-worker/package.json +2 -2
  66. package/template/lambda-sqs-worker/serverless.yml +6 -11
  67. package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +14 -20
  68. package/template/lambda-sqs-worker-cdk/cdk.json +3 -3
  69. package/template/lambda-sqs-worker-cdk/docker-compose.yml +3 -1
  70. package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +2 -0
  71. package/template/lambda-sqs-worker-cdk/infra/appStack.ts +1 -0
  72. package/template/lambda-sqs-worker-cdk/package.json +1 -1
  73. package/template/private-npm-package/.buildkite/pipeline.yml +3 -2
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
+ return new (P || (P = Promise))(function (resolve, reject) {
24
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.autofix = void 0;
35
+ const simple_git_1 = __importDefault(require("simple-git"));
36
+ const Git = __importStar(require("../../api/git"));
37
+ const eslint_1 = require("../../cli/adapter/eslint");
38
+ const prettier_1 = require("../../cli/adapter/prettier");
39
+ const env_1 = require("../../utils/env");
40
+ const logging_1 = require("../../utils/logging");
41
+ const AUTOFIX_COMMIT_MESSAGE = 'Run `skuba format`';
42
+ const shouldPush = (dir) => __awaiter(void 0, void 0, void 0, function* () {
43
+ if (!(0, env_1.isCiEnv)()) {
44
+ // We're not running in a CI environment so we don't need to push autofixes.
45
+ // Ideally we'd drive this off of repository write permissions, but that is
46
+ // non-trivial to infer without attempting an actual write.
47
+ return false;
48
+ }
49
+ try {
50
+ const currentBranch = yield Git.currentBranch({ dir });
51
+ const isDefaultBuildkiteBranch = currentBranch &&
52
+ [
53
+ process.env.BUILDKITE_PIPELINE_DEFAULT_BRANCH,
54
+ 'master',
55
+ 'main',
56
+ ].includes(currentBranch);
57
+ const isProtectedGitHubBranch = process.env.GITHUB_REF_PROTECTED === 'true';
58
+ if (isDefaultBuildkiteBranch || isProtectedGitHubBranch) {
59
+ // The current branch is a protected branch.
60
+ // We respect GitHub Flow; avoid pushing directly to the default branch.
61
+ return false;
62
+ }
63
+ }
64
+ catch (_a) { }
65
+ try {
66
+ const headCommitMessage = yield Git.getHeadCommitMessage({ dir });
67
+ if (headCommitMessage === AUTOFIX_COMMIT_MESSAGE) {
68
+ // Short circuit when the head commit appears to be one of our autofixes.
69
+ // Repeating the same operation is unlikely to correct outstanding issues.
70
+ return false;
71
+ }
72
+ }
73
+ catch (_b) { }
74
+ // Allow the push attempt to go ahead if our guards have been cleared.
75
+ return true;
76
+ });
77
+ const autofix = (input) => __awaiter(void 0, void 0, void 0, function* () {
78
+ const dir = process.cwd();
79
+ if (!(yield shouldPush(dir))) {
80
+ return;
81
+ }
82
+ // Naively try to autofix issues as we can't tell from ESLint output.
83
+ try {
84
+ logging_1.log.newline();
85
+ logging_1.log.warn(`Trying to autofix with ESLint and Prettier...`);
86
+ const logger = (0, logging_1.createLogger)(input.debug);
87
+ yield (0, eslint_1.runESLint)('format', logger);
88
+ yield (0, prettier_1.runPrettier)('format', logger);
89
+ const ref = yield Git.commitAllChanges({
90
+ dir,
91
+ message: AUTOFIX_COMMIT_MESSAGE,
92
+ });
93
+ if (!ref) {
94
+ return logging_1.log.warn('No autofixes detected.');
95
+ }
96
+ yield (process.env.GITHUB_ACTIONS
97
+ ? // GitHub's checkout action should preconfigure the Git CLI.
98
+ (0, simple_git_1.default)().push()
99
+ : // In other CI environments (Buildkite) we fall back to GitHub App auth.
100
+ Git.push({
101
+ auth: { type: 'gitHubApp' },
102
+ dir: process.cwd(),
103
+ ref,
104
+ }));
105
+ logging_1.log.warn(`Pushed fix commit ${ref}.`);
106
+ }
107
+ catch (err) {
108
+ logging_1.log.warn(logging_1.log.bold('Failed to push fix commit.'));
109
+ logging_1.log.warn(logging_1.log.bold('Does your CI environment have write access to your Git repository?'));
110
+ logging_1.log.subtle(err);
111
+ }
112
+ });
113
+ exports.autofix = autofix;
114
+ //# sourceMappingURL=autofix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autofix.js","sourceRoot":"","sources":["../../../src/cli/lint/autofix.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ exports.externalLint = exports.StreamInterceptor = void 0;
27
27
  const stream_1 = __importDefault(require("stream"));
28
28
  const logging_1 = require("../../utils/logging");
29
29
  const annotate_1 = require("./annotate");
30
+ const autofix_1 = require("./autofix");
30
31
  const eslint_1 = require("./eslint");
31
32
  const prettier_1 = require("./prettier");
32
33
  const tsc_1 = require("./tsc");
@@ -106,6 +107,11 @@ const externalLint = (input) => __awaiter(void 0, void 0, void 0, function* () {
106
107
  logging_1.log.newline();
107
108
  logging_1.log.err(`${tools.join(', ')} found issues that require triage.`);
108
109
  process.exitCode = 1;
110
+ if (eslint.ok && prettier.ok) {
111
+ // If these are fine then the issue lies with tsc, which we can't autofix.
112
+ return;
113
+ }
114
+ yield (0, autofix_1.autofix)(input);
109
115
  });
110
116
  exports.externalLint = externalLint;
111
117
  //# 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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"}
package/lib/cli/node.js CHANGED
@@ -50,13 +50,16 @@ const node = () => __awaiter(void 0, void 0, void 0, function* () {
50
50
  });
51
51
  // Run a script with plain `node` to support inspector options.
52
52
  // https://github.com/TypeStrong/ts-node#programmatic
53
- return exec('node', ...args.node, '--require', 'tsconfig-paths/register', '--require', 'ts-node/register/transpile-only', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
53
+ return exec('node', ...args.node, '--require', 'dotenv/config', '--require', 'tsconfig-paths/register', '--require', 'ts-node/register/transpile-only',
54
+ // Override dangerously warn-only default on Node.js <15 so that we
55
+ // predictably return a non-zero exit code on an unhandled rejection.
56
+ '--unhandled-rejections=throw', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
54
57
  }
55
58
  // REPL with `ts-node` to support import statements.
56
59
  return tsNode
57
60
  .createRepl({
58
61
  service: tsNode.register({
59
- require: ['tsconfig-paths/register'],
62
+ require: ['dotenv/config', 'tsconfig-paths/register'],
60
63
  transpileOnly: true,
61
64
  }),
62
65
  })
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/cli/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAC/B,gDAAkC;AAElC,wCAA6C;AAC7C,wCAA2C;AAC3C,oDAA+C;AAExC,MAAM,IAAI,GAAG,GAAS,EAAE;IAC7B,MAAM,IAAI,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,MAAM,IAAA,kBAAO,GAAE,CAAC;IAEtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC;YACtB,GAAG,EAAE;gBACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;gBACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;aACtE;SACF,CAAC,CAAC;QAEH,+DAA+D;QAC/D,qDAAqD;QACrD,OAAO,IAAI,CACT,MAAM,EACN,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,iCAAiC,EACjC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EACrC,GAAG,IAAI,CAAC,MAAM,CACf,CAAC;KACH;IAED,oDAAoD;IACpD,OAAO,MAAM;SACV,UAAU,CAAC;QACV,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;YACvB,OAAO,EAAE,CAAC,yBAAyB,CAAC;YACpC,aAAa,EAAE,IAAI;SACpB,CAAC;KACH,CAAC;SACD,KAAK,EAAE,CAAC;AACb,CAAC,CAAA,CAAC;AApCW,QAAA,IAAI,QAoCf"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/cli/node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAC/B,gDAAkC;AAElC,wCAA6C;AAC7C,wCAA2C;AAC3C,oDAA+C;AAExC,MAAM,IAAI,GAAG,GAAS,EAAE;IAC7B,MAAM,IAAI,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,MAAM,aAAa,GAAG,MAAM,IAAA,kBAAO,GAAE,CAAC;IAEtC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC;YACtB,GAAG,EAAE;gBACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;gBACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;aACtE;SACF,CAAC,CAAC;QAEH,+DAA+D;QAC/D,qDAAqD;QACrD,OAAO,IAAI,CACT,MAAM,EACN,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,eAAe,EACf,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,iCAAiC;QACjC,mEAAmE;QACnE,qEAAqE;QACrE,8BAA8B,EAC9B,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EACrC,GAAG,IAAI,CAAC,MAAM,CACf,CAAC;KACH;IAED,oDAAoD;IACpD,OAAO,MAAM;SACV,UAAU,CAAC;QACV,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;YACvB,OAAO,EAAE,CAAC,eAAe,EAAE,yBAAyB,CAAC;YACrD,aAAa,EAAE,IAAI;SACpB,CAAC;KACH,CAAC;SACD,KAAK,EAAE,CAAC;AACb,CAAC,CAAA,CAAC;AAzCW,QAAA,IAAI,QAyCf"}
package/lib/cli/start.js CHANGED
@@ -20,20 +20,19 @@ const exec_1 = require("../utils/exec");
20
20
  const manifest_1 = require("../utils/manifest");
21
21
  const validation_1 = require("../utils/validation");
22
22
  const start = () => __awaiter(void 0, void 0, void 0, function* () {
23
+ var _a;
23
24
  const [args, availablePort] = yield Promise.all([
24
25
  (0, args_1.parseRunArgs)(process.argv.slice(2)),
25
26
  (0, get_port_1.default)(),
26
27
  ]);
27
- if (!args.entryPoint) {
28
- args.entryPoint = yield (0, manifest_1.getEntryPointFromManifest)();
29
- }
28
+ (_a = args.entryPoint) !== null && _a !== void 0 ? _a : (args.entryPoint = yield (0, manifest_1.getEntryPointFromManifest)());
30
29
  const execProcess = (0, exec_1.createExec)({
31
30
  env: {
32
31
  __SKUBA_ENTRY_POINT: args.entryPoint,
33
32
  __SKUBA_PORT: String((0, validation_1.isIpPort)(args.port) ? args.port : availablePort),
34
33
  },
35
34
  });
36
- return execProcess('ts-node-dev', ...args.node, '--require', 'tsconfig-paths/register', '--respawn', '--transpile-only', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
35
+ return execProcess('ts-node-dev', ...args.node, '--require', 'dotenv/config', '--require', 'tsconfig-paths/register', '--respawn', '--transpile-only', path_1.default.join(__dirname, '..', 'wrapper'), ...args.script);
37
36
  });
38
37
  exports.start = start;
39
38
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAE/B,wCAA6C;AAC7C,wCAA2C;AAC3C,gDAA8D;AAC9D,oDAA+C;AAExC,MAAM,KAAK,GAAG,GAAS,EAAE;IAC9B,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,IAAA,kBAAO,GAAE;KACV,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,IAAA,oCAAyB,GAAE,CAAC;KACrD;IAED,MAAM,WAAW,GAAG,IAAA,iBAAU,EAAC;QAC7B,GAAG,EAAE;YACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;YACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;SACtE;KACF,CAAC,CAAC;IAEH,OAAO,WAAW,CAChB,aAAa,EACb,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EACrC,GAAG,IAAI,CAAC,MAAM,CACf,CAAC;AACJ,CAAC,CAAA,CAAC;AA3BW,QAAA,KAAK,SA2BhB"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,wDAA+B;AAE/B,wCAA6C;AAC7C,wCAA2C;AAC3C,gDAA8D;AAC9D,oDAA+C;AAExC,MAAM,KAAK,GAAG,GAAS,EAAE;;IAC9B,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,IAAA,mBAAY,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnC,IAAA,kBAAO,GAAE;KACV,CAAC,CAAC;IAEH,MAAA,IAAI,CAAC,UAAU,oCAAf,IAAI,CAAC,UAAU,GAAK,MAAM,IAAA,oCAAyB,GAAE,EAAC;IAEtD,MAAM,WAAW,GAAG,IAAA,iBAAU,EAAC;QAC7B,GAAG,EAAE;YACH,mBAAmB,EAAE,IAAI,CAAC,UAAU;YACpC,YAAY,EAAE,MAAM,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;SACtE;KACF,CAAC,CAAC;IAEH,OAAO,WAAW,CAChB,aAAa,EACb,GAAG,IAAI,CAAC,IAAI,EACZ,WAAW,EACX,eAAe,EACf,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EACrC,GAAG,IAAI,CAAC,MAAM,CACf,CAAC;AACJ,CAAC,CAAA,CAAC;AA3BW,QAAA,KAAK,SA2BhB"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Whether the code is executing in a CI environment.
4
+ */
5
+ export declare const isCiEnv: (env?: NodeJS.ProcessEnv) => boolean;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCiEnv = void 0;
4
+ /**
5
+ * Whether the code is executing in a CI environment.
6
+ */
7
+ const isCiEnv = (env = process.env) => Boolean(env.BUILDKITE || env.CI || env.GITHUB_ACTIONS);
8
+ exports.isCiEnv = isCiEnv;
9
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAW,EAAE,CACpD,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AAD5C,QAAA,OAAO,WACqC"}
package/package.json CHANGED
@@ -1,76 +1,22 @@
1
1
  {
2
- "name": "skuba",
3
- "description": "Toolkit for backend TypeScript development",
4
2
  "bin": {
5
3
  "skuba": "lib/skuba.js"
6
4
  },
7
- "engines": {
8
- "node": ">=14.18"
9
- },
10
- "version": "4.0.0",
11
- "main": "lib/index.js",
12
- "typings": "lib/index.d.ts",
13
- "files": [
14
- "config/**/*",
15
- "jest/**/*",
16
- "lib*/**/*.d.ts",
17
- "lib*/**/*.js",
18
- "lib*/**/*.js.map",
19
- "template/**/*",
20
- "jest-preset.js"
21
- ],
22
- "sideEffects": false,
23
- "license": "MIT",
24
- "scripts": {
25
- "build": "ts-node --transpile-only src/skuba build && scripts/postbuild.sh",
26
- "changeset:add": "changeset add && prettier --loglevel silent --write '.changeset/*.md'",
27
- "deploy": "scripts/deploy.sh",
28
- "format": "yarn skuba format",
29
- "lint": "yarn skuba lint",
30
- "release": "yarn build && changeset publish",
31
- "stage": "changeset version && yarn format",
32
- "skuba": "yarn build && node lib/skuba",
33
- "test": "yarn skuba test",
34
- "test:ci": "yarn skuba test --config jest.config.int.ts --runInBand",
35
- "test:int": "yarn skuba test --config jest.config.int.ts --runInBand",
36
- "test:template": "scripts/test-template.sh",
37
- "test:watch": "yarn skuba test --config jest.config.int.ts --runInBand --watch"
38
- },
39
- "repository": {
40
- "type": "git",
41
- "url": "https://github.com/seek-oss/skuba.git"
42
- },
43
- "devDependencies": {
44
- "@changesets/cli": "2.19.0",
45
- "@changesets/get-github-info": "0.5.0",
46
- "@jest/reporters": "27.4.6",
47
- "@types/ejs": "3.1.0",
48
- "@types/express": "4.17.13",
49
- "@types/fs-extra": "9.0.13",
50
- "@types/koa": "2.13.4",
51
- "@types/lodash.mergewith": "4.6.6",
52
- "@types/module-alias": "2.0.1",
53
- "@types/npm-which": "3.0.1",
54
- "@types/picomatch": "2.3.0",
55
- "@types/supertest": "2.0.11",
56
- "express": "4.17.2",
57
- "jsonfile": "6.1.0",
58
- "koa": "2.13.4",
59
- "memfs": "3.4.1",
60
- "semver": "7.3.5",
61
- "supertest": "6.2.1",
62
- "type-fest": "2.9.0"
5
+ "bugs": {
6
+ "url": "https://github.com/seek-oss/skuba/issues"
63
7
  },
64
8
  "dependencies": {
65
9
  "@octokit/rest": "^18.12.0",
66
10
  "@octokit/types": "^6.34.0",
67
11
  "@types/jest": "^27.4.0",
12
+ "@types/node": ">=14.18",
68
13
  "chalk": "^4.1.0",
69
14
  "concurrently": "^7.0.0",
15
+ "dotenv": "^16.0.0",
70
16
  "ejs": "^3.1.6",
71
17
  "enquirer": "^2.3.6",
72
18
  "eslint": "^7.27.0",
73
- "eslint-config-skuba": "1.0.14",
19
+ "eslint-config-skuba": "1.0.15",
74
20
  "execa": "^5.0.0",
75
21
  "fdir": "^5.0.0",
76
22
  "fs-extra": "^10.0.0",
@@ -82,11 +28,11 @@
82
28
  "jest": "^27.4.5",
83
29
  "latest-version": "^5.1.0",
84
30
  "lodash.mergewith": "^4.6.2",
85
- "normalize-package-data": "^3.0.0",
31
+ "normalize-package-data": "^4.0.0",
86
32
  "npm-run-path": "^4.0.1",
87
33
  "npm-which": "^3.0.1",
88
34
  "picomatch": "^2.2.2",
89
- "prettier": "~2.5.0",
35
+ "prettier": "~2.6.0",
90
36
  "read-pkg-up": "^7.0.1",
91
37
  "runtypes": "^6.0.0",
92
38
  "semantic-release": "^19.0.0",
@@ -94,12 +40,50 @@
94
40
  "simple-git": "^3.0.0",
95
41
  "strip-ansi": "^6.0.1",
96
42
  "ts-jest": "^27.1.2",
97
- "ts-node": "^9.1.1",
98
- "ts-node-dev": "^1.1.8",
43
+ "ts-node": "^10.5.0",
44
+ "ts-node-dev": "^2.0.0-0",
99
45
  "tsconfig-paths": "^3.11.0",
100
46
  "tsconfig-seek": "1.0.2",
101
47
  "typescript": "~4.4.4"
102
48
  },
49
+ "description": "SEEK development toolkit for backend applications and packages",
50
+ "devDependencies": {
51
+ "@changesets/cli": "2.21.1",
52
+ "@changesets/get-github-info": "0.5.0",
53
+ "@jest/reporters": "27.5.1",
54
+ "@types/ejs": "3.1.0",
55
+ "@types/express": "4.17.13",
56
+ "@types/fs-extra": "9.0.13",
57
+ "@types/koa": "2.13.4",
58
+ "@types/lodash.mergewith": "4.6.6",
59
+ "@types/module-alias": "2.0.1",
60
+ "@types/npm-which": "3.0.1",
61
+ "@types/picomatch": "2.3.0",
62
+ "@types/supertest": "2.0.11",
63
+ "express": "4.17.3",
64
+ "jsonfile": "6.1.0",
65
+ "koa": "2.13.4",
66
+ "memfs": "3.4.1",
67
+ "semver": "7.3.5",
68
+ "supertest": "6.2.2",
69
+ "type-fest": "2.12.0"
70
+ },
71
+ "engines": {
72
+ "node": ">=14.18"
73
+ },
74
+ "files": [
75
+ "config/**/*",
76
+ "jest/**/*",
77
+ "lib*/**/*.d.ts",
78
+ "lib*/**/*.js",
79
+ "lib*/**/*.js.map",
80
+ "template/**/*",
81
+ "jest-preset.js"
82
+ ],
83
+ "homepage": "https://github.com/seek-oss/skuba#readme",
84
+ "license": "MIT",
85
+ "main": "lib/index.js",
86
+ "name": "skuba",
103
87
  "peerDependencies": {
104
88
  "skuba-dive": "1 || 2"
105
89
  },
@@ -108,7 +92,37 @@
108
92
  "optional": true
109
93
  }
110
94
  },
95
+ "private": false,
96
+ "repository": {
97
+ "type": "git",
98
+ "url": "git+https://github.com/seek-oss/skuba.git"
99
+ },
111
100
  "resolutions": {
101
+ "**/@types/node": ">=14.18",
112
102
  "semantic-release/@semantic-release/npm/npm/**/ansi-regex": "5.0.1"
113
- }
103
+ },
104
+ "scripts": {
105
+ "build": "ts-node --transpile-only src/skuba build && scripts/postbuild.sh",
106
+ "changeset:add": "changeset add && prettier --loglevel silent --write '.changeset/*.md'",
107
+ "deploy": "scripts/deploy.sh",
108
+ "format": "yarn skuba format",
109
+ "lint": "yarn skuba lint",
110
+ "release": "yarn build && changeset publish",
111
+ "stage": "changeset version && yarn format",
112
+ "skuba": "yarn build && node lib/skuba",
113
+ "test": "yarn skuba test",
114
+ "test:ci": "yarn skuba test --config jest.config.int.ts --runInBand",
115
+ "test:int": "yarn skuba test --config jest.config.int.ts --runInBand",
116
+ "test:template": "scripts/test-template.sh",
117
+ "test:watch": "yarn skuba test --config jest.config.int.ts --runInBand --watch"
118
+ },
119
+ "sideEffects": false,
120
+ "skuba": {
121
+ "entryPoint": "src/index.ts",
122
+ "template": null,
123
+ "type": "package",
124
+ "version": "4.0.0"
125
+ },
126
+ "types": "./lib/index.d.ts",
127
+ "version": "4.2.0-beta.0"
114
128
  }
@@ -10,6 +10,12 @@ export default Jest.mergePreset({
10
10
  statements: 0,
11
11
  },
12
12
  },
13
+ globals: {
14
+ 'ts-jest': {
15
+ // seek-oss/skuba#626
16
+ isolatedModules: true,
17
+ },
18
+ },
13
19
  setupFiles: ['<rootDir>/jest.setup.ts'],
14
20
  testPathIgnorePatterns: ['/test\\.ts'],
15
21
  });
@@ -1,13 +1,7 @@
1
- configs:
2
- environments:
3
- - &dev
4
- agents:
5
- queue: <%- devBuildkiteQueueName %>
6
-
7
- - &prod
8
- agents:
9
- queue: <%- prodBuildkiteQueueName %>
1
+ agents:
2
+ queue: <%- prodBuildkiteQueueName %>
10
3
 
4
+ configs:
11
5
  plugins:
12
6
  - &aws-sm
13
7
  seek-oss/aws-sm#v2.3.1:
@@ -36,8 +30,7 @@ configs:
36
30
  permit_on_passed: true
37
31
 
38
32
  steps:
39
- - <<: *prod
40
- label: ๐Ÿง–โ€โ™€๏ธ Warm Prod
33
+ - label: ๐Ÿง–โ€โ™€๏ธ Warm Prod
41
34
  command: ':'
42
35
  key: warm-prod
43
36
  plugins:
@@ -45,8 +38,7 @@ steps:
45
38
  - *private-npm
46
39
  - *docker-ecr-cache
47
40
 
48
- - <<: *prod
49
- label: ๐Ÿงช Test & Lint
41
+ - label: ๐Ÿงช Test & Lint
50
42
  commands:
51
43
  - echo '+++ yarn test:ci'
52
44
  - yarn test:ci
@@ -62,14 +54,13 @@ steps:
62
54
  - docker-compose#v3.9.0:
63
55
  run: app
64
56
 
65
- - <<: *prod
66
- label: ๐Ÿ“ฆ Build & Package
57
+ - label: ๐Ÿ“ฆ Build & Package
67
58
  depends_on: warm-prod
68
59
  plugins:
69
60
  - *aws-sm
70
61
  - *private-npm
71
62
  - *docker-ecr-cache
72
- - seek-jobs/gantry#v1.6.1:
63
+ - seek-jobs/gantry#v1.6.2:
73
64
  command: build
74
65
  file: gantry.build.yml
75
66
  region: <%- region %>
@@ -79,13 +70,14 @@ steps:
79
70
  - block: ๐Ÿ™‹๐Ÿปโ€โ™€๏ธ Deploy Dev
80
71
  branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
81
72
 
82
- - <<: *dev
83
- <<: *deploy
73
+ - <<: *deploy
74
+ agents:
75
+ queue: <%- devBuildkiteQueueName %>
84
76
  label: ๐Ÿคž Deploy Dev
85
77
  concurrency_group: <%- teamName %>/deploy/gantry/<%- devGantryEnvironmentName %>
86
78
  key: deploy-dev
87
79
  plugins:
88
- - seek-jobs/gantry#v1.6.1:
80
+ - seek-jobs/gantry#v1.6.2:
89
81
  command: apply
90
82
  environment: <%- devGantryEnvironmentName %>
91
83
  file: gantry.apply.yml
@@ -94,14 +86,13 @@ steps:
94
86
  - .gantry/common.yml
95
87
  - .gantry/dev.yml
96
88
 
97
- - <<: *prod
98
- <<: *deploy
89
+ - <<: *deploy
99
90
  label: ๐Ÿš€ Deploy Prod
100
91
  branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
101
92
  concurrency_group: <%- teamName %>/deploy/gantry/<%- prodGantryEnvironmentName %>
102
93
  depends_on: deploy-dev
103
94
  plugins:
104
- - seek-jobs/gantry#v1.6.1:
95
+ - seek-jobs/gantry#v1.6.2:
105
96
  command: apply
106
97
  environment: <%- prodGantryEnvironmentName %>
107
98
  file: gantry.apply.yml
@@ -0,0 +1 @@
1
+ ENVIRONMENT=local
@@ -3,11 +3,13 @@ version: '3.7'
3
3
  services:
4
4
  app:
5
5
  environment:
6
- # Enable Buildkite + GitHub annotation support.
6
+ # Enable Buildkite + GitHub integrations.
7
7
  - BUILDKITE
8
8
  - BUILDKITE_AGENT_ACCESS_TOKEN
9
+ - BUILDKITE_BRANCH
9
10
  - BUILDKITE_BUILD_NUMBER
10
11
  - BUILDKITE_JOB_ID
12
+ - BUILDKITE_PIPELINE_DEFAULT_BRANCH
11
13
  - BUILDKITE_STEP_ID
12
14
  - GITHUB_API_TOKEN
13
15
  image: ${BUILDKITE_PLUGIN_DOCKER_IMAGE:-''}
@@ -108,6 +108,8 @@ cpu: 256
108
108
  memory: 512
109
109
 
110
110
  deployment:
111
+ # SEEK-Jobs/gantry#488
112
+ ignoreAlarms: true
111
113
  smokeTest:
112
114
  path: /smoke
113
115
  useExternalDns: true
@@ -9,4 +9,5 @@ buildArgs:
9
9
  BASE_IMAGE: '{{.Env.BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_EXPORT_IMAGE}}'
10
10
  BASE_TAG: '{{.Env.BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_EXPORT_TAG}}'
11
11
 
12
- failOnScanFindings: true
12
+ # SEEK-Jobs/gantry#1661
13
+ failOnScanFindings: false
@@ -2,7 +2,7 @@
2
2
  "dependencies": {
3
3
  "@seek/logger": "^5.0.1",
4
4
  "express": "^4.17.1",
5
- "skuba-dive": "^1.2.0"
5
+ "skuba-dive": "^2.0.0"
6
6
  },
7
7
  "devDependencies": {
8
8
  "@types/express": "^4.17.13",
@@ -21,7 +21,7 @@
21
21
  "build": "skuba build",
22
22
  "format": "skuba format",
23
23
  "lint": "skuba lint",
24
- "start": "ENVIRONMENT=local skuba start --port <%- port %>",
24
+ "start": "skuba start --port <%- port %>",
25
25
  "start:debug": "yarn start --inspect-brk",
26
26
  "test": "skuba test",
27
27
  "test:ci": "skuba test --coverage",
@@ -1,11 +1,7 @@
1
- configs:
2
- environments:
3
- - &prod
4
- agents:
5
- queue: <%- prodBuildkiteQueueName %>
6
- env:
7
- ENVIRONMENT: prod
1
+ agents:
2
+ queue: <%- prodBuildkiteQueueName %>
8
3
 
4
+ configs:
9
5
  plugins:
10
6
  - &aws-sm
11
7
  seek-oss/aws-sm#v2.3.1:
@@ -24,8 +20,7 @@ configs:
24
20
  env: NPM_READ_TOKEN
25
21
 
26
22
  steps:
27
- - <<: *prod
28
- label: ๐Ÿงช Test & Lint
23
+ - label: ๐Ÿงช Test & Lint
29
24
  commands:
30
25
  - echo '+++ yarn test:ci'
31
26
  - yarn test:ci
@@ -3,11 +3,13 @@ version: '3.7'
3
3
  services:
4
4
  app:
5
5
  environment:
6
- # Enable Buildkite + GitHub annotation support.
6
+ # Enable Buildkite + GitHub integrations.
7
7
  - BUILDKITE
8
8
  - BUILDKITE_AGENT_ACCESS_TOKEN
9
+ - BUILDKITE_BRANCH
9
10
  - BUILDKITE_BUILD_NUMBER
10
11
  - BUILDKITE_JOB_ID
12
+ - BUILDKITE_PIPELINE_DEFAULT_BRANCH
11
13
  - BUILDKITE_STEP_ID
12
14
  - GITHUB_API_TOKEN
13
15
  image: ${BUILDKITE_PLUGIN_DOCKER_IMAGE:-''}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "skuba-dive": "^1.2.0"
3
+ "skuba-dive": "^2.0.0"
4
4
  },
5
5
  "devDependencies": {
6
6
  "@types/node": "^16.0.0",
@@ -15,7 +15,7 @@
15
15
  "build": "skuba build",
16
16
  "format": "skuba format",
17
17
  "lint": "skuba lint",
18
- "start": "ENVIRONMENT=local skuba start",
18
+ "start": "skuba start",
19
19
  "start:debug": "yarn start --inspect-brk",
20
20
  "test": "skuba test",
21
21
  "test:ci": "skuba test --coverage",