skuba 3.17.0-beta.3 → 3.17.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.
@@ -0,0 +1,89 @@
1
+ const path = require('path');
2
+
3
+ const { pathsToModuleNameMapper } = require('ts-jest');
4
+ const {
5
+ sys,
6
+ findConfigFile,
7
+ readConfigFile,
8
+ parseJsonConfigFileContent,
9
+ } = require('typescript');
10
+
11
+ /**
12
+ * Set a default `src` module alias for backward compatibility.
13
+ *
14
+ * TODO: drop this default in skuba v4.
15
+ */
16
+ const DEFAULT_PATHS = { src: ['src'], 'src/*': ['src/*'] };
17
+
18
+ /**
19
+ * @returns {unknown}
20
+ */
21
+ const getConfigFromDisk = () => {
22
+ const filename =
23
+ // TODO: drop Node.js 12 compatibility and switch to ?? in skuba v4.
24
+ findConfigFile('.', sys.fileExists.bind(this)) || 'tsconfig.json';
25
+
26
+ return readConfigFile(filename, sys.readFile.bind(this)).config;
27
+ };
28
+
29
+ module.exports.createModuleNameMapper = (getConfig = getConfigFromDisk) => {
30
+ try {
31
+ const json = getConfig();
32
+
33
+ const parsedConfig = parseJsonConfigFileContent(json, sys, '.');
34
+
35
+ 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(
38
+ ([key, values]) => [
39
+ // Pass through the input path entry almost verbatim.
40
+ // We trim a trailing slash because TypeScript allows `import 'src'`
41
+ // to be resolved by the alias `src/`, but Jest's mapper does not.
42
+ [
43
+ key.replace(/\/$/, ''),
44
+ values.map((value) => value.replace(/\/$/, '')),
45
+ ],
46
+ // Append a variant of the input path entry.
47
+ // As TypeScript allows both `import 'src'` and `import 'src/nested'`
48
+ // to be resolved by the alias `src/*` (and likewise for plain `src`),
49
+ // we need to seed two Jest mappings per path.
50
+ ...(key.endsWith('/*')
51
+ ? [
52
+ [
53
+ // Given a path `src/*`, seed an extra `src`.
54
+ key.replace(/\/\*$/, ''),
55
+ values.map((value) => value.replace(/\/\*$/, '')),
56
+ ],
57
+ ]
58
+ : [
59
+ [
60
+ // Given a path `src`, seed an extra `src/*`.
61
+ path.join(key, '*'),
62
+ values.map((value) => path.join(value, '*')),
63
+ ],
64
+ ]),
65
+ ],
66
+ ),
67
+ );
68
+
69
+ // TODO: drop Node.js 12 compatibility and switch to ?? in skuba v4.
70
+ const prefix = path.join('<rootDir>', parsedConfig.options.baseUrl || '.');
71
+
72
+ const moduleNameMapper = pathsToModuleNameMapper(paths, { prefix });
73
+
74
+ // Normalise away any `..`s that may crop up from `baseUrl` usage.
75
+ // For example, a `baseUrl` of `src` and a path of `../cli` will result in
76
+ // `<rootDir>/src/../cli`, which can be normalised to `<rootDir>/cli`.
77
+ return Object.fromEntries(
78
+ Object.entries(moduleNameMapper).map(([key, values]) => [
79
+ key,
80
+ Array.isArray(values)
81
+ ? values.map((value) => path.normalize(value))
82
+ : path.normalize(values),
83
+ ]),
84
+ );
85
+ } catch {
86
+ // Bail out here to support zero-config mode.
87
+ return pathsToModuleNameMapper(DEFAULT_PATHS, { prefix: '<rootDir>' });
88
+ }
89
+ };
@@ -0,0 +1,75 @@
1
+ import { createModuleNameMapper } from './moduleNameMapper';
2
+
3
+ describe('moduleNameMapper', () => {
4
+ const act = (paths?: unknown, baseUrl?: string) =>
5
+ createModuleNameMapper(() => ({
6
+ compilerOptions: {
7
+ baseUrl,
8
+ paths,
9
+ },
10
+ }));
11
+
12
+ it('expands wildcard paths', () =>
13
+ expect(act({ 'src/*': ['src/*'], 'lib/wip/*': ['lib/wip/*'] }))
14
+ .toMatchInlineSnapshot(`
15
+ Object {
16
+ "^lib/wip$": "<rootDir>/lib/wip",
17
+ "^lib/wip/(.*)$": "<rootDir>/lib/wip/$1",
18
+ "^src$": "<rootDir>/src",
19
+ "^src/(.*)$": "<rootDir>/src/$1",
20
+ }
21
+ `));
22
+
23
+ it('expands non-wildcard paths', () =>
24
+ expect(act({ cli: ['cli'], 'src/': ['src/'] })).toMatchInlineSnapshot(`
25
+ Object {
26
+ "^cli$": "<rootDir>/cli",
27
+ "^cli/(.*)$": "<rootDir>/cli/$1",
28
+ "^src$": "<rootDir>/src",
29
+ "^src/(.*)$": "<rootDir>/src/$1",
30
+ }
31
+ `));
32
+
33
+ it('expands duplicate asymmetric paths', () =>
34
+ expect(
35
+ act({
36
+ jquery: ['node_modules/jquery/dist/jquery'],
37
+ 'jquery/*': ['node_modules/jquery/dist/jquery/*'],
38
+ }),
39
+ ).toMatchInlineSnapshot(`
40
+ Object {
41
+ "^jquery$": "<rootDir>/node_modules/jquery/dist/jquery",
42
+ "^jquery/(.*)$": "<rootDir>/node_modules/jquery/dist/jquery/$1",
43
+ }
44
+ `));
45
+
46
+ it('respects a base URL', () =>
47
+ expect(act({ cli: ['../cli'], 'app/*': ['app/*'] }, 'src'))
48
+ .toMatchInlineSnapshot(`
49
+ Object {
50
+ "^app$": "<rootDir>/src/app",
51
+ "^app/(.*)$": "<rootDir>/src/app/$1",
52
+ "^cli$": "<rootDir>/cli",
53
+ "^cli/(.*)$": "<rootDir>/cli/$1",
54
+ }
55
+ `));
56
+
57
+ it('respects no paths', () =>
58
+ expect(act({})).toMatchInlineSnapshot(`Object {}`));
59
+
60
+ it('falls back on undefined paths', () =>
61
+ expect(act(undefined)).toMatchInlineSnapshot(`
62
+ Object {
63
+ "^src$": "<rootDir>/src",
64
+ "^src/(.*)$": "<rootDir>/src/$1",
65
+ }
66
+ `));
67
+
68
+ it('falls back on invalid config', () =>
69
+ expect(act('INVALID')).toMatchInlineSnapshot(`
70
+ Object {
71
+ "^src$": "<rootDir>/src",
72
+ "^src/(.*)$": "<rootDir>/src/$1",
73
+ }
74
+ `));
75
+ });
@@ -0,0 +1,19 @@
1
+ const { defaults } = require('ts-jest/presets');
2
+
3
+ const TS_JEST_NAME = 'ts-jest';
4
+
5
+ /**
6
+ * Resolved path of the `ts-jest` preset.
7
+ *
8
+ * This allows Jest to resolve the preset even if it is installed to a nested
9
+ * `./node_modules/skuba/node_modules/ts-jest` directory.
10
+ */
11
+ const TS_JEST_PATH = require.resolve(TS_JEST_NAME);
12
+
13
+ // Rewrite `ts-jest` transformations using our resolved `TS_JEST_PATH`.
14
+ module.exports.transform = Object.fromEntries(
15
+ Object.entries(defaults.transform).map(([key, value]) => [
16
+ key,
17
+ value === TS_JEST_NAME ? TS_JEST_PATH : value,
18
+ ]),
19
+ );
@@ -30,7 +30,7 @@ const createExportDefaultObjectLiteralExpression = (factory, props, callExpressi
30
30
  const createImportFromExpression = (factory, moduleName, importNames) => {
31
31
  const importClause = typeof importNames === 'string'
32
32
  ? factory.createImportClause(false, factory.createIdentifier(importNames), undefined)
33
- : factory.createImportClause(false, undefined, factory.createNamedImports(importNames.map((importName) => factory.createImportSpecifier(false, undefined, factory.createIdentifier(importName)))));
33
+ : factory.createImportClause(false, undefined, factory.createNamedImports(importNames.map((importName) => factory.createImportSpecifier(undefined, factory.createIdentifier(importName)))));
34
34
  return factory.createImportDeclaration(undefined, undefined, importClause, factory.createStringLiteral(moduleName));
35
35
  };
36
36
  const getPropName = (prop) => typescript_1.default.isPropertyAssignment(prop) && typescript_1.default.isIdentifier(prop.name)
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../src/cli/configure/processing/typescript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../src/cli/configure/processing/typescript.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
- export declare const lint: (args?: string[], tscOutputStream?: NodeJS.WritableStream | undefined, workerThreads?: boolean) => Promise<void>;
1
+ import type { Writable } from 'stream';
2
+ export declare const lint: (args?: string[], tscOutputStream?: Writable | undefined, workerThreads?: boolean) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/lint/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,wEAAwE;AAExE,yCAA0C;AAC1C,yCAA0C;AAGnC,MAAM,IAAI,GAAG,CAClB,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,kBAAqD,SAAS,EAC9D,aAAa,GAAG,IAAI,EACpB,EAAE;IACF,MAAM,IAAA,0CAAqB,GAAE,CAAC;IAE9B,MAAM,IAAI,GAAU;QAClB,KAAK,EAAE,IAAA,mBAAY,EAAC,IAAI,CAAC;QACzB,MAAM,EAAE,IAAA,oBAAa,EAAC,IAAI,CAAC;QAC3B,eAAe;QACf,aAAa;KACd,CAAC;IAEF,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;IAEzB,MAAM,IAAA,uBAAY,GAAE,CAAC;AACvB,CAAC,CAAA,CAAC;AAjBW,QAAA,IAAI,QAiBf"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/lint/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,2CAA+D;AAC/D,wEAAwE;AAExE,yCAA0C;AAC1C,yCAA0C;AAGnC,MAAM,IAAI,GAAG,CAClB,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,kBAAwC,SAAS,EACjD,aAAa,GAAG,IAAI,EACpB,EAAE;IACF,MAAM,IAAA,0CAAqB,GAAE,CAAC;IAE9B,MAAM,IAAI,GAAU;QAClB,KAAK,EAAE,IAAA,mBAAY,EAAC,IAAI,CAAC;QACzB,MAAM,EAAE,IAAA,oBAAa,EAAC,IAAI,CAAC;QAC3B,eAAe;QACf,aAAa;KACd,CAAC;IAEF,MAAM,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;IAEzB,MAAM,IAAA,uBAAY,GAAE,CAAC;AACvB,CAAC,CAAA,CAAC;AAjBW,QAAA,IAAI,QAiBf"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import type { Writable } from 'stream';
2
3
  export interface Input {
3
4
  /**
4
5
  * Whether to enable verbose debug logging.
@@ -20,7 +21,7 @@ export interface Input {
20
21
  *
21
22
  * Defaults to `process.stdout`.
22
23
  */
23
- tscOutputStream?: NodeJS.WritableStream;
24
+ tscOutputStream?: Writable;
24
25
  /**
25
26
  * Whether to allow usage of Node.js worker threads.
26
27
  *
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import stream from 'stream';
2
3
  import type { Color } from 'chalk';
3
4
  import type { ExecaChildProcess } from 'execa';
4
5
  import execa from 'execa';
@@ -26,7 +27,7 @@ interface ExecConcurrentlyOptions {
26
27
  *
27
28
  * Defaults to `process.stdout`.
28
29
  */
29
- outputStream?: NodeJS.WritableStream;
30
+ outputStream?: stream.Writable;
30
31
  }
31
32
  declare type ExecOptions = execa.Options & {
32
33
  streamStdio?: true | 'yarn';
package/lib/utils/exec.js CHANGED
@@ -90,7 +90,7 @@ const execConcurrently = (commands, { maxProcesses, nameLength, outputStream } =
90
90
  outputStream,
91
91
  // Use a minimalist logging prefix.
92
92
  prefix: '{name} │',
93
- });
93
+ }).result;
94
94
  }
95
95
  catch (err) {
96
96
  const result = error_1.ConcurrentlyErrors.validate(err);
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/utils/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/utils/exec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,11 +7,12 @@
7
7
  "engines": {
8
8
  "node": ">=12"
9
9
  },
10
- "version": "3.17.0-beta.3",
10
+ "version": "3.17.1",
11
11
  "main": "lib/index.js",
12
12
  "typings": "lib/index.d.ts",
13
13
  "files": [
14
14
  "config/**/*",
15
+ "jest/**/*",
15
16
  "lib*/**/*.d.ts",
16
17
  "lib*/**/*.js",
17
18
  "lib*/**/*.js.map",
@@ -40,10 +41,9 @@
40
41
  "url": "https://github.com/seek-oss/skuba.git"
41
42
  },
42
43
  "devDependencies": {
43
- "@changesets/cli": "2.18.0",
44
+ "@changesets/cli": "2.19.0",
44
45
  "@changesets/get-github-info": "0.5.0",
45
- "@jest/reporters": "27.3.1",
46
- "@types/concurrently": "6.4.0",
46
+ "@jest/reporters": "27.4.5",
47
47
  "@types/ejs": "3.1.0",
48
48
  "@types/express": "4.17.13",
49
49
  "@types/fs-extra": "9.0.13",
@@ -53,20 +53,20 @@
53
53
  "@types/npm-which": "3.0.1",
54
54
  "@types/picomatch": "2.3.0",
55
55
  "@types/supertest": "2.0.11",
56
- "express": "4.17.1",
56
+ "express": "4.17.2",
57
57
  "jsonfile": "6.1.0",
58
58
  "koa": "2.13.4",
59
- "memfs": "3.3.0",
59
+ "memfs": "3.4.1",
60
60
  "semver": "7.3.5",
61
61
  "supertest": "6.1.6",
62
- "type-fest": "2.5.4"
62
+ "type-fest": "2.8.0"
63
63
  },
64
64
  "dependencies": {
65
65
  "@octokit/rest": "^18.12.0",
66
66
  "@octokit/types": "^6.34.0",
67
- "@types/jest": "^27.0.1",
67
+ "@types/jest": "^27.4.0",
68
68
  "chalk": "^4.1.0",
69
- "concurrently": "^6.2.1",
69
+ "concurrently": "^7.0.0",
70
70
  "ejs": "^3.1.6",
71
71
  "enquirer": "^2.3.6",
72
72
  "eslint": "^7.27.0",
@@ -79,25 +79,25 @@
79
79
  "ignore": "^5.1.8",
80
80
  "is-installed-globally": "^0.4.0",
81
81
  "isomorphic-git": "^1.10.1",
82
- "jest": "^27.1.0",
82
+ "jest": "^27.4.5",
83
83
  "latest-version": "^5.1.0",
84
84
  "lodash.mergewith": "^4.6.2",
85
85
  "normalize-package-data": "^3.0.0",
86
86
  "npm-run-path": "^4.0.1",
87
87
  "npm-which": "^3.0.1",
88
88
  "picomatch": "^2.2.2",
89
- "prettier": "~2.4.1",
89
+ "prettier": "~2.5.0",
90
90
  "read-pkg-up": "^7.0.1",
91
91
  "runtypes": "^6.0.0",
92
92
  "semantic-release": "^17.4.7",
93
93
  "serialize-error": "^8.0.1",
94
94
  "strip-ansi": "^6.0.1",
95
- "ts-jest": "^27.0.5",
95
+ "ts-jest": "^27.1.2",
96
96
  "ts-node": "^9.1.1",
97
97
  "ts-node-dev": "^1.1.8",
98
98
  "tsconfig-paths": "^3.11.0",
99
99
  "tsconfig-seek": "1.0.2",
100
- "typescript": "~4.5.0"
100
+ "typescript": "~4.4.4"
101
101
  },
102
102
  "peerDependencies": {
103
103
  "skuba-dive": "1"
@@ -5,3 +5,6 @@ isProduction: false
5
5
 
6
6
  maxInstanceCount: 1
7
7
  minInstanceCount: 1
8
+
9
+ openTelemetry:
10
+ enabled: false
@@ -5,3 +5,6 @@ isProduction: true
5
5
 
6
6
  maxInstanceCount: 10
7
7
  minInstanceCount: 3
8
+
9
+ openTelemetry:
10
+ enabled: false
@@ -31,4 +31,4 @@ ARG PORT=8001
31
31
  ENV PORT ${PORT}
32
32
  EXPOSE ${PORT}
33
33
 
34
- CMD ["lib/listen.js"]
34
+ CMD ["--require", "./lib/tracing.js", "./lib/listen.js"]
@@ -11,6 +11,7 @@ env:
11
11
  AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1'
12
12
 
13
13
  ENVIRONMENT: '{{.Environment}}'
14
+ OPENTELEMETRY_ENABLED: '{{.Values.openTelemetry.enabled | default false}}'
14
15
  SERVICE: '{{values "service"}}'
15
16
 
16
17
  {{range $key, $value := .Values.env}}
@@ -21,6 +22,13 @@ env:
21
22
  datadogSecretId: '{{values "datadogSecretId"}}'
22
23
  {{end}}
23
24
 
25
+ openTelemetry:
26
+ enabled: {{.Values.openTelemetry.enabled | default false}}
27
+ {{if .Values.isProduction}}
28
+ datadogEnvironmentName: production
29
+ {{else}}
30
+ datadogEnvironmentName: development
31
+ {{end}}
24
32
  {{if .Values.pagerDutyEndpoint}}
25
33
  pagerDutyEndpoint: '{{values "pagerDutyEndpoint"}}'
26
34
  {{end}}
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "dependencies": {
3
3
  "@koa/router": "^10.1.1",
4
+ "@opentelemetry/api": "^1.0.4",
5
+ "@opentelemetry/exporter-collector-grpc": "^0.25.0",
6
+ "@opentelemetry/instrumentation-aws-sdk": "^0.4.0",
7
+ "@opentelemetry/instrumentation-http": "^0.27.0",
8
+ "@opentelemetry/sdk-node": "^0.27.0",
4
9
  "@seek/logger": "^5.0.1",
5
- "skuba-dive": "^1.2.0",
10
+ "aws-sdk": "^2.1039.0",
6
11
  "hot-shots": "^9.0.0",
7
12
  "koa": "^2.13.4",
8
13
  "koa-bodyparser": "^4.3.0",
@@ -11,6 +16,7 @@
11
16
  "runtypes-filter": "^0.6.0",
12
17
  "seek-datadog-custom-metrics": "^4.0.0",
13
18
  "seek-koala": "^5.1.0",
19
+ "skuba-dive": "^1.2.0",
14
20
  "uuid": "^8.3.2"
15
21
  },
16
22
  "devDependencies": {
@@ -0,0 +1,61 @@
1
+ /**
2
+ * OpenTelemetry tracing initialisation. This is a standalone TS/JS module that is not
3
+ * referenced by application source code directly. It is required at runtime using the
4
+ * node command's `--require` argument, see Dockerfile for details.
5
+ */
6
+
7
+ import { propagation } from '@opentelemetry/api';
8
+ import { CompositePropagator } from '@opentelemetry/core';
9
+ import { CollectorTraceExporter } from '@opentelemetry/exporter-collector-grpc';
10
+ import { AwsInstrumentation } from '@opentelemetry/instrumentation-aws-sdk';
11
+ import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
12
+ import { B3InjectEncoding, B3Propagator } from '@opentelemetry/propagator-b3';
13
+ import { NodeSDK } from '@opentelemetry/sdk-node';
14
+
15
+ const app = 'opentelemetry';
16
+ const log = (level: string, msg: string, extra = {}) => {
17
+ const toLog = { msg, level, app, time: new Date().toISOString(), ...extra };
18
+ console.log(JSON.stringify(toLog)); // eslint-disable-line no-console
19
+ };
20
+
21
+ const main = () => {
22
+ // Use B3 propagation to ensure proper propagation between systems that use
23
+ // OpenTelemetry and native Datadog APM, such as Istio/Envoy.
24
+ propagation.setGlobalPropagator(
25
+ new CompositePropagator({
26
+ propagators: [
27
+ new B3Propagator(),
28
+ new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),
29
+ ],
30
+ }),
31
+ );
32
+
33
+ const sdk = new NodeSDK({
34
+ traceExporter: new CollectorTraceExporter(),
35
+ autoDetectResources: false,
36
+ instrumentations: [new HttpInstrumentation(), new AwsInstrumentation()],
37
+ });
38
+
39
+ sdk
40
+ .start()
41
+ .then(() => log('info', 'OpenTelemetry initialised'))
42
+ .catch((err: Error) =>
43
+ log('error', 'OpenTelemetry not initialised', { err }),
44
+ );
45
+
46
+ process.on('SIGTERM', () => {
47
+ sdk
48
+ .shutdown()
49
+ .then(() => log('info', 'OpenTelemetry successfully terminated'))
50
+ .catch((err: Error) =>
51
+ log('error', 'OpenTelemetry failed to terminate', { err }),
52
+ )
53
+ .finally(() => process.exit(0)); // eslint-disable-line no-process-exit
54
+ });
55
+ };
56
+
57
+ if (process.env.OPENTELEMETRY_ENABLED === 'true') {
58
+ main();
59
+ } else {
60
+ log('info', 'OpenTelemetry not enabled');
61
+ }
@@ -15,7 +15,7 @@
15
15
  "pino-pretty": "^7.1.0",
16
16
  "serverless": "^2.63.0",
17
17
  "serverless-plugin-canary-deployments": "^0.7.0",
18
- "serverless-prune-plugin": "^1.6.1",
18
+ "serverless-prune-plugin": "^2.0.0",
19
19
  "skuba": "*"
20
20
  },
21
21
  "engines": {
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "app": "npx ts-node infra/index.ts",
3
3
  "context": {
4
- "@aws-cdk/core:enableStackNameDuplicates": "true",
5
4
  "global": {
6
5
  "appName": "<%- serviceName %>"
7
6
  },
@@ -23,3 +23,4 @@ services:
23
23
  - /usr/bin/buildkite-agent:/usr/bin/buildkite-agent
24
24
  # Mount cached dependencies.
25
25
  - /workdir/node_modules
26
+ - /workdir/lib/node_modules
@@ -1,13 +1,7 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`returns expected cloud formation stack 1`] = `
3
+ exports[`returns expected CloudFormation stack for dev 1`] = `
4
4
  Object {
5
- "Parameters": Object {
6
- "AssetParameters...": Object {
7
- "Description": "Artifact hash for asset...",
8
- "Type": "String",
9
- },
10
- },
11
5
  "Resources": Object {
12
6
  "kmskey49FBC3B3": Object {
13
7
  "DeletionPolicy": "Retain",
@@ -17,23 +11,7 @@ Object {
17
11
  "KeyPolicy": Object {
18
12
  "Statement": Array [
19
13
  Object {
20
- "Action": Array [
21
- "kms:Create*",
22
- "kms:Describe*",
23
- "kms:Enable*",
24
- "kms:List*",
25
- "kms:Put*",
26
- "kms:Update*",
27
- "kms:Revoke*",
28
- "kms:Disable*",
29
- "kms:Get*",
30
- "kms:Delete*",
31
- "kms:ScheduleKeyDeletion",
32
- "kms:CancelKeyDeletion",
33
- "kms:GenerateDataKey",
34
- "kms:TagResource",
35
- "kms:UntagResource",
36
- ],
14
+ "Action": "kms:*",
37
15
  "Effect": "Allow",
38
16
  "Principal": Object {
39
17
  "AWS": Object {
@@ -120,19 +98,6 @@ Object {
120
98
  },
121
99
  "Resource": "*",
122
100
  },
123
- Object {
124
- "Action": "kms:Decrypt",
125
- "Effect": "Allow",
126
- "Principal": Object {
127
- "AWS": Object {
128
- "Fn::GetAtt": Array [
129
- "workerServiceRole2130CC7F",
130
- "Arn",
131
- ],
132
- },
133
- },
134
- "Resource": "*",
135
- },
136
101
  Object {
137
102
  "Action": Array [
138
103
  "kms:Decrypt",
@@ -183,41 +148,9 @@ Object {
183
148
  "Properties": Object {
184
149
  "Code": Object {
185
150
  "S3Bucket": Object {
186
- "Ref": "AssetParameters...",
187
- },
188
- "S3Key": Object {
189
- "Fn::Join": Array [
190
- "",
191
- Array [
192
- Object {
193
- "Fn::Select": Array [
194
- 0,
195
- Object {
196
- "Fn::Split": Array [
197
- "||",
198
- Object {
199
- "Ref": "AssetParameters...",
200
- },
201
- ],
202
- },
203
- ],
204
- },
205
- Object {
206
- "Fn::Select": Array [
207
- 1,
208
- Object {
209
- "Fn::Split": Array [
210
- "||",
211
- Object {
212
- "Ref": "AssetParameters...",
213
- },
214
- ],
215
- },
216
- ],
217
- },
218
- ],
219
- ],
151
+ "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
220
152
  },
153
+ "S3Key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.zip",
221
154
  },
222
155
  "Environment": Object {
223
156
  "Variables": Object {
@@ -421,14 +354,8 @@ Object {
421
354
  }
422
355
  `;
423
356
 
424
- exports[`returns expected cloud formation stack 2`] = `
357
+ exports[`returns expected CloudFormation stack for prod 1`] = `
425
358
  Object {
426
- "Parameters": Object {
427
- "AssetParameters...": Object {
428
- "Description": "Artifact hash for asset...",
429
- "Type": "String",
430
- },
431
- },
432
359
  "Resources": Object {
433
360
  "kmskey49FBC3B3": Object {
434
361
  "DeletionPolicy": "Retain",
@@ -438,23 +365,7 @@ Object {
438
365
  "KeyPolicy": Object {
439
366
  "Statement": Array [
440
367
  Object {
441
- "Action": Array [
442
- "kms:Create*",
443
- "kms:Describe*",
444
- "kms:Enable*",
445
- "kms:List*",
446
- "kms:Put*",
447
- "kms:Update*",
448
- "kms:Revoke*",
449
- "kms:Disable*",
450
- "kms:Get*",
451
- "kms:Delete*",
452
- "kms:ScheduleKeyDeletion",
453
- "kms:CancelKeyDeletion",
454
- "kms:GenerateDataKey",
455
- "kms:TagResource",
456
- "kms:UntagResource",
457
- ],
368
+ "Action": "kms:*",
458
369
  "Effect": "Allow",
459
370
  "Principal": Object {
460
371
  "AWS": Object {
@@ -541,19 +452,6 @@ Object {
541
452
  },
542
453
  "Resource": "*",
543
454
  },
544
- Object {
545
- "Action": "kms:Decrypt",
546
- "Effect": "Allow",
547
- "Principal": Object {
548
- "AWS": Object {
549
- "Fn::GetAtt": Array [
550
- "workerServiceRole2130CC7F",
551
- "Arn",
552
- ],
553
- },
554
- },
555
- "Resource": "*",
556
- },
557
455
  Object {
558
456
  "Action": Array [
559
457
  "kms:Decrypt",
@@ -604,41 +502,9 @@ Object {
604
502
  "Properties": Object {
605
503
  "Code": Object {
606
504
  "S3Bucket": Object {
607
- "Ref": "AssetParameters...",
608
- },
609
- "S3Key": Object {
610
- "Fn::Join": Array [
611
- "",
612
- Array [
613
- Object {
614
- "Fn::Select": Array [
615
- 0,
616
- Object {
617
- "Fn::Split": Array [
618
- "||",
619
- Object {
620
- "Ref": "AssetParameters...",
621
- },
622
- ],
623
- },
624
- ],
625
- },
626
- Object {
627
- "Fn::Select": Array [
628
- 1,
629
- Object {
630
- "Fn::Split": Array [
631
- "||",
632
- Object {
633
- "Ref": "AssetParameters...",
634
- },
635
- ],
636
- },
637
- ],
638
- },
639
- ],
640
- ],
505
+ "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
641
506
  },
507
+ "S3Key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.zip",
642
508
  },
643
509
  "Environment": Object {
644
510
  "Variables": Object {
@@ -1,5 +1,5 @@
1
1
  import { SynthUtils } from '@aws-cdk/assert';
2
- import { App } from '@aws-cdk/core';
2
+ import { App } from 'aws-cdk-lib';
3
3
 
4
4
  import cdkJson from '../cdk.json';
5
5
 
@@ -17,13 +17,18 @@ const contexts = [
17
17
  },
18
18
  ];
19
19
 
20
- it.each(contexts)('returns expected cloud formation stack', (context) => {
21
- const app = new App({ context });
20
+ it.each(contexts)(
21
+ 'returns expected CloudFormation stack for $stage',
22
+ (context) => {
23
+ const app = new App({ context });
22
24
 
23
- const stack = new AppStack(app, 'appStack');
25
+ const stack = new AppStack(app, 'appStack');
24
26
 
25
- const json = JSON.stringify(SynthUtils.toCloudFormation(stack))
26
- .replace(/AssetParameters[a-zA-Z0-9]+/gm, 'AssetParameters...')
27
- .replace(/"Artifact hash for asset .+"/gm, '"Artifact hash for asset..."');
28
- expect(JSON.parse(json)).toMatchSnapshot();
29
- });
27
+ const json = JSON.stringify(SynthUtils.toCloudFormation(stack)).replace(
28
+ /"S3Key":"([0-9a-f]+)\.zip"/g,
29
+ (_, hash) => `"S3Key":"${'x'.repeat(hash.length)}.zip"`,
30
+ );
31
+
32
+ expect(JSON.parse(json)).toMatchSnapshot();
33
+ },
34
+ );
@@ -1,11 +1,15 @@
1
- import { AccountPrincipal } from '@aws-cdk/aws-iam';
2
- import { Key } from '@aws-cdk/aws-kms';
3
- import { AssetCode, Function, Runtime } from '@aws-cdk/aws-lambda';
4
- import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources';
5
- import { Topic } from '@aws-cdk/aws-sns';
6
- import { SqsSubscription } from '@aws-cdk/aws-sns-subscriptions';
7
- import { Queue } from '@aws-cdk/aws-sqs';
8
- import { Construct, Stack, StackProps } from '@aws-cdk/core';
1
+ import {
2
+ Stack,
3
+ StackProps,
4
+ aws_iam,
5
+ aws_kms,
6
+ aws_lambda,
7
+ aws_lambda_event_sources,
8
+ aws_sns,
9
+ aws_sns_subscriptions,
10
+ aws_sqs,
11
+ } from 'aws-cdk-lib';
12
+ import type { Construct } from 'constructs';
9
13
 
10
14
  import { envContext, stageContext } from '../shared/context-types';
11
15
 
@@ -16,9 +20,9 @@ export class AppStack extends Stack {
16
20
  const stage = stageContext.check(this.node.tryGetContext('stage'));
17
21
  const context = envContext.check(this.node.tryGetContext(stage));
18
22
 
19
- const accountPrincipal = new AccountPrincipal(this.account);
23
+ const accountPrincipal = new aws_iam.AccountPrincipal(this.account);
20
24
 
21
- const kmsKey = new Key(this, 'kms-key', {
25
+ const kmsKey = new aws_kms.Key(this, 'kms-key', {
22
26
  description: '<%- serviceName %>',
23
27
  enableKeyRotation: true,
24
28
  admins: [accountPrincipal],
@@ -27,17 +31,17 @@ export class AppStack extends Stack {
27
31
 
28
32
  kmsKey.grantEncrypt(accountPrincipal);
29
33
 
30
- const topic = new Topic(this, 'topic', {
34
+ const topic = new aws_sns.Topic(this, 'topic', {
31
35
  topicName: '<%- serviceName %>',
32
36
  masterKey: kmsKey,
33
37
  });
34
38
 
35
- const deadLetterQueue = new Queue(this, 'worker-queue-dlq', {
39
+ const deadLetterQueue = new aws_sqs.Queue(this, 'worker-queue-dlq', {
36
40
  queueName: '<%- serviceName %>-dlq',
37
41
  encryptionMasterKey: kmsKey,
38
42
  });
39
43
 
40
- const queue = new Queue(this, 'worker-queue', {
44
+ const queue = new aws_sqs.Queue(this, 'worker-queue', {
41
45
  queueName: '<%- serviceName %>',
42
46
  deadLetterQueue: {
43
47
  maxReceiveCount: 3,
@@ -46,9 +50,9 @@ export class AppStack extends Stack {
46
50
  encryptionMasterKey: kmsKey,
47
51
  });
48
52
 
49
- const worker = new Function(this, 'worker', {
50
- code: new AssetCode('./lib'),
51
- runtime: Runtime.NODEJS_14_X,
53
+ const worker = new aws_lambda.Function(this, 'worker', {
54
+ code: new aws_lambda.AssetCode('./lib'),
55
+ runtime: aws_lambda.Runtime.NODEJS_14_X,
52
56
  handler: 'app.handler',
53
57
  functionName: '<%- serviceName %>',
54
58
  environmentEncryption: kmsKey,
@@ -58,8 +62,8 @@ export class AppStack extends Stack {
58
62
  },
59
63
  });
60
64
 
61
- worker.addEventSource(new SqsEventSource(queue));
65
+ worker.addEventSource(new aws_lambda_event_sources.SqsEventSource(queue));
62
66
 
63
- topic.addSubscription(new SqsSubscription(queue));
67
+ topic.addSubscription(new aws_sns_subscriptions.SqsSubscription(queue));
64
68
  }
65
69
  }
@@ -1,5 +1,4 @@
1
- /* eslint-disable no-new */
2
- import { App } from '@aws-cdk/core';
1
+ import { App } from 'aws-cdk-lib';
3
2
 
4
3
  import { globalContext } from '../shared/context-types';
5
4
 
@@ -9,6 +8,7 @@ const app = new App();
9
8
 
10
9
  const context = globalContext.check(app.node.tryGetContext('global'));
11
10
 
11
+ // eslint-disable-next-line no-new
12
12
  new AppStack(app, 'appStack', {
13
13
  stackName: context.appName,
14
14
  });
@@ -4,30 +4,29 @@
4
4
  "runtypes": "^6.3.2"
5
5
  },
6
6
  "devDependencies": {
7
- "@aws-cdk/assert": "^1.118.0",
8
- "@aws-cdk/aws-iam": "^1.118.0",
9
- "@aws-cdk/aws-kms": "^1.118.0",
10
- "@aws-cdk/aws-lambda": "^1.118.0",
11
- "@aws-cdk/aws-lambda-event-sources": "^1.118.0",
12
- "@aws-cdk/aws-sns": "^1.118.0",
13
- "@aws-cdk/aws-sns-subscriptions": "^1.118.0",
14
- "@aws-cdk/aws-sqs": "^1.118.0",
15
- "@aws-cdk/core": "^1.118.0",
7
+ "@aws-cdk/assert": "^2.3.0",
16
8
  "@types/aws-lambda": "^8.10.82",
17
9
  "@types/node": "^14.0.0",
18
- "aws-cdk": "^1.118.0",
19
- "skuba": "*"
10
+ "aws-cdk": "^2.3.0",
11
+ "aws-cdk-lib": "^2.3.0",
12
+ "constructs": "^10.0.17"
20
13
  },
21
14
  "license": "UNLICENSED",
22
15
  "private": true,
23
16
  "scripts": {
24
17
  "build": "skuba build",
25
- "deploy": "cdk deploy appStack --require-approval never --context stage=${ENVIRONMENT}",
18
+ "deploy": "cdk deploy appStack --require-approval never --context stage=${ENVIRONMENT} --progress events",
26
19
  "format": "skuba format",
27
20
  "lint": "skuba lint",
28
21
  "package": "yarn install --ignore-optional --ignore-scripts --modules-folder ./lib/node_modules --non-interactive --offline --production",
29
22
  "test": "skuba test",
30
23
  "test:ci": "skuba test --coverage",
31
24
  "test:watch": "skuba test --watch"
25
+ },
26
+ "skuba": {
27
+ "entryPoint": "src/app.ts#handler",
28
+ "template": "lambda-sqs-worker-cdk",
29
+ "type": "application",
30
+ "version": "3.16.2"
32
31
  }
33
32
  }