Skip to content

Commit

Permalink
fix(practs): bump practs to latest best
Browse files Browse the repository at this point in the history
  • Loading branch information
uladkasach committed Aug 1, 2024
1 parent f85508b commit 5b94524
Show file tree
Hide file tree
Showing 26 changed files with 3,295 additions and 3,900 deletions.
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ module.exports = {
'@typescript-eslint/lines-between-class-members': 'off',
'no-return-await': 'off', // this does not help anything and actually leads to bugs if we subsequently wrap the return in a try catch without remembering to _then_ add await
'@typescript-eslint/return-await': 'off',
'@typescript-eslint/no-unsafe-declaration-merging': 'off', // dobjs are built off of this
},
};
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# exclude package-lock from git diff; https://stackoverflow.com/a/72834452/3068233
package-lock.json -diff
46 changes: 46 additions & 0 deletions .github/workflows/.install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: .install

on:
workflow_call:
outputs:
node-modules-cache-key:
description: a max(stable) cache key to the node modules of this commit's dependencies
value: ${{ jobs.npm.outputs.node-modules-cache-key }}

jobs:
npm:
runs-on: ubuntu-20.04
outputs:
node-modules-cache-key: ${{ steps.cache.outputs.cache-primary-key }}
steps:
- name: checkout
uses: actions/checkout@v3

- name: set node-version
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'

- name: node-modules deps hash
id: deps-hash
run: |
PACKAGE_DEPS_HASH=$(jq '.packages' package-lock.json | jq 'del(."".version)' | md5sum | awk '{print $1}');
echo "PACKAGE_DEPS_HASH=$PACKAGE_DEPS_HASH"
echo "package-deps-hash=$PACKAGE_DEPS_HASH" >> "$GITHUB_OUTPUT"
- name: node-modules cache get
uses: actions/cache/restore@v4
id: cache
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ steps.deps-hash.outputs.package-deps-hash }}

- name: node-modules cache miss install
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts --prefer-offline --no-audit

- name: node-modules cache set
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ./node_modules
key: ${{ steps.cache.outputs.cache-primary-key }}
11 changes: 7 additions & 4 deletions .github/workflows/.publish-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,12 @@ on:
description: required credentials to authenticate with the aws account under which to publish

jobs:
install:
uses: ./.github/workflows/.install.yml

publish:
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
uses: actions/checkout@v3
Expand All @@ -19,14 +23,13 @@ jobs:
with:
registry-url: 'https://registry.npmjs.org/'
node-version-file: '.nvmrc'
cache: 'npm'

- name: node-modules cache get
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
id: cache
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: node-modules cache miss install
if: steps.cache.outputs.cache-hit != 'true'
Expand All @@ -36,6 +39,6 @@ jobs:
run: npm run build

- name: publish
run: npm publish
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.npm-auth-token }}
83 changes: 25 additions & 58 deletions .github/workflows/.test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,39 +20,13 @@ on:
description: required credentials to authenticate with aws the aws account against which to run the tests

jobs:
# install the dependencies
install:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3

- name: set node-version
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: node-modules cache get
uses: actions/cache/restore@v3
id: cache
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}

- name: node-modules cache miss install
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts --prefer-offline --no-audit

- name: node-modules cache set
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v3
with:
path: ./node_modules
key: ${{ steps.cache.outputs.cache-primary-key }}
uses: ./.github/workflows/.install.yml

# run tests in parallel
test-commits:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -64,19 +38,18 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: test:commits
run: npm run test:commits

test-types:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -86,19 +59,18 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: test:types
run: npm run test:types

test-format:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -108,19 +80,18 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: test:format
run: npm run test:format

test-lint:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -130,19 +101,18 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: test:lint
run: npm run test:lint

test-unit:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -152,19 +122,18 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: test:unit
run: npm run test:unit
run: THOROUGH=true npm run test:unit

test-integration:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -174,13 +143,12 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: configure aws credentials
if: "${{ inputs.aws-account-id != '' }}"
Expand All @@ -202,10 +170,10 @@ jobs:
run: npm run provision:integration-test-db --if-present

- name: test:integration
run: npm run test:integration
run: THOROUGH=true npm run test:integration

test-acceptance-locally:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: [install]
steps:
- name: checkout
Expand All @@ -215,13 +183,12 @@ jobs:
uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: get node-modules from cache
uses: actions/cache/restore@v3
uses: actions/cache/restore@v4
with:
path: ./node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
key: ${{ needs.install.outputs.node-modules-cache-key }}

- name: configure aws credentials
if: "${{ inputs.aws-account-id != '' }}"
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: review

on:
pull_request:
types:
- opened
- edited
- synchronize

permissions:
pull-requests: read

jobs:
pullreq-title:
runs-on: ubuntu-latest
steps:
- name: test:pullreq:title
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# https://github.com/commitizen/conventional-commit-types
types: |
fix
feat
chore
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
.serverless
.terraform
.terraform.lock
.yalc
coverage
dist
node_modules
2 changes: 1 addition & 1 deletion .husky/check.lockfile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ changed () {
}

if changed 'package-lock.json'; then
echo "📦 package-lock.json changed. Run npm install to update your locally installed dependencies."
echo "📦 package-lock.json changed. Run 'npm install' to update your locally installed dependencies."
fi
4 changes: 4 additions & 0 deletions .husky/check.nvm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

# if exists a .nvmrc, then `nvm use`, to use the specified version
# [[ -f ".nvmrc" ]] && nvm use # todo: find a way to share nvm permissions
7 changes: 7 additions & 0 deletions .husky/check.yalc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

# https://github.com/wclr/yalc
if [ "$(npx yalc check)" ]; then
echo "✋ package.json has yalc references. Run 'npx yalc remove --all' to remove these local testing references."
fi

1 change: 1 addition & 0 deletions .husky/post-checkout
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/bin/sh
. "$(dirname -- "$0")/_/husky.sh"

. "$(dirname -- "$0")/check.nvm.sh"
. "$(dirname -- "$0")/check.lockfile.sh"
4 changes: 4 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname -- "$0")/_/husky.sh"

. "$(dirname -- "$0")/check.yalc.sh"
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
lts/*
v20.12.2
5 changes: 0 additions & 5 deletions acceptance/environment.ts

This file was deleted.

6 changes: 6 additions & 0 deletions jest.acceptance.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import type { Config } from 'jest';

// ensure tests run in utc, like they will on cicd and on server; https://stackoverflow.com/a/56277249/15593329
process.env.TZ = 'UTC';

// ensure tests run like on local machines, so snapshots are equal on local && cicd
process.env.FORCE_COLOR = 'true';

// https://jestjs.io/docs/configuration
const config: Config = {
verbose: true,
Expand Down
6 changes: 6 additions & 0 deletions jest.integration.config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
import type { Config } from 'jest';

// ensure tests run in utc, like they will on cicd and on server; https://stackoverflow.com/a/56277249/15593329
process.env.TZ = 'UTC';

// ensure tests run like on local machines, so snapshots are equal on local && cicd
process.env.FORCE_COLOR = 'true';

// https://jestjs.io/docs/configuration
const config: Config = {
verbose: true,
Expand Down
Loading

0 comments on commit 5b94524

Please sign in to comment.