@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 +431 -39
- package/dist/Facades/Route.d.ts +1 -1
- package/dist/Facades/Route.d.ts.map +1 -1
- package/dist/Facades/Route.js.map +1 -1
- package/dist/Foundation/Application.d.ts +1 -1
- package/dist/Foundation/Application.d.ts.map +1 -1
- package/dist/Foundation/Application.js +9 -4
- package/dist/Foundation/Application.js.map +1 -1
- package/dist/Providers/RouteServiceProvider.d.ts +22 -1
- package/dist/Providers/RouteServiceProvider.d.ts.map +1 -1
- package/dist/Providers/RouteServiceProvider.js +31 -2
- package/dist/Providers/RouteServiceProvider.js.map +1 -1
- package/dist/Support/helpers.d.ts +17 -0
- package/dist/Support/helpers.d.ts.map +1 -0
- package/dist/Support/helpers.js +66 -0
- package/dist/Support/helpers.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
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
|
|
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
|
-
|
|
316
|
+
### Database Query Builder
|
|
248
317
|
|
|
249
|
-
|
|
318
|
+
Fluent, chainable query builder with full Laravel API:
|
|
250
319
|
|
|
251
|
-
```
|
|
252
|
-
|
|
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
|
-
|
|
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
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
-
|
|
621
|
+
Orchestr follows Laravel's architecture exactly:
|
|
269
622
|
|
|
270
623
|
```
|
|
271
624
|
src/
|
|
272
625
|
├── Container/
|
|
273
|
-
│ └── Container.ts
|
|
626
|
+
│ └── Container.ts # IoC Container with DI
|
|
274
627
|
├── Foundation/
|
|
275
|
-
│ ├── Application.ts
|
|
276
|
-
│ ├── ServiceProvider.ts
|
|
628
|
+
│ ├── Application.ts # Core application class
|
|
629
|
+
│ ├── ServiceProvider.ts # Service provider base
|
|
277
630
|
│ └── Http/
|
|
278
|
-
│ └── Kernel.ts
|
|
631
|
+
│ └── Kernel.ts # HTTP kernel
|
|
279
632
|
├── Routing/
|
|
280
|
-
│ ├── Router.ts
|
|
281
|
-
│ ├── Route.ts
|
|
282
|
-
│ ├── Request.ts
|
|
283
|
-
│ ├── Response.ts
|
|
284
|
-
│ └── Controller.ts
|
|
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
|
-
│
|
|
656
|
+
│ ├── Facade.ts # Facade base class
|
|
657
|
+
│ └── helpers.ts # Helper functions
|
|
287
658
|
├── Facades/
|
|
288
|
-
│
|
|
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
|
-
|
|
306
|
-
|
|
307
|
-
- [
|
|
308
|
-
- [
|
|
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
|
-
|
|
|
331
|
-
|
|
|
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 | ✅ | 🚧 |
|
package/dist/Facades/Route.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
|
@@ -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;
|
|
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
|
-
|
|
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
|
|
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
|
-
//
|
|
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
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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