skuba 3.17.2 โ†’ 4.1.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 (37) hide show
  1. package/jest/moduleNameMapper.js +4 -7
  2. package/lib/cli/adapter/eslint.js +16 -1
  3. package/lib/cli/adapter/eslint.js.map +1 -1
  4. package/lib/cli/configure/analysis/package.js +1 -1
  5. package/lib/cli/configure/analysis/package.js.map +1 -1
  6. package/lib/cli/configure/modules/package.js +1 -1
  7. package/lib/cli/configure/modules/package.js.map +1 -1
  8. package/lib/cli/configure/processing/package.d.ts +1 -0
  9. package/lib/cli/node.js +5 -2
  10. package/lib/cli/node.js.map +1 -1
  11. package/lib/cli/start.js +3 -4
  12. package/lib/cli/start.js.map +1 -1
  13. package/package.json +81 -67
  14. package/template/base/jest.config.ts +6 -0
  15. package/template/express-rest-api/.buildkite/pipeline.yml +13 -22
  16. package/template/express-rest-api/.env +1 -0
  17. package/template/express-rest-api/Dockerfile +3 -0
  18. package/template/express-rest-api/gantry.apply.yml +2 -0
  19. package/template/express-rest-api/gantry.build.yml +2 -1
  20. package/template/express-rest-api/package.json +2 -2
  21. package/template/greeter/.buildkite/pipeline.yml +4 -9
  22. package/template/greeter/package.json +2 -2
  23. package/template/koa-rest-api/.buildkite/pipeline.yml +13 -22
  24. package/template/koa-rest-api/.env +1 -0
  25. package/template/koa-rest-api/Dockerfile +3 -0
  26. package/template/koa-rest-api/README.md +1 -1
  27. package/template/koa-rest-api/gantry.apply.yml +2 -0
  28. package/template/koa-rest-api/gantry.build.yml +2 -1
  29. package/template/koa-rest-api/package.json +3 -3
  30. package/template/lambda-sqs-worker/.buildkite/pipeline.yml +17 -22
  31. package/template/lambda-sqs-worker/.env +1 -0
  32. package/template/lambda-sqs-worker/package.json +3 -3
  33. package/template/lambda-sqs-worker/serverless.yml +20 -21
  34. package/template/lambda-sqs-worker-cdk/.buildkite/pipeline.yml +14 -20
  35. package/template/lambda-sqs-worker-cdk/infra/__snapshots__/appStack.test.ts.snap +4 -0
  36. package/template/lambda-sqs-worker-cdk/infra/appStack.ts +4 -0
  37. package/template/private-npm-package/.buildkite/pipeline.yml +3 -2
@@ -11,7 +11,7 @@ const {
11
11
  /**
12
12
  * Set a default `src` module alias for backward compatibility.
13
13
  *
14
- * TODO: drop this default in skuba v4.
14
+ * TODO: drop this default in skuba v5.
15
15
  */
16
16
  const DEFAULT_PATHS = { src: ['src'], 'src/*': ['src/*'] };
17
17
 
@@ -20,8 +20,7 @@ const DEFAULT_PATHS = { src: ['src'], 'src/*': ['src/*'] };
20
20
  */
21
21
  const getConfigFromDisk = () => {
22
22
  const filename =
23
- // TODO: drop Node.js 12 compatibility and switch to ?? in skuba v4.
24
- findConfigFile('.', sys.fileExists.bind(this)) || 'tsconfig.json';
23
+ findConfigFile('.', sys.fileExists.bind(this)) ?? 'tsconfig.json';
25
24
 
26
25
  return readConfigFile(filename, sys.readFile.bind(this)).config;
27
26
  };
@@ -33,8 +32,7 @@ module.exports.createModuleNameMapper = (getConfig = getConfigFromDisk) => {
33
32
  const parsedConfig = parseJsonConfigFileContent(json, sys, '.');
34
33
 
35
34
  const paths = Object.fromEntries(
36
- // TODO: drop Node.js 12 compatibility and switch to ?? in skuba v4.
37
- Object.entries(parsedConfig.options.paths || DEFAULT_PATHS).flatMap(
35
+ Object.entries(parsedConfig.options.paths ?? DEFAULT_PATHS).flatMap(
38
36
  ([key, values]) => [
39
37
  // Pass through the input path entry almost verbatim.
40
38
  // We trim a trailing slash because TypeScript allows `import 'src'`
@@ -66,8 +64,7 @@ module.exports.createModuleNameMapper = (getConfig = getConfigFromDisk) => {
66
64
  ),
67
65
  );
68
66
 
69
- // TODO: drop Node.js 12 compatibility and switch to ?? in skuba v4.
70
- const prefix = path.join('<rootDir>', parsedConfig.options.baseUrl || '.');
67
+ const prefix = path.join('<rootDir>', parsedConfig.options.baseUrl ?? '.');
71
68
 
72
69
  const moduleNameMapper = pathsToModuleNameMapper(paths, { prefix });
73
70
 
@@ -34,10 +34,25 @@ const runESLint = (mode, logger) => __awaiter(void 0, void 0, void 0, function*
34
34
  const cwd = process.cwd();
35
35
  logger.debug('Processing files...');
36
36
  const start = process.hrtime.bigint();
37
+ /* eslint-disable no-console */
38
+ const ogConsoleError = console.error;
39
+ console.error = (...args) => {
40
+ if (args[0] !==
41
+ // `eslint-plugin-react` prints this annoying error on non-React repos.
42
+ // We still want to support React linting for repos that have React code,
43
+ // so we have to manually suppress it.
44
+ //
45
+ // https://github.com/yannickcr/eslint-plugin-react/blob/7484acaca8351a8568fa99344bc811c5cd8396bd/lib/util/version.js#L61-L65
46
+ 'Warning: React version was set to "detect" in eslint-plugin-react settings, but the "react" package is not installed. Assuming latest React version for linting.') {
47
+ ogConsoleError(...args);
48
+ }
49
+ };
37
50
  const [formatter, results] = yield Promise.all([
38
51
  engine.loadFormatter(),
39
52
  engine.lintFiles('.'),
40
53
  ]);
54
+ console.error = ogConsoleError;
55
+ /* eslint-enable no-console */
41
56
  const end = process.hrtime.bigint();
42
57
  logger.plain(`Processed ${(0, logging_1.pluralise)(results.length, 'file')} in ${logger.timing(start, end)}.`);
43
58
  const errors = [];
@@ -60,7 +75,7 @@ const runESLint = (mode, logger) => __awaiter(void 0, void 0, void 0, function*
60
75
  }
61
76
  const ok = errors.length === 0;
62
77
  yield eslint_1.ESLint.outputFixes(results);
63
- const output = formatter.format(results);
78
+ const output = yield formatter.format(results);
64
79
  if (output) {
65
80
  logger.plain(output);
66
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAExB,kDAA0B;AAE1B,mCAAgC;AAGhC,iDAAgD;AAEhD,MAAM,eAAe,GAAG,CAAC,MAAyB,EAAE,EAAE;IACpD,IAAI,MAAM,CAAC,UAAU,EAAE;QACrB,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC,CAAC;AAcK,MAAM,SAAS,GAAG,CACvB,IAAuB,EACvB,MAAc,EACS,EAAE;IACzB,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;QACxB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAC/B,GAAG,EAAE,IAAI,KAAK,QAAQ;QACtB,6BAA6B,EAAE,OAAO;KACvC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEtC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,MAAM,CAAC,aAAa,EAAE;QACtB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAEpC,MAAM,CAAC,KAAK,CACV,aAAa,IAAA,mBAAS,EAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,MAAM,CAChE,KAAK,EACL,GAAG,CACJ,GAAG,CACL,CAAC;IAEF,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QAED,IAAI,MAAM,CAAC,YAAY,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;KACrD;IAED,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAE/B,MAAM,eAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC,CAAA,CAAC;AAlEW,QAAA,SAAS,aAkEpB"}
1
+ {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../../src/cli/adapter/eslint.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,7 @@ const generateNotices = ({ dependencies, devDependencies, }) => {
56
56
  logging_1.log.newline();
57
57
  logging_1.log.warn("We're going to tweak your output directories,", 'so double check your bundle once this is done.');
58
58
  logging_1.log.newline();
59
- logging_1.log.warn('Read more:', logging_1.log.bold('https://github.com/seek-oss/skuba/blob/master/docs/migrating-from-seek-module-toolkit.md#building'));
59
+ logging_1.log.warn('Read more:', logging_1.log.bold('https://seek-oss.github.io/skuba/docs/migration-guides/seek-module-toolkit.html#building'));
60
60
  };
61
61
  }
62
62
  return () => { };
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/analysis/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/analysis/package.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ const packageModule = ({ entryPoint, type, }) => __awaiter(void 0, void 0, void
24
24
  const version = yield (0, version_1.getSkubaVersion)();
25
25
  const initialData = {
26
26
  private: type !== 'package',
27
- scripts: Object.assign(Object.assign({ build: type === 'package' ? 'skuba build-package' : 'skuba build', format: 'skuba format', lint: 'skuba lint' }, (type === 'package' ? {} : { start: 'ENVIRONMENT=local skuba start' })), { test: 'skuba test --coverage', 'test:watch': 'skuba test --watch' }),
27
+ scripts: Object.assign(Object.assign({ build: type === 'package' ? 'skuba build-package' : 'skuba build', format: 'skuba format', lint: 'skuba lint' }, (type === 'package' ? {} : { start: 'skuba start' })), { test: 'skuba test --coverage', 'test:watch': 'skuba test --watch' }),
28
28
  skuba: {
29
29
  entryPoint,
30
30
  template: null,
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/modules/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../src/cli/configure/modules/package.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export declare const createDependencyFilter: (names: readonly string[], type: 'd
21
21
  type?: "module" | "commonjs" | undefined;
22
22
  main?: string | undefined;
23
23
  exports?: import("type-fest").PackageJson.Exports | undefined;
24
+ imports?: import("type-fest").PackageJson.Imports | undefined;
24
25
  bin?: string | Record<string, string> | undefined;
25
26
  man?: string | string[] | undefined;
26
27
  directories?: import("type-fest").PackageJson.DirectoryLocations | undefined;
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"}
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": ">=12"
9
- },
10
- "version": "3.17.2",
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.13",
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",
@@ -78,37 +24,105 @@
78
24
  "get-port": "^5.1.1",
79
25
  "ignore": "^5.1.8",
80
26
  "is-installed-globally": "^0.4.0",
81
- "isomorphic-git": "^1.10.1",
27
+ "isomorphic-git": "^1.11.1",
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
- "semantic-release": "^17.4.7",
38
+ "semantic-release": "^19.0.0",
93
39
  "serialize-error": "^8.0.1",
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
- "skuba-dive": "1"
88
+ "skuba-dive": "1 || 2"
105
89
  },
106
90
  "peerDependenciesMeta": {
107
91
  "skuba-dive": {
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.1.1"
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.5.2:
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.5.2:
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.5.2:
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
@@ -27,6 +27,9 @@ COPY --from=deps /workdir/node_modules node_modules
27
27
 
28
28
  ENV NODE_ENV production
29
29
 
30
+ # https://nodejs.org/api/cli.html#cli_node_options_options
31
+ ENV NODE_OPTIONS --enable-source-maps
32
+
30
33
  ARG PORT=8001
31
34
  ENV PORT ${PORT}
32
35
  EXPOSE ${PORT}
@@ -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
@@ -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",
@@ -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.5.2:
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.5.2:
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.5.2:
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
@@ -27,6 +27,9 @@ COPY --from=deps /workdir/node_modules node_modules
27
27
 
28
28
  ENV NODE_ENV production
29
29
 
30
+ # https://nodejs.org/api/cli.html#cli_node_options_options
31
+ ENV NODE_OPTIONS --enable-source-maps
32
+
30
33
  ARG PORT=8001
31
34
  ENV PORT ${PORT}
32
35
  EXPOSE ${PORT}
@@ -36,7 +36,7 @@ This would be replaced with an external data store in production.
36
36
 
37
37
  This project is deployed as a containerised application with [Gantry].
38
38
  A typical resource API instance does not require more than 1 vCPU,
39
- so we eskew clustering configurations in favour of a single Node.js process per container.
39
+ so we eschew clustering configurations in favour of a single Node.js process per container.
40
40
  Under load, we autoscale horizontally in terms of container count up to `autoScaling.maxCount`.
41
41
 
42
42
  Gantry configures [CodeDeploy] for a blue-green deployment approach.
@@ -115,6 +115,8 @@ cpu: 256
115
115
  memory: 512
116
116
 
117
117
  deployment:
118
+ # SEEK-Jobs/gantry#488
119
+ ignoreAlarms: true
118
120
  smokeTest:
119
121
  path: /smoke
120
122
  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
@@ -3,7 +3,7 @@
3
3
  "@koa/router": "^10.1.1",
4
4
  "@opentelemetry/api": "^1.0.4",
5
5
  "@opentelemetry/exporter-collector-grpc": "^0.25.0",
6
- "@opentelemetry/instrumentation-aws-sdk": "^0.4.0",
6
+ "@opentelemetry/instrumentation-aws-sdk": "^0.6.0",
7
7
  "@opentelemetry/instrumentation-http": "^0.27.0",
8
8
  "@opentelemetry/sdk-node": "^0.27.0",
9
9
  "@seek/logger": "^5.0.1",
@@ -16,7 +16,7 @@
16
16
  "runtypes-filter": "^0.6.0",
17
17
  "seek-datadog-custom-metrics": "^4.0.0",
18
18
  "seek-koala": "^5.1.0",
19
- "skuba-dive": "^1.2.0",
19
+ "skuba-dive": "^2.0.0",
20
20
  "uuid": "^8.3.2"
21
21
  },
22
22
  "devDependencies": {
@@ -41,7 +41,7 @@
41
41
  "build": "skuba build",
42
42
  "format": "skuba format",
43
43
  "lint": "skuba lint",
44
- "start": "ENVIRONMENT=local skuba start --port <%- port %>",
44
+ "start": "skuba start --port <%- port %>",
45
45
  "start:debug": "yarn start --inspect-brk",
46
46
  "test": "skuba test",
47
47
  "test:ci": "skuba test --coverage",
@@ -1,20 +1,7 @@
1
- env:
2
- VERSION: ${BUILDKITE_COMMIT:0:7}.${BUILDKITE_BUILD_NUMBER}
1
+ agents:
2
+ queue: <%- prodBuildkiteQueueName %>
3
3
 
4
4
  configs:
5
- environments:
6
- - &dev
7
- agents:
8
- queue: <%- devBuildkiteQueueName %>
9
- env:
10
- ENVIRONMENT: dev
11
-
12
- - &prod
13
- agents:
14
- queue: <%- prodBuildkiteQueueName %>
15
- env:
16
- ENVIRONMENT: prod
17
-
18
5
  plugins:
19
6
  - &aws-sm
20
7
  seek-oss/aws-sm#v2.3.1:
@@ -48,15 +35,18 @@ configs:
48
35
  - docker-compose#v3.9.0:
49
36
  dependencies: false
50
37
  run: app
38
+ tty: false
51
39
  retry:
52
40
  manual:
53
41
  # Only use this if you need to roll back a deployment ASAP.
54
42
  # Always follow up with a proper revert or fix in Git history.
55
43
  permit_on_passed: true
56
44
 
45
+ env:
46
+ VERSION: ${BUILDKITE_COMMIT:0:7}.${BUILDKITE_BUILD_NUMBER}
47
+
57
48
  steps:
58
- - <<: *prod
59
- label: ๐Ÿงช Test, Lint & Build
49
+ - label: ๐Ÿงช Test, Lint & Build
60
50
  artifact_paths: lib/**/*
61
51
  commands:
62
52
  - echo '+++ yarn test:ci'
@@ -74,7 +64,8 @@ steps:
74
64
  - docker-compose#v3.9.0:
75
65
  run: app
76
66
 
77
- - <<: *dev
67
+ - agents:
68
+ queue: <%- devBuildkiteQueueName %>
78
69
  branches: '!renovate/*'
79
70
  label: ๐Ÿง–โ€โ™€๏ธ Warm Dev
80
71
  command: ':'
@@ -87,15 +78,19 @@ steps:
87
78
  - block: ๐Ÿ™‹๐Ÿปโ€โ™€๏ธ Deploy Dev
88
79
  branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
89
80
 
90
- - <<: *dev
91
- <<: *deploy
81
+ - <<: *deploy
82
+ agents:
83
+ queue: <%- devBuildkiteQueueName %>
84
+ env:
85
+ ENVIRONMENT: dev
92
86
  concurrency_group: <%- repoName %>/deploy/dev
93
87
  label: ๐Ÿคž Deploy Dev
94
88
 
95
89
  - wait
96
90
 
97
- - <<: *prod
98
- <<: *deploy
91
+ - <<: *deploy
92
+ env:
93
+ ENVIRONMENT: prod
99
94
  branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
100
95
  concurrency_group: <%- repoName %>/deploy/prod
101
96
  label: ๐Ÿš€ Deploy Prod
@@ -0,0 +1 @@
1
+ ENVIRONMENT=local
@@ -3,7 +3,7 @@
3
3
  "@seek/logger": "^5.0.1",
4
4
  "aws-sdk": "^2.1011.0",
5
5
  "seek-datadog-custom-metrics": "^4.0.0",
6
- "skuba-dive": "^1.2.0",
6
+ "skuba-dive": "^2.0.0",
7
7
  "runtypes": "^6.4.1",
8
8
  "runtypes-filter": "^0.6.0"
9
9
  },
@@ -13,7 +13,7 @@
13
13
  "@types/node": "^14.0.0",
14
14
  "chance": "^1.1.8",
15
15
  "pino-pretty": "^7.1.0",
16
- "serverless": "^2.63.0",
16
+ "serverless": "^3.0.0",
17
17
  "serverless-plugin-canary-deployments": "^0.7.0",
18
18
  "serverless-prune-plugin": "^2.0.0",
19
19
  "skuba": "*"
@@ -29,7 +29,7 @@
29
29
  "format": "skuba format",
30
30
  "lint": "skuba lint",
31
31
  "smoke": "serverless invoke --data '{}' --function Worker",
32
- "start": "ENVIRONMENT=local skuba start --port <%- port %>",
32
+ "start": "skuba start --port <%- port %>",
33
33
  "start:debug": "yarn start --inspect-brk",
34
34
  "test": "skuba test",
35
35
  "test:ci": "skuba test --coverage",
@@ -1,18 +1,18 @@
1
1
  service: <%- serviceName %>
2
2
 
3
3
  configValidationMode: error
4
- variablesResolutionMode: 20210326
4
+
5
+ params:
6
+ default:
7
+ description: <%- description %>
8
+ dev:
9
+ deploymentBucket: 'TODO: deploymentBucketName'
10
+ isProduction: false
11
+ prod:
12
+ deploymentBucket: 'TODO: deploymentBucketName'
13
+ isProduction: true
5
14
 
6
15
  custom:
7
- description: <%- description %>
8
- env: ${self:custom.envs.${env:ENVIRONMENT}}
9
- envs:
10
- dev:
11
- deploymentBucket: 'TODO: deploymentBucketName'
12
- isProduction: false
13
- prod:
14
- deploymentBucket: 'TODO: deploymentBucketName'
15
- isProduction: true
16
16
  prune:
17
17
  automatic: true
18
18
  number: 3
@@ -22,7 +22,6 @@ plugins:
22
22
  - serverless-prune-plugin
23
23
 
24
24
  provider:
25
- lambdaHashingVersion: 20201221
26
25
  logRetentionInDays: 30
27
26
  name: aws
28
27
  region: ap-southeast-2
@@ -34,7 +33,13 @@ provider:
34
33
  deploymentBucket:
35
34
  # Use a shared account-level bucket for Lambda bundles and other artefacts.
36
35
  # This is easier to manage in terms of access, deployment, and tagging.
37
- name: ${self:custom.env.deploymentBucket}
36
+ name: ${param:deploymentBucket}
37
+ environment:
38
+ # https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
39
+ AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
40
+ NODE_ENV: production
41
+ # https://nodejs.org/api/cli.html#cli_node_options_options
42
+ NODE_OPTIONS: --enable-source-maps
38
43
  iam:
39
44
  role:
40
45
  statements:
@@ -59,7 +64,7 @@ provider:
59
64
  # https://rfc.skinfra.xyz/RFC019-AWS-Tagging-Standard.html#seekdatatypes
60
65
  # seek:data:types:restricted: job-ads
61
66
  seek:env:label: ${env:ENVIRONMENT}
62
- seek:env:production: ${self:custom.env.isProduction}
67
+ seek:env:production: ${param:isProduction}
63
68
  seek:owner:team: '<%- teamName %>'
64
69
  seek:source:sha: ${env:BUILDKITE_COMMIT, 'na'}
65
70
  seek:source:url: 'https://github.com/SEEK-Jobs/<%- repoName %>'
@@ -74,7 +79,7 @@ functions:
74
79
  Worker:
75
80
  name: ${self:service}
76
81
  handler: lib/app.handler
77
- description: ${self:custom.description}
82
+ description: ${param:description}
78
83
  memorySize: 128
79
84
  reservedConcurrency: 20
80
85
  timeout: 30
@@ -83,9 +88,6 @@ functions:
83
88
  alias: Live
84
89
  preTrafficHook: WorkerPreHook
85
90
  environment:
86
- # https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
87
- AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
88
-
89
91
  ENVIRONMENT: ${env:ENVIRONMENT}
90
92
  SERVICE: ${self:service}
91
93
  VERSION: ${env:VERSION, 'local'}
@@ -102,14 +104,11 @@ functions:
102
104
  # This is generous because a timeout will hang the deployment
103
105
  timeout: 300
104
106
  environment:
105
- # https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
106
- AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1
107
-
108
107
  FUNCTION_NAME_TO_INVOKE: ${self:functions.Worker.name}
109
108
 
110
109
  resources:
111
110
  # This becomes the Lambda application's description
112
- Description: ${self:custom.description}
111
+ Description: ${param:description}
113
112
 
114
113
  Resources:
115
114
  DeadLetterQueue:
@@ -1,17 +1,7 @@
1
- configs:
2
- environments:
3
- - &dev
4
- agents:
5
- queue: <%- devBuildkiteQueueName %>
6
- env:
7
- ENVIRONMENT: dev
8
-
9
- - &prod
10
- agents:
11
- queue: <%- prodBuildkiteQueueName %>
12
- env:
13
- ENVIRONMENT: prod
1
+ agents:
2
+ queue: <%- prodBuildkiteQueueName %>
14
3
 
4
+ configs:
15
5
  plugins:
16
6
  - &aws-sm
17
7
  seek-oss/aws-sm#v2.3.1:
@@ -52,8 +42,7 @@ configs:
52
42
  permit_on_passed: true
53
43
 
54
44
  steps:
55
- - <<: *prod
56
- label: ๐Ÿงช Test, Lint & Build
45
+ - label: ๐Ÿงช Test, Lint & Build
57
46
  artifact_paths: lib/**/*
58
47
  commands:
59
48
  - echo '+++ yarn test:ci'
@@ -71,7 +60,8 @@ steps:
71
60
  - docker-compose#v3.9.0:
72
61
  run: app
73
62
 
74
- - <<: *dev
63
+ - agents:
64
+ queue: <%- devBuildkiteQueueName %>
75
65
  branches: '!renovate/*'
76
66
  label: ๐Ÿง–โ€โ™€๏ธ Warm Dev
77
67
  command: ':'
@@ -84,14 +74,18 @@ steps:
84
74
  - block: ๐Ÿ™‹๐Ÿปโ€โ™€๏ธ Deploy Dev
85
75
  branches: '!${BUILDKITE_PIPELINE_DEFAULT_BRANCH}'
86
76
 
87
- - <<: *dev
88
- <<: *deploy
77
+ - <<: *deploy
78
+ agents:
79
+ queue: <%- devBuildkiteQueueName %>
80
+ env:
81
+ ENVIRONMENT: dev
89
82
  label: ๐Ÿคž Deploy Dev
90
83
  concurrency_group: '<%- repoName %>/deploy/dev'
91
84
  key: deploy-dev
92
85
 
93
- - <<: *prod
94
- <<: *deploy
86
+ - <<: *deploy
87
+ env:
88
+ ENVIRONMENT: prod
95
89
  label: ๐Ÿš€ Deploy Prod
96
90
  branches: ${BUILDKITE_PIPELINE_DEFAULT_BRANCH}
97
91
  concurrency_group: '<%- repoName %>/deploy/prod'
@@ -155,6 +155,8 @@ Object {
155
155
  "Environment": Object {
156
156
  "Variables": Object {
157
157
  "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1",
158
+ "NODE_ENV": "production",
159
+ "NODE_OPTIONS": "--enable-source-maps",
158
160
  "SOMETHING": "dev",
159
161
  },
160
162
  },
@@ -509,6 +511,8 @@ Object {
509
511
  "Environment": Object {
510
512
  "Variables": Object {
511
513
  "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1",
514
+ "NODE_ENV": "production",
515
+ "NODE_OPTIONS": "--enable-source-maps",
512
516
  "SOMETHING": "prod",
513
517
  },
514
518
  },
@@ -57,7 +57,11 @@ export class AppStack extends Stack {
57
57
  functionName: '<%- serviceName %>',
58
58
  environmentEncryption: kmsKey,
59
59
  environment: {
60
+ // https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
60
61
  AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1',
62
+ NODE_ENV: 'production',
63
+ // https://nodejs.org/api/cli.html#cli_node_options_options
64
+ NODE_OPTIONS: '--enable-source-maps',
61
65
  ...context.workerLambda.environment,
62
66
  },
63
67
  });
@@ -1,4 +1,5 @@
1
+ agents:
2
+ queue: artefacts:npm
3
+
1
4
  steps:
2
5
  - command: aws s3 cp s3://seek-npm-package-buildkite-pipeline/pipeline-latest.sh - | bash | buildkite-agent pipeline upload
3
- agents:
4
- queue: artefacts:npm