# @openstapps/eslint-config

## 3.0.0-next.0

### Major Changes

- 64caebaf: Move project to a turbo monorepo & pnpm

  Internal dependencies are now defined using `"@openstapps/package": "workspace:*"`

  - Removed extraneous files from packages
    - `.npmrc`
    - `.npmignore`
    - `.mailmap`
    - `.gitignore`
    - `CONTRIBUTING.md`
    - `LICENSE` (Project license file is added upon publishing, see [pnpm.io](https://pnpm.io/cli/publish))
    - `package-lock.json`
    - `.editorconfig`
    - `.eslintrc.json` (moved eslint config to `package.json`)
    - `.eslintignore`
    - `.gitlab-ci.yml` (Most workflows are workspace-level)
    - `.gitlab/**` (issue templates etc. are now workspace-level)
    - `.dockerignore` (Docker files are determined by which files are deployed with `pnpm deploy`, as per `package.json/files`)
  - TSConfig has been moved to its own package (You can now use `"extends": "@openstapps/tsconfig"`)
  - Removed ESLint and Prettier peer dependency hell by injecting them through the `.pnpmfile.cjs`
  - Added syncpack for keeping dependency versions in sync (and consistent key ordering in `package.json`)
  - Replaced conventional changelog with changesets
  - Apps with binaries now use a top level `app.js`

  ```js
  #!/usr/bin/env node
  import './lib/app.js';
  ```

- 64caebaf: Migrate to ESM

  CommonJS is no longer supported in any capacity. To use the new
  version, you will need to migrate your package to ESM.
  We recommend using `tsup` and `Node 18`.

  ```json
  {
    "type": "module"
  }
  ```

- 64caebaf: Migrate package to Node 18

  - Consumers of this package will need to migrate to Node 18 or
    higher.
  - Packages have been migrated from promisified `readFile` or
    `readFileSync` towards `fs/promises`
  - Packages use native `flatMap` now

### Minor Changes

- 64caebaf: Migrate tests to C8/Chai/Mocha

  - `@testdeck` OOP testing has been removed.
  - Tests have been unified
  - CommonJS module mocking has been replaced through
    refactoring of tests, as ES Modules cannot be mocked
    (do yourself a favor and don't try to mock them)
  - C8 now replaces NYC as a native coverage tool

- 64caebaf: Update rules

  - `unicorn/no-array-reduce` is now off
  - `unicorn/no-non-null-assertion` is now off
  - Removed prettier rules (use prettier formatting instead)

### Patch Changes

- 64caebaf: Migrated changelogs to changeset format

  ```js
  import fs from 'fs';

  const path = 'packages/logger/CHANGELOG.md';

  fs.writeFileSync(path, fs.readFileSync(path, 'utf8').replace(/^#+\s+\[/gm, '## ['));
  ```

- 98546a97: Migrate away from @openstapps/configuration
- 64caebaf: Add license header enforcement rule (unfinished)

## [1.1.0](https://gitlab.com/openstapps/eslint-config/compare/v1.0.0...v1.1.0) (2022-06-27)

## [1.0.0](https://gitlab.com/openstapps/eslint-config/compare/v0.0.3...v1.0.0) (2022-05-05)

### Features

- support es-mapping
  tags ([418fc6b](https://gitlab.com/openstapps/eslint-config/commit/418fc6ba0532bfe0c368f90f2bbcf7f47c091e11))

## [0.0.3](https://gitlab.com/openstapps/eslint-config/compare/v0.0.2...v0.0.3) (2022-04-25)

## [0.0.2](https://gitlab.com/openstapps/eslint-config/compare/bc15df828ddad4be4804d7ff87828c9c8ddd6f46...v0.0.2) (2022-04-25)

### Features

- gitlab-ci ([bc15df8](https://gitlab.com/openstapps/eslint-config/commit/bc15df828ddad4be4804d7ff87828c9c8ddd6f46))
