Skip to content

Commit

Permalink
Merge pull request #29 from evefancom/openint
Browse files Browse the repository at this point in the history
Integrating Openint
  • Loading branch information
pellicceama authored Oct 28, 2024
2 parents 1af0169 + 1729a96 commit 16b8691
Show file tree
Hide file tree
Showing 1,055 changed files with 115,440 additions and 495 deletions.
20 changes: 20 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.patch]
charset = unset
end_of_line = unset
indent_size = unset
indent_style = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
27 changes: 27 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Unignore dotfiles
!.*

# dependencies
**/node_modules/

# temporary files
**/temp/

# generated files
**/__generated__/
*.generated.*
*.gen.*
*.oas.*

# jest
*.snap

# next.js
/apps/gondola/.next/
/apps/web/.next/
/apps/web/out/

# vim: set filetype=ignore:
.obsidian/

docs/openint.oas.json
156 changes: 156 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
{
"root": true,
"settings": {
"next": {
"rootDir": "apps/web/"
},
"react": {
"version": "17.0.2"
},
"tailwindcss": {
"callees": ["twMerge", "cn"],
"config": "apps/web/tailwind.config.ts"
}
},
"plugins": [
"codegen",
"eslint-comments",
"promise",
"tailwindcss",
"unicorn"
],
"extends": [
"next/core-web-vitals",
"plugin:eslint-comments/recommended",
"plugin:promise/recommended",
"plugin:tailwindcss/recommended"
],
"rules": {
"arrow-body-style": "warn",
"object-shorthand": "warn",
"prefer-const": "warn",
"quotes": ["warn", "single", {"avoidEscape": true}],
"codegen/codegen": "warn",
"import/no-unresolved": "error",
"eslint-comments/disable-enable-pair": "off",
"eslint-comments/no-unlimited-disable": "off",
"eslint-comments/no-unused-disable": "warn",
"promise/always-return": "off",
"react/jsx-curly-brace-presence": "warn",
"react-hooks/exhaustive-deps": [
"warn",
{
"additionalHooks": "(useUpdateEffect)"
}
],
"unicorn/catch-error-name": ["warn", {"name": "err"}],
"unicorn/escape-case": "warn",
"unicorn/no-await-expression-member": "warn",
"unicorn/no-console-spaces": "warn",
"unicorn/no-instanceof-array": "warn",
"unicorn/no-useless-fallback-in-spread": "warn",
"unicorn/no-useless-length-check": "warn",
"unicorn/no-useless-promise-resolve-reject": "warn",
"unicorn/no-useless-spread": "warn",
"unicorn/number-literal-case": "warn",
"unicorn/prefer-add-event-listener": "warn",
"unicorn/prefer-array-find": "warn",
"unicorn/prefer-array-flat-map": "warn",
"unicorn/prefer-array-flat": "warn",
"unicorn/prefer-array-index-of": "warn",
"unicorn/prefer-array-some": "warn",
"unicorn/prefer-code-point": "warn",
"unicorn/prefer-date-now": "warn",
"unicorn/prefer-default-parameters": "warn",
"unicorn/prefer-dom-node-append": "warn",
"unicorn/prefer-dom-node-dataset": "warn",
"unicorn/prefer-dom-node-remove": "warn",
"unicorn/prefer-dom-node-text-content": "warn",
"unicorn/prefer-event-target": "warn",
"unicorn/prefer-includes": "warn",
"unicorn/prefer-keyboard-event-key": "warn",
"unicorn/prefer-math-trunc": "warn",
"unicorn/prefer-modern-dom-apis": "warn",
"unicorn/prefer-modern-math-apis": "warn",
"unicorn/prefer-native-coercion-functions": "warn",
"unicorn/prefer-negative-index": "warn",
"unicorn/prefer-node-protocol": "warn",
"unicorn/prefer-number-properties": "warn",
"unicorn/prefer-object-from-entries": "warn",
"unicorn/prefer-optional-catch-binding": "warn",
"unicorn/prefer-prototype-methods": "warn",
"unicorn/prefer-query-selector": "warn",
"unicorn/prefer-reflect-apply": "warn",
"unicorn/prefer-regexp-test": "warn",
"unicorn/prefer-string-replace-all": "warn",
"unicorn/prefer-string-slice": "warn",
"unicorn/prefer-string-starts-ends-with": "warn",
"unicorn/prefer-string-trim-start-end": "warn",
"unicorn/prefer-switch": "warn",
"unicorn/prefer-top-level-await": "warn",
"unicorn/prefer-type-error": "warn",
"unicorn/relative-url-style": "warn",
"unicorn/require-array-join-separator": "warn",
"unicorn/require-number-to-fixed-digits-argument": "warn",
"unicorn/template-indent": "warn",
"unicorn/throw-new-error": "warn"
},
"overrides": [
{
"files": ["**/*.{ts,tsx}"],
"parserOptions": {"project": "tsconfig.json"},
"plugins": ["@typescript-eslint"],
"extends": ["plugin:@typescript-eslint/strict"],
"rules": {
"@typescript-eslint/array-type": ["warn", {"default": "array-simple"}],
"@typescript-eslint/await-thenable": "warn",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/ban-tslint-comment": "off",
"@typescript-eslint/ban-types": "off",
"@typescript-eslint/consistent-type-assertions": "warn",
"@typescript-eslint/consistent-type-imports": [
"warn",
{"disallowTypeAnnotations": false}
],
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-empty-interface": "off",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-extra-semi": "off",
"@typescript-eslint/no-floating-promises": "warn",
"@typescript-eslint/no-for-in-array": "warn",
"no-implied-eval": "off",
"@typescript-eslint/no-implied-eval": "warn",
"@typescript-eslint/no-invalid-void-type": "off",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-unnecessary-condition": "off",
"@typescript-eslint/no-unnecessary-type-assertion": "warn",
"@typescript-eslint/no-unsafe-argument": "warn",
"@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/no-unsafe-member-access": "warn",
"@typescript-eslint/no-unsafe-return": "warn",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-var-requires": "off",
"require-await": "off",
"@typescript-eslint/require-await": "warn",
"@typescript-eslint/restrict-plus-operands": "warn",
"@typescript-eslint/restrict-template-expressions": "off",
"@typescript-eslint/unbound-method": "warn"
}
},
{
"files": [
"**/__{mocks,tests}__/**/*.{js,ts,tsx}",
"**/*.{spec,test}.{js,ts,tsx}"
],
"plugins": ["jest", "jest-formatting"],
"extends": [
"plugin:jest/recommended",
"plugin:jest-formatting/recommended"
],
"rules": {
"jest/expect-expect": "off"
}
}
]
}
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**/__generated__/ linguist-generated=true
**/*.generated.* linguist-generated=true
**/*.gen.* linguist-generated=true
**/*.openapi.* linguist-generated=true
**/*.oas.* linguist-generated=true
101 changes: 101 additions & 0 deletions .github/workflows/validate-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Validate

on: [push, pull_request]

jobs:
main:
name: Run type checks, lint, and tests
runs-on: ubuntu-latest
timeout-minutes: 15
services:
# https://docs.github.com/en/actions/using-containerized-services/creating-postgresql-service-containers
postgres:
image: postgres:latest
# service environment variables
# `POSTGRES_HOST` is `postgres`
env:
# optional (defaults to `postgres`)
POSTGRES_DB: test
# required
POSTGRES_PASSWORD: test
# optional (defaults to `5432`)
POSTGRES_PORT: 5432
# optional (defaults to `postgres`)
POSTGRES_USER: postgres
ports:
# maps tcp port 5432 on service container to the host
- 5432:5432
# set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 20 # TODO: Can we get this from "engine" field in package.json?

- uses: pnpm/action-setup@v4
name: Install pnpm
id: pnpm-install
with:
version: 9.9.0 # Ideally we should get this from engine field too...
run_install: false

- name: Get pnpm store directory
id: pnpm-cache
run: |
echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install --frozen-lockfile

# - name: Set up tmate session
# uses: mxschmitt/action-tmate@v2
# - name: Setup upterm session
# uses: lhotari/action-upterm@v1
- name: Run type checks
run: pnpm run typecheck
env:
NODE_OPTIONS: --max-old-space-size=4096

# TODO: Figure out a pattern to make environment variables parsed / required on demand rather than on startup time
# Ideally have a way to switch between the two... Where we can also choose proactive parsing for sanity checking...
- name: Run health check
run: NANGO_SECRET_KEY=noop JWT_SECRET=NOOP POSTGRES_URL=postgres:// npx tsx ./bin/openint.ts health

- name: Run migration check
run: POSTGRES_URL=postgres://postgres:test@localhost:5432/test pnpm migration up
# To test this with a locally install postgres, run
# psql postgres -c 'drop database if exists test;' && psql postgres -c 'create database test;' && POSTGRES_URL=postgres://localhost:5432/test pnpm migration up

- name: Run lint
run: pnpm run lint
env:
NODE_OPTIONS: --max-old-space-size=4096

- name: Run tests
run: pnpm run test::ci

- name: Send Slack notification for job status
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
fields: repo,message,commit,author,action,eventName,ref,workflow,job,took,pullRequest # selectable (default: repo,message)
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLATIFY_SLACK_WEBHOOK_URL }} # required
if: ${{ env.SLACK_WEBHOOK_URL != '' && always() }} # Pick up events even if the job fails or is canceled.
Loading

0 comments on commit 16b8691

Please sign in to comment.