Skip to content

Commit e503468

Browse files
cinovraravambalajiv113mcmxcdevSpecialAro
authored
Server re-build with latest AdonisJS framework & Typescript (#47)
* chore: setup first basis structure * chore: ensure styling is loaded correctly * chore: comply to new routing syntax by replace . with / in routes/resource locations * chore: add login controller * chore: correctly use views with slash instead of dot * chore: working login + tests * chore: clean up tests * chore: add password-forgot endpoint and matching test * chore: add delete page test * chore: add logout test * chore: add reset-password route and tests * chore: remove obsolete comment * chore: add account-page and tests * chore: add data page & first step of the test * chore: add transfer/import data feature and tests * chore: add export and basic test * chore: add all static api routes with tests * Regenerate 'pnpm-lock.json' and fix bad merge conflict WIP: - Tests have been commented out since they dont work - Server doesn't start * easier dev and test runs * - remove --require-pragma from reformat-files so formatting works properly - run pnpm reformat-files over codebase - remove .json files from .eslintignore - add invalid.json file to .eslintignore - configure prettier properly in eslint config - add type jsdoc to prettier config - run adonis generate:manifest command to regenerate ace-manifest.json - specify volta in package.json - introduce typecheck npm script - remove unused .mjs extension from npm scripts - install missing type definition dependencies - add pnpm.allowedDeprecatedVersions to package.json - fix invalid extends in tsconfig.json causing TS issues throughout codebase - remove @ts-ignore throughout codebase which is not relevant anymore - enable some of the tsconfig options - remove outdated eslint-disable from codebase - change deprecated faker.company.companyName() to faker.company.name() - fix TS issues inside transfer.spec.ts * - update to latest node and pnpm versions - upgrade all non-major dependencies to latest - install missing @types/luxon dependency - add cuid to pnpm.allowedDeprecatedVersions - add esModuleInterop config option to tsconfig - migrate more deprecated faker methods to new ones - add more temporary ts-ignore to code * - update eslint config - remove trailingComma: all since default in prettier v3 - add typecheck command to prepare-code npm script - upgrade various dependencies to latest major version - update tsconfig to include only useful config options - disable some lint issues and fix others * - add test command to prepare-code - disable strictPropertyInitialization flag in tsconfig which creates issues with adonis models - update precommit hook to excute pnpm prepare-code - remove ts-ignore statements from all models * fix node and pnpm dependency update * add cross env (so that we can develop on windows) * add signup endpoint (TODO: JWT auth) * Add login endpoint * Add me and updateMe endpoints * Add service endpoint * refactor: change endpoints to use jwt * add recipes endpoint * add workspaces endpoint * fix web controllors for login and post import * Update node deps * Change auth middleware (for web) and exempt api from CSRF * Add import endpoint (franz import) * Fix export/import logic * Fix service and workspace data in user/data * Fix partial lint * chore: workaround lint issues * fix: migration naming had two . * Sync back node with recipes repo * Temporarily ignore typescript * Fix adonisrc to handle public folder static assets * Fix issue with production database * add Legacy Password Provider * Fix lint errors * Fix issue on login errors frontend * add Legacy Password Provider * Fix issue with customIcons * Fix issue with auth tokens * Update 'node' to '18.18.0' * make docker work * improve docker entrypoint (test api performance) * Add migration database script * NODE_ENV on recipes * prefer @ts-expect-error over @ts-ignore * small fixes * Update 'pnpm' to '8.7.6' * fix error catch * Automatically generate JWT Public and Private keys * Use custom Adonis5-jwt * Update code to use secret (old way, no breaking changes) * Normalize appKey * Trick to make JWT tokens on client work with new version * Fix error with new JWT logic * Change migration and how we store JWT * Fix 500 response code (needs to be 401) * Improve logic and fix bugs * Fix build and entrypoint logic * Catch error if appKey changes * Add newToken logic * Fix lint (ignore any errors) * Add build for PRs * pnpm reformat-files result * Fix some tests * Fix reset password not working (test failing) * Restore csrfTokens (disabled by accident) * Fix pnpm start command with .env * Disable failing tests on the transfer endpoint (TODO) * Add tests to PR build * Fix build * Remove unnecessary assertStatus * Add typecheck * hash password on UserFactory (fix build) * Add JWT_USE_PEM true by default (increase security) * fix name of github action --------- Co-authored-by: Vijay A <vraravam@users.noreply.github.com> Co-authored-by: Balaji Vijayakumar <kuttibalaji.v6@gmail.com> Co-authored-by: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Co-authored-by: André Oliveira <oliveira.andrerodrigues95@gmail.com>
1 parent 92ea5db commit e503468

File tree

185 files changed

+16825
-6872
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

185 files changed

+16825
-6872
lines changed

.adonisrc.json

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"typescript": true,
3+
"commands": [
4+
"./commands",
5+
"@adonisjs/core/build/commands/index.js",
6+
"@adonisjs/repl/build/commands",
7+
"@adonisjs/lucid/build/commands",
8+
"@adonisjs/mail/build/commands",
9+
"adonis5-jwt/build/commands"
10+
],
11+
"exceptionHandlerNamespace": "App/Exceptions/Handler",
12+
"aliases": {
13+
"App": "app",
14+
"Config": "config",
15+
"Database": "database",
16+
"Contracts": "contracts"
17+
},
18+
"preloads": ["./start/routes", "./start/kernel", "./start/events"],
19+
"providers": [
20+
"./providers/AppProvider",
21+
"@adonisjs/core",
22+
"@adonisjs/view",
23+
"@adonisjs/lucid",
24+
"@adonisjs/auth",
25+
"@adonisjs/shield",
26+
"@adonisjs/session",
27+
"@adonisjs/mail",
28+
"adonis5-jwt",
29+
"./providers/LegacyHasherProvider"
30+
],
31+
"aceProviders": ["@adonisjs/repl"],
32+
"tests": {
33+
"suites": [
34+
{
35+
"name": "functional",
36+
"files": ["tests/functional/**/*.spec(.ts|.js)"],
37+
"timeout": 60000
38+
}
39+
]
40+
},
41+
"testProviders": ["@japa/preset-adonis/TestsProvider"],
42+
"metaFiles": [
43+
{
44+
"pattern": "resources/views/**/*.edge",
45+
"reloadServer": false
46+
},
47+
{
48+
"pattern": "public/**",
49+
"reloadServer": false
50+
}
51+
]
52+
}

.do/deploy.template.yaml

Lines changed: 0 additions & 46 deletions
This file was deleted.

.dockerignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,12 @@ docker
1717
node_modules
1818
.husky
1919

20+
# Ignore data folder
21+
data
22+
tmp
23+
2024
# Ignore recipes folder (it is pulled in the image by git)
2125
recipes
26+
27+
# Ignore build folder
28+
build

.env.development

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#This is a minimal needed configuration for development
2+
3+
NODE_ENV=development
4+
APP_URL=http://localhost:3333
5+
DB_CONNECTION=sqlite
6+
APP_KEY=IDU2cMbrvS6iv5841YmFJSjnIqT1X1Nx
7+
8+
# These are needed if running outside of Docker
9+
HOST=127.0.0.1
10+
PORT=3333
11+
12+
IS_CREATION_ENABLED=true
13+
IS_DASHBOARD_ENABLED=true
14+
IS_REGISTRATION_ENABLED=true
15+
CONNECT_WITH_FRANZ=true

.env.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#This is a example file with all the available configuration options.
2+
13
NODE_ENV=development
24
APP_URL=localhost
35
DB_CONNECTION=sqlite
@@ -19,8 +21,6 @@ IS_DASHBOARD_ENABLED=true
1921
IS_REGISTRATION_ENABLED=true
2022
CONNECT_WITH_FRANZ=false
2123
DATA_DIR=data
22-
PUID=1000
23-
PGID=1000
2424

2525
# These are needed if running outside of Docker
2626
APP_KEY= # Need to set some value

.env.test

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#This is a minimal needed configuration for test
2+
3+
NODE_ENV=test
4+
ASSETS_DRIVER=fake
5+
SESSION_DRIVER=memory
6+
APP_KEY=IDU2cMbrvS6iv5841YmFJSjnIqT1X1Nx

.eslintignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ node_modules
2929
/recipes/
3030

3131
# package files
32-
package.json
3332
pnpm-lock.yaml
3433

3534
# Json
36-
*.json
35+
tests/functional/dashboard/import-stubs/invalid.json

.eslintrc.js

Lines changed: 75 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,86 @@
1+
/** @type {import('eslint').Linter.Config} */
12
module.exports = {
23
root: true,
3-
env: {
4-
commonjs: true,
5-
es6: true,
6-
node: true,
4+
parserOptions: {
5+
ecmaVersion: 2018,
6+
sourceType: 'module',
7+
project: './tsconfig.json',
78
},
8-
extends: ['airbnb-base'],
9+
ignorePatterns: ['node_modules', 'build', 'recipes', '.eslintrc.js'],
10+
extends: [
11+
'plugin:adonis/typescriptApp',
12+
'plugin:unicorn/recommended',
13+
'prettier',
14+
],
15+
plugins: [],
916
globals: {
10-
Atomics: 'readonly',
11-
SharedArrayBuffer: 'readonly',
12-
use: 'readonly',
13-
window: 'readonly',
14-
document: 'readonly',
15-
ENV: 'readonly',
16-
session: 'readonly',
17-
response: 'readonly',
17+
use: true,
1818
},
19-
parserOptions: {
20-
ecmaVersion: 2018,
19+
env: {
20+
es6: true,
21+
node: true,
2122
},
23+
reportUnusedDisableDirectives: true,
24+
overrides: [
25+
{
26+
files: ['**/*.ts'],
27+
extends: [
28+
'plugin:adonis/typescriptApp',
29+
'plugin:@typescript-eslint/eslint-recommended',
30+
'plugin:@typescript-eslint/strict',
31+
// TODO: Opt-in to a stricter ruleset in the future
32+
// 'plugin:@typescript-eslint/strict-type-checked',
33+
'plugin:@typescript-eslint/stylistic-type-checked',
34+
'plugin:import/typescript',
35+
],
36+
parser: '@typescript-eslint/parser',
37+
plugins: [],
38+
rules: {
39+
// eslint
40+
'max-len': 0,
41+
42+
// @typescript-eslint
43+
'@typescript-eslint/no-non-null-assertion': 0,
44+
'@typescript-eslint/no-empty-interface': 0,
45+
'@typescript-eslint/semi': 0,
46+
'@typescript-eslint/space-before-function-paren': 0,
47+
'@typescript-eslint/no-extraneous-class': 0,
48+
'@typescript-eslint/ban-ts-comment': 0,
49+
'@typescript-eslint/prefer-ts-expect-error': 0,
50+
},
51+
},
52+
],
2253
rules: {
23-
'arrow-parens': 0,
24-
'class-methods-use-this': 0,
25-
eqeqeq: 1,
26-
'implicit-arrow-linebreak': 0,
54+
// eslint
55+
'array-callback-return': 1,
56+
'consistent-return': 1,
2757
'max-len': 0,
2858
'no-await-in-loop': 1,
29-
'no-restricted-syntax': 0,
30-
'operator-linebreak': 0,
31-
'object-curly-newline': 0,
59+
'no-return-assign': 1,
60+
'no-console': [
61+
1,
62+
{
63+
allow: ['warn', 'error'],
64+
},
65+
],
66+
'no-param-reassign': 1,
67+
'prefer-destructuring': 1,
68+
// eslint-plugin-unicorn
69+
'unicorn/filename-case': 0,
70+
'unicorn/prefer-module': 0,
71+
'unicorn/prevent-abbreviations': 0,
72+
73+
'unicorn/import-style': [
74+
2,
75+
{
76+
styles: {
77+
path: {
78+
named: true,
79+
},
80+
},
81+
},
82+
],
83+
'unicorn/no-empty-file': 0,
84+
'unicorn/prefer-top-level-await': 0,
3285
},
3386
};

.github/workflows/build.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: AdonisJS check
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
7+
jobs:
8+
adonis-js-check:
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@v3
13+
14+
- name: Use Node.js specified in the '.nvmrc' file
15+
uses: actions/setup-node@v3
16+
with:
17+
node-version-file: ".nvmrc"
18+
19+
- name: Install pnpm
20+
run: npm i -gf "pnpm@$(node -p 'require("./package.json").engines.pnpm')" && pnpm -v
21+
22+
- run: pnpm install
23+
24+
- run: pnpm typecheck
25+
26+
- run: pnpm lint
27+
28+
- run: pnpm test
29+
30+
- run: pnpm run build

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,8 @@ tags
349349

350350
# Adonis directory for storing tmp files
351351
tmp
352+
build
353+
public/assets
352354

353355
# Environment variables, never commit this file
354356
.env

0 commit comments

Comments
 (0)