@orchestr-sh/orchestr 1.1.1 → 1.2.1

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.
Files changed (48) hide show
  1. package/README.md +438 -39
  2. package/dist/Foundation/Application.d.ts +1 -1
  3. package/dist/Foundation/Application.d.ts.map +1 -1
  4. package/dist/Foundation/Application.js +9 -4
  5. package/dist/Foundation/Application.js.map +1 -1
  6. package/dist/Providers/RouteServiceProvider.d.ts +22 -1
  7. package/dist/Providers/RouteServiceProvider.d.ts.map +1 -1
  8. package/dist/Providers/RouteServiceProvider.js +31 -2
  9. package/dist/Providers/RouteServiceProvider.js.map +1 -1
  10. package/dist/Routing/Route.d.ts +1 -1
  11. package/dist/Routing/Route.d.ts.map +1 -1
  12. package/dist/Routing/Router.d.ts +5 -0
  13. package/dist/Routing/Router.d.ts.map +1 -1
  14. package/dist/Routing/Router.js +19 -0
  15. package/dist/Routing/Router.js.map +1 -1
  16. package/dist/Support/helpers.d.ts +17 -0
  17. package/dist/Support/helpers.d.ts.map +1 -0
  18. package/dist/Support/helpers.js +66 -0
  19. package/dist/Support/helpers.js.map +1 -0
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +6 -1
  23. package/dist/index.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/Database/Eloquent/Builder.d.ts +0 -76
  26. package/dist/Database/Eloquent/Builder.d.ts.map +0 -1
  27. package/dist/Database/Eloquent/Builder.js +0 -154
  28. package/dist/Database/Eloquent/Builder.js.map +0 -1
  29. package/dist/Database/Eloquent/Collection.d.ts +0 -137
  30. package/dist/Database/Eloquent/Collection.d.ts.map +0 -1
  31. package/dist/Database/Eloquent/Collection.js +0 -284
  32. package/dist/Database/Eloquent/Collection.js.map +0 -1
  33. package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts +0 -44
  34. package/dist/Database/Eloquent/Concerns/HasAttributes.d.ts.map +0 -1
  35. package/dist/Database/Eloquent/Concerns/HasAttributes.js +0 -8
  36. package/dist/Database/Eloquent/Concerns/HasAttributes.js.map +0 -1
  37. package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts +0 -41
  38. package/dist/Database/Eloquent/Concerns/HasTimestamps.d.ts.map +0 -1
  39. package/dist/Database/Eloquent/Concerns/HasTimestamps.js +0 -14
  40. package/dist/Database/Eloquent/Concerns/HasTimestamps.js.map +0 -1
  41. package/dist/Database/Eloquent/Model.d.ts +0 -265
  42. package/dist/Database/Eloquent/Model.d.ts.map +0 -1
  43. package/dist/Database/Eloquent/Model.js +0 -523
  44. package/dist/Database/Eloquent/Model.js.map +0 -1
  45. package/dist/Database/Eloquent/SoftDeletes.d.ts +0 -41
  46. package/dist/Database/Eloquent/SoftDeletes.d.ts.map +0 -1
  47. package/dist/Database/Eloquent/SoftDeletes.js +0 -22
  48. package/dist/Database/Eloquent/SoftDeletes.js.map +0 -1
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Laravel-Next
1
+ # Orchestr
2
2
 
3
3
  A 1:1 Laravel replica built in TypeScript. Brings Laravel's elegant syntax and architecture to the TypeScript/Node.js ecosystem.
4
4
 
@@ -8,17 +8,20 @@ Built from the ground up with Laravel's core components:
8
8
 
9
9
  - **Service Container** - Full IoC container with dependency injection and reflection
10
10
  - **Service Providers** - Bootstrap and register services
11
- - **HTTP Router** - Laravel-style routing with parameter binding
11
+ - **HTTP Router** - Laravel-style routing with parameter binding and file-based route loading
12
12
  - **Request/Response** - Elegant HTTP abstractions
13
13
  - **Middleware** - Global and route-level middleware pipeline
14
14
  - **Controllers** - MVC architecture support
15
- - **Facades** - Static proxy access to services
15
+ - **Facades** - Static proxy access to services (Route, DB)
16
+ - **Query Builder** - Fluent database query builder with full Laravel API
17
+ - **Ensemble ORM** - ActiveRecord ORM (Laravel's Eloquent equivalent) with relationships, soft deletes, and more
18
+ - **Database Manager** - Multi-connection database management
16
19
  - **Application Lifecycle** - Complete Laravel bootstrap process
17
20
 
18
21
  ## Installation
19
22
 
20
23
  ```bash
21
- npm install orchestr reflect-metadata
24
+ npm install @orchestr-sh/orchestr reflect-metadata
22
25
  ```
23
26
 
24
27
  **Note**: `reflect-metadata` is required for dependency injection to work.
@@ -34,14 +37,14 @@ const app = new Application(__dirname);
34
37
 
35
38
  // Register providers
36
39
  app.register(RouteServiceProvider);
37
- app.boot();
40
+ await app.boot();
38
41
 
39
42
  // Create HTTP kernel
40
43
  const kernel = new Kernel(app);
41
44
 
42
45
  // Define routes
43
46
  Route.get('/', async (req, res) => {
44
- return res.json({ message: 'Hello from Laravel-Next!' });
47
+ return res.json({ message: 'Hello from Orchestr!' });
45
48
  });
46
49
 
47
50
  Route.get('/users/:id', async (req, res) => {
@@ -121,6 +124,69 @@ const route = Route.get('/users', handler);
121
124
  route.setName('users.index');
122
125
  ```
123
126
 
127
+ #### Loading Routes from Files
128
+
129
+ Organize your routes in separate files, just like Laravel:
130
+
131
+ **routes/web.ts**
132
+ ```typescript
133
+ import { Route } from 'orchestr';
134
+
135
+ Route.get('/', async (req, res) => {
136
+ return res.json({ message: 'Welcome' });
137
+ });
138
+
139
+ Route.get('/about', async (req, res) => {
140
+ return res.json({ page: 'about' });
141
+ });
142
+ ```
143
+
144
+ **routes/api.ts**
145
+ ```typescript
146
+ import { Route } from 'orchestr';
147
+
148
+ Route.group({ prefix: 'api/v1' }, () => {
149
+ Route.get('/users', async (req, res) => {
150
+ return res.json({ users: [] });
151
+ });
152
+
153
+ Route.post('/users', async (req, res) => {
154
+ return res.status(201).json({ created: true });
155
+ });
156
+ });
157
+ ```
158
+
159
+ **app/Providers/AppRouteServiceProvider.ts**
160
+ ```typescript
161
+ import { RouteServiceProvider } from 'orchestr';
162
+
163
+ export class AppRouteServiceProvider extends RouteServiceProvider {
164
+ async boot(): Promise<void> {
165
+ // Load web routes
166
+ this.routes(() => import('../../routes/web'));
167
+
168
+ // Load API routes
169
+ this.routes(() => import('../../routes/api'));
170
+
171
+ await super.boot();
172
+ }
173
+ }
174
+ ```
175
+
176
+ **index.ts**
177
+ ```typescript
178
+ import 'reflect-metadata';
179
+ import { Application, Kernel } from 'orchestr';
180
+ import { AppRouteServiceProvider } from './app/Providers/AppRouteServiceProvider';
181
+
182
+ const app = new Application(__dirname);
183
+ app.register(AppRouteServiceProvider);
184
+ await app.boot();
185
+
186
+ const kernel = new Kernel(app);
187
+ kernel.listen(3000);
188
+ ```
189
+
124
190
  ### Middleware
125
191
 
126
192
  Global and route-level middleware:
@@ -148,6 +214,8 @@ Route.get('/profile', handler).addMiddleware(authMiddleware);
148
214
  MVC pattern with base controller:
149
215
 
150
216
  ```typescript
217
+ import { Controller, Request, Response, Route } from 'orchestr';
218
+
151
219
  class UserController extends Controller {
152
220
  async index(req: Request, res: Response) {
153
221
  return res.json({ users: [] });
@@ -166,6 +234,11 @@ class UserController extends Controller {
166
234
  return res.status(201).json({ user: validated });
167
235
  }
168
236
  }
237
+
238
+ // Register controller routes
239
+ Route.get('/users', [UserController, 'index']);
240
+ Route.get('/users/:id', [UserController, 'show']);
241
+ Route.post('/users', [UserController, 'store']);
169
242
  ```
170
243
 
171
244
  ### Request
@@ -234,7 +307,7 @@ res.view('welcome', { name: 'John' });
234
307
  Static access to services:
235
308
 
236
309
  ```typescript
237
- import { Route } from 'orchestr';
310
+ import { Route, DB } from 'orchestr';
238
311
 
239
312
  // Route facade provides static access to Router
240
313
  Route.get('/path', handler);
@@ -242,52 +315,358 @@ Route.post('/path', handler);
242
315
  Route.group({ prefix: 'api' }, () => {
243
316
  // ...
244
317
  });
318
+
319
+ // DB facade provides static access to DatabaseManager
320
+ const users = await DB.table('users').where('active', true).get();
245
321
  ```
246
322
 
247
- ## Example Application
323
+ ### Database Query Builder
248
324
 
249
- Run the example application:
325
+ Fluent, chainable query builder with full Laravel API:
250
326
 
251
- ```bash
252
- npm run dev
327
+ ```typescript
328
+ import { DB } from 'orchestr';
329
+
330
+ // Basic queries
331
+ const users = await DB.table('users').get();
332
+ const user = await DB.table('users').where('id', 1).first();
333
+
334
+ // Where clauses
335
+ await DB.table('users')
336
+ .where('votes', '>', 100)
337
+ .where('status', 'active')
338
+ .get();
339
+
340
+ // Or where
341
+ await DB.table('users')
342
+ .where('votes', '>', 100)
343
+ .orWhere('name', 'John')
344
+ .get();
345
+
346
+ // Additional where methods
347
+ await DB.table('users').whereBetween('votes', [1, 100]).get();
348
+ await DB.table('users').whereIn('id', [1, 2, 3]).get();
349
+ await DB.table('users').whereNull('deleted_at').get();
350
+
351
+ // Ordering, grouping, and limits
352
+ await DB.table('users')
353
+ .orderBy('name', 'desc')
354
+ .groupBy('account_id')
355
+ .having('account_id', '>', 100)
356
+ .limit(10)
357
+ .offset(20)
358
+ .get();
359
+
360
+ // Joins
361
+ await DB.table('users')
362
+ .join('contacts', 'users.id', '=', 'contacts.user_id')
363
+ .leftJoin('orders', 'users.id', '=', 'orders.user_id')
364
+ .select('users.*', 'contacts.phone', 'orders.price')
365
+ .get();
366
+
367
+ // Aggregates
368
+ const count = await DB.table('users').count();
369
+ const max = await DB.table('orders').max('price');
370
+ const min = await DB.table('orders').min('price');
371
+ const avg = await DB.table('orders').avg('price');
372
+ const sum = await DB.table('orders').sum('price');
373
+
374
+ // Inserts
375
+ await DB.table('users').insert({
376
+ name: 'John',
377
+ email: 'john@example.com'
378
+ });
379
+
380
+ // Updates
381
+ await DB.table('users')
382
+ .where('id', 1)
383
+ .update({ votes: 1 });
384
+
385
+ // Deletes
386
+ await DB.table('users').where('votes', '<', 100).delete();
387
+
388
+ // Raw expressions
389
+ await DB.table('users')
390
+ .select(DB.raw('count(*) as user_count, status'))
391
+ .where('status', '<>', 1)
392
+ .groupBy('status')
393
+ .get();
253
394
  ```
254
395
 
255
- Visit `http://localhost:3000` to see it in action.
396
+ ### Ensemble ORM
397
+
398
+ ActiveRecord ORM (Eloquent equivalent) with relationships and advanced features:
399
+
400
+ ```typescript
401
+ import { Ensemble, EnsembleBuilder } from 'orchestr';
402
+
403
+ // Define a model
404
+ class User extends Ensemble {
405
+ protected table = 'users';
406
+ protected fillable = ['name', 'email', 'password'];
407
+ protected hidden = ['password'];
408
+ protected casts = {
409
+ email_verified_at: 'datetime',
410
+ is_admin: 'boolean'
411
+ };
412
+ }
413
+
414
+ // Query using the model
415
+ const users = await User.query().where('active', true).get();
416
+ const user = await User.query().find(1);
417
+
418
+ // Create
419
+ const user = new User();
420
+ user.name = 'John Doe';
421
+ user.email = 'john@example.com';
422
+ await user.save();
423
+
424
+ // Or use create
425
+ const user = await User.query().create({
426
+ name: 'John Doe',
427
+ email: 'john@example.com'
428
+ });
429
+
430
+ // Update
431
+ const user = await User.query().find(1);
432
+ user.name = 'Jane Doe';
433
+ await user.save();
434
+
435
+ // Delete
436
+ await user.delete();
437
+
438
+ // Mass assignment
439
+ await User.query().create({
440
+ name: 'John',
441
+ email: 'john@example.com'
442
+ });
443
+
444
+ // Soft deletes
445
+ import { softDeletes } from 'orchestr';
446
+
447
+ class Post extends softDeletes(Ensemble) {
448
+ protected table = 'posts';
449
+ }
256
450
 
257
- Available routes in the example:
258
- - `GET /` - Welcome message
259
- - `GET /users/:id` - Get user by ID
260
- - `GET /search?q=query` - Search with query params
261
- - `POST /users` - Create user
262
- - `GET /api/v1/profile` - Protected route (requires auth header)
263
- - `POST /api/v1/posts` - Create post (protected)
264
- - `GET /posts/:postId/comments/:commentId` - Nested parameters
451
+ const post = await Post.query().find(1);
452
+ await post.delete(); // Soft delete
453
+ await post.restore(); // Restore
454
+ await post.forceDelete(); // Permanent delete
455
+
456
+ // Query only non-deleted
457
+ const posts = await Post.query().get();
458
+
459
+ // Query with trashed
460
+ const allPosts = await Post.query().withTrashed().get();
461
+
462
+ // Query only trashed
463
+ const trashedPosts = await Post.query().onlyTrashed().get();
464
+
465
+ // Timestamps
466
+ // Automatically manages created_at and updated_at
467
+ class Article extends Ensemble {
468
+ protected table = 'articles';
469
+ public timestamps = true; // enabled by default
470
+ }
471
+
472
+ // Custom attributes and casts
473
+ class User extends Ensemble {
474
+ protected casts = {
475
+ email_verified_at: 'datetime',
476
+ settings: 'json',
477
+ is_admin: 'boolean',
478
+ age: 'number'
479
+ };
480
+
481
+ // Accessors
482
+ getFullNameAttribute(): string {
483
+ return `${this.getAttribute('first_name')} ${this.getAttribute('last_name')}`;
484
+ }
485
+
486
+ // Mutators
487
+ setPasswordAttribute(value: string): void {
488
+ this.setAttribute('password', hashPassword(value));
489
+ }
490
+ }
491
+
492
+ const user = await User.query().find(1);
493
+ console.log(user.full_name); // Uses accessor
494
+ user.password = 'secret123'; // Uses mutator
495
+ ```
496
+
497
+ ### Database Setup
498
+
499
+ Configure multiple database connections:
500
+
501
+ ```typescript
502
+ import { Application, DatabaseServiceProvider, DB } from 'orchestr';
503
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
504
+ import Database from 'better-sqlite3';
505
+
506
+ const app = new Application(__dirname);
507
+
508
+ // Register database service provider
509
+ app.register(new DatabaseServiceProvider({
510
+ default: 'sqlite',
511
+ connections: {
512
+ sqlite: {
513
+ adapter: 'drizzle',
514
+ client: drizzle(new Database('database.sqlite'))
515
+ },
516
+ postgres: {
517
+ adapter: 'drizzle',
518
+ client: drizzle(process.env.DATABASE_URL!)
519
+ }
520
+ }
521
+ }));
522
+
523
+ await app.boot();
524
+
525
+ // Use default connection
526
+ const users = await DB.table('users').get();
527
+
528
+ // Use specific connection
529
+ const posts = await DB.connection('postgres').table('posts').get();
530
+ ```
531
+
532
+ ## Complete Example
533
+
534
+ Here's a complete example showing routing, database, and ORM:
535
+
536
+ **index.ts**
537
+ ```typescript
538
+ import 'reflect-metadata';
539
+ import { Application, Kernel, DatabaseServiceProvider } from 'orchestr';
540
+ import { AppRouteServiceProvider } from './app/Providers/AppRouteServiceProvider';
541
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
542
+ import Database from 'better-sqlite3';
543
+
544
+ const app = new Application(__dirname);
545
+
546
+ // Register database
547
+ app.register(new DatabaseServiceProvider({
548
+ default: 'sqlite',
549
+ connections: {
550
+ sqlite: {
551
+ adapter: 'drizzle',
552
+ client: drizzle(new Database('database.sqlite'))
553
+ }
554
+ }
555
+ }));
556
+
557
+ // Register routes
558
+ app.register(AppRouteServiceProvider);
559
+
560
+ await app.boot();
561
+
562
+ const kernel = new Kernel(app);
563
+ kernel.listen(3000);
564
+ ```
565
+
566
+ **app/Models/User.ts**
567
+ ```typescript
568
+ import { Ensemble, softDeletes } from 'orchestr';
569
+
570
+ export class User extends softDeletes(Ensemble) {
571
+ protected table = 'users';
572
+ protected fillable = ['name', 'email', 'password'];
573
+ protected hidden = ['password'];
574
+
575
+ protected casts = {
576
+ email_verified_at: 'datetime',
577
+ is_admin: 'boolean'
578
+ };
579
+ }
580
+ ```
581
+
582
+ **routes/api.ts**
583
+ ```typescript
584
+ import { Route, DB } from 'orchestr';
585
+ import { User } from '../app/Models/User';
586
+
587
+ Route.group({ prefix: 'api' }, () => {
588
+ // Using query builder
589
+ Route.get('/users', async (req, res) => {
590
+ const users = await DB.table('users')
591
+ .where('active', true)
592
+ .orderBy('created_at', 'desc')
593
+ .get();
594
+
595
+ return res.json({ users });
596
+ });
597
+
598
+ // Using Ensemble ORM
599
+ Route.get('/users/:id', async (req, res) => {
600
+ const user = await User.query().find(req.routeParam('id'));
601
+
602
+ if (!user) {
603
+ return res.status(404).json({ message: 'User not found' });
604
+ }
605
+
606
+ return res.json({ user });
607
+ });
608
+
609
+ Route.post('/users', async (req, res) => {
610
+ const user = await User.query().create(
611
+ req.only(['name', 'email', 'password'])
612
+ );
613
+
614
+ return res.status(201).json({ user });
615
+ });
616
+
617
+ Route.delete('/users/:id', async (req, res) => {
618
+ const user = await User.query().find(req.routeParam('id'));
619
+ await user?.delete(); // Soft delete
620
+
621
+ return res.json({ message: 'User deleted' });
622
+ });
623
+ });
624
+ ```
265
625
 
266
626
  ## Architecture
267
627
 
268
- Laravel-Next follows Laravel's architecture exactly:
628
+ Orchestr follows Laravel's architecture exactly:
269
629
 
270
630
  ```
271
631
  src/
272
632
  ├── Container/
273
- │ └── Container.ts # IoC Container with DI
633
+ │ └── Container.ts # IoC Container with DI
274
634
  ├── Foundation/
275
- │ ├── Application.ts # Core application class
276
- │ ├── ServiceProvider.ts # Service provider base
635
+ │ ├── Application.ts # Core application class
636
+ │ ├── ServiceProvider.ts # Service provider base
277
637
  │ └── Http/
278
- │ └── Kernel.ts # HTTP kernel
638
+ │ └── Kernel.ts # HTTP kernel
279
639
  ├── Routing/
280
- │ ├── Router.ts # Route registration and dispatch
281
- │ ├── Route.ts # Individual route
282
- │ ├── Request.ts # HTTP request wrapper
283
- │ ├── Response.ts # HTTP response wrapper
284
- │ └── Controller.ts # Base controller
640
+ │ ├── Router.ts # Route registration and dispatch
641
+ │ ├── Route.ts # Individual route
642
+ │ ├── Request.ts # HTTP request wrapper
643
+ │ ├── Response.ts # HTTP response wrapper
644
+ │ └── Controller.ts # Base controller
645
+ ├── Database/
646
+ │ ├── DatabaseManager.ts # Multi-connection manager
647
+ │ ├── Connection.ts # Database connection
648
+ │ ├── Query/
649
+ │ │ ├── Builder.ts # Query builder
650
+ │ │ └── Expression.ts # Raw SQL expressions
651
+ │ ├── Ensemble/
652
+ │ │ ├── Ensemble.ts # Base ORM model (like Eloquent)
653
+ │ │ ├── EnsembleBuilder.ts # Model query builder
654
+ │ │ ├── EnsembleCollection.ts # Model collection
655
+ │ │ ├── SoftDeletes.ts # Soft delete trait
656
+ │ │ └── Concerns/
657
+ │ │ ├── HasAttributes.ts # Attribute handling & casting
658
+ │ │ └── HasTimestamps.ts # Timestamp management
659
+ │ ├── Adapters/
660
+ │ │ └── DrizzleAdapter.ts # Drizzle ORM adapter
661
+ │ └── DatabaseServiceProvider.ts
285
662
  ├── Support/
286
- └── Facade.ts # Facade base class
663
+ ├── Facade.ts # Facade base class
664
+ │ └── helpers.ts # Helper functions
287
665
  ├── Facades/
288
- └── Route.ts # Route facade
666
+ ├── Route.ts # Route facade
667
+ │ └── DB.ts # Database facade
289
668
  └── Providers/
290
- └── RouteServiceProvider.ts
669
+ └── RouteServiceProvider.ts # Route service provider
291
670
  ```
292
671
 
293
672
  ## TypeScript Benefits
@@ -302,10 +681,23 @@ While maintaining Laravel's API, you get:
302
681
 
303
682
  ## Roadmap
304
683
 
305
- This is the core foundation. Next components to build:
306
-
307
- - [ ] Database Query Builder
308
- - [ ] Eloquent ORM
684
+ Core components completed and in progress:
685
+
686
+ - [x] Service Container & Dependency Injection
687
+ - [x] Service Providers
688
+ - [x] HTTP Router & Route Files
689
+ - [x] Request/Response
690
+ - [x] Middleware Pipeline
691
+ - [x] Controllers
692
+ - [x] Facades (Route, DB)
693
+ - [x] Database Query Builder
694
+ - [x] Ensemble ORM (Eloquent equivalent)
695
+ - [x] Multi-connection Database Manager
696
+ - [x] Soft Deletes
697
+ - [x] Model Attributes & Casting
698
+ - [ ] Model Relationships (HasMany, BelongsTo, etc.)
699
+ - [ ] Database Migrations
700
+ - [ ] Database Seeding
309
701
  - [ ] Validation System
310
702
  - [ ] Authentication & Authorization
311
703
  - [ ] Queue System
@@ -323,12 +715,19 @@ This is the core foundation. Next components to build:
323
715
  | Service Container | ✅ | ✅ |
324
716
  | Service Providers | ✅ | ✅ |
325
717
  | Routing | ✅ | ✅ |
718
+ | Route Files | ✅ | ✅ |
326
719
  | Middleware | ✅ | ✅ |
327
720
  | Controllers | ✅ | ✅ |
328
721
  | Request/Response | ✅ | ✅ |
329
722
  | Facades | ✅ | ✅ |
330
- | Eloquent ORM | ✅ | 🚧 |
331
- | Query Builder | ✅ | 🚧 |
723
+ | Query Builder | ✅ | |
724
+ | Eloquent ORM | ✅ | ✅ (Ensemble) |
725
+ | Soft Deletes | ✅ | ✅ |
726
+ | Timestamps | ✅ | ✅ |
727
+ | Attribute Casting | ✅ | ✅ |
728
+ | Model Relationships | ✅ | 🚧 |
729
+ | Migrations | ✅ | 🚧 |
730
+ | Seeding | ✅ | 🚧 |
332
731
  | Validation | ✅ | 🚧 |
333
732
  | Authentication | ✅ | 🚧 |
334
733
  | Authorization | ✅ | 🚧 |
@@ -46,7 +46,7 @@ export declare class Application extends Container {
46
46
  /**
47
47
  * Boot the application's service providers
48
48
  */
49
- boot(): void;
49
+ boot(): Promise<void>;
50
50
  /**
51
51
  * Boot the given service provider
52
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../src/Foundation/Application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,eAAe,CAAmC;gBAE9C,QAAQ,GAAE,MAAsB;IAO5C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKnC;;OAEG;IACH,IAAI,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAI/B,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAIrC,YAAY,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAIvC,WAAW,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAItC,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAIrC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC,GAAG,eAAe;IA0BlG;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC,CAAC,GAAG,IAAI;IAIxG;;OAEG;IACH,IAAI,IAAI,IAAI;IAUZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAyB;IAErD,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,YAAY,IAAI,eAAe,EAAE;IAIjC;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAG/B"}
1
+ {"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../src/Foundation/Application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,eAAe,CAAmC;gBAE9C,QAAQ,GAAE,MAAsB;IAO5C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKnC;;OAEG;IACH,IAAI,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAI/B,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAIrC,YAAY,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAIvC,WAAW,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAItC,UAAU,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM;IAIrC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC,GAAG,eAAe;IA0BlG;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,GAAG,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC,CAAC,GAAG,IAAI;IAIxG;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;YACW,YAAY;IAS1B;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAyB;IAErD,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,YAAY,IAAI,eAAe,EAAE;IAIjC;;OAEG;IACH,mBAAmB,IAAI,OAAO;CAG/B"}
@@ -102,19 +102,24 @@ class Application extends Container_1.Container {
102
102
  /**
103
103
  * Boot the application's service providers
104
104
  */
105
- boot() {
105
+ async boot() {
106
106
  if (this.booted) {
107
107
  return;
108
108
  }
109
- this.serviceProviders.forEach(provider => this.bootProvider(provider));
109
+ for (const provider of this.serviceProviders) {
110
+ await this.bootProvider(provider);
111
+ }
110
112
  this.booted = true;
111
113
  }
112
114
  /**
113
115
  * Boot the given service provider
114
116
  */
115
- bootProvider(provider) {
117
+ async bootProvider(provider) {
116
118
  if (typeof provider.boot === 'function') {
117
- this.call(provider.boot.bind(provider));
119
+ const result = this.call(provider.boot.bind(provider));
120
+ if (result instanceof Promise) {
121
+ await result;
122
+ }
118
123
  }
119
124
  }
120
125
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/Foundation/Application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../src/Foundation/Application.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,30 @@
1
1
  import { ServiceProvider } from '../Foundation/ServiceProvider';
2
2
  /**
3
3
  * RouteServiceProvider - Registers the router in the container
4
+ * Similar to Laravel's RouteServiceProvider
4
5
  */
5
6
  export declare class RouteServiceProvider extends ServiceProvider {
7
+ /**
8
+ * The path to the route files
9
+ * Override this in your app's RouteServiceProvider
10
+ */
11
+ protected routesPath?: string;
12
+ /**
13
+ * Route file loaders
14
+ * Override this method to customize how routes are loaded
15
+ */
16
+ protected routeLoaders: (() => void | Promise<void>)[];
6
17
  register(): void;
7
- boot(): void;
18
+ boot(): Promise<void>;
19
+ /**
20
+ * Load routes from a file or callback
21
+ * Laravel: $this->routes(function() { require base_path('routes/web.php'); })
22
+ */
23
+ protected routes(callback: () => void | Promise<void>): this;
24
+ /**
25
+ * Load routes from a module
26
+ * Usage: loadRoutesFrom(() => import('../routes/web'))
27
+ */
28
+ protected loadRoutesFrom(importer: () => Promise<any>): Promise<void>;
8
29
  }
9
30
  //# sourceMappingURL=RouteServiceProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouteServiceProvider.d.ts","sourceRoot":"","sources":["../../src/Providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIhE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,QAAQ,IAAI,IAAI;IAQhB,IAAI,IAAI,IAAI;CAGb"}
1
+ {"version":3,"file":"RouteServiceProvider.d.ts","sourceRoot":"","sources":["../../src/Providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAIhE;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,eAAe;IACvD;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAM;IAE5D,QAAQ,IAAI,IAAI;IAQV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAK5D;;;OAGG;cACa,cAAc,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5E"}