Releases: seek-oss/skuba
v3.16.2
Patch Changes
v3.16.1
v3.16.0
Minor Changes
-
GitHub.createCheckRun: Add development API for writing annotations (#625)
-
lint: Add GitHub check run annotations (#625)
skuba lint
can now automatically annotate GitHub commits when you propagate Buildkite environment variables and a GitHub API token. These annotations also appear inline with code under the “Files changed” tab in pull requests. -
format, lint: Enable ESLint caching (#645)
ESLint now writes to a local
.eslintcache
store. This speeds up subsequent runs ofskuba format
andskuba lint
as they can skip unchanged files. -
deps: eslint-config-skuba 1.0.12 (#623)
This adds a couple new linting rules:
Run
skuba format
to automatically align your code with these rules. -
format, lint: Synchronise ignore files (#646)
skuba format
andskuba lint
will now keep.eslintignore
,.gitignore
and.prettierignore
in sync. This automatically applies new exclusions like.eslintcache
without the need for a manualskuba configure
.
Patch Changes
-
template: Use correct
environment
key indocker-compose.yml
(#654) -
template/lambda-sqs-worker: Switch to ARM64 architecture (#640)
These are a bit cheaper and a bit faster than x86 Lambdas:
https://aws.amazon.com/blogs/aws/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/The underlying Lambda architecture should be invisible to typical TypeScript Lambdas.
-
template: Bump non-Lambda templates to Node.js 16 (#633)
Node.js 16 is now in active LTS. The Lambda templates are stuck on Node.js 14 until the new AWS Lambda runtime is released.
-
template: seek-jobs/gantry v1.5.2 (#634)
-
deps: typescript 4.4.4 (#616)
-
start: Add a
?
placeholder for unnamed function arguments (#647) -
deps: Relax ranges (#622)
Projects can now upgrade to new Prettier and TypeScript patches and
ts-node-dev
minors without us having to cut a new release. -
template: hot-shots ^9.0.0 (#639)
-
template/lambda-sqs-worker: Remove
pino.Logger
indirection (#624) -
template: @seek/logger ^5.0.0 (#621)
-
template: Ignore
.gantry
YAML paths via.prettierignore
(#636)Gantry resource and value files often live in the
.gantry
subdirectory and may use non-standard template syntax. -
template: Propagate environment variables for GitHub annotations (#642)
This enables GitHub annotations for newly-initialised projects with the appropriate Buildkite configuration.
v3.15.3-beta.0
Patch Changes
-
template: Bump non-Lambda templates to Node.js 16 (#633)
Node.js 16 is now in active LTS. The Lambda templates are stuck on Node.js 14 until the new AWS Lambda runtime is released.
-
template: seek-jobs/gantry v1.5.2 (#634)
-
deps: typescript 4.4.4 (#616)
-
deps: Relax ranges (#622)
Projects can now upgrade to new Prettier and TypeScript patches and
ts-node-dev
minors without us having to cut a new release. -
deps: eslint-config-skuba 1.0.12 (#623)
-
template: hot-shots ^9.0.0 (#639)
-
template/lambda-sqs-worker: Remove
pino.Logger
indirection (#624) -
template: @seek/logger ^5.0.0 (#621)
-
template: Ignore
.gantry
YAML paths via.prettierignore
(#636)Gantry resource and value files often live in the
.gantry
subdirectory and may use non-standard template syntax.
v3.15.2
Patch Changes
-
Jest.mergePreset: Do not mutate underlying defaults (#595)
Jest.mergePreset
no longer mutates the internaljest-preset
object. Subsequent calls toJest.mergePreset
will no longer return results merged in from previous calls.Warning: If you rely on mutating the core
jest-preset
object for later access, this is a Breaking Change. -
template/lambda-sqs-worker: Convert Serverless
isProduction
config value to boolean (#602)This avoids potentially surprising behaviour if you try to make use of this config value in a context that tests for truthiness. The boolean is still correctly applied as a string
seek:env:production
tag value. -
node, start: Handle void function inputs and outputs (#597)
When running a function entrypoint,
skuba node
andskuba start
now handle an omitted request body the same as an empty JSON array of arguments[]
. The function can also returnundefined
to omit a response body. -
template/lambda-sqs-worker: Opt in to new Serverless variables resolver (#601)
-
lint: Use worker threads when running
--serial
ly (#607)This aims to reduce the memory footprint of
skuba lint --serial
. ESLint and Prettier are now run in worker threads so their memory can be more readily freed on thread exit. -
template: Remove README tables of contents (#596)
GitHub's Markdown renderer now generates its own table of contents.
-
configure, init: Drop dependency on external Git installation (#599)
We now interface with
isomorphic-git
internally, which ensures compatibility and affords finer control over log output. -
format, lint: Run Prettier serially on files (#606)
This aims to reduce the memory footprint of
skuba lint
. -
template: seek-jobs/gantry v1.5.1 (#604)
-
Jest.mergePreset: Allow configuration of test environment (#592)
Jest's
testEnvironment
can now be passed toJest.mergePreset
:export default Jest.mergePreset({ testEnvironment: 'jsdom', });
-
template/lambda-sqs-worker: Fail fast on invalid Serverless config (#605)
-
template: pino-pretty ^6.0.0 (#594)
pino-pretty@7 requires pino@7, which has not been released on its stable channel yet.
-
node, start: Print function entrypoint parameters (#600)
When running a function entrypoint,
skuba node
andskuba start
now print the function and parameter names as a usage hint:yarn skuba node 'src/api/buildkite/annotate.ts#annotate' // annotate (markdown, opts) // listening on port 9001 curl --data '["_Hello there_", {}]' --include localhost:9001
v3.15.1
Patch Changes
-
configure: Tone down Dockerfile
outDir
processing (#585)This avoids rewriting sequences like "distroless" as "libroless".
-
template: Remove
unknown
specifier in catch clauses (#580)Strict TypeScript 4.4 now defaults to typing catch clause variables as
unknown
. -
build-package, lint: Handle worker thread errors more gracefully (#583)
The worker threads now correctly propagate an exit code and log errors instead of triggering an
UnhandledPromiseRejectionWarning
. -
format, lint: Limit Prettier to 25 parallel file I/O operations (#584)
This should alleviate file descriptor issues that are not handled by
graceful-fs
such asEBADF: bad file description, close
.
v3.15.1-beta.0
Patch Changes
-
configure: Tone down Dockerfile
outDir
processing (376c7aa)This avoids rewriting sequences like "distroless" as "libroless".
-
template: Remove
unknown
specifier in catch clauses (833d710)Strict TypeScript 4.4 now defaults to typing catch clause variables as
unknown
. -
build-package, lint: Handle worker thread errors more gracefully (b1ed5f7)
The worker threads now correctly propagate an exit code and log errors instead of triggering an
UnhandledPromiseRejectionWarning
. -
format, lint: Limit Prettier to 25 parallel file I/O operations (03d371a)
This should alleviate file descriptor issues that are not handled by
graceful-fs
such asEBADF: bad file description, close
.
v3.15.0
Minor Changes
-
lint: Run ESLint and Prettier in worker threads (#548)
This reduces the number of Node.js processes spawned by
skuba lint
. We've also been able to significantly enhance our logging output as a result, particularly when the--debug
flag is supplied. -
build-package, lint: Add
--serial
flag (#556)This explicitly disables concurrent command execution.
Propagating the
BUILDKITE
environment variable to these commands no longer constrains their concurrency. If you were relying on this behaviour to reduce resource contention on undersized Buildkite agents, update your commands to pass in the flag:- build-package + build-package --serial - lint + lint --serial
See our Buildkite guide for more information.
-
node: Run REPL in process (#534)
This avoids creating a separate Node.js process just to run the REPL.
-
Buildkite.annotate: Add development API for writing annotations (#558)
-
format: Execute ESLint with
--report-unused-disable-directives
(#512)skuba format
will now flag unused disable directives, and will automatically remove them once ESLint v8 is released. -
deps: Prettier 2.4 (#507)
This includes TypeScript 4.4 support. See the release notes for more information.
-
deps: TypeScript 4.4 (#497)
This major release includes breaking changes. See the announcement for more information.
Note that new syntax in TypeScript 4.4 will only be supported by
skuba format
andskuba lint
once ESLint v8 is released. -
format: Run ESLint and Prettier in process (#539)
This eliminates the overhead of spinning up separate Node.js processes. We've also been able to significantly enhance our logging output as a result, particularly when the
--debug
flag is supplied. -
build: Remove experimental Babel support (#513)
There's limited upside to switching to Babel-based builds for backend use cases, and it would be difficult to guarantee backwards compatibility with existing
tsconfig.json
-based configuration. Dropping Babel dependencies reduces our package size and resolves SNYK-JS-SETVALUE-1540541. -
lint: Support Buildkite annotations (#558)
skuba lint
can now output issues as Buildkite annotations.See our Buildkite guide for more information.
Patch Changes
-
template: pino-pretty ^7.0.0 (#506)
-
template: Configure environment variables and volume mounts for Buildkite annotations (#558)
-
template: serverless-plugin-canary-deployments ^0.7.0 (#508)
-
template/lambda-sqs-worker*: Prime dev ECR cache in Buildkite pipeline (#503)
This should result in faster "Deploy Dev" times as the ECR cache will already be warm.
-
template: seek-jobs/gantry v1.4.1 (#504)
-
template: Remove
@types/node
resolution override (#498)Jest 27.1 is compatible with newer versions of
@types/node
. -
template/*-rest-api: Suggest using a secure header middleware (#579)
-
template/lambda-sqs-worker-cdk: Run "Test, Lint & Build" step in prod (#503)
This reduces our dependence on a dev environment to successfully deploy to prod.
-
build-package, lint: Simplify logging prefix (#535)
-
Jest.mergePreset: Allow
watchPathIgnorePatterns
(#555) -
build-package, lint: Limit max concurrency to CPU core count (#540)
-
template: Remove Yarn cache from worker Docker images (#499)
This shrinks the cached Docker images that our worker templates generate.
v3.15.0-beta.0
Minor Changes
-
lint: Run ESLint and Prettier in worker threads (#548)
This reduces the number of Node.js processes spawned by
skuba lint
. We've also been able to significantly enhance our logging output as a result, particularly when the--debug
flag is supplied. -
build-package, lint: Add
--serial
flag (#556)This explicitly disables concurrent command execution.
Propagating the
BUILDKITE
environment variable to these commands no longer constrains their concurrency. If you were relying on this behaviour to reduce resource contention on undersized Buildkite agents, update your commands to pass in the flag:- build-package + build-package --serial - lint + lint --serial
See our Buildkite guide for more information.
-
node: Run REPL in process (#534)
This avoids creating a separate Node.js process just to run the REPL.
-
Buildkite.annotate: Add development API for writing annotations (#558)
-
format: Execute ESLint with
--report-unused-disable-directives
(#512)skuba format
will now flag unused disable directives, and will automatically remove them once ESLint v8 is released. -
deps: Prettier 2.4 (#507)
This includes TypeScript 4.4 support. See the release notes for more information.
-
deps: TypeScript 4.4 (#497)
This major release includes breaking changes. See the announcement for more information.
Note that new syntax in TypeScript 4.4 will only be supported by
skuba format
andskuba lint
once ESLint v8 is released. -
format: Run ESLint and Prettier in process (#539)
This eliminates the overhead of spinning up separate Node.js processes. We've also been able to significantly enhance our logging output as a result, particularly when the
--debug
flag is supplied. -
build: Remove experimental Babel support (#513)
There's limited upside to switching to Babel-based builds for backend use cases, and it would be difficult to guarantee backwards compatibility with existing
tsconfig.json
-based configuration. Dropping Babel dependencies reduces our package size and resolves SNYK-JS-SETVALUE-1540541. -
lint: Support Buildkite annotations (#558)
skuba lint
can now output issues as Buildkite annotations.See our Buildkite guide for more information.
Patch Changes
-
template: pino-pretty ^7.0.0 (#506)
-
template: Configure environment variables and volume mounts for Buildkite annotations (#558)
-
template: serverless-plugin-canary-deployments ^0.7.0 (#508)
-
template/lambda-sqs-worker*: Prime dev ECR cache in Buildkite pipeline (#503)
This should result in faster "Deploy Dev" times as the ECR cache will already be warm.
-
template: seek-jobs/gantry v1.4.1 (#504)
-
template: Remove
@types/node
resolution override (#498)Jest 27.1 is compatible with newer versions of
@types/node
. -
template/lambda-sqs-worker-cdk: Run "Test, Lint & Build" step in prod (#503)
This reduces our dependence on a dev environment to successfully deploy to prod.
-
build-package, lint: Simplify logging prefix (#535)
-
Jest.mergePreset: Allow
watchPathIgnorePatterns
(#555) -
build-package, lint: Limit max concurrency to CPU core count (#540)
-
template: Remove Yarn cache from worker Docker images (#499)
This shrinks the cached Docker images that our worker templates generate.