Skip to content

Releases: seek-oss/skuba

v3.16.2

15 Nov 02:07
a74787d
Compare
Choose a tag to compare

Patch Changes

  • format, lint: Skip reading unsupported Prettier files into memory (#662)

  • format, lint: Fix file descriptor warnings (#664)

    This resolves the following warning when processing files that Prettier cannot parse:

    (node:123) Warning: File descriptor 456 closed but not opened in unmanaged mode

v3.16.1

10 Nov 06:21
43d849b
Compare
Choose a tag to compare

Patch Changes

  • deps: Include @octokit/types (#660)

    This should fix the following compilation error:

    node_modules/skuba/lib/api/github/checkRun.d.ts(2,45): error TS2339: Property 'POST /repos/{owner}/{repo}/check-runs' does not exist on type 'Endpoints'.
    

v3.16.0

10 Nov 04:54
d6b6f90
Compare
Choose a tag to compare

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 of skuba format and skuba 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 and skuba lint will now keep .eslintignore, .gitignore and .prettierignore in sync. This automatically applies new exclusions like .eslintcache without the need for a manual skuba configure.

Patch Changes

  • template: Use correct environment key in docker-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

04 Nov 02:00
9bc39bf
Compare
Choose a tag to compare
v3.15.3-beta.0 Pre-release
Pre-release

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

12 Oct 06:39
6d37ec9
Compare
Choose a tag to compare

Patch Changes

  • Jest.mergePreset: Do not mutate underlying defaults (#595)

    Jest.mergePreset no longer mutates the internal jest-preset object. Subsequent calls to Jest.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 and skuba start now handle an omitted request body the same as an empty JSON array of arguments []. The function can also return undefined to omit a response body.

  • template/lambda-sqs-worker: Opt in to new Serverless variables resolver (#601)

  • lint: Use worker threads when running --serially (#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 to Jest.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 and skuba 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

01 Oct 00:17
2d4bb79
Compare
Choose a tag to compare

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 as EBADF: bad file description, close.

v3.15.1-beta.0

30 Sep 23:42
7ef6404
Compare
Choose a tag to compare
v3.15.1-beta.0 Pre-release
Pre-release

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 as EBADF: bad file description, close.

v3.15.0

29 Sep 10:55
e79d428
Compare
Choose a tag to compare

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 and skuba 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

25 Sep 04:04
5c46a08
Compare
Choose a tag to compare
v3.15.0-beta.0 Pre-release
Pre-release

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 and skuba 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.

v3.14.4

11 Aug 04:50
c75b7b1
Compare
Choose a tag to compare

Patch Changes

  • d60f561: template: @types/node ^14.17.19
  • 5b74f50: template: seek-jobs/gantry v1.4.0
  • 66059b6: deps: @types/jest ^27.0.0
  • 3ca9796: template/*-rest-api: Parameterise AWS region