Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e230f4a
chore: initialize validation package
3m1n3nc3 Nov 7, 2025
b9edfdc
feat: implement validation library
3m1n3nc3 Nov 7, 2025
696292a
feat: add path control for h3ravel() entry point.
3m1n3nc3 Nov 8, 2025
e6a72ee
feat: add support for custom Rule classes.
3m1n3nc3 Nov 8, 2025
cbce679
feat: add http error handing and overides
3m1n3nc3 Nov 11, 2025
ab38d1e
feat: redirect to referring page on failed validation if json is not …
3m1n3nc3 Nov 11, 2025
eb719df
feat: create session management library
3m1n3nc3 Nov 12, 2025
ba638c7
feat: add session() method to request class.
3m1n3nc3 Nov 12, 2025
3babec9
refactor: load middlewares directly from router package and more.
3m1n3nc3 Nov 23, 2025
e3f2a95
refactor: load middlewares directly from router package and more.
3m1n3nc3 Nov 23, 2025
91d0d6b
feat(router): implement RouteAction, RouteCollection, RouteGroup, Rou…
3m1n3nc3 Dec 29, 2025
dce2fbf
feat(router): refactor route validation and pipeline structure
3m1n3nc3 Dec 30, 2025
a5e0b42
feat: Implement Finalizable and Magic mixins for enhanced class funct…
3m1n3nc3 Jan 6, 2026
7c1da26
refactor: reorganize imports and enhance route handling
3m1n3nc3 Jan 7, 2026
0be5473
feat: update package versions for @h3ravel/contracts and @h3ravel/sup…
3m1n3nc3 Jan 7, 2026
1d8e3b4
feat: refactor dependency injection and internal method handling acro…
3m1n3nc3 Jan 7, 2026
e3d58ff
feat: update version numbers for @h3ravel/shared and @h3ravel/support…
3m1n3nc3 Jan 7, 2026
1c74a1b
feat: update version to 0.28.1 and refactor IModel class structure
3m1n3nc3 Jan 7, 2026
d4a5b0e
feat: update package versions and refine configuration files
3m1n3nc3 Jan 8, 2026
b9b728a
feat: update package version to 0.28.3 and remove sourcemap option fr…
3m1n3nc3 Jan 8, 2026
7343026
update: fix ts config conflics
3m1n3nc3 Jan 8, 2026
c89d4a7
feat: Implement hashing interfaces and session driver
3m1n3nc3 Jan 15, 2026
aa37209
feat: Refactor URL handling and update related interfaces
3m1n3nc3 Jan 16, 2026
26f1df5
feat: Add count method to route collection interfaces and implementat…
3m1n3nc3 Jan 16, 2026
5006083
Merge branch 'main' into feat/implement-multiple-new-features
3m1n3nc3 Jan 16, 2026
85070d6
feat: bump all package versions.
3m1n3nc3 Jan 16, 2026
ff6311a
feat: update glob import and enhance d.ts file handling in tsdown config
3m1n3nc3 Jan 16, 2026
2a9f968
Merge branch 'feat/implement-multiple-new-features' of github.com:h3r…
3m1n3nc3 Jan 16, 2026
9c9d5d5
feat: remove temporary JSON files from session storage
3m1n3nc3 Jan 16, 2026
a30d0cd
feat: update import statement in memory.spec.ts and clean up .gitignore
3m1n3nc3 Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
63 changes: 62 additions & 1 deletion .barrelize
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@
"**/*.d.ts"
]
},
{
"name": "index.ts",
"root": "packages/events/src",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
]
},
{
"name": "index.ts",
"root": "packages/router/src",
Expand Down Expand Up @@ -127,11 +135,56 @@
},
{
"name": "index.ts",
"root": "packages/support/src",
"root": "packages/validation/src",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
]
},
{
"name": "index.ts",
"root": "packages/session/src",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
]
},
{
"name": "index.ts",
"root": "packages/foundation/src",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
],
"order": [
"Exceptions/HttpException"
]
},
{
"name": "index.ts",
"root": "packages/support/src/Facades",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
]
},
{
"name": "index.ts",
"root": "packages/support/src/Traits",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
]
},
{
"name": "index.ts",
"root": "packages/support/src",
"exclude": [
"**/*.test.ts",
"**/*.d.ts",
"**/Traits/*.*",
"**/Facades/*.*"
],
"exports": {
"**/Arr.ts": [
"Arr",
Expand Down Expand Up @@ -161,6 +214,14 @@
"/^(?!default$)(.+)/ as $1"
]
}
},
{
"name": "index.ts",
"root": "packages/contracts/src",
"exclude": [
"**/*.test.ts",
"**/*.d.ts"
]
}
]
}
11 changes: 11 additions & 0 deletions .github/workflows/review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ jobs:
name: Check PR
runs-on: ubuntu-latest

services:
# https://github.community/t5/GitHub-Actions/github-actions-cannot-connect-to-mysql-service/td-p/30611#
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: h3ravel_test
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ jobs:
name: Run Available Tests
runs-on: ubuntu-latest

services:
# https://github.community/t5/GitHub-Actions/github-actions-cannot-connect-to-mysql-service/td-p/30611#
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: h3ravel_test
ports:
- 3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

steps:
- name: Checkout repository
uses: actions/checkout@v4
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Logs
var
logs
*.log
npm-debug.log*
Expand Down
1 change: 1 addition & 0 deletions .sessions/undefined.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
278ee61201eb1d3e5fbd9d0ea23bd2f6:878b1f86745741c9edaddd4aafe79596
File renamed without changes.
5 changes: 5 additions & 0 deletions examples/basic-app/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,16 @@ yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.DS_Store
!.gitkeep

# H3ravel Files
.h3ravel/serve
src/config/hashing.ts
src/database/*.sqlite
storage/framework/sessions/*
!storage/framework/sessions/.gitkeep
storage/app/public/*
!storage/app/public/.gitkeep

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
Expand Down
50 changes: 25 additions & 25 deletions examples/basic-app/.h3ravel/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,34 +1,31 @@
{
"extends": "@h3ravel/shared/tsconfig.json",
"extends": "@h3ravel/shared/tsconfig.base.json",
"compilerOptions": {
"baseUrl": ".",
"outDir": "dist",
"paths": {
"src/*": ["./../src/*"],
"App/*": ["./../src/app/*"],
"root/*": ["./../*"],
"routes/*": ["./../src/routes/*"],
"config/*": ["./../src/config/*"],
"resources/*": ["./../src/resources/*"],
"@h3ravel/cache": ["./../../../packages/cache/src/index.ts"],
"@h3ravel/config": ["./../../../packages/config/src/index.ts"],
"@h3ravel/console": ["./../../../packages/console/src/index.ts"],
"@h3ravel/core": ["./../../../packages/core/src/index.ts"],
"@h3ravel/database": ["./../../../packages/database/src/index.ts"],
"@h3ravel/filesystem": ["./../../../packages/filesystem/src/index.ts"],
"@h3ravel/hashing": ["./../../../packages/hashing/src/index.ts"],
"@h3ravel/http": ["./../../../packages/http/src/index.ts"],
"@h3ravel/mail": ["./../../../packages/mail/src/index.ts"],
"@h3ravel/queue": ["./../../../packages/queue/src/index.ts"],
"@h3ravel/router": ["./../../../packages/router/src/index.ts"],
"@h3ravel/shared": ["./../../../packages/shared/src/index.ts"],
"@h3ravel/support": ["./../../../packages/support/src/index.ts"],
"@h3ravel/url": ["./../../../packages/url/src/index.ts"],
"@h3ravel/view": ["./../../../packages/view/src/index.ts"]
"src/*": [
"./../src/*"
],
"App/*": [
"./../src/app/*"
],
"root/*": [
"./../*"
],
"routes/*": [
"./../src/routes/*"
],
"config/*": [
"./../src/config/*"
],
"resources/*": [
"./../src/resources/*"
]
},
"target": "es2022",
"module": "es2022",
"moduleResolution": "Node",
"moduleResolution": "bundler",
"esModuleInterop": true,
"strict": true,
"allowJs": true,
Expand All @@ -38,7 +35,10 @@
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"include": ["./**/*.d.ts", "./../**/*"],
"include": [
"./**/*.d.ts",
"./../**/*"
],
"exclude": [
".",
"./../**/console/bin",
Expand All @@ -56,4 +56,4 @@
"./../jest.config.ts",
"./../arquebus.config.js"
]
}
}
14 changes: 13 additions & 1 deletion examples/basic-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@
"description": "Example H3ravel App.",
"type": "module",
"private": true,
"autoload": {
"namespaces": {
"App/": "app/",
"Database/Factories/": "database/factories/",
"Database/Seeders/": "database/seeders/"
},
"files": []
},
"scripts": {
"build": "NODE_ENV=production tsdown --config-loader unconfig -c tsdown.default.config.ts",
"serve": "tsx watch ./src/server.ts",
Expand Down Expand Up @@ -31,6 +39,10 @@
"@h3ravel/support": "workspace:^",
"@h3ravel/url": "workspace:^",
"@h3ravel/view": "workspace:^",
"@h3ravel/validation": "workspace:^",
"@h3ravel/foundation": "workspace:^",
"@h3ravel/session": "workspace:^",
"@h3ravel/events": "workspace:^",
"cross-env": "catalog:",
"h3": "catalog:prod",
"reflect-metadata": "catalog:",
Expand All @@ -41,7 +53,7 @@
"@rollup/plugin-run": "catalog:",
"@swc/core": "catalog:",
"@types/node": "^24.9.2",
"tsdown": "^0.15.12",
"tsdown": "catalog:",
"tsx": "catalog:",
"typescript": "^5.9.3"
}
Expand Down
61 changes: 31 additions & 30 deletions examples/basic-app/src/app/Console/Commands/DemoCommand.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Command } from '@h3ravel/console'
import { Command } from '@h3ravel/musket'

export class DemoCommand extends Command {
/**
Expand All @@ -15,7 +15,7 @@ export class DemoCommand extends Command {
* Execute the console command.
*/
public async handle (): Promise<void> {
// const simulate = this.option('simulate', false)
const simulate = this.option('simulate', false)

this.info('Starting demonstration...')
this.debug('Debug: This message only shows with --verbose 3')
Expand All @@ -37,36 +37,37 @@ export class DemoCommand extends Command {
this.newLine()

// Demonstrate interaction
// if (!simulate) {
// try {
// const name = await this.ask('What is your name?', 'Developer')
// this.success(`Hello, ${name}!`)
if (!simulate) {
try {
const name = await this.ask('What is your name?', 'Developer')
this.success(`Hello, ${name}!`)

// const confirmed = await this.confirm('Do you want to continue?', true)
// if (confirmed) {
// const environment = await this.choice(
// 'Select environment:',
// ['development', 'staging', 'production'],
// 'development'
// )
// this.info(`Selected environment: ${environment}`)
// } else {
// this.warn('Operation cancelled by user')
// }
// } catch (error) {
// this.error(`Interaction failed: ${error}`)
// }
// } else {
// this.info('Simulation mode - skipping interactive prompts')
// }
const confirmed = await this.confirm('Do you want to continue?', true)

// this.newLine()
// this.success('Demonstration completed!')
if (confirmed) {
const environment = await this.choice(
'Select environment:',
['development', 'staging', 'production'],
0
)
this.info(`Selected environment: ${environment}`)
} else {
this.warn('Operation cancelled by user')
}
} catch (error) {
this.error(`Interaction failed: ${error}`)
}
} else {
this.info('Simulation mode - skipping interactive prompts')
}

// // Show debug information about verbosity
// if (this.getVerbosity() >= 2) {
// this.debug('Verbose mode detected - showing additional information')
// this.debug(`Process arguments: ${process.argv.slice(2).join(' ')}`)
// }
this.newLine()
this.success('Demonstration completed!')

// Show debug information about verbosity
if (this.getVerbosity() >= 2) {
this.debug('Verbose mode detected - showing additional information')
this.debug(`Process arguments: ${process.argv.slice(2).join(' ')}`)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Command } from '@h3ravel/console'
import { Command } from '@h3ravel/musket'
import { Injectable } from '@h3ravel/core'
import { User } from 'src/app/Models/user'

Expand Down
4 changes: 2 additions & 2 deletions examples/basic-app/src/app/Http/Controllers/HomeController.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Controller } from '@h3ravel/core'
import { IController } from '@h3ravel/contracts'

export class HomeController extends Controller {
export class HomeController extends IController {
public async index () {
return await view('index', {
links: {
Expand Down
Loading