@onroad/core 4.0.0-alpha.2 → 4.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +409 -7
- package/dist/OnRoadExpress.d.ts.map +1 -1
- package/dist/OnRoadExpress.js +19 -6
- package/dist/OnRoadExpress.js.map +1 -1
- package/dist/container/Container.d.ts +1 -1
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +15 -6
- package/dist/container/Container.js.map +1 -1
- package/dist/core/AbstractController.d.ts +11 -0
- package/dist/core/AbstractController.d.ts.map +1 -1
- package/dist/core/AbstractController.js +65 -1
- package/dist/core/AbstractController.js.map +1 -1
- package/dist/core/AbstractService.d.ts +17 -0
- package/dist/core/AbstractService.d.ts.map +1 -1
- package/dist/core/AbstractService.js +50 -0
- package/dist/core/AbstractService.js.map +1 -1
- package/dist/core/SequelizeRepository.d.ts +4 -1
- package/dist/core/SequelizeRepository.d.ts.map +1 -1
- package/dist/core/SequelizeRepository.js +11 -1
- package/dist/core/SequelizeRepository.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/database/ConnectionManager.d.ts +2 -0
- package/dist/database/ConnectionManager.d.ts.map +1 -1
- package/dist/database/ConnectionManager.js +12 -1
- package/dist/database/ConnectionManager.js.map +1 -1
- package/dist/dev/DevServer.d.ts +67 -0
- package/dist/dev/DevServer.d.ts.map +1 -0
- package/dist/dev/DevServer.js +496 -0
- package/dist/dev/DevServer.js.map +1 -0
- package/dist/dev/MigrationCLI.d.ts +19 -0
- package/dist/dev/MigrationCLI.d.ts.map +1 -0
- package/dist/dev/MigrationCLI.js +140 -0
- package/dist/dev/MigrationCLI.js.map +1 -0
- package/dist/dev/index.d.ts +5 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +3 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/entity/EntityRegistry.d.ts +26 -0
- package/dist/entity/EntityRegistry.d.ts.map +1 -1
- package/dist/entity/EntityRegistry.js +140 -4
- package/dist/entity/EntityRegistry.js.map +1 -1
- package/dist/entity/decorators.d.ts +1 -0
- package/dist/entity/decorators.d.ts.map +1 -1
- package/dist/entity/decorators.js.map +1 -1
- package/dist/filters/builtins/JwtFilter.d.ts +6 -3
- package/dist/filters/builtins/JwtFilter.d.ts.map +1 -1
- package/dist/filters/builtins/JwtFilter.js +29 -4
- package/dist/filters/builtins/JwtFilter.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
- [Storage](#storage)
|
|
26
26
|
- [Health Endpoint](#health-endpoint)
|
|
27
27
|
- [Graceful Shutdown](#graceful-shutdown)
|
|
28
|
+
- [Local Development (DevServer)](#local-development-devserver)
|
|
29
|
+
- [Migration CLI](#migration-cli)
|
|
28
30
|
- [Testing](#testing)
|
|
29
31
|
- [Subpath Exports](#subpath-exports)
|
|
30
32
|
- [Known Pitfalls](#known-pitfalls)
|
|
@@ -601,7 +603,7 @@ await app.shutdown()
|
|
|
601
603
|
|
|
602
604
|
## Testing
|
|
603
605
|
|
|
604
|
-
TypeRoad uses [Vitest](https://vitest.dev/) with **
|
|
606
|
+
TypeRoad uses [Vitest](https://vitest.dev/) with **242 tests** across 10 test files:
|
|
605
607
|
|
|
606
608
|
```bash
|
|
607
609
|
npm test # Run all tests
|
|
@@ -611,7 +613,7 @@ npm run test:coverage # Coverage report
|
|
|
611
613
|
|
|
612
614
|
| Test File | Tests | Covers |
|
|
613
615
|
|-----------|-------|--------|
|
|
614
|
-
| `container.test.ts` |
|
|
616
|
+
| `container.test.ts` | 19 | DI Container, decorators, scopes |
|
|
615
617
|
| `entity.test.ts` | 14 | Entity, Column, associations |
|
|
616
618
|
| `database.test.ts` | 13 | ConnectionManagers |
|
|
617
619
|
| `filters.test.ts` | 33 | FilterChain, all 5 built-in filters |
|
|
@@ -620,6 +622,7 @@ npm run test:coverage # Coverage report
|
|
|
620
622
|
| `logging.test.ts` | 20 | PinoLogger, OnRoadLogger |
|
|
621
623
|
| `providers.test.ts` | 41 | All 4 providers, graceful-fail, shutdown |
|
|
622
624
|
| `transport.test.ts` | 25 | HttpTransport, MessagingTransport, TransportFactory, RequestContext |
|
|
625
|
+
| `dev.test.ts` | 16 | DevServer, MigrationCLI |
|
|
623
626
|
|
|
624
627
|
---
|
|
625
628
|
|
|
@@ -632,21 +635,184 @@ src/
|
|
|
632
635
|
├── container/ # DI Container + decorators
|
|
633
636
|
├── context/ # RequestContext (AsyncLocalStorage)
|
|
634
637
|
├── core/ # AbstractController/Service/Repository, Sentinel, EventBus
|
|
638
|
+
├── database/ # ConnectionManager abstract + Sequelize/Mongo implementations
|
|
639
|
+
│ └── migrations/ # MigrationRunner (Umzug)
|
|
640
|
+
├── dev/ # DevServer, MigrationCLI — local dev tools
|
|
635
641
|
├── entity/ # @Entity, @Column, @Field, associations
|
|
636
642
|
├── filters/ # FilterChain, @Filter, built-in filters (Cors, JWT, Tenant, Role, RequestContext)
|
|
637
|
-
├── security/ # @Roles, @Public
|
|
638
|
-
├── database/ # ConnectionManager abstract + Sequelize/Mongo implementations
|
|
639
|
-
├── transport/ # InterServiceTransport, HttpTransport, MessagingTransport, TransportFactory
|
|
640
|
-
├── messaging/ # MatchingObject
|
|
641
|
-
├── providers/ # MessagingProvider, RealtimeProvider, TaskSchedulerProvider, SocketProvider
|
|
642
643
|
├── logging/ # OnRoadLogger interface + PinoLogger
|
|
644
|
+
├── messaging/ # MatchingObject
|
|
643
645
|
├── plugins/ # OnRoadPlugin interface
|
|
646
|
+
├── providers/ # MessagingProvider, RealtimeProvider, TaskSchedulerProvider, SocketProvider
|
|
647
|
+
├── security/ # @Roles, @Public
|
|
644
648
|
├── storage/ # StorageProvider abstract
|
|
649
|
+
├── transport/ # InterServiceTransport, HttpTransport, MessagingTransport, TransportFactory
|
|
645
650
|
└── types/ # Express Request augmentation
|
|
646
651
|
```
|
|
647
652
|
|
|
648
653
|
---
|
|
649
654
|
|
|
655
|
+
## Local Development (DevServer)
|
|
656
|
+
|
|
657
|
+
TypeRoad includes a `DevServer` that makes local development self-sufficient — it starts database containers, runs migrations, and logs all environment variables your frontend needs.
|
|
658
|
+
|
|
659
|
+
### Quick Start
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
import "reflect-metadata"
|
|
663
|
+
import { OnRoadExpress } from "@onroad/core"
|
|
664
|
+
import { SequelizeConnectionManager } from "@onroad/core/database"
|
|
665
|
+
import { DevServer } from "@onroad/core/dev"
|
|
666
|
+
|
|
667
|
+
const app = new OnRoadExpress({
|
|
668
|
+
connections: [
|
|
669
|
+
new SequelizeConnectionManager({
|
|
670
|
+
dialect: "postgres",
|
|
671
|
+
host: "localhost",
|
|
672
|
+
port: 5432,
|
|
673
|
+
user: "typeroad",
|
|
674
|
+
password: "typeroad_dev",
|
|
675
|
+
database: "typeroad_dev",
|
|
676
|
+
migrations: {
|
|
677
|
+
path: "./src/migrations",
|
|
678
|
+
runOnConnect: true,
|
|
679
|
+
},
|
|
680
|
+
}),
|
|
681
|
+
],
|
|
682
|
+
})
|
|
683
|
+
|
|
684
|
+
// Register your controllers, services, repositories...
|
|
685
|
+
app.register([/* ... */])
|
|
686
|
+
|
|
687
|
+
const devServer = new DevServer({
|
|
688
|
+
app,
|
|
689
|
+
databases: [{ engine: "postgres", port: 5432 }],
|
|
690
|
+
migrationsPath: "./src/migrations",
|
|
691
|
+
tenants: ["default"],
|
|
692
|
+
frontendVars: {
|
|
693
|
+
REACT_APP_TENANT: "default",
|
|
694
|
+
REACT_APP_WS_URL: "ws://localhost:3000",
|
|
695
|
+
},
|
|
696
|
+
})
|
|
697
|
+
|
|
698
|
+
await devServer.start({ port: 3000 })
|
|
699
|
+
// Press Ctrl+C to stop
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
### What DevServer Does
|
|
703
|
+
|
|
704
|
+
1. **Generates `docker-compose.dev.yml`** — PostgreSQL (or MySQL) container with healthcheck, volumes, and sensible defaults
|
|
705
|
+
2. **Starts the container** — `docker compose up -d` automatically
|
|
706
|
+
3. **Waits for readiness** — polls `pg_isready` / `mysqladmin ping` until the DB accepts connections
|
|
707
|
+
4. **Runs migrations** — applies all pending Umzug migrations from your configured path
|
|
708
|
+
5. **Starts the API server** — calls `app.buildServer()` as usual
|
|
709
|
+
6. **Logs frontend env vars** — prints a copy-pasteable block and writes `.env.dev`:
|
|
710
|
+
|
|
711
|
+
```
|
|
712
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
713
|
+
│ FRONTEND ENVIRONMENT VARIABLES │
|
|
714
|
+
├──────────────────────────────────────────────────────────────┤
|
|
715
|
+
│ REACT_APP_API_URL=http://localhost:3000
|
|
716
|
+
│ NEXT_PUBLIC_API_URL=http://localhost:3000
|
|
717
|
+
│ VITE_API_URL=http://localhost:3000
|
|
718
|
+
│ DATABASE_URL=postgresql://typeroad:typeroad_dev@localhost:5432/typeroad_dev
|
|
719
|
+
│ REACT_APP_TENANT=default
|
|
720
|
+
└──────────────────────────────────────────────────────────────┘
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
### DevServer Config
|
|
724
|
+
|
|
725
|
+
| Option | Type | Default | Description |
|
|
726
|
+
|--------|------|---------|-------------|
|
|
727
|
+
| `app` | `OnRoadExpress` | required | The app instance |
|
|
728
|
+
| `databases` | `DevDatabaseConfig[]` | `[{ engine: "postgres" }]` | Database containers to start |
|
|
729
|
+
| `frontendVars` | `Record<string, string>` | `{}` | Extra vars to log for frontend |
|
|
730
|
+
| `migrationsPath` | `string` | — | Path to migration files |
|
|
731
|
+
| `autoMigrate` | `boolean` | `true` | Run migrations on start |
|
|
732
|
+
| `tenants` | `string[]` | `["default"]` | Tenants to run migrations for |
|
|
733
|
+
| `composeFile` | `string` | `"docker-compose.dev.yml"` | Docker compose filename |
|
|
734
|
+
|
|
735
|
+
### Database Defaults
|
|
736
|
+
|
|
737
|
+
| Engine | Image | Port | User | Password | Database |
|
|
738
|
+
|--------|-------|------|------|----------|----------|
|
|
739
|
+
| `postgres` | `postgres:16-alpine` | `5432` | `typeroad` | `typeroad_dev` | `typeroad_dev` |
|
|
740
|
+
| `mysql` | `mysql:8.0` | `3306` | `typeroad` | `typeroad_dev` | `typeroad_dev` |
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
## Migration CLI
|
|
745
|
+
|
|
746
|
+
The `MigrationCLI` class provides a programmatic API for managing database migrations.
|
|
747
|
+
|
|
748
|
+
### Usage
|
|
749
|
+
|
|
750
|
+
```ts
|
|
751
|
+
import { MigrationCLI } from "@onroad/core/dev"
|
|
752
|
+
import { SequelizeConnectionManager } from "@onroad/core/database"
|
|
753
|
+
|
|
754
|
+
const connection = new SequelizeConnectionManager({
|
|
755
|
+
dialect: "postgres",
|
|
756
|
+
host: "localhost",
|
|
757
|
+
user: "typeroad",
|
|
758
|
+
password: "typeroad_dev",
|
|
759
|
+
database: "typeroad_dev",
|
|
760
|
+
migrations: { path: "./src/migrations" },
|
|
761
|
+
})
|
|
762
|
+
|
|
763
|
+
const cli = new MigrationCLI({
|
|
764
|
+
migrationsPath: "./src/migrations",
|
|
765
|
+
connection,
|
|
766
|
+
tenant: "default",
|
|
767
|
+
})
|
|
768
|
+
|
|
769
|
+
// Run from CLI args
|
|
770
|
+
await cli.run() // reads process.argv
|
|
771
|
+
|
|
772
|
+
// Or call directly
|
|
773
|
+
cli.create("add-users-table") // creates timestamped migration file
|
|
774
|
+
await cli.up() // apply all pending
|
|
775
|
+
await cli.up(1) // apply 1 step
|
|
776
|
+
await cli.down() // revert last migration
|
|
777
|
+
await cli.status() // show status table
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
### CLI Commands
|
|
781
|
+
|
|
782
|
+
| Command | Description | Example |
|
|
783
|
+
|---------|-------------|---------|
|
|
784
|
+
| `create <name>` | Create a new migration file | `cli.run(["create", "add-orders"])` |
|
|
785
|
+
| `up [steps]` | Apply pending migrations | `cli.run(["up"])` or `cli.run(["up", "3"])` |
|
|
786
|
+
| `down [steps]` | Revert migrations (default: 1) | `cli.run(["down", "2"])` |
|
|
787
|
+
| `status` | Show applied/pending status | `cli.run(["status"])` |
|
|
788
|
+
|
|
789
|
+
### Migration File Format
|
|
790
|
+
|
|
791
|
+
Generated `.ts` files follow the Umzug/Sequelize pattern:
|
|
792
|
+
|
|
793
|
+
```ts
|
|
794
|
+
import type { QueryInterface, Sequelize } from "sequelize"
|
|
795
|
+
|
|
796
|
+
export default {
|
|
797
|
+
async up(queryInterface: QueryInterface, sequelize: Sequelize): Promise<void> {
|
|
798
|
+
await queryInterface.createTable("ordens", {
|
|
799
|
+
id: { type: sequelize.constructor["DataTypes"].UUID, primaryKey: true },
|
|
800
|
+
descricao: { type: sequelize.constructor["DataTypes"].STRING, allowNull: false },
|
|
801
|
+
createdAt: sequelize.constructor["DataTypes"].DATE,
|
|
802
|
+
updatedAt: sequelize.constructor["DataTypes"].DATE,
|
|
803
|
+
})
|
|
804
|
+
},
|
|
805
|
+
|
|
806
|
+
async down(queryInterface: QueryInterface): Promise<void> {
|
|
807
|
+
await queryInterface.dropTable("ordens")
|
|
808
|
+
},
|
|
809
|
+
}
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
Migration state is tracked in the `__typeroad_migrations` table (configurable via `tableName` in `MigrationConfig`).
|
|
813
|
+
|
|
814
|
+
---
|
|
815
|
+
|
|
650
816
|
## Subpath Exports
|
|
651
817
|
|
|
652
818
|
Import only what you need:
|
|
@@ -662,6 +828,7 @@ import { HttpTransport, TransportFactory } from "@onroad/core/transport" // Tran
|
|
|
662
828
|
import { MatchingObject } from "@onroad/core/messaging" // Messaging
|
|
663
829
|
import { PinoLogger } from "@onroad/core/logging" // Logging
|
|
664
830
|
import { StorageProvider } from "@onroad/core/storage" // Storage
|
|
831
|
+
import { DevServer, MigrationCLI } from "@onroad/core/dev" // Dev Tools
|
|
665
832
|
```
|
|
666
833
|
|
|
667
834
|
---
|
|
@@ -763,6 +930,241 @@ export class UserRepository extends BaseRepository<User> {
|
|
|
763
930
|
|
|
764
931
|
---
|
|
765
932
|
|
|
933
|
+
### `import type` with relationship decorators
|
|
934
|
+
|
|
935
|
+
TypeScript's `import type` is erased at compile time. If you use `import type { Foo }` and then reference `Foo` as a **runtime value** inside a decorator like `@HasMany(() => Foo, ...)`, the compiled JavaScript will throw `ReferenceError: Foo is not defined` because the import was stripped.
|
|
936
|
+
|
|
937
|
+
```ts
|
|
938
|
+
// ❌ Wrong — import type is erased, decorator callback fails at runtime
|
|
939
|
+
import type { CampoDeVerificacao } from "./CampoDeVerificacao.js"
|
|
940
|
+
|
|
941
|
+
@Entity("caderno", { engine: "sequelize" })
|
|
942
|
+
export class CadernoDeVerificacao {
|
|
943
|
+
@HasMany(() => CampoDeVerificacao, "cadernoId") // 💥 ReferenceError
|
|
944
|
+
campos!: CampoDeVerificacao[]
|
|
945
|
+
}
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
Fix: use a regular `import` for any class referenced inside a decorator callback:
|
|
949
|
+
|
|
950
|
+
```ts
|
|
951
|
+
// ✅ Correct — regular import keeps the binding at runtime
|
|
952
|
+
import { CampoDeVerificacao } from "./CampoDeVerificacao.js"
|
|
953
|
+
|
|
954
|
+
@Entity("caderno", { engine: "sequelize" })
|
|
955
|
+
export class CadernoDeVerificacao {
|
|
956
|
+
@HasMany(() => CampoDeVerificacao, "cadernoId")
|
|
957
|
+
campos!: CampoDeVerificacao[]
|
|
958
|
+
}
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
> **Tip:** `import type` is safe for type annotations and generics (`extends AbstractService<Foo>`), but never for decorator arguments, `instanceof`, or any expression evaluated at runtime.
|
|
962
|
+
|
|
963
|
+
---
|
|
964
|
+
|
|
965
|
+
### `emitDecoratorMetadata` causes TDZ errors with circular entity imports
|
|
966
|
+
|
|
967
|
+
When `emitDecoratorMetadata: true` is set in `tsconfig.json`, TypeScript emits `__metadata("design:type", CampoDeVerificacao)` for decorated properties. This accesses the imported class **at class definition time**. If two entities import each other (circular dependency), ESM module evaluation order causes a **Temporal Dead Zone (TDZ)** error:
|
|
968
|
+
|
|
969
|
+
```
|
|
970
|
+
ReferenceError: Cannot access 'CampoDeVerificacao' before initialization
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
The `@HasMany(() => Foo, ...)` arrow function is lazy (only called later by `wireSequelizeAssociations`), but `__metadata("design:type", Foo)` is **eager** — it runs during class definition.
|
|
974
|
+
|
|
975
|
+
```jsonc
|
|
976
|
+
// ❌ Wrong — causes TDZ crash in circular ESM imports
|
|
977
|
+
{
|
|
978
|
+
"compilerOptions": {
|
|
979
|
+
"experimentalDecorators": true,
|
|
980
|
+
"emitDecoratorMetadata": true // 💥
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
```
|
|
984
|
+
|
|
985
|
+
Fix: disable `emitDecoratorMetadata`. @onroad/core uses only custom metadata keys (`METADATA_KEY.ENTITY`, `ENTITY_COLUMNS`, etc.) and does **not** rely on `design:type`, `design:paramtypes`, or `design:returntype`.
|
|
986
|
+
|
|
987
|
+
```jsonc
|
|
988
|
+
// ✅ Correct — no TDZ, decorators still work
|
|
989
|
+
{
|
|
990
|
+
"compilerOptions": {
|
|
991
|
+
"experimentalDecorators": true,
|
|
992
|
+
"emitDecoratorMetadata": false
|
|
993
|
+
}
|
|
994
|
+
}
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
---
|
|
998
|
+
|
|
999
|
+
## Migration Guide — Lessons Learned (v3 → v4)
|
|
1000
|
+
|
|
1001
|
+
This section documents the key issues found while migrating `teraprox-api-user` from onRoad v3 to TypeRoad v4. Use this as a checklist when migrating other APIs (`api-manutencao`, `api-processo`, etc.).
|
|
1002
|
+
|
|
1003
|
+
### 1. Entity Associations — Use Decorators, Not `buildAssociations()`
|
|
1004
|
+
|
|
1005
|
+
v3 used `buildAssociations()` inside repositories. v4 uses decorators on entity classes. **Every association must be declared on the entity itself.**
|
|
1006
|
+
|
|
1007
|
+
```ts
|
|
1008
|
+
// ❌ v3 — Repository-based associations (REMOVE)
|
|
1009
|
+
class UserRepository extends BaseRepository {
|
|
1010
|
+
buildAssociations() {
|
|
1011
|
+
this.hasMany(UserRole, "userRole")
|
|
1012
|
+
this.belongsTo(Company, "company")
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
// ✅ v4 — Entity decorator associations
|
|
1017
|
+
@Entity("user", { engine: "sequelize", timestamps: true })
|
|
1018
|
+
class User {
|
|
1019
|
+
@HasMany(() => UserRole, "userId")
|
|
1020
|
+
userRole!: UserRole[]
|
|
1021
|
+
|
|
1022
|
+
@BelongsToMany(() => Company, () => UserCompany, "userId", "companyId")
|
|
1023
|
+
companies!: Company[]
|
|
1024
|
+
}
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1027
|
+
**Checklist per entity:**
|
|
1028
|
+
- Join table entities (e.g. `UserRole`, `UserSetor`, `UserCompany`) **must** declare their FK columns with `@Column` AND the `@BelongsTo` back-reference.
|
|
1029
|
+
|
|
1030
|
+
```ts
|
|
1031
|
+
@Entity("userRole", { engine: "sequelize", timestamps: true })
|
|
1032
|
+
class UserRole {
|
|
1033
|
+
@Column({ type: DataType.STRING })
|
|
1034
|
+
userId!: string
|
|
1035
|
+
|
|
1036
|
+
@Column({ type: DataType.STRING })
|
|
1037
|
+
roleId!: string
|
|
1038
|
+
|
|
1039
|
+
@BelongsTo(() => Role, "roleId")
|
|
1040
|
+
role!: Role
|
|
1041
|
+
}
|
|
1042
|
+
```
|
|
1043
|
+
|
|
1044
|
+
### 2. Includes — Use String-Based Associations, Not Model References
|
|
1045
|
+
|
|
1046
|
+
v3 used `this.repository.fullAssociation` (injected array of `{ model: SequelizeModel }`).
|
|
1047
|
+
v4 uses **string-based `association` names** that match the decorator property name.
|
|
1048
|
+
|
|
1049
|
+
```ts
|
|
1050
|
+
// ❌ v3 — model-based includes (CRASH: model is a raw class, not Sequelize model)
|
|
1051
|
+
const user = await this.repository.findOne({
|
|
1052
|
+
where: { email },
|
|
1053
|
+
include: this.repository.fullAssociation
|
|
1054
|
+
})
|
|
1055
|
+
|
|
1056
|
+
// ✅ v4 — string-based association includes
|
|
1057
|
+
const USER_FULL_INCLUDE = [
|
|
1058
|
+
{ association: "filters" },
|
|
1059
|
+
{ association: "tickets" },
|
|
1060
|
+
{ association: "userRole" },
|
|
1061
|
+
{ association: "userSetor" }
|
|
1062
|
+
]
|
|
1063
|
+
const user = await this.repository.findOne({
|
|
1064
|
+
where: { email },
|
|
1065
|
+
include: USER_FULL_INCLUDE
|
|
1066
|
+
})
|
|
1067
|
+
```
|
|
1068
|
+
|
|
1069
|
+
**Nested includes follow the same pattern:**
|
|
1070
|
+
```ts
|
|
1071
|
+
include: [
|
|
1072
|
+
{
|
|
1073
|
+
association: "userRole",
|
|
1074
|
+
include: [{ association: "role", where: { companyId }, required: false }]
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
association: "userSetor",
|
|
1078
|
+
include: [{ association: "setor", where: { companyId }, required: false }]
|
|
1079
|
+
}
|
|
1080
|
+
]
|
|
1081
|
+
```
|
|
1082
|
+
|
|
1083
|
+
### 3. Raw Queries — Use `getSequelizeConnection()`
|
|
1084
|
+
|
|
1085
|
+
v3 accessed `(this.repository as any).connection.query(...)`.
|
|
1086
|
+
v4 exposes this through `BaseRepository.getSequelizeConnection()`.
|
|
1087
|
+
|
|
1088
|
+
```ts
|
|
1089
|
+
// ❌ v3
|
|
1090
|
+
const [results] = await (this.repository as any).connection.query(sql)
|
|
1091
|
+
|
|
1092
|
+
// ✅ v4 — add this method to your BaseRepository
|
|
1093
|
+
getSequelizeConnection() { return this.getConnection() }
|
|
1094
|
+
|
|
1095
|
+
// Usage in service:
|
|
1096
|
+
const [results] = await this.repository.getSequelizeConnection().query(sql)
|
|
1097
|
+
```
|
|
1098
|
+
|
|
1099
|
+
### 4. Remove `fullAssociation` from BaseRepository
|
|
1100
|
+
|
|
1101
|
+
v3 APIs declare `fullAssociation` on `BaseRepository`. **Remove it entirely** — v4 does not use it. Includes are now inline at the query site.
|
|
1102
|
+
|
|
1103
|
+
```ts
|
|
1104
|
+
// ❌ v3
|
|
1105
|
+
export abstract class BaseRepository<T> extends SequelizeRepository<T> {
|
|
1106
|
+
declare readonly fullAssociation: any[]
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
// ✅ v4
|
|
1110
|
+
export abstract class BaseRepository<T> extends SequelizeRepository<T> {
|
|
1111
|
+
// No fullAssociation — define includes where you query
|
|
1112
|
+
}
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
### 5. Controller Return Values Are Auto-Serialized
|
|
1116
|
+
|
|
1117
|
+
v4's `OnRoadExpress` automatically calls `res.json(result)` when a controller method returns a value and `res.headersSent` is false. **Do not manually call `res.json()` in controllers if you return a value** — it will cause "headers already sent" errors.
|
|
1118
|
+
|
|
1119
|
+
```ts
|
|
1120
|
+
// ✅ Just return the value — framework serializes it
|
|
1121
|
+
async login(form: any, req: Request, res: Response) {
|
|
1122
|
+
const userData = await this.service.login(form, req, res)
|
|
1123
|
+
return userData // Framework calls res.json(userData)
|
|
1124
|
+
}
|
|
1125
|
+
```
|
|
1126
|
+
|
|
1127
|
+
### 6. `BelongsToMany` Includes — Beware of Query Hangs
|
|
1128
|
+
|
|
1129
|
+
Using `BelongsToMany` associations (like `User ↔ Company` through `UserCompany`) in Sequelize `include` can cause queries to hang with large datasets or complex joins. **Avoid including BelongsToMany in default/frequent queries.** Use it only in specific methods that need it, and consider raw SQL queries for performance-critical paths.
|
|
1130
|
+
|
|
1131
|
+
### 7. Common Migration Search Patterns
|
|
1132
|
+
|
|
1133
|
+
When migrating an API, search for these patterns and replace them:
|
|
1134
|
+
|
|
1135
|
+
| Search Pattern | Replace With |
|
|
1136
|
+
|---|---|
|
|
1137
|
+
| `this.repository.fullAssociation` | Inline `[{ association: "..." }]` array |
|
|
1138
|
+
| `(this.xxxRepo as any).model` | `{ association: "aliasName" }` |
|
|
1139
|
+
| `(this.xxxRepo as any).xxxRepo` | `{ association: "aliasName" }` |
|
|
1140
|
+
| `(this.repository as any).connection` | `this.repository.getSequelizeConnection()` |
|
|
1141
|
+
| `buildAssociations()` | `@HasMany`, `@BelongsTo`, `@HasOne`, `@BelongsToMany` on entity |
|
|
1142
|
+
| `{ model: SomeClass, as: "..." }` | `{ association: "..." }` |
|
|
1143
|
+
|
|
1144
|
+
### 8. `ARRAY` Column Type
|
|
1145
|
+
|
|
1146
|
+
For PostgreSQL `varchar[]` columns, use the custom `arrayType` option:
|
|
1147
|
+
|
|
1148
|
+
```ts
|
|
1149
|
+
@Column({ type: DataType.ARRAY, arrayType: DataType.STRING })
|
|
1150
|
+
componentesBloqueados!: string[]
|
|
1151
|
+
```
|
|
1152
|
+
|
|
1153
|
+
### 9. Env & Local Dev Setup
|
|
1154
|
+
|
|
1155
|
+
Each API needs a `.env` at its server root with:
|
|
1156
|
+
- `LOCAL_NO_JWT=true` — skips JWT validation for local dev
|
|
1157
|
+
- DB connection vars (`DB_HOST`, `DB_PORT`, `DB_USER`, `DB_PASSWORD`, `DBNAME`)
|
|
1158
|
+
- `TOKEN_KEY` — any string for local token signing
|
|
1159
|
+
- `API_PORT` — local port for the service
|
|
1160
|
+
|
|
1161
|
+
Use `cloud-sql-proxy` for connecting to GCP Cloud SQL locally:
|
|
1162
|
+
```bash
|
|
1163
|
+
./cloud-sql-proxy <PROJECT>:<REGION>:<INSTANCE> --port=5432
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
---
|
|
1167
|
+
|
|
766
1168
|
## License
|
|
767
1169
|
|
|
768
1170
|
UNLICENSED — HashCodeTI-Brasil
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRoadExpress.d.ts","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AACzB,OAAgB,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAoC,MAAM,SAAS,CAAA;AAI/F,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"OnRoadExpress.d.ts","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"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"}
|
package/dist/OnRoadExpress.js
CHANGED
|
@@ -2,11 +2,12 @@ import "reflect-metadata";
|
|
|
2
2
|
import express from "express";
|
|
3
3
|
import { createServer } from "http";
|
|
4
4
|
import { v4 as uuidv4 } from "uuid";
|
|
5
|
-
import { OnRoadContainer } from "./container/Container.js";
|
|
5
|
+
import { OnRoadContainer, METADATA_KEY } from "./container/Container.js";
|
|
6
6
|
import { FilterChain, getFilterConfig, isFilterInstance, getFilterConstructor } from "./filters/FilterChain.js";
|
|
7
7
|
import { getRoles } from "./security/decorators.js";
|
|
8
8
|
import { RequestEventBus } from "./core/RequestEventBus.js";
|
|
9
9
|
import { TransportFactory } from "./transport/TransportFactory.js";
|
|
10
|
+
import { EntityRegistry } from "./entity/EntityRegistry.js";
|
|
10
11
|
import { PinoLogger } from "./logging/PinoLogger.js";
|
|
11
12
|
import { requestContext } from "./context/RequestContext.js";
|
|
12
13
|
// --- Main Class ---
|
|
@@ -109,6 +110,11 @@ export class OnRoadExpress {
|
|
|
109
110
|
// --- Module registration ---
|
|
110
111
|
register(modules) {
|
|
111
112
|
this.container.scan(modules);
|
|
113
|
+
// Register entity classes with EntityRegistry for association wiring
|
|
114
|
+
const entityClasses = modules.filter((mod) => Reflect.getMetadata(METADATA_KEY.ENTITY, mod) !== undefined);
|
|
115
|
+
if (entityClasses.length > 0) {
|
|
116
|
+
EntityRegistry.registerEntityClasses(entityClasses);
|
|
117
|
+
}
|
|
112
118
|
// Auto-discover @Filter decorated classes
|
|
113
119
|
for (const mod of modules) {
|
|
114
120
|
const filterConfig = getFilterConfig(mod);
|
|
@@ -153,16 +159,18 @@ export class OnRoadExpress {
|
|
|
153
159
|
const chain = FilterChain.create(filterInstances);
|
|
154
160
|
try {
|
|
155
161
|
await chain.next(req, res);
|
|
156
|
-
|
|
162
|
+
if (!res.headersSent)
|
|
163
|
+
next();
|
|
157
164
|
}
|
|
158
165
|
catch (err) {
|
|
159
|
-
|
|
166
|
+
if (!res.headersSent)
|
|
167
|
+
next(err);
|
|
160
168
|
}
|
|
161
169
|
});
|
|
162
170
|
}
|
|
163
171
|
// Apply registered controllers as routes
|
|
164
172
|
const tenantResolver = config.tenantResolver ?? ((req) => {
|
|
165
|
-
return req.headers["x-tenant-id"] ?? "default";
|
|
173
|
+
return req.tenant ?? req.headers["x-tenant-id"] ?? "default";
|
|
166
174
|
});
|
|
167
175
|
const controllers = this.container.getByType("controller");
|
|
168
176
|
for (const meta of controllers) {
|
|
@@ -173,7 +181,9 @@ export class OnRoadExpress {
|
|
|
173
181
|
const tempInstance = new meta.target();
|
|
174
182
|
const routes = tempInstance.getRoutes();
|
|
175
183
|
for (const [methodName, routeConfig] of Object.entries(routes)) {
|
|
176
|
-
const fullPath =
|
|
184
|
+
const fullPath = routeConfig.absolutePath
|
|
185
|
+
? routeConfig.absolutePath
|
|
186
|
+
: ("/" + basePath + "/" + (routeConfig.path ?? "")).replace(/\/+/g, "/");
|
|
177
187
|
const httpMethod = routeConfig.method;
|
|
178
188
|
this.app[httpMethod](fullPath, (req, res, next) => {
|
|
179
189
|
const tenant = tenantResolver(req);
|
|
@@ -200,7 +210,10 @@ export class OnRoadExpress {
|
|
|
200
210
|
}
|
|
201
211
|
// Call the controller method
|
|
202
212
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
203
|
-
await controller[methodName](req, res, next);
|
|
213
|
+
const result = await controller[methodName](req, res, next);
|
|
214
|
+
if (result !== undefined && !res.headersSent) {
|
|
215
|
+
res.json(result);
|
|
216
|
+
}
|
|
204
217
|
}
|
|
205
218
|
catch (err) {
|
|
206
219
|
next(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnRoadExpress.js","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OnRoadExpress.js","sourceRoot":"","sources":["../src/OnRoadExpress.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ export declare class OnRoadContainer {
|
|
|
43
43
|
registerConnectionManager(engine: string, manager: unknown): void;
|
|
44
44
|
scan(modules: Constructor[]): void;
|
|
45
45
|
resolve<T>(token: Constructor<T>, scope?: RequestScope): T;
|
|
46
|
-
private
|
|
46
|
+
private wire;
|
|
47
47
|
createScope(requestId: string, tenant?: string): RequestScope;
|
|
48
48
|
getControllerPath(target: Constructor): string | undefined;
|
|
49
49
|
getByType(type: ClassMetadata["type"]): ClassMetadata[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAEpE,oBAAY,KAAK;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAA;CACnF;AAID,QAAA,MAAM,YAAY;;;;;;;;;CASR,CAAA;AAEV,OAAO,EAAE,YAAY,EAAE,CAAA;AAIvB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAKtE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAM3D;AAED,wBAAgB,OAAO,IAAI,cAAc,CAMxC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAMrE;AAID,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIjE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAyBlC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAEpE,oBAAY,KAAK;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAA;CACnF;AAID,QAAA,MAAM,YAAY;;;;;;;;;CASR,CAAA;AAEV,OAAO,EAAE,YAAY,EAAE,CAAA;AAIvB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAKtE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAM3D;AAED,wBAAgB,OAAO,IAAI,cAAc,CAMxC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAMrE;AAID,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIjE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IAyBlC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,CAAC;IAqC1D,OAAO,CAAC,IAAI;IAuDZ,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY;IAQ7D,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAI1D,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE;IAIvD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3B,KAAK,IAAI,IAAI;CAId"}
|