From e503468660a13760010a94ecda5f0625c6f47f87 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Fri, 13 Oct 2023 14:12:03 +0200 Subject: Server re-build with latest AdonisJS framework & Typescript (#47) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 Co-authored-by: Balaji Vijayakumar Co-authored-by: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Co-authored-by: André Oliveira --- ace-manifest.json | 616 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 616 insertions(+) create mode 100644 ace-manifest.json (limited to 'ace-manifest.json') diff --git a/ace-manifest.json b/ace-manifest.json new file mode 100644 index 0000000..d7befd2 --- /dev/null +++ b/ace-manifest.json @@ -0,0 +1,616 @@ +{ + "commands": { + "dump:rcfile": { + "settings": {}, + "commandPath": "@adonisjs/core/build/commands/DumpRc", + "commandName": "dump:rcfile", + "description": "Dump contents of .adonisrc.json file along with defaults", + "args": [], + "aliases": [], + "flags": [] + }, + "list:routes": { + "settings": { + "loadApp": true, + "stayAlive": true + }, + "commandPath": "@adonisjs/core/build/commands/ListRoutes/index", + "commandName": "list:routes", + "description": "List application routes", + "args": [], + "aliases": [], + "flags": [ + { + "name": "verbose", + "propertyName": "verbose", + "type": "boolean", + "description": "Display more information" + }, + { + "name": "reverse", + "propertyName": "reverse", + "type": "boolean", + "alias": "r", + "description": "Reverse routes display" + }, + { + "name": "methods", + "propertyName": "methodsFilter", + "type": "array", + "alias": "m", + "description": "Filter routes by method" + }, + { + "name": "patterns", + "propertyName": "patternsFilter", + "type": "array", + "alias": "p", + "description": "Filter routes by the route pattern" + }, + { + "name": "names", + "propertyName": "namesFilter", + "type": "array", + "alias": "n", + "description": "Filter routes by route name" + }, + { + "name": "json", + "propertyName": "json", + "type": "boolean", + "description": "Output as JSON" + }, + { + "name": "table", + "propertyName": "table", + "type": "boolean", + "description": "Output as Table" + }, + { + "name": "max-width", + "propertyName": "maxWidth", + "type": "number", + "description": "Specify maximum rendering width. Ignored for JSON Output" + } + ] + }, + "generate:key": { + "settings": {}, + "commandPath": "@adonisjs/core/build/commands/GenerateKey", + "commandName": "generate:key", + "description": "Generate a new APP_KEY secret", + "args": [], + "aliases": [], + "flags": [] + }, + "repl": { + "settings": { + "loadApp": true, + "environment": "repl", + "stayAlive": true + }, + "commandPath": "@adonisjs/repl/build/commands/AdonisRepl", + "commandName": "repl", + "description": "Start a new REPL session", + "args": [], + "aliases": [], + "flags": [] + }, + "db:seed": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/DbSeed", + "commandName": "db:seed", + "description": "Execute database seeders", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection for the seeders", + "alias": "c" + }, + { + "name": "interactive", + "propertyName": "interactive", + "type": "boolean", + "description": "Run seeders in interactive mode", + "alias": "i" + }, + { + "name": "files", + "propertyName": "files", + "type": "array", + "description": "Define a custom set of seeders files names to run", + "alias": "f" + }, + { + "name": "compact-output", + "propertyName": "compactOutput", + "type": "boolean", + "description": "A compact single-line output" + } + ] + }, + "db:wipe": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/DbWipe", + "commandName": "db:wipe", + "description": "Drop all tables, views and types in database", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "drop-views", + "propertyName": "dropViews", + "type": "boolean", + "description": "Drop all views" + }, + { + "name": "drop-types", + "propertyName": "dropTypes", + "type": "boolean", + "description": "Drop all custom types (Postgres only)" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explicitly force command to run in production" + } + ] + }, + "db:truncate": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/DbTruncate", + "commandName": "db:truncate", + "description": "Truncate all tables in database", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explicitly force command to run in production" + } + ] + }, + "make:model": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/MakeModel", + "commandName": "make:model", + "description": "Make a new Lucid model", + "args": [ + { + "type": "string", + "propertyName": "name", + "name": "name", + "required": true, + "description": "Name of the model class" + } + ], + "aliases": [], + "flags": [ + { + "name": "migration", + "propertyName": "migration", + "type": "boolean", + "alias": "m", + "description": "Generate the migration for the model" + }, + { + "name": "controller", + "propertyName": "controller", + "type": "boolean", + "alias": "c", + "description": "Generate the controller for the model" + }, + { + "name": "factory", + "propertyName": "factory", + "type": "boolean", + "alias": "f", + "description": "Generate a factory for the model" + } + ] + }, + "make:migration": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/MakeMigration", + "commandName": "make:migration", + "description": "Make a new migration file", + "args": [ + { + "type": "string", + "propertyName": "name", + "name": "name", + "required": true, + "description": "Name of the migration file" + } + ], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "The connection flag is used to lookup the directory for the migration file" + }, + { + "name": "folder", + "propertyName": "folder", + "type": "string", + "description": "Pre-select a migration directory" + }, + { + "name": "create", + "propertyName": "create", + "type": "string", + "description": "Define the table name for creating a new table" + }, + { + "name": "table", + "propertyName": "table", + "type": "string", + "description": "Define the table name for altering an existing table" + } + ] + }, + "make:seeder": { + "settings": {}, + "commandPath": "@adonisjs/lucid/build/commands/MakeSeeder", + "commandName": "make:seeder", + "description": "Make a new Seeder file", + "args": [ + { + "type": "string", + "propertyName": "name", + "name": "name", + "required": true, + "description": "Name of the seeder class" + } + ], + "aliases": [], + "flags": [] + }, + "make:factory": { + "settings": {}, + "commandPath": "@adonisjs/lucid/build/commands/MakeFactory", + "commandName": "make:factory", + "description": "Make a new factory", + "args": [ + { + "type": "string", + "propertyName": "model", + "name": "model", + "required": true, + "description": "The name of the model" + } + ], + "aliases": [], + "flags": [ + { + "name": "model-path", + "propertyName": "modelPath", + "type": "string", + "description": "The path to the model" + }, + { + "name": "exact", + "propertyName": "exact", + "type": "boolean", + "description": "Create the factory with the exact name as provided", + "alias": "e" + } + ] + }, + "migration:run": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/Migration/Run", + "commandName": "migration:run", + "description": "Migrate database by running pending migrations", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explicitly force to run migrations in production" + }, + { + "name": "dry-run", + "propertyName": "dryRun", + "type": "boolean", + "description": "Do not run actual queries. Instead view the SQL output" + }, + { + "name": "compact-output", + "propertyName": "compactOutput", + "type": "boolean", + "description": "A compact single-line output" + }, + { + "name": "disable-locks", + "propertyName": "disableLocks", + "type": "boolean", + "description": "Disable locks acquired to run migrations safely" + } + ] + }, + "migration:rollback": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/Migration/Rollback", + "commandName": "migration:rollback", + "description": "Rollback migrations to a specific batch number", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explictly force to run migrations in production" + }, + { + "name": "dry-run", + "propertyName": "dryRun", + "type": "boolean", + "description": "Do not run actual queries. Instead view the SQL output" + }, + { + "name": "batch", + "propertyName": "batch", + "type": "number", + "description": "Define custom batch number for rollback. Use 0 to rollback to initial state" + }, + { + "name": "compact-output", + "propertyName": "compactOutput", + "type": "boolean", + "description": "A compact single-line output" + }, + { + "name": "disable-locks", + "propertyName": "disableLocks", + "type": "boolean", + "description": "Disable locks acquired to run migrations safely" + } + ] + }, + "migration:status": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/Migration/Status", + "commandName": "migration:status", + "description": "View migrations status", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + } + ] + }, + "migration:reset": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/Migration/Reset", + "commandName": "migration:reset", + "description": "Rollback all migrations", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explicitly force command to run in production" + }, + { + "name": "dry-run", + "propertyName": "dryRun", + "type": "boolean", + "description": "Do not run actual queries. Instead view the SQL output" + }, + { + "name": "disable-locks", + "propertyName": "disableLocks", + "type": "boolean", + "description": "Disable locks acquired to run migrations safely" + } + ] + }, + "migration:refresh": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/Migration/Refresh", + "commandName": "migration:refresh", + "description": "Rollback and migrate database", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explicitly force command to run in production" + }, + { + "name": "dry-run", + "propertyName": "dryRun", + "type": "boolean", + "description": "Do not run actual queries. Instead view the SQL output" + }, + { + "name": "seed", + "propertyName": "seed", + "type": "boolean", + "description": "Run seeders" + }, + { + "name": "disable-locks", + "propertyName": "disableLocks", + "type": "boolean", + "description": "Disable locks acquired to run migrations safely" + } + ] + }, + "migration:fresh": { + "settings": { + "loadApp": true + }, + "commandPath": "@adonisjs/lucid/build/commands/Migration/Fresh", + "commandName": "migration:fresh", + "description": "Drop all tables and re-migrate the database", + "args": [], + "aliases": [], + "flags": [ + { + "name": "connection", + "propertyName": "connection", + "type": "string", + "description": "Define a custom database connection", + "alias": "c" + }, + { + "name": "force", + "propertyName": "force", + "type": "boolean", + "description": "Explicitly force command to run in production" + }, + { + "name": "seed", + "propertyName": "seed", + "type": "boolean", + "description": "Run seeders" + }, + { + "name": "drop-views", + "propertyName": "dropViews", + "type": "boolean", + "description": "Drop all views" + }, + { + "name": "drop-types", + "propertyName": "dropTypes", + "type": "boolean", + "description": "Drop all custom types (Postgres only)" + }, + { + "name": "disable-locks", + "propertyName": "disableLocks", + "type": "boolean", + "description": "Disable locks acquired to run migrations safely" + } + ] + }, + "make:mailer": { + "settings": {}, + "commandPath": "@adonisjs/mail/build/commands/MakeMailer", + "commandName": "make:mailer", + "description": "Make a new mailer class", + "args": [ + { + "type": "string", + "propertyName": "name", + "name": "name", + "required": true, + "description": "Name of the mailer class" + } + ], + "aliases": [], + "flags": [] + }, + "jwt:generate-keys": { + "settings": {}, + "commandPath": "adonis5-jwt/build/commands/GenerateKeyPair", + "commandName": "jwt:generate-keys", + "description": "Generate key pair", + "args": [ + { + "type": "string", + "propertyName": "outputDir", + "name": "outputDir", + "required": false, + "description": "Key pair output dir" + }, + { + "type": "string", + "propertyName": "algorithm", + "name": "algorithm", + "required": false, + "description": "Key pair algorithm" + } + ], + "aliases": [], + "flags": [] + } + }, + "aliases": {} +} -- cgit v1.2.3-54-g00ecf