Skip to content

Releases: seek-oss/skuba

v4.2.1

25 May 10:38
4dc04da
Compare
Choose a tag to compare

Patch Changes

  • template/private-npm-package: Use npm2 build agent queue (#843)

  • lint, test: Set timeout for Buildkite and GitHub integrations (#835)

    Transient network failures can impact annotations and autofixes. We now specify a 30 second timeout for these integration features to prevent them from hanging and indefinitely preoccupying your build agents.

  • template: Time out Buildkite test steps after 10 minutes (#842)

    Successful testing and linting should complete within this window. This timeout prevents commands from hanging and indefinitely preoccupying your Buildkite agents.

    steps:
      - label: 🧪 Test & Lint
    +   timeout_in_minutes: 10
  • cli: Make warning logs more verbose (#826)

  • template/lambda-sqs-worker: Change deployment method to direct (#868)

  • template/koa-rest-api: Use AsyncLocalStorage to track logger context (#864)

    We now employ RequestLogging.createContextStorage to thread logging context through the middleware stack of your Koa application. This enables use of a singleton logger instance instead of manually propagating Koa context and juggling rootLoggers and contextLoggers.

    Before:

    import createLogger from '@seek/logger';
    import Koa, { Context } from 'koa';
    import { RequestLogging } from 'seek-koala';
    
    const rootLogger = createLogger();
    
    const contextLogger = (ctx: Context) =>
      rootLogger.child(RequestLogging.contextFields(ctx));
    
    const app = new Koa().use((ctx) => {
      rootLogger.info('Has no context');
    
      contextLogger(ctx).info('Has context');
    });

    After:

    import createLogger from '@seek/logger';
    import Koa from 'koa';
    import { RequestLogging } from 'seek-koala';
    
    const { createContextMiddleware, mixin } =
      RequestLogging.createContextStorage();
    
    const contextMiddleware = createContextMiddleware();
    
    const logger = createLogger({ mixin });
    
    const app = new Koa().use(contextMiddleware).use((ctx) => {
      logger.info('Has context');
    });
  • template/lambda-sqs-worker: Use AsyncLocalStorage to track logger context (#871)

    We now employ this Node.js API to thread logging context through the handler of your Lambda function. This enables use of a singleton logger instance instead of manually propagating Lambda context and juggling rootLoggers and contextLoggers, and is equivalent to #864.

    Before:

    import createLogger from '@seek/logger';
    import { Context } from 'aws-lambda';
    
    const rootLogger = createLogger();
    
    const contextLogger = ({ awsRequestId }: Context) =>
      rootLogger.child({ awsRequestId });
    
    const handler = async (_event: unknown, ctx: Context) => {
      rootLogger.info('Has no context');
    
      contextLogger(ctx).info('Has context');
    };

    After:

    import { AsyncLocalStorage } from 'async_hooks';
    
    import createLogger from '@seek/logger';
    import { Context } from 'aws-lambda';
    
    const loggerContext = new AsyncLocalStorage<{ awsRequestId: string }>();
    
    const logger = createLogger({
      mixin: () => ({ ...loggerContext.getStore() }),
    });
    
    const handler = (_event: unknown, { awsRequestId }: Context) =>
      loggerContext.run({ awsRequestId }, async () => {
        logger.info('Has context');
      });
  • template/lambda-sqs-worker*: Bump Node.js version to 16 (#862)

  • build-package, lint: Improve detection of SEEK Buildkite queues for serial execution (#829)

  • lint: Detect and autofix ESLint warnings (#844)

  • lint: Skip autofixing when ESLint reports no fixable issues (#844)

  • format, lint: Avoid unnecessary template literals (#849)

    We now automatically convert unnecessary template literals into single-quoted strings for consistency.

  • deps: Jest 28 (#856)

    This major release includes breaking changes. See the announcement post for more information.

v4.2.1-beta.0

07 Apr 04:57
7fe8941
Compare
Choose a tag to compare
v4.2.1-beta.0 Pre-release
Pre-release

Patch Changes

  • cli: Make warning logs more verbose (#826)

v4.2.0

06 Apr 11:30
feb868d
Compare
Choose a tag to compare

Minor Changes

  • deps: TypeScript 4.6 (#811)

    This major release includes breaking changes. See the TypeScript 4.5 and TypeScript 4.6 announcements for more information.

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

  • deps: ESLint 8 + eslint-config-seek 9 (#806)

    These major upgrades bundle new parser and plugin versions. See the ESLint 8 guide and eslint-config-seek 9 release for more details on the underlying changes.

    We've introduced new linting rules like @typescript-eslint/no-unsafe-argument, and resolved the following installation warning:

    babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.

    If you wish to relax some of the new rules, extend your .eslintrc.js config:

    module.exports = {
      extends: ['skuba'],
      rules: {
        // Demote new TypeScript ESLint rule from 'error' to 'warn'.
        '@typescript-eslint/no-unsafe-argument': 'warn',
      },
    };

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Jest.mergePreset: Allow additional props via type parameter (#806)

  • Git.currentBranch: Add helper function (#804)

  • test: Strip ANSI escape codes from error messages for GitHub annotations (#825)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • template: Exclude DOM type definitions by default (#822)

    TypeScript will now raise compiler errors when DOM globals like document and window are referenced in new projects. This catches unsafe usage of Web APIs that will throw exceptions in a Node.js context.

    If you are developing a new npm package for browser use or require specific Node.js-compatible Web APIs like the Encoding API, you can opt in to DOM type definitions in your tsconfig.json:

    {
      "compilerOptions": {
    -   "lib": ["ES2020"]
    +   "lib": ["DOM", "ES2020"]
      }
    }

    If you have an existing backend project, you can opt out of DOM type definitions in your tsconfig.json.

    For Node.js 14:

    {
      "compilerOptions": {
    +   "lib": ["ES2020"],
        "target": "ES2020"
      }
    }

    For Node.js 16:

    {
      "compilerOptions": {
    +   "lib": ["ES2021"],
        "target": "ES2021"
      }
    }
  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/*-rest-api: Avoid alternative syntax for ENV instructions (#823)

    Omitting the = symbol in ENV instructions is discouraged and may be disallowed in future.

    - ENV NODE_ENV production
    + ENV NODE_ENV=production
  • template/oss-npm-package: Pin GitHub action versions (#805)

  • template/*-rest-api: seek-jobs/gantry v1.7.0 (#824)

v4.2.0-beta.6

30 Mar 10:23
Compare
Choose a tag to compare
v4.2.0-beta.6 Pre-release
Pre-release

Minor Changes

  • deps: TypeScript 4.6 (#811)

    This major release includes breaking changes. See the TypeScript 4.5 and TypeScript 4.6 announcements for more information.

  • changesets: Integrate Changesets release workflow (#672)

    You can now release npm packages with the skuba changesets command, which is a Buildkite-compatible port of the GitHub Changesets Release Action. See the Changesets deep dive for more information.

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

  • deps: ESLint 8 + eslint-config-seek 9 (#806)

    These major upgrades bundle new parser and plugin versions. See the ESLint 8 guide and eslint-config-seek 9 release for more details on the underlying changes.

    We've introduced new linting rules like @typescript-eslint/no-unsafe-argument, and resolved the following installation warning:

    babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.

    If you wish to relax some of the new rules, extend your .eslintrc.js config:

    module.exports = {
      extends: ['skuba'],
      rules: {
        // Demote new TypeScript ESLint rule from 'error' to 'warn'.
        '@typescript-eslint/no-unsafe-argument': 'warn',
      },
    };

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Jest.mergePreset: Allow additional props via type parameter (#806)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/oss-npm-package: Pin GitHub action versions (#805)

v4.2.0-beta.5

29 Mar 11:56
Compare
Choose a tag to compare
v4.2.0-beta.5 Pre-release
Pre-release

Minor Changes

  • deps: TypeScript 4.6 (#811)

    This major release includes breaking changes. See the TypeScript 4.5 and TypeScript 4.6 announcements for more information.

  • changesets: Integrate Changesets release workflow (#672)

    You can now release npm packages with the skuba changesets command, which is a Buildkite-compatible port of the GitHub Changesets Release Action. See the Changesets deep dive for more information.

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

  • deps: ESLint 8 + eslint-config-seek 9 (#806)

    These major upgrades bundle new parser and plugin versions. See the ESLint 8 guide and eslint-config-seek 9 release for more details on the underlying changes.

    We've introduced new linting rules like @typescript-eslint/no-unsafe-argument, and resolved the following installation warning:

    babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.

    If you wish to relax some of the new rules, extend your .eslintrc.js config:

    module.exports = {
      extends: ['skuba'],
      rules: {
        // Demote new TypeScript ESLint rule from 'error' to 'warn'.
        '@typescript-eslint/no-unsafe-argument': 'warn',
      },
    };

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Jest.mergePreset: Allow additional props via type parameter (#806)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/oss-npm-package: Pin GitHub action versions (#805)

v4.2.0-beta.4

29 Mar 10:03
Compare
Choose a tag to compare
v4.2.0-beta.4 Pre-release
Pre-release

Minor Changes

  • deps: TypeScript 4.6 (#811)

    This major release includes breaking changes. See the TypeScript 4.5 and TypeScript 4.6 announcements for more information.

  • changesets: Integrate Changesets release workflow (#672)

    You can now release npm packages with the skuba changesets command, which is a Buildkite-compatible port of the GitHub Changesets Release Action. See the Changesets deep dive for more information.

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

  • deps: ESLint 8 + eslint-config-seek 9 (#806)

    These major upgrades bundle new parser and plugin versions. See the ESLint 8 guide and eslint-config-seek 9 release for more details on the underlying changes.

    We've introduced new linting rules like @typescript-eslint/no-unsafe-argument, and resolved the following installation warning:

    babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.

    If you wish to relax some of the new rules, extend your .eslintrc.js config:

    module.exports = {
      extends: ['skuba'],
      rules: {
        // Demote new TypeScript ESLint rule from 'error' to 'warn'.
        '@typescript-eslint/no-unsafe-argument': 'warn',
      },
    };

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Jest.mergePreset: Allow additional props via type parameter (#806)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/oss-npm-package: Pin GitHub action versions (#805)

v4.2.0-beta.3

29 Mar 09:05
Compare
Choose a tag to compare
v4.2.0-beta.3 Pre-release
Pre-release

Minor Changes

  • deps: TypeScript 4.6 (#811)

    This major release includes breaking changes. See the TypeScript 4.5 and TypeScript 4.6 announcements for more information.

  • changesets: Integrate Changesets release workflow (#672)

    You can now release npm packages with the skuba changesets command, which is a Buildkite-compatible port of the GitHub Changesets Release Action. See the Changesets deep dive for more information.

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

  • deps: ESLint 8 + eslint-config-seek 9 (#806)

    These major upgrades bundle new parser and plugin versions. See the ESLint 8 guide and eslint-config-seek 9 release for more details on the underlying changes.

    We've introduced new linting rules like @typescript-eslint/no-unsafe-argument, and resolved the following installation warning:

    babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.

    If you wish to relax some of the new rules, extend your .eslintrc.js config:

    module.exports = {
      extends: ['skuba'],
      rules: {
        // Demote new TypeScript ESLint rule from 'error' to 'warn'.
        '@typescript-eslint/no-unsafe-argument': 'warn',
      },
    };

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Jest.mergePreset: Allow additional props via type parameter (#806)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/oss-npm-package: Pin GitHub action versions (#805)

v4.2.0-beta.2

29 Mar 01:08
0c7aaec
Compare
Choose a tag to compare
v4.2.0-beta.2 Pre-release
Pre-release

Minor Changes

  • deps: TypeScript 4.6 (#811)

    This major release includes breaking changes. See the TypeScript 4.5 and TypeScript 4.6 announcements for more information.

  • changesets: Integrate Changesets release workflow (#672)

    You can now release npm packages with the skuba changesets command, which is a Buildkite-compatible port of the GitHub Changesets Release Action. See the Changesets deep dive for more information.

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

  • deps: ESLint 8 + eslint-config-seek 9 (#806)

    These major upgrades bundle new parser and plugin versions. See the ESLint 8 guide and eslint-config-seek 9 release for more details on the underlying changes.

    We've introduced new linting rules like @typescript-eslint/no-unsafe-argument, and resolved the following installation warning:

    babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.

    If you wish to relax some of the new rules, extend your .eslintrc.js config:

    module.exports = {
      extends: ['skuba'],
      rules: {
        // Demote new TypeScript ESLint rule from 'error' to 'warn'.
        '@typescript-eslint/no-unsafe-argument': 'warn',
      },
    };

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Jest.mergePreset: Allow additional props via type parameter (#806)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/oss-npm-package: Pin GitHub action versions (#805)

v4.2.0-beta.1

23 Mar 11:26
e169fcd
Compare
Choose a tag to compare
v4.2.0-beta.1 Pre-release
Pre-release

Minor Changes

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This eases adoption of linting rule changes and automatically resolves issues arising from a forgotten skuba format.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template/oss-npm-package: Lock down GitHub workflow permissions (#807)

    This aligns with OpenSSF guidance.

  • template: Propagate Buildkite environment variables for lint autofixing (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)

  • template/oss-npm-package: Pin GitHub action versions (#805)

v4.2.0-beta.0

23 Mar 09:33
ef42ac1
Compare
Choose a tag to compare
v4.2.0-beta.0 Pre-release
Pre-release

Minor Changes

  • lint: Autofix in CI (#800)

    skuba lint can now automatically push ESLint and Prettier autofixes. This lets us introduce new autofixable linting rules and version upgrades without requiring a manual skuba format on each project.

    You'll need to configure your CI environment to support this feature. See our GitHub autofixes documentation to learn more.

Patch Changes

  • template/lambda-sqs-worker-cdk: Fix progress configuration in cdk.json (#797)

  • Git.currentBranch: Add helper function (#804)

  • Git.commitAllChanges: Skip commit and return undefined when there are no changes (#804)

  • template: Propagate additional Buildkite environment variables (#800)

  • Git.getOwnerAndRepo: Support reading from CI environment variables (#804)

  • Git.getHeadCommitMessage: Add helper function (#804)