@orchestr-sh/orchestr 1.1.0 → 1.2.0

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 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:
@@ -234,7 +300,7 @@ res.view('welcome', { name: 'John' });
234
300
  Static access to services:
235
301
 
236
302
  ```typescript
237
- import { Route } from 'orchestr';
303
+ import { Route, DB } from 'orchestr';
238
304
 
239
305
  // Route facade provides static access to Router
240
306
  Route.get('/path', handler);
@@ -242,52 +308,358 @@ Route.post('/path', handler);
242
308
  Route.group({ prefix: 'api' }, () => {
243
309
  // ...
244
310
  });
311
+
312
+ // DB facade provides static access to DatabaseManager
313
+ const users = await DB.table('users').where('active', true).get();
245
314
  ```
246
315
 
247
- ## Example Application
316
+ ### Database Query Builder
248
317
 
249
- Run the example application:
318
+ Fluent, chainable query builder with full Laravel API:
250
319
 
251
- ```bash
252
- npm run dev
320
+ ```typescript
321
+ import { DB } from 'orchestr';
322
+
323
+ // Basic queries
324
+ const users = await DB.table('users').get();
325
+ const user = await DB.table('users').where('id', 1).first();
326
+
327
+ // Where clauses
328
+ await DB.table('users')
329
+ .where('votes', '>', 100)
330
+ .where('status', 'active')
331
+ .get();
332
+
333
+ // Or where
334
+ await DB.table('users')
335
+ .where('votes', '>', 100)
336
+ .orWhere('name', 'John')
337
+ .get();
338
+
339
+ // Additional where methods
340
+ await DB.table('users').whereBetween('votes', [1, 100]).get();
341
+ await DB.table('users').whereIn('id', [1, 2, 3]).get();
342
+ await DB.table('users').whereNull('deleted_at').get();
343
+
344
+ // Ordering, grouping, and limits
345
+ await DB.table('users')
346
+ .orderBy('name', 'desc')
347
+ .groupBy('account_id')
348
+ .having('account_id', '>', 100)
349
+ .limit(10)
350
+ .offset(20)
351
+ .get();
352
+
353
+ // Joins
354
+ await DB.table('users')
355
+ .join('contacts', 'users.id', '=', 'contacts.user_id')
356
+ .leftJoin('orders', 'users.id', '=', 'orders.user_id')
357
+ .select('users.*', 'contacts.phone', 'orders.price')
358
+ .get();
359
+
360
+ // Aggregates
361
+ const count = await DB.table('users').count();
362
+ const max = await DB.table('orders').max('price');
363
+ const min = await DB.table('orders').min('price');
364
+ const avg = await DB.table('orders').avg('price');
365
+ const sum = await DB.table('orders').sum('price');
366
+
367
+ // Inserts
368
+ await DB.table('users').insert({
369
+ name: 'John',
370
+ email: 'john@example.com'
371
+ });
372
+
373
+ // Updates
374
+ await DB.table('users')
375
+ .where('id', 1)
376
+ .update({ votes: 1 });
377
+
378
+ // Deletes
379
+ await DB.table('users').where('votes', '<', 100).delete();
380
+
381
+ // Raw expressions
382
+ await DB.table('users')
383
+ .select(DB.raw('count(*) as user_count, status'))
384
+ .where('status', '<>', 1)
385
+ .groupBy('status')
386
+ .get();
253
387
  ```
254
388
 
255
- Visit `http://localhost:3000` to see it in action.
389
+ ### Ensemble ORM
390
+
391
+ ActiveRecord ORM (Eloquent equivalent) with relationships and advanced features:
392
+
393
+ ```typescript
394
+ import { Ensemble, EnsembleBuilder } from 'orchestr';
395
+
396
+ // Define a model
397
+ class User extends Ensemble {
398
+ protected table = 'users';
399
+ protected fillable = ['name', 'email', 'password'];
400
+ protected hidden = ['password'];
401
+ protected casts = {
402
+ email_verified_at: 'datetime',
403
+ is_admin: 'boolean'
404
+ };
405
+ }
406
+
407
+ // Query using the model
408
+ const users = await User.query().where('active', true).get();
409
+ const user = await User.query().find(1);
410
+
411
+ // Create
412
+ const user = new User();
413
+ user.name = 'John Doe';
414
+ user.email = 'john@example.com';
415
+ await user.save();
416
+
417
+ // Or use create
418
+ const user = await User.query().create({
419
+ name: 'John Doe',
420
+ email: 'john@example.com'
421
+ });
422
+
423
+ // Update
424
+ const user = await User.query().find(1);
425
+ user.name = 'Jane Doe';
426
+ await user.save();
427
+
428
+ // Delete
429
+ await user.delete();
430
+
431
+ // Mass assignment
432
+ await User.query().create({
433
+ name: 'John',
434
+ email: 'john@example.com'
435
+ });
436
+
437
+ // Soft deletes
438
+ import { softDeletes } from 'orchestr';
439
+
440
+ class Post extends softDeletes(Ensemble) {
441
+ protected table = 'posts';
442
+ }
443
+
444
+ const post = await Post.query().find(1);
445
+ await post.delete(); // Soft delete
446
+ await post.restore(); // Restore
447
+ await post.forceDelete(); // Permanent delete
256
448
 
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
449
+ // Query only non-deleted
450
+ const posts = await Post.query().get();
451
+
452
+ // Query with trashed
453
+ const allPosts = await Post.query().withTrashed().get();
454
+
455
+ // Query only trashed
456
+ const trashedPosts = await Post.query().onlyTrashed().get();
457
+
458
+ // Timestamps
459
+ // Automatically manages created_at and updated_at
460
+ class Article extends Ensemble {
461
+ protected table = 'articles';
462
+ public timestamps = true; // enabled by default
463
+ }
464
+
465
+ // Custom attributes and casts
466
+ class User extends Ensemble {
467
+ protected casts = {
468
+ email_verified_at: 'datetime',
469
+ settings: 'json',
470
+ is_admin: 'boolean',
471
+ age: 'number'
472
+ };
473
+
474
+ // Accessors
475
+ getFullNameAttribute(): string {
476
+ return `${this.getAttribute('first_name')} ${this.getAttribute('last_name')}`;
477
+ }
478
+
479
+ // Mutators
480
+ setPasswordAttribute(value: string): void {
481
+ this.setAttribute('password', hashPassword(value));
482
+ }
483
+ }
484
+
485
+ const user = await User.query().find(1);
486
+ console.log(user.full_name); // Uses accessor
487
+ user.password = 'secret123'; // Uses mutator
488
+ ```
489
+
490
+ ### Database Setup
491
+
492
+ Configure multiple database connections:
493
+
494
+ ```typescript
495
+ import { Application, DatabaseServiceProvider, DB } from 'orchestr';
496
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
497
+ import Database from 'better-sqlite3';
498
+
499
+ const app = new Application(__dirname);
500
+
501
+ // Register database service provider
502
+ app.register(new DatabaseServiceProvider({
503
+ default: 'sqlite',
504
+ connections: {
505
+ sqlite: {
506
+ adapter: 'drizzle',
507
+ client: drizzle(new Database('database.sqlite'))
508
+ },
509
+ postgres: {
510
+ adapter: 'drizzle',
511
+ client: drizzle(process.env.DATABASE_URL!)
512
+ }
513
+ }
514
+ }));
515
+
516
+ await app.boot();
517
+
518
+ // Use default connection
519
+ const users = await DB.table('users').get();
520
+
521
+ // Use specific connection
522
+ const posts = await DB.connection('postgres').table('posts').get();
523
+ ```
524
+
525
+ ## Complete Example
526
+
527
+ Here's a complete example showing routing, database, and ORM:
528
+
529
+ **index.ts**
530
+ ```typescript
531
+ import 'reflect-metadata';
532
+ import { Application, Kernel, DatabaseServiceProvider } from 'orchestr';
533
+ import { AppRouteServiceProvider } from './app/Providers/AppRouteServiceProvider';
534
+ import { drizzle } from 'drizzle-orm/better-sqlite3';
535
+ import Database from 'better-sqlite3';
536
+
537
+ const app = new Application(__dirname);
538
+
539
+ // Register database
540
+ app.register(new DatabaseServiceProvider({
541
+ default: 'sqlite',
542
+ connections: {
543
+ sqlite: {
544
+ adapter: 'drizzle',
545
+ client: drizzle(new Database('database.sqlite'))
546
+ }
547
+ }
548
+ }));
549
+
550
+ // Register routes
551
+ app.register(AppRouteServiceProvider);
552
+
553
+ await app.boot();
554
+
555
+ const kernel = new Kernel(app);
556
+ kernel.listen(3000);
557
+ ```
558
+
559
+ **app/Models/User.ts**
560
+ ```typescript
561
+ import { Ensemble, softDeletes } from 'orchestr';
562
+
563
+ export class User extends softDeletes(Ensemble) {
564
+ protected table = 'users';
565
+ protected fillable = ['name', 'email', 'password'];
566
+ protected hidden = ['password'];
567
+
568
+ protected casts = {
569
+ email_verified_at: 'datetime',
570
+ is_admin: 'boolean'
571
+ };
572
+ }
573
+ ```
574
+
575
+ **routes/api.ts**
576
+ ```typescript
577
+ import { Route, DB } from 'orchestr';
578
+ import { User } from '../app/Models/User';
579
+
580
+ Route.group({ prefix: 'api' }, () => {
581
+ // Using query builder
582
+ Route.get('/users', async (req, res) => {
583
+ const users = await DB.table('users')
584
+ .where('active', true)
585
+ .orderBy('created_at', 'desc')
586
+ .get();
587
+
588
+ return res.json({ users });
589
+ });
590
+
591
+ // Using Ensemble ORM
592
+ Route.get('/users/:id', async (req, res) => {
593
+ const user = await User.query().find(req.routeParam('id'));
594
+
595
+ if (!user) {
596
+ return res.status(404).json({ message: 'User not found' });
597
+ }
598
+
599
+ return res.json({ user });
600
+ });
601
+
602
+ Route.post('/users', async (req, res) => {
603
+ const user = await User.query().create(
604
+ req.only(['name', 'email', 'password'])
605
+ );
606
+
607
+ return res.status(201).json({ user });
608
+ });
609
+
610
+ Route.delete('/users/:id', async (req, res) => {
611
+ const user = await User.query().find(req.routeParam('id'));
612
+ await user?.delete(); // Soft delete
613
+
614
+ return res.json({ message: 'User deleted' });
615
+ });
616
+ });
617
+ ```
265
618
 
266
619
  ## Architecture
267
620
 
268
- Laravel-Next follows Laravel's architecture exactly:
621
+ Orchestr follows Laravel's architecture exactly:
269
622
 
270
623
  ```
271
624
  src/
272
625
  ├── Container/
273
- │ └── Container.ts # IoC Container with DI
626
+ │ └── Container.ts # IoC Container with DI
274
627
  ├── Foundation/
275
- │ ├── Application.ts # Core application class
276
- │ ├── ServiceProvider.ts # Service provider base
628
+ │ ├── Application.ts # Core application class
629
+ │ ├── ServiceProvider.ts # Service provider base
277
630
  │ └── Http/
278
- │ └── Kernel.ts # HTTP kernel
631
+ │ └── Kernel.ts # HTTP kernel
279
632
  ├── 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
633
+ │ ├── Router.ts # Route registration and dispatch
634
+ │ ├── Route.ts # Individual route
635
+ │ ├── Request.ts # HTTP request wrapper
636
+ │ ├── Response.ts # HTTP response wrapper
637
+ │ └── Controller.ts # Base controller
638
+ ├── Database/
639
+ │ ├── DatabaseManager.ts # Multi-connection manager
640
+ │ ├── Connection.ts # Database connection
641
+ │ ├── Query/
642
+ │ │ ├── Builder.ts # Query builder
643
+ │ │ └── Expression.ts # Raw SQL expressions
644
+ │ ├── Ensemble/
645
+ │ │ ├── Ensemble.ts # Base ORM model (like Eloquent)
646
+ │ │ ├── EnsembleBuilder.ts # Model query builder
647
+ │ │ ├── EnsembleCollection.ts # Model collection
648
+ │ │ ├── SoftDeletes.ts # Soft delete trait
649
+ │ │ └── Concerns/
650
+ │ │ ├── HasAttributes.ts # Attribute handling & casting
651
+ │ │ └── HasTimestamps.ts # Timestamp management
652
+ │ ├── Adapters/
653
+ │ │ └── DrizzleAdapter.ts # Drizzle ORM adapter
654
+ │ └── DatabaseServiceProvider.ts
285
655
  ├── Support/
286
- └── Facade.ts # Facade base class
656
+ ├── Facade.ts # Facade base class
657
+ │ └── helpers.ts # Helper functions
287
658
  ├── Facades/
288
- └── Route.ts # Route facade
659
+ ├── Route.ts # Route facade
660
+ │ └── DB.ts # Database facade
289
661
  └── Providers/
290
- └── RouteServiceProvider.ts
662
+ └── RouteServiceProvider.ts # Route service provider
291
663
  ```
292
664
 
293
665
  ## TypeScript Benefits
@@ -302,10 +674,23 @@ While maintaining Laravel's API, you get:
302
674
 
303
675
  ## Roadmap
304
676
 
305
- This is the core foundation. Next components to build:
306
-
307
- - [ ] Database Query Builder
308
- - [ ] Eloquent ORM
677
+ Core components completed and in progress:
678
+
679
+ - [x] Service Container & Dependency Injection
680
+ - [x] Service Providers
681
+ - [x] HTTP Router & Route Files
682
+ - [x] Request/Response
683
+ - [x] Middleware Pipeline
684
+ - [x] Controllers
685
+ - [x] Facades (Route, DB)
686
+ - [x] Database Query Builder
687
+ - [x] Ensemble ORM (Eloquent equivalent)
688
+ - [x] Multi-connection Database Manager
689
+ - [x] Soft Deletes
690
+ - [x] Model Attributes & Casting
691
+ - [ ] Model Relationships (HasMany, BelongsTo, etc.)
692
+ - [ ] Database Migrations
693
+ - [ ] Database Seeding
309
694
  - [ ] Validation System
310
695
  - [ ] Authentication & Authorization
311
696
  - [ ] Queue System
@@ -323,12 +708,19 @@ This is the core foundation. Next components to build:
323
708
  | Service Container | ✅ | ✅ |
324
709
  | Service Providers | ✅ | ✅ |
325
710
  | Routing | ✅ | ✅ |
711
+ | Route Files | ✅ | ✅ |
326
712
  | Middleware | ✅ | ✅ |
327
713
  | Controllers | ✅ | ✅ |
328
714
  | Request/Response | ✅ | ✅ |
329
715
  | Facades | ✅ | ✅ |
330
- | Eloquent ORM | ✅ | 🚧 |
331
- | Query Builder | ✅ | 🚧 |
716
+ | Query Builder | ✅ | |
717
+ | Eloquent ORM | ✅ | ✅ (Ensemble) |
718
+ | Soft Deletes | ✅ | ✅ |
719
+ | Timestamps | ✅ | ✅ |
720
+ | Attribute Casting | ✅ | ✅ |
721
+ | Model Relationships | ✅ | 🚧 |
722
+ | Migrations | ✅ | 🚧 |
723
+ | Seeding | ✅ | 🚧 |
332
724
  | Validation | ✅ | 🚧 |
333
725
  | Authentication | ✅ | 🚧 |
334
726
  | Authorization | ✅ | 🚧 |
@@ -15,6 +15,6 @@ declare class RouteFacade extends Facade {
15
15
  static match: Router['match'];
16
16
  static group: Router['group'];
17
17
  }
18
- export declare const Route: typeof RouteFacade & Router;
18
+ export declare const Route: typeof RouteFacade & Omit<Router, "app">;
19
19
  export {};
20
20
  //# sourceMappingURL=Route.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/Facades/Route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;GAGG;AACH,cAAM,WAAY,SAAQ,MAAM;IAC9B,SAAS,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC/B;AAGD,eAAO,MAAM,KAAK,EA2BD,OAAO,WAAW,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../src/Facades/Route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;;GAGG;AACH,cAAM,WAAY,SAAQ,MAAM;IAC9B,SAAS,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC/B;AAGD,eAAO,MAAM,KAAK,EA2BD,OAAO,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Route.js","sourceRoot":"","sources":["../../src/Facades/Route.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAG3C;;;GAGG;AACH,MAAM,WAAY,SAAQ,eAAM;IACpB,MAAM,CAAC,iBAAiB;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,CAAgB;IAC1B,MAAM,CAAC,IAAI,CAAiB;IAC5B,MAAM,CAAC,GAAG,CAAgB;IAC1B,MAAM,CAAC,KAAK,CAAkB;IAC9B,MAAM,CAAC,MAAM,CAAmB;IAChC,MAAM,CAAC,GAAG,CAAgB;IAC1B,MAAM,CAAC,KAAK,CAAkB;IAC9B,MAAM,CAAC,KAAK,CAAkB;CAC/B;AAED,6CAA6C;AAChC,QAAA,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE;IAC1C,GAAG,CAAC,MAAM,EAAE,IAAI;QACd,qEAAqE;QACrE,IAAI,CAAC;YACH,MAAM,IAAI,GAAI,MAAc,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;QAChD,CAAC;QAED,oEAAoE;QACpE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAI,MAAc,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAA2C,CAAC"}
1
+ {"version":3,"file":"Route.js","sourceRoot":"","sources":["../../src/Facades/Route.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAG3C;;;GAGG;AACH,MAAM,WAAY,SAAQ,eAAM;IACpB,MAAM,CAAC,iBAAiB;QAChC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,CAAgB;IAC1B,MAAM,CAAC,IAAI,CAAiB;IAC5B,MAAM,CAAC,GAAG,CAAgB;IAC1B,MAAM,CAAC,KAAK,CAAkB;IAC9B,MAAM,CAAC,MAAM,CAAmB;IAChC,MAAM,CAAC,GAAG,CAAgB;IAC1B,MAAM,CAAC,KAAK,CAAkB;IAC9B,MAAM,CAAC,KAAK,CAAkB;CAC/B;AAED,6CAA6C;AAChC,QAAA,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE;IAC1C,GAAG,CAAC,MAAM,EAAE,IAAI;QACd,qEAAqE;QACrE,IAAI,CAAC;YACH,MAAM,IAAI,GAAI,MAAc,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;QAChD,CAAC;QAED,oEAAoE;QACpE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAI,MAAc,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAwD,CAAC"}
@@ -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":";;;AAAA,sDAAmD;AAGnD;;;GAGG;AACH,MAAa,WAAY,SAAQ,qBAAS;IAChC,QAAQ,CAAS;IACjB,MAAM,GAAY,KAAK,CAAC;IACxB,gBAAgB,GAAsB,EAAE,CAAC;IACzC,eAAe,GAAyB,IAAI,GAAG,EAAE,CAAC;IAE1D,YAAY,WAAmB,OAAO,CAAC,GAAG,EAAE;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,qBAAS,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,4BAA4B;QAClC,MAAM,OAAO,GAAgC;YAC3C,KAAK,EAAE,CAAC,aAAa,CAAC;SACvB,CAAC;QAEF,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE;QACpB,OAAO,GAAG,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,OAAe,EAAE;QAC1B,OAAO,GAAG,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,YAAY,CAAC,OAAe,EAAE;QAC5B,OAAO,GAAG,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,OAAe,EAAE;QAC3B,OAAO,GAAG,IAAI,CAAC,QAAQ,WAAW,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,OAAe,EAAE;QAC1B,OAAO,GAAG,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,QAAuE;QAC9E,yCAAyC;QACzC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,8BAA8B;QAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,sCAAsC;QACtC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAEpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAE7C,2DAA2D;QAC3D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,SAA+E;QAC/F,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,QAAyB;QAClD,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,MAAM,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,oBAAoB,GAAsB,EAAE,CAAC;IAErD,WAAW,CAAC,QAAoB;QAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAnND,kCAmNC"}
@@ -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"}
@@ -6,16 +6,45 @@ const Router_1 = require("../Routing/Router");
6
6
  const Facade_1 = require("../Support/Facade");
7
7
  /**
8
8
  * RouteServiceProvider - Registers the router in the container
9
+ * Similar to Laravel's RouteServiceProvider
9
10
  */
10
11
  class RouteServiceProvider extends ServiceProvider_1.ServiceProvider {
12
+ /**
13
+ * The path to the route files
14
+ * Override this in your app's RouteServiceProvider
15
+ */
16
+ routesPath;
17
+ /**
18
+ * Route file loaders
19
+ * Override this method to customize how routes are loaded
20
+ */
21
+ routeLoaders = [];
11
22
  register() {
12
23
  // Set up facade application first
13
24
  Facade_1.Facade.setFacadeApplication(this.app);
14
25
  // Then register the router
15
26
  this.app.singleton('router', () => new Router_1.Router(this.app));
16
27
  }
17
- boot() {
18
- // Boot logic
28
+ async boot() {
29
+ // Load routes from route loaders
30
+ for (const loader of this.routeLoaders) {
31
+ await loader();
32
+ }
33
+ }
34
+ /**
35
+ * Load routes from a file or callback
36
+ * Laravel: $this->routes(function() { require base_path('routes/web.php'); })
37
+ */
38
+ routes(callback) {
39
+ this.routeLoaders.push(callback);
40
+ return this;
41
+ }
42
+ /**
43
+ * Load routes from a module
44
+ * Usage: loadRoutesFrom(() => import('../routes/web'))
45
+ */
46
+ async loadRoutesFrom(importer) {
47
+ await importer();
19
48
  }
20
49
  }
21
50
  exports.RouteServiceProvider = RouteServiceProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"RouteServiceProvider.js","sourceRoot":"","sources":["../../src/Providers/RouteServiceProvider.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,8CAA2C;AAC3C,8CAA2C;AAE3C;;GAEG;AACH,MAAa,oBAAqB,SAAQ,iCAAe;IACvD,QAAQ;QACN,kCAAkC;QAClC,eAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtC,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI;QACF,aAAa;IACf,CAAC;CACF;AAZD,oDAYC"}
1
+ {"version":3,"file":"RouteServiceProvider.js","sourceRoot":"","sources":["../../src/Providers/RouteServiceProvider.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,8CAA2C;AAC3C,8CAA2C;AAE3C;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,iCAAe;IACvD;;;OAGG;IACO,UAAU,CAAU;IAE9B;;;OAGG;IACO,YAAY,GAAmC,EAAE,CAAC;IAE5D,QAAQ;QACN,kCAAkC;QAClC,eAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtC,2BAA2B;QAC3B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,iCAAiC;QACjC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,MAAM,CAAC,QAAoC;QACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,cAAc,CAAC,QAA4B;QACzD,MAAM,QAAQ,EAAE,CAAC;IACnB,CAAC;CACF;AA5CD,oDA4CC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Helper functions - Laravel-style global helpers
3
+ */
4
+ /**
5
+ * Load routes from a directory
6
+ * This helper allows you to dynamically import route files
7
+ */
8
+ export declare function loadRoutes(routePath: string): Promise<void>;
9
+ /**
10
+ * Resolve a path relative to the base path
11
+ */
12
+ export declare function base_path(path?: string): string;
13
+ /**
14
+ * Get the routes directory path
15
+ */
16
+ export declare function routes_path(path?: string): string;
17
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/Support/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAW,GAAG,MAAM,CAErD"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * Helper functions - Laravel-style global helpers
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.loadRoutes = loadRoutes;
40
+ exports.base_path = base_path;
41
+ exports.routes_path = routes_path;
42
+ /**
43
+ * Load routes from a directory
44
+ * This helper allows you to dynamically import route files
45
+ */
46
+ async function loadRoutes(routePath) {
47
+ try {
48
+ await Promise.resolve(`${routePath}`).then(s => __importStar(require(s)));
49
+ }
50
+ catch (error) {
51
+ throw new Error(`Failed to load routes from ${routePath}: ${error}`);
52
+ }
53
+ }
54
+ /**
55
+ * Resolve a path relative to the base path
56
+ */
57
+ function base_path(path = '') {
58
+ return `${process.cwd()}${path ? '/' + path : ''}`;
59
+ }
60
+ /**
61
+ * Get the routes directory path
62
+ */
63
+ function routes_path(path = '') {
64
+ return base_path(`routes${path ? '/' + path : ''}`);
65
+ }
66
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/Support/helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMH,gCAMC;AAKD,8BAEC;AAKD,kCAEC;AAxBD;;;GAGG;AACI,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,IAAI,CAAC;QACH,yBAAa,SAAS,uCAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,OAAe,EAAE;IACzC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAe,EAAE;IAC3C,OAAO,SAAS,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export { Response } from './Routing/Response';
13
13
  export { Controller } from './Routing/Controller';
14
14
  export { Facade } from './Support/Facade';
15
15
  export { Route } from './Facades/Route';
16
+ export { loadRoutes, base_path, routes_path } from './Support/helpers';
16
17
  export { RouteServiceProvider } from './Providers/RouteServiceProvider';
17
18
  export { DatabaseServiceProvider } from './Database/DatabaseServiceProvider';
18
19
  export { DatabaseManager } from './Database/DatabaseManager';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/H,YAAY,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACzG,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,4CAA4C,CAAC;AACpD,YAAY,EACV,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/H,YAAY,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACzG,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,GACd,MAAM,4CAA4C,CAAC;AACpD,YAAY,EACV,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Main exports
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.softDeletes = exports.EnsembleCollection = exports.EnsembleBuilder = exports.Ensemble = exports.DB = exports.DrizzleAdapter = exports.raw = exports.Expression = exports.QueryBuilder = exports.Connection = exports.DatabaseManager = exports.DatabaseServiceProvider = exports.RouteServiceProvider = exports.Route = exports.Facade = exports.Controller = exports.Response = exports.Request = exports.RouteClass = exports.Router = exports.Container = exports.Kernel = exports.ServiceProvider = exports.Application = void 0;
7
+ exports.softDeletes = exports.EnsembleCollection = exports.EnsembleBuilder = exports.Ensemble = exports.DB = exports.DrizzleAdapter = exports.raw = exports.Expression = exports.QueryBuilder = exports.Connection = exports.DatabaseManager = exports.DatabaseServiceProvider = exports.RouteServiceProvider = exports.routes_path = exports.base_path = exports.loadRoutes = exports.Route = exports.Facade = exports.Controller = exports.Response = exports.Request = exports.RouteClass = exports.Router = exports.Container = exports.Kernel = exports.ServiceProvider = exports.Application = void 0;
8
8
  // Foundation
9
9
  var Application_1 = require("./Foundation/Application");
10
10
  Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return Application_1.Application; } });
@@ -31,6 +31,11 @@ var Facade_1 = require("./Support/Facade");
31
31
  Object.defineProperty(exports, "Facade", { enumerable: true, get: function () { return Facade_1.Facade; } });
32
32
  var Route_2 = require("./Facades/Route");
33
33
  Object.defineProperty(exports, "Route", { enumerable: true, get: function () { return Route_2.Route; } });
34
+ // Helpers
35
+ var helpers_1 = require("./Support/helpers");
36
+ Object.defineProperty(exports, "loadRoutes", { enumerable: true, get: function () { return helpers_1.loadRoutes; } });
37
+ Object.defineProperty(exports, "base_path", { enumerable: true, get: function () { return helpers_1.base_path; } });
38
+ Object.defineProperty(exports, "routes_path", { enumerable: true, get: function () { return helpers_1.routes_path; } });
34
39
  // Providers
35
40
  var RouteServiceProvider_1 = require("./Providers/RouteServiceProvider");
36
41
  Object.defineProperty(exports, "RouteServiceProvider", { enumerable: true, get: function () { return RouteServiceProvider_1.RouteServiceProvider; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,aAAa;AACb,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,gEAA+D;AAAtD,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,gGAAA,MAAM,OAAA;AAEf,YAAY;AACZ,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAElB,UAAU;AACV,2CAA0C;AAAjC,gGAAA,MAAM,OAAA;AACf,yCAAsD;AAA7C,mGAAA,KAAK,OAAc;AAC5B,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AACjB,mDAAkD;AAAzC,wGAAA,UAAU,OAAA;AAEnB,UAAU;AACV,2CAA0C;AAAjC,gGAAA,MAAM,OAAA;AACf,yCAAwC;AAA/B,8FAAA,KAAK,OAAA;AAEd,YAAY;AACZ,yEAAwE;AAA/D,4HAAA,oBAAoB,OAAA;AAC7B,8EAA6E;AAApE,kIAAA,uBAAuB,OAAA;AAEhC,WAAW;AACX,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AACnB,oDAAmE;AAA1D,uGAAA,OAAO,OAAgB;AAChC,0DAA8D;AAArD,wGAAA,UAAU,OAAA;AAAE,iGAAA,GAAG,OAAA;AACxB,qEAAoE;AAA3D,gHAAA,cAAc,OAAA;AAEvB,mBAAmB;AACnB,mCAAkC;AAAzB,wFAAA,EAAE,OAAA;AAEX,eAAe;AACf,yDAAwD;AAA/C,oGAAA,QAAQ,OAAA;AACjB,uEAAsE;AAA7D,kHAAA,eAAe,OAAA;AACxB,6EAA4E;AAAnE,wHAAA,kBAAkB,OAAA;AAC3B,+DAA8D;AAArD,0GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,aAAa;AACb,wDAAuD;AAA9C,0GAAA,WAAW,OAAA;AACpB,gEAA+D;AAAtD,kHAAA,eAAe,OAAA;AACxB,mDAAkD;AAAzC,gGAAA,MAAM,OAAA;AAEf,YAAY;AACZ,mDAAkD;AAAzC,sGAAA,SAAS,OAAA;AAElB,UAAU;AACV,2CAA0C;AAAjC,gGAAA,MAAM,OAAA;AACf,yCAAsD;AAA7C,mGAAA,KAAK,OAAc;AAC5B,6CAA4C;AAAnC,kGAAA,OAAO,OAAA;AAChB,+CAA8C;AAArC,oGAAA,QAAQ,OAAA;AACjB,mDAAkD;AAAzC,wGAAA,UAAU,OAAA;AAEnB,UAAU;AACV,2CAA0C;AAAjC,gGAAA,MAAM,OAAA;AACf,yCAAwC;AAA/B,8FAAA,KAAK,OAAA;AAEd,UAAU;AACV,6CAAuE;AAA9D,qGAAA,UAAU,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,sGAAA,WAAW,OAAA;AAE3C,YAAY;AACZ,yEAAwE;AAA/D,4HAAA,oBAAoB,OAAA;AAC7B,8EAA6E;AAApE,kIAAA,uBAAuB,OAAA;AAEhC,WAAW;AACX,8DAA6D;AAApD,kHAAA,eAAe,OAAA;AACxB,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AACnB,oDAAmE;AAA1D,uGAAA,OAAO,OAAgB;AAChC,0DAA8D;AAArD,wGAAA,UAAU,OAAA;AAAE,iGAAA,GAAG,OAAA;AACxB,qEAAoE;AAA3D,gHAAA,cAAc,OAAA;AAEvB,mBAAmB;AACnB,mCAAkC;AAAzB,wFAAA,EAAE,OAAA;AAEX,eAAe;AACf,yDAAwD;AAA/C,oGAAA,QAAQ,OAAA;AACjB,uEAAsE;AAA7D,kHAAA,eAAe,OAAA;AACxB,6EAA4E;AAAnE,wHAAA,kBAAkB,OAAA;AAC3B,+DAA8D;AAArD,0GAAA,WAAW,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orchestr-sh/orchestr",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "A 1:1 Laravel replica in TypeScript - Brings Laravel's elegant syntax and architecture to Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",