-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
117 changed files
with
24,184 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# http://editorconfig.org | ||
|
||
[*] | ||
indent_style = space | ||
indent_size = 2 | ||
end_of_line = lf | ||
charset = utf-8 | ||
trim_trailing_whitespace = true | ||
insert_final_newline = true | ||
|
||
[*.json] | ||
insert_final_newline = unset | ||
|
||
[**.min.js] | ||
indent_style = unset | ||
insert_final_newline = unset | ||
|
||
[MakeFile] | ||
indent_style = space | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
TZ=UTC | ||
PORT=3333 | ||
HOST=localhost | ||
LOG_LEVEL=info | ||
APP_KEY=LijKdtScbgJP93CIPahDX_l5T8QSQ2-D | ||
NODE_ENV=development | ||
SESSION_DRIVER=cookie | ||
DB_PATH=db.sqlite |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Dependencies and AdonisJS build | ||
node_modules | ||
build | ||
tmp | ||
|
||
# Secrets | ||
.env | ||
.env.local | ||
.env.production.local | ||
.env.development.local | ||
|
||
# Frontend assets compiled code | ||
public/assets | ||
|
||
# Build tools specific | ||
npm-debug.log | ||
yarn-error.log | ||
|
||
# Editors specific | ||
.fleet | ||
.idea | ||
.vscode | ||
|
||
# Platform specific | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
FROM node:22.7.0-alpine3.19 as base | ||
|
||
# Build | ||
FROM base as build | ||
WORKDIR /app | ||
ADD . . | ||
RUN npm ci | ||
RUN node ace build | ||
|
||
# Run | ||
FROM base | ||
WORKDIR /app | ||
COPY --from=build /app/build /app | ||
RUN npm ci --omit=dev | ||
CMD ["node", "./bin/server.js"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Adonis example |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/* | ||
|-------------------------------------------------------------------------- | ||
| JavaScript entrypoint for running ace commands | ||
|-------------------------------------------------------------------------- | ||
| | ||
| DO NOT MODIFY THIS FILE AS IT WILL BE OVERRIDDEN DURING THE BUILD | ||
| PROCESS. | ||
| | ||
| See docs.adonisjs.com/guides/typescript-build-process#creating-production-build | ||
| | ||
| Since, we cannot run TypeScript source code using "node" binary, we need | ||
| a JavaScript entrypoint to run ace commands. | ||
| | ||
| This file registers the "ts-node/esm" hook with the Node.js module system | ||
| and then imports the "bin/console.ts" file. | ||
| | ||
*/ | ||
|
||
/** | ||
* Register hook to process TypeScript files using ts-node | ||
*/ | ||
import 'ts-node-maintained/register/esm' | ||
|
||
/** | ||
* Import ace console entrypoint | ||
*/ | ||
await import('./bin/console.js') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import { defineConfig } from '@adonisjs/core/app' | ||
|
||
export default defineConfig({ | ||
/* | ||
|-------------------------------------------------------------------------- | ||
| Commands | ||
|-------------------------------------------------------------------------- | ||
| | ||
| List of ace commands to register from packages. The application commands | ||
| will be scanned automatically from the "./commands" directory. | ||
| | ||
*/ | ||
commands: [() => import('@adonisjs/core/commands'), () => import('@adonisjs/lucid/commands')], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Service providers | ||
|-------------------------------------------------------------------------- | ||
| | ||
| List of service providers to import and register when booting the | ||
| application | ||
| | ||
*/ | ||
providers: [ | ||
() => import('@adonisjs/core/providers/app_provider'), | ||
() => import('@adonisjs/core/providers/hash_provider'), | ||
{ | ||
file: () => import('@adonisjs/core/providers/repl_provider'), | ||
environment: ['repl', 'test'], | ||
}, | ||
() => import('@adonisjs/core/providers/vinejs_provider'), | ||
() => import('@adonisjs/cors/cors_provider'), | ||
() => import('@adonisjs/lucid/database_provider'), | ||
() => import('@adonisjs/session/session_provider'), | ||
() => import('@adonisjs/auth/auth_provider') | ||
], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Preloads | ||
|-------------------------------------------------------------------------- | ||
| | ||
| List of modules to import before starting the application. | ||
| | ||
*/ | ||
preloads: [() => import('#start/routes'), () => import('#start/kernel')], | ||
|
||
/* | ||
|-------------------------------------------------------------------------- | ||
| Tests | ||
|-------------------------------------------------------------------------- | ||
| | ||
| List of test suites to organize tests by their type. Feel free to remove | ||
| and add additional suites. | ||
| | ||
*/ | ||
tests: { | ||
suites: [ | ||
{ | ||
files: ['tests/unit/**/*.spec(.ts|.js)'], | ||
name: 'unit', | ||
timeout: 2000, | ||
}, | ||
{ | ||
files: ['tests/functional/**/*.spec(.ts|.js)'], | ||
name: 'functional', | ||
timeout: 30000, | ||
}, | ||
], | ||
forceExit: false, | ||
}, | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
import app from '@adonisjs/core/services/app' | ||
import { HttpContext, ExceptionHandler } from '@adonisjs/core/http' | ||
|
||
export default class HttpExceptionHandler extends ExceptionHandler { | ||
/** | ||
* In debug mode, the exception handler will display verbose errors | ||
* with pretty printed stack traces. | ||
*/ | ||
protected debug = !app.inProduction | ||
|
||
/** | ||
* The method is used for handling errors and returning | ||
* response to the client | ||
*/ | ||
async handle(error: unknown, ctx: HttpContext) { | ||
return super.handle(error, ctx) | ||
} | ||
|
||
/** | ||
* The method is used to report error to the logging service or | ||
* the third party error monitoring service. | ||
* | ||
* @note You should not attempt to send a response from this method. | ||
*/ | ||
async report(error: unknown, ctx: HttpContext) { | ||
return super.report(error, ctx) | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
examples/node-adonis-sqlite/app/middleware/auth_middleware.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import type { HttpContext } from '@adonisjs/core/http' | ||
import type { NextFn } from '@adonisjs/core/types/http' | ||
import type { Authenticators } from '@adonisjs/auth/types' | ||
|
||
/** | ||
* Auth middleware is used authenticate HTTP requests and deny | ||
* access to unauthenticated users. | ||
*/ | ||
export default class AuthMiddleware { | ||
/** | ||
* The URL to redirect to, when authentication fails | ||
*/ | ||
redirectTo = '/login' | ||
|
||
async handle( | ||
ctx: HttpContext, | ||
next: NextFn, | ||
options: { | ||
guards?: (keyof Authenticators)[] | ||
} = {} | ||
) { | ||
await ctx.auth.authenticateUsing(options.guards, { loginRoute: this.redirectTo }) | ||
return next() | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
examples/node-adonis-sqlite/app/middleware/container_bindings_middleware.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
import { Logger } from '@adonisjs/core/logger' | ||
import { HttpContext } from '@adonisjs/core/http' | ||
import type { NextFn } from '@adonisjs/core/types/http' | ||
|
||
/** | ||
* The container bindings middleware binds classes to their request | ||
* specific value using the container resolver. | ||
* | ||
* - We bind "HttpContext" class to the "ctx" object | ||
* - And bind "Logger" class to the "ctx.logger" object | ||
*/ | ||
export default class ContainerBindingsMiddleware { | ||
handle(ctx: HttpContext, next: NextFn) { | ||
ctx.containerResolver.bindValue(HttpContext, ctx) | ||
ctx.containerResolver.bindValue(Logger, ctx.logger) | ||
|
||
return next() | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
examples/node-adonis-sqlite/app/middleware/force_json_response_middleware.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import type { HttpContext } from '@adonisjs/core/http' | ||
import type { NextFn } from '@adonisjs/core/types/http' | ||
|
||
/** | ||
* Updating the "Accept" header to always accept "application/json" response | ||
* from the server. This will force the internals of the framework like | ||
* validator errors or auth errors to return a JSON response. | ||
*/ | ||
export default class ForceJsonResponseMiddleware { | ||
async handle({ request }: HttpContext, next: NextFn) { | ||
const headers = request.headers() | ||
headers.accept = 'application/json' | ||
|
||
return next() | ||
} | ||
} |
31 changes: 31 additions & 0 deletions
31
examples/node-adonis-sqlite/app/middleware/guest_middleware.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import type { HttpContext } from '@adonisjs/core/http' | ||
import type { NextFn } from '@adonisjs/core/types/http' | ||
import type { Authenticators } from '@adonisjs/auth/types' | ||
|
||
/** | ||
* Guest middleware is used to deny access to routes that should | ||
* be accessed by unauthenticated users. | ||
* | ||
* For example, the login page should not be accessible if the user | ||
* is already logged-in | ||
*/ | ||
export default class GuestMiddleware { | ||
/** | ||
* The URL to redirect to when user is logged-in | ||
*/ | ||
redirectTo = '/' | ||
|
||
async handle( | ||
ctx: HttpContext, | ||
next: NextFn, | ||
options: { guards?: (keyof Authenticators)[] } = {} | ||
) { | ||
for (let guard of options.guards || [ctx.auth.defaultGuard]) { | ||
if (await ctx.auth.use(guard).check()) { | ||
return ctx.response.redirect(this.redirectTo, true) | ||
} | ||
} | ||
|
||
return next() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import { DateTime } from 'luxon' | ||
import hash from '@adonisjs/core/services/hash' | ||
import { compose } from '@adonisjs/core/helpers' | ||
import { BaseModel, column } from '@adonisjs/lucid/orm' | ||
import { withAuthFinder } from '@adonisjs/auth/mixins/lucid' | ||
|
||
const AuthFinder = withAuthFinder(() => hash.use('scrypt'), { | ||
uids: ['email'], | ||
passwordColumnName: 'password', | ||
}) | ||
|
||
export default class User extends compose(BaseModel, AuthFinder) { | ||
@column({ isPrimary: true }) | ||
declare id: number | ||
|
||
@column() | ||
declare fullName: string | null | ||
|
||
@column() | ||
declare email: string | ||
|
||
@column({ serializeAs: null }) | ||
declare password: string | ||
|
||
@column.dateTime({ autoCreate: true }) | ||
declare createdAt: DateTime | ||
|
||
@column.dateTime({ autoCreate: true, autoUpdate: true }) | ||
declare updatedAt: DateTime | null | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
/* | ||
|-------------------------------------------------------------------------- | ||
| Ace entry point | ||
|-------------------------------------------------------------------------- | ||
| | ||
| The "console.ts" file is the entrypoint for booting the AdonisJS | ||
| command-line framework and executing commands. | ||
| | ||
| Commands do not boot the application, unless the currently running command | ||
| has "options.startApp" flag set to true. | ||
| | ||
*/ | ||
|
||
import 'reflect-metadata' | ||
import { Ignitor, prettyPrintError } from '@adonisjs/core' | ||
|
||
/** | ||
* URL to the application root. AdonisJS need it to resolve | ||
* paths to file and directories for scaffolding commands | ||
*/ | ||
const APP_ROOT = new URL('../', import.meta.url) | ||
|
||
/** | ||
* The importer is used to import files in context of the | ||
* application. | ||
*/ | ||
const IMPORTER = (filePath: string) => { | ||
if (filePath.startsWith('./') || filePath.startsWith('../')) { | ||
return import(new URL(filePath, APP_ROOT).href) | ||
} | ||
return import(filePath) | ||
} | ||
|
||
new Ignitor(APP_ROOT, { importer: IMPORTER }) | ||
.tap((app) => { | ||
app.booting(async () => { | ||
await import('#start/env') | ||
}) | ||
app.listen('SIGTERM', () => app.terminate()) | ||
app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate()) | ||
}) | ||
.ace() | ||
.handle(process.argv.splice(2)) | ||
.catch((error) => { | ||
process.exitCode = 1 | ||
prettyPrintError(error) | ||
}) |
Oops, something went wrong.