@tyravel/core 0.1.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.
Files changed (121) hide show
  1. package/dist/adapters/node-server.d.ts +7 -0
  2. package/dist/adapters/node-server.d.ts.map +1 -0
  3. package/dist/adapters/node-server.js +78 -0
  4. package/dist/adapters/node-server.js.map +1 -0
  5. package/dist/application.d.ts +23 -0
  6. package/dist/application.d.ts.map +1 -0
  7. package/dist/application.js +65 -0
  8. package/dist/application.js.map +1 -0
  9. package/dist/application.test.d.ts +2 -0
  10. package/dist/application.test.d.ts.map +1 -0
  11. package/dist/application.test.js +29 -0
  12. package/dist/application.test.js.map +1 -0
  13. package/dist/auth-service-provider.d.ts +6 -0
  14. package/dist/auth-service-provider.d.ts.map +1 -0
  15. package/dist/auth-service-provider.js +71 -0
  16. package/dist/auth-service-provider.js.map +1 -0
  17. package/dist/auth.d.ts +14 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +32 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/cache-service-provider.d.ts +5 -0
  22. package/dist/cache-service-provider.d.ts.map +1 -0
  23. package/dist/cache-service-provider.js +14 -0
  24. package/dist/cache-service-provider.js.map +1 -0
  25. package/dist/cache.d.ts +12 -0
  26. package/dist/cache.d.ts.map +1 -0
  27. package/dist/cache.js +19 -0
  28. package/dist/cache.js.map +1 -0
  29. package/dist/config-service-provider.d.ts +5 -0
  30. package/dist/config-service-provider.d.ts.map +1 -0
  31. package/dist/config-service-provider.js +11 -0
  32. package/dist/config-service-provider.js.map +1 -0
  33. package/dist/config-service-provider.test.d.ts +2 -0
  34. package/dist/config-service-provider.test.d.ts.map +1 -0
  35. package/dist/config-service-provider.test.js +27 -0
  36. package/dist/config-service-provider.test.js.map +1 -0
  37. package/dist/controller.d.ts +8 -0
  38. package/dist/controller.d.ts.map +1 -0
  39. package/dist/controller.js +30 -0
  40. package/dist/controller.js.map +1 -0
  41. package/dist/controller.test.d.ts +2 -0
  42. package/dist/controller.test.d.ts.map +1 -0
  43. package/dist/controller.test.js +34 -0
  44. package/dist/controller.test.js.map +1 -0
  45. package/dist/database-service-provider.d.ts +5 -0
  46. package/dist/database-service-provider.d.ts.map +1 -0
  47. package/dist/database-service-provider.js +14 -0
  48. package/dist/database-service-provider.js.map +1 -0
  49. package/dist/event.d.ts +11 -0
  50. package/dist/event.d.ts.map +1 -0
  51. package/dist/event.js +22 -0
  52. package/dist/event.js.map +1 -0
  53. package/dist/events-service-provider.d.ts +8 -0
  54. package/dist/events-service-provider.d.ts.map +1 -0
  55. package/dist/events-service-provider.js +68 -0
  56. package/dist/events-service-provider.js.map +1 -0
  57. package/dist/events-service-provider.test.d.ts +2 -0
  58. package/dist/events-service-provider.test.d.ts.map +1 -0
  59. package/dist/events-service-provider.test.js +30 -0
  60. package/dist/events-service-provider.test.js.map +1 -0
  61. package/dist/gate.d.ts +10 -0
  62. package/dist/gate.d.ts.map +1 -0
  63. package/dist/gate.js +16 -0
  64. package/dist/gate.js.map +1 -0
  65. package/dist/http-kernel.d.ts +7 -0
  66. package/dist/http-kernel.d.ts.map +1 -0
  67. package/dist/http-kernel.js +45 -0
  68. package/dist/http-kernel.js.map +1 -0
  69. package/dist/index.d.ts +43 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +29 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/mail-service-provider.d.ts +7 -0
  74. package/dist/mail-service-provider.d.ts.map +1 -0
  75. package/dist/mail-service-provider.js +49 -0
  76. package/dist/mail-service-provider.js.map +1 -0
  77. package/dist/mail.d.ts +10 -0
  78. package/dist/mail.d.ts.map +1 -0
  79. package/dist/mail.js +16 -0
  80. package/dist/mail.js.map +1 -0
  81. package/dist/notification-service-provider.d.ts +8 -0
  82. package/dist/notification-service-provider.d.ts.map +1 -0
  83. package/dist/notification-service-provider.js +71 -0
  84. package/dist/notification-service-provider.js.map +1 -0
  85. package/dist/notifications.d.ts +9 -0
  86. package/dist/notifications.d.ts.map +1 -0
  87. package/dist/notifications.js +9 -0
  88. package/dist/notifications.js.map +1 -0
  89. package/dist/password.d.ts +12 -0
  90. package/dist/password.d.ts.map +1 -0
  91. package/dist/password.js +15 -0
  92. package/dist/password.js.map +1 -0
  93. package/dist/queue-service-provider.d.ts +7 -0
  94. package/dist/queue-service-provider.d.ts.map +1 -0
  95. package/dist/queue-service-provider.js +49 -0
  96. package/dist/queue-service-provider.js.map +1 -0
  97. package/dist/queue.d.ts +15 -0
  98. package/dist/queue.d.ts.map +1 -0
  99. package/dist/queue.js +29 -0
  100. package/dist/queue.js.map +1 -0
  101. package/dist/route.d.ts +22 -0
  102. package/dist/route.d.ts.map +1 -0
  103. package/dist/route.js +28 -0
  104. package/dist/route.js.map +1 -0
  105. package/dist/server.d.ts +7 -0
  106. package/dist/server.d.ts.map +1 -0
  107. package/dist/server.js +18 -0
  108. package/dist/server.js.map +1 -0
  109. package/dist/service-provider.d.ts +8 -0
  110. package/dist/service-provider.d.ts.map +1 -0
  111. package/dist/service-provider.js +9 -0
  112. package/dist/service-provider.js.map +1 -0
  113. package/dist/view-service-provider.d.ts +5 -0
  114. package/dist/view-service-provider.d.ts.map +1 -0
  115. package/dist/view-service-provider.js +16 -0
  116. package/dist/view-service-provider.js.map +1 -0
  117. package/dist/view.d.ts +9 -0
  118. package/dist/view.d.ts.map +1 -0
  119. package/dist/view.js +15 -0
  120. package/dist/view.js.map +1 -0
  121. package/package.json +47 -0
@@ -0,0 +1,71 @@
1
+ import { Dispatcher } from '@tyravel/queue';
2
+ import { NotificationManager, NotificationRegistry, SendQueuedNotification, SerializedNotifiable, setNotificationSender, setQueuedNotificationContext, } from '@tyravel/notifications';
3
+ import { ServiceProvider } from './service-provider.js';
4
+ export class NotificationServiceProvider extends ServiceProvider {
5
+ register() {
6
+ const config = this.app.make('config');
7
+ const notificationsConfig = config.get('notifications', {});
8
+ const mail = this.app.make('mail');
9
+ const registry = new NotificationRegistry();
10
+ const database = this.resolveDatabase();
11
+ const queueBridge = this.createQueueBridge();
12
+ const manager = new NotificationManager(mail, database ? {
13
+ connection: database.connection(notificationsConfig.connection),
14
+ table: notificationsConfig.table,
15
+ } : undefined, queueBridge, registry);
16
+ manager.setQueueDefaults({
17
+ connection: notificationsConfig.queueConnection,
18
+ queue: notificationsConfig.queue,
19
+ });
20
+ this.app.instance('notifications', manager);
21
+ this.app.instance('notifications.registry', registry);
22
+ this.app.singleton(NotificationManager, () => manager);
23
+ this.app.singleton(NotificationRegistry, () => registry);
24
+ setNotificationSender(manager);
25
+ setQueuedNotificationContext({
26
+ manager,
27
+ registry,
28
+ SerializedNotifiable,
29
+ container: this.app,
30
+ });
31
+ this.registerQueuedNotificationJob();
32
+ }
33
+ resolveDatabase() {
34
+ try {
35
+ return this.app.make('db');
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ }
41
+ createQueueBridge() {
42
+ try {
43
+ const manager = this.app.make('queue');
44
+ return {
45
+ dispatch: async (job, options = {}) => {
46
+ const connection = manager.connection(options.connection);
47
+ const dispatcher = new Dispatcher(connection);
48
+ const delay = options.delaySeconds ?? 0;
49
+ if (delay > 0) {
50
+ await dispatcher.dispatchLater(delay, job, options.queue);
51
+ return;
52
+ }
53
+ await dispatcher.dispatch(job, options.queue);
54
+ },
55
+ };
56
+ }
57
+ catch {
58
+ return undefined;
59
+ }
60
+ }
61
+ registerQueuedNotificationJob() {
62
+ try {
63
+ const jobs = this.app.make('jobs.registry');
64
+ jobs.register(SendQueuedNotification);
65
+ }
66
+ catch {
67
+ // Queue provider not registered.
68
+ }
69
+ }
70
+ }
71
+ //# sourceMappingURL=notification-service-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-service-provider.js","sourceRoot":"","sources":["../src/notification-service-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Notification } from '@tyravel/notifications';
2
+ import type { Notifiable } from '@tyravel/notifications';
3
+ import type { Application } from './application.js';
4
+ export declare function setNotificationApplication(app: Application): void;
5
+ export interface NotificationsFacade {
6
+ send(notifiable: Notifiable, notification: Notification): Promise<void>;
7
+ }
8
+ export declare const Notifications: NotificationsFacade;
9
+ //# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAEjE;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,eAAO,MAAM,aAAa,EAAE,mBAE3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { notify as sendNotification } from '@tyravel/notifications';
2
+ let notificationApplication;
3
+ export function setNotificationApplication(app) {
4
+ notificationApplication = app;
5
+ }
6
+ export const Notifications = {
7
+ send: (notifiable, notification) => sendNotification(notifiable, notification),
8
+ };
9
+ //# sourceMappingURL=notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIpE,IAAI,uBAAgD,CAAC;AAErD,MAAM,UAAU,0BAA0B,CAAC,GAAgB;IACzD,uBAAuB,GAAG,GAAG,CAAC;AAChC,CAAC;AAMD,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD,IAAI,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC;CAC/E,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Application } from './application.js';
2
+ export declare function setPasswordApplication(app: Application): void;
3
+ export interface PasswordFacade {
4
+ sendResetLink(email: string): Promise<string>;
5
+ reset(input: {
6
+ email: string;
7
+ token: string;
8
+ password: string;
9
+ }): Promise<void>;
10
+ }
11
+ export declare const Password: PasswordFacade;
12
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../src/password.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAE7D;AASD,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF;AAED,eAAO,MAAM,QAAQ,EAAE,cAGtB,CAAC"}
@@ -0,0 +1,15 @@
1
+ let passwordApplication;
2
+ export function setPasswordApplication(app) {
3
+ passwordApplication = app;
4
+ }
5
+ function resolveBroker() {
6
+ if (!passwordApplication) {
7
+ throw new Error('Password facade requires setPasswordApplication(app) during bootstrap.');
8
+ }
9
+ return passwordApplication.make('auth.password');
10
+ }
11
+ export const Password = {
12
+ sendResetLink: (email) => resolveBroker().sendResetLink(email),
13
+ reset: (input) => resolveBroker().reset(input),
14
+ };
15
+ //# sourceMappingURL=password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../src/password.ts"],"names":[],"mappings":"AAGA,IAAI,mBAA4C,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,GAAgB;IACrD,mBAAmB,GAAG,GAAG,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,mBAAmB,CAAC,IAAI,CAAsB,eAAe,CAAC,CAAC;AACxE,CAAC;AAOD,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;IAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;CAC/C,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ServiceProvider } from './service-provider.js';
2
+ export declare class QueueServiceProvider extends ServiceProvider {
3
+ register(): void;
4
+ private resolveDatabaseManager;
5
+ private createFailedJobRepository;
6
+ }
7
+ //# sourceMappingURL=queue-service-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-service-provider.d.ts","sourceRoot":"","sources":["../src/queue-service-provider.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,qBAAa,oBAAqB,SAAQ,eAAe;IAC9C,QAAQ;IA4BjB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,yBAAyB;CAmBlC"}
@@ -0,0 +1,49 @@
1
+ import { Dispatcher, FailedJobRepository, JobRegistry, QueueManager, QueueProcessor, QueueWorker, } from '@tyravel/queue';
2
+ import { ServiceProvider } from './service-provider.js';
3
+ export class QueueServiceProvider extends ServiceProvider {
4
+ register() {
5
+ const config = this.app.make('config');
6
+ const queueConfig = config.get('queue');
7
+ const registry = new JobRegistry();
8
+ this.app.instance('jobs.registry', registry);
9
+ this.app.singleton(JobRegistry, () => registry);
10
+ const database = this.resolveDatabaseManager();
11
+ const worker = new QueueWorker(registry, this.app);
12
+ const manager = new QueueManager(queueConfig, worker, database);
13
+ const dispatcher = new Dispatcher(manager.connection());
14
+ const failedJobs = this.createFailedJobRepository(database, queueConfig);
15
+ const processor = new QueueProcessor(manager, registry, worker, { failedJobs });
16
+ this.app.instance('queue', manager);
17
+ this.app.singleton(QueueManager, () => manager);
18
+ this.app.instance('queue.dispatcher', dispatcher);
19
+ this.app.singleton(Dispatcher, () => dispatcher);
20
+ if (failedJobs) {
21
+ this.app.instance('queue.failed', failedJobs);
22
+ this.app.singleton(FailedJobRepository, () => failedJobs);
23
+ }
24
+ this.app.instance('queue.processor', processor);
25
+ this.app.singleton(QueueProcessor, () => processor);
26
+ }
27
+ resolveDatabaseManager() {
28
+ try {
29
+ return this.app.make('db');
30
+ }
31
+ catch {
32
+ return undefined;
33
+ }
34
+ }
35
+ createFailedJobRepository(database, queueConfig) {
36
+ if (!database) {
37
+ return undefined;
38
+ }
39
+ const failedConfig = queueConfig.failed ?? {};
40
+ const defaultConnectionConfig = queueConfig.connections[queueConfig.default];
41
+ const dbConnectionName = failedConfig.database ??
42
+ (defaultConnectionConfig?.driver === 'database'
43
+ ? defaultConnectionConfig.connection
44
+ : undefined);
45
+ const connection = database.connection(dbConnectionName);
46
+ return new FailedJobRepository(connection, failedConfig);
47
+ }
48
+ }
49
+ //# sourceMappingURL=queue-service-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-service-provider.js","sourceRoot":"","sources":["../src/queue-service-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Job } from '@tyravel/queue';
2
+ import type { Application } from './application.js';
3
+ export declare function setQueueApplication(app: Application): void;
4
+ export interface QueueConnectionFacade {
5
+ dispatch(job: Job, queue?: string): Promise<string>;
6
+ later(delaySeconds: number, job: Job, queue?: string): Promise<string>;
7
+ }
8
+ export interface QueueFacade {
9
+ connection(name?: string): QueueConnectionFacade;
10
+ dispatch(job: Job, queue?: string): Promise<string>;
11
+ later(delaySeconds: number, job: Job, queue?: string): Promise<string>;
12
+ }
13
+ export declare const Queue: QueueFacade;
14
+ export declare function dispatch(job: Job, queue?: string): Promise<string>;
15
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,GAAG,EAA+B,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAE1D;AAeD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAUD,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC;IACjD,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxE;AAED,eAAO,MAAM,KAAK,EAAE,WAInB,CAAC;AAEF,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAExE"}
package/dist/queue.js ADDED
@@ -0,0 +1,29 @@
1
+ let activeApp;
2
+ export function setQueueApplication(app) {
3
+ activeApp = app;
4
+ }
5
+ function application() {
6
+ if (!activeApp) {
7
+ throw new Error('Queue facade is not ready. Boot the application before dispatching jobs.');
8
+ }
9
+ return activeApp;
10
+ }
11
+ function manager() {
12
+ return application().make('queue');
13
+ }
14
+ function connectionFacade(name) {
15
+ const connection = manager().connection(name);
16
+ return {
17
+ dispatch: (job, queue) => connection.push(job, queue),
18
+ later: (delaySeconds, job, queue) => connection.later(delaySeconds, job, queue),
19
+ };
20
+ }
21
+ export const Queue = {
22
+ connection: connectionFacade,
23
+ dispatch: (job, queue) => connectionFacade().dispatch(job, queue),
24
+ later: (delaySeconds, job, queue) => connectionFacade().later(delaySeconds, job, queue),
25
+ };
26
+ export async function dispatch(job, queue) {
27
+ return Queue.dispatch(job, queue);
28
+ }
29
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAGA,IAAI,SAAkC,CAAC;AAEvC,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,SAAS,GAAG,GAAG,CAAC;AAClB,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO;IACd,OAAO,WAAW,EAAE,CAAC,IAAI,CAAe,OAAO,CAAC,CAAC;AACnD,CAAC;AAOD,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO;QACL,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;QACrD,KAAK,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC;KAChF,CAAC;AACJ,CAAC;AAQD,MAAM,CAAC,MAAM,KAAK,GAAgB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;IACjE,KAAK,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC;CACxF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAQ,EAAE,KAAc;IACrD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Groupable, MiddlewareGroupable, MiddlewareInput, RouteHandler, Routable, Router, ScopedRouteRegistrar } from '@tyravel/http';
2
+ import type { ControllerAction } from './controller.js';
3
+ import type { Application } from './application.js';
4
+ export declare function setRouteApplication(app: Application): void;
5
+ type RouteTarget = RouteHandler | ControllerAction;
6
+ export interface RouteFacade {
7
+ prefix(prefix: string): MiddlewareGroupable;
8
+ namePrefix(prefix: string): MiddlewareGroupable;
9
+ group(callback: (routes: Groupable) => void): Routable;
10
+ get(pattern: string, handler: RouteTarget): Routable;
11
+ post(pattern: string, handler: RouteTarget): Routable;
12
+ put(pattern: string, handler: RouteTarget): Routable;
13
+ patch(pattern: string, handler: RouteTarget): Routable;
14
+ delete(pattern: string, handler: RouteTarget): Routable;
15
+ middleware(...middleware: MiddlewareInput[]): ScopedRouteRegistrar;
16
+ use(...middleware: MiddlewareInput[]): Routable;
17
+ name(name: string): Routable;
18
+ url(name: string, params?: Parameters<Router['url']>[1]): string;
19
+ }
20
+ export declare const Route: RouteFacade;
21
+ export {};
22
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,oBAAoB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAE1D;AAWD,KAAK,WAAW,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAMnD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC5C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAChD,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,GAAG,QAAQ,CAAC;IACvD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IACtD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC;IACxD,UAAU,CAAC,GAAG,UAAU,EAAE,eAAe,EAAE,GAAG,oBAAoB,CAAC;IACnE,GAAG,CAAC,GAAG,UAAU,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CAClE;AAED,eAAO,MAAM,KAAK,EAAE,WAmBnB,CAAC"}
package/dist/route.js ADDED
@@ -0,0 +1,28 @@
1
+ let activeApp;
2
+ export function setRouteApplication(app) {
3
+ activeApp = app;
4
+ }
5
+ function router() {
6
+ if (!activeApp) {
7
+ throw new Error('Route facade is not ready. Boot the application before defining routes.');
8
+ }
9
+ return activeApp.router();
10
+ }
11
+ function toHandler(handler) {
12
+ return handler;
13
+ }
14
+ export const Route = {
15
+ prefix: (prefix) => router().prefix(prefix),
16
+ namePrefix: (prefix) => router().namePrefix(prefix),
17
+ group: (callback) => router().group(callback),
18
+ get: (pattern, handler) => router().get(pattern, toHandler(handler)),
19
+ post: (pattern, handler) => router().post(pattern, toHandler(handler)),
20
+ put: (pattern, handler) => router().put(pattern, toHandler(handler)),
21
+ patch: (pattern, handler) => router().patch(pattern, toHandler(handler)),
22
+ delete: (pattern, handler) => router().delete(pattern, toHandler(handler)),
23
+ middleware: (...middleware) => router().middleware(...middleware),
24
+ use: (...middleware) => router().use(...middleware),
25
+ name: (name) => router().name(name),
26
+ url: (name, params) => router().url(name, params),
27
+ };
28
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"AAYA,IAAI,SAAkC,CAAC;AAEvC,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,SAAS,GAAG,GAAG,CAAC;AAClB,CAAC;AAED,SAAS,MAAM;IACb,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;AAC5B,CAAC;AAID,SAAS,SAAS,CAAC,OAAoB;IACrC,OAAO,OAAuB,CAAC;AACjC,CAAC;AAiBD,MAAM,CAAC,MAAM,KAAK,GAAgB;IAChC,MAAM,EAAE,CAAC,MAAc,EAAuB,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IACxE,UAAU,EAAE,CAAC,MAAc,EAAuB,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;IAChF,KAAK,EAAE,CAAC,QAAqC,EAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpF,GAAG,EAAE,CAAC,OAAe,EAAE,OAAoB,EAAY,EAAE,CACvD,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,EAAE,CAAC,OAAe,EAAE,OAAoB,EAAY,EAAE,CACxD,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,GAAG,EAAE,CAAC,OAAe,EAAE,OAAoB,EAAY,EAAE,CACvD,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3C,KAAK,EAAE,CAAC,OAAe,EAAE,OAAoB,EAAY,EAAE,CACzD,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,OAAe,EAAE,OAAoB,EAAY,EAAE,CAC1D,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9C,UAAU,EAAE,CAAC,GAAG,UAA6B,EAAwB,EAAE,CACrE,MAAM,EAAE,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IACpC,GAAG,EAAE,CAAC,GAAG,UAA6B,EAAY,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;IAChF,IAAI,EAAE,CAAC,IAAY,EAAY,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IACrD,GAAG,EAAE,CAAC,IAAY,EAAE,MAAO,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;CAC3D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { HttpKernel } from './http-kernel.js';
2
+ export interface ServeOptions {
3
+ port?: number;
4
+ hostname?: string;
5
+ }
6
+ export declare function serve(kernel: HttpKernel, options?: ServeOptions): Promise<void>;
7
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAsB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzF"}
package/dist/server.js ADDED
@@ -0,0 +1,18 @@
1
+ import { serveWithNode } from './adapters/node-server.js';
2
+ export async function serve(kernel, options = {}) {
3
+ const port = options.port ?? (Number(process.env.TYRAVEL_PORT) || 3000);
4
+ const hostname = options.hostname ?? (process.env.TYRAVEL_HOST || '127.0.0.1');
5
+ const bun = globalThis.Bun;
6
+ if (bun) {
7
+ const server = bun.serve({
8
+ hostname,
9
+ port,
10
+ fetch: (request) => kernel.handle(request),
11
+ });
12
+ console.log(`Tyravel server running at http://${server.hostname}:${server.port}`);
13
+ return;
14
+ }
15
+ const server = await serveWithNode(kernel, hostname, port);
16
+ console.log(`Tyravel server running at http://${server.hostname}:${server.port}`);
17
+ }
18
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAgB1D,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAkB,EAAE,UAAwB,EAAE;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAI,UAAiC,CAAC,GAAG,CAAC;IAEnD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC;YACvB,QAAQ;YACR,IAAI;YACJ,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;SAC3C,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Application } from './application.js';
2
+ export declare abstract class ServiceProvider {
3
+ protected readonly app: Application;
4
+ constructor(app: Application);
5
+ register(): void | Promise<void>;
6
+ boot(): void | Promise<void>;
7
+ }
8
+ //# sourceMappingURL=service-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-provider.d.ts","sourceRoot":"","sources":["../src/service-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,8BAAsB,eAAe;IACvB,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW;gBAAhB,GAAG,EAAE,WAAW;IAE/C,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhC,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAC7B"}
@@ -0,0 +1,9 @@
1
+ export class ServiceProvider {
2
+ app;
3
+ constructor(app) {
4
+ this.app = app;
5
+ }
6
+ register() { }
7
+ boot() { }
8
+ }
9
+ //# sourceMappingURL=service-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-provider.js","sourceRoot":"","sources":["../src/service-provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,eAAe;IACJ;IAA/B,YAA+B,GAAgB;QAAhB,QAAG,GAAH,GAAG,CAAa;IAAG,CAAC;IAEnD,QAAQ,KAA0B,CAAC;IAEnC,IAAI,KAA0B,CAAC;CAChC"}
@@ -0,0 +1,5 @@
1
+ import { ServiceProvider } from './service-provider.js';
2
+ export declare class ViewServiceProvider extends ServiceProvider {
3
+ register(): void;
4
+ }
5
+ //# sourceMappingURL=view-service-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-service-provider.d.ts","sourceRoot":"","sources":["../src/view-service-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOxD,qBAAa,mBAAoB,SAAQ,eAAe;IAC7C,QAAQ;CAQlB"}
@@ -0,0 +1,16 @@
1
+ import { ViewEngine } from '@tyravel/views';
2
+ import { ServiceProvider } from './service-provider.js';
3
+ const DEFAULT_VIEW_CONFIG = {
4
+ path: 'resources/views',
5
+ extension: '.tyr',
6
+ };
7
+ export class ViewServiceProvider extends ServiceProvider {
8
+ register() {
9
+ const config = this.app.make('config');
10
+ const viewConfig = config.get('views') ?? DEFAULT_VIEW_CONFIG;
11
+ const engine = new ViewEngine(this.app.basePath, viewConfig);
12
+ this.app.instance('view', engine);
13
+ this.app.singleton(ViewEngine, () => engine);
14
+ }
15
+ }
16
+ //# sourceMappingURL=view-service-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-service-provider.js","sourceRoot":"","sources":["../src/view-service-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,mBAAmB,GAAe;IACtC,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC7C,QAAQ;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAmB,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAa,OAAO,CAAC,IAAI,mBAAmB,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAE7D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF"}
package/dist/view.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { ViewContext } from '@tyravel/views';
2
+ import type { Application } from './application.js';
3
+ export declare function setViewApplication(app: Application): void;
4
+ export interface ViewFacade {
5
+ render(name: string, context?: ViewContext): Promise<string>;
6
+ exists(name: string): boolean;
7
+ }
8
+ export declare const View: ViewFacade;
9
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAEzD;AAWD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,IAAI,EAAE,UAGlB,CAAC"}
package/dist/view.js ADDED
@@ -0,0 +1,15 @@
1
+ let activeApp;
2
+ export function setViewApplication(app) {
3
+ activeApp = app;
4
+ }
5
+ function viewEngine() {
6
+ if (!activeApp) {
7
+ throw new Error('View facade is not ready. Boot the application and register ViewServiceProvider first.');
8
+ }
9
+ return activeApp.make('view');
10
+ }
11
+ export const View = {
12
+ render: (name, context) => viewEngine().render(name, context),
13
+ exists: (name) => viewEngine().exists(name),
14
+ };
15
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAIA,IAAI,SAAkC,CAAC;AAEvC,MAAM,UAAU,kBAAkB,CAAC,GAAgB;IACjD,SAAS,GAAG,GAAG,CAAC;AAClB,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAa,MAAM,CAAC,CAAC;AAC5C,CAAC;AAOD,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;IAC7D,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;CAC5C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@tyravel/core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc -p tsconfig.json",
15
+ "typecheck": "tsc -p tsconfig.json --noEmit"
16
+ },
17
+ "dependencies": {
18
+ "@tyravel/auth": "0.1.0",
19
+ "@tyravel/cache": "0.1.0",
20
+ "@tyravel/config": "0.1.0",
21
+ "@tyravel/database": "0.1.0",
22
+ "@tyravel/events": "0.1.0",
23
+ "@tyravel/container": "0.1.0",
24
+ "@tyravel/http": "0.1.0",
25
+ "@tyravel/mail": "0.1.0",
26
+ "@tyravel/notifications": "0.1.0",
27
+ "@tyravel/queue": "0.1.0",
28
+ "@tyravel/validation": "0.1.0",
29
+ "@tyravel/views": "0.1.0"
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "description": "Tyravel application kernel, providers, and facades",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/thesimonharms/tyravel.git",
39
+ "directory": "packages/core"
40
+ },
41
+ "publishConfig": {
42
+ "access": "public"
43
+ },
44
+ "engines": {
45
+ "node": ">=22"
46
+ }
47
+ }