@mostajs/ticketing 3.0.0 → 3.0.2

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.
@@ -0,0 +1,8 @@
1
+ export declare const ticketsHandlers: {
2
+ GET: any;
3
+ POST: any;
4
+ };
5
+ export declare const scanHandlers: {
6
+ POST: any;
7
+ };
8
+ //# sourceMappingURL=route-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-handlers.d.ts","sourceRoot":"","sources":["../../lib/route-handlers.ts"],"names":[],"mappings":"AAwDA,eAAO,MAAM,eAAe;SAAyB,GAAG;UAAwB,GAAG;CAAE,CAAA;AACrF,eAAO,MAAM,YAAY;UAAwB,GAAG;CAAE,CAAA"}
@@ -0,0 +1,51 @@
1
+ // @mostajs/ticketing — Self-contained route handlers for runtime registration
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ // Phase 5: Handlers are bare — permission checking is done by the catch-all.
4
+ import { getDialect } from '@mostajs/orm';
5
+ import { TicketRepository } from '../repositories/ticket.repository.js';
6
+ import { ScanLogRepository } from '../repositories/scan-log.repository.js';
7
+ import { createTicketsHandler } from '../api/tickets.route.js';
8
+ import { createScanHandler } from '../api/scan.route.js';
9
+ // No-op auth — the catch-all route handler enforces permissions.
10
+ const noAuth = async (_req, _perm) => ({ error: null, userId: '', session: { user: {} } });
11
+ // Lazy repo factories — own repos
12
+ const ticketRepo = async () => new TicketRepository(await getDialect());
13
+ const scanLogRepo = async () => new ScanLogRepository(await getDialect());
14
+ // Cross-module repos — lazy dynamic import from @mostajs/secu
15
+ // These repos are registered by the secu module; we instantiate them directly.
16
+ async function crossModuleRepo(repoFile, className) {
17
+ const dialect = await getDialect();
18
+ // Dynamic import from secu's dist (available at runtime when secu is installed)
19
+ const mod = await import(`@mostajs/secu/dist/repositories/${repoFile}.js`);
20
+ return new mod[className](dialect);
21
+ }
22
+ const clientRepo = () => crossModuleRepo('client.repository', 'ClientRepository');
23
+ const clientAccessRepo = () => crossModuleRepo('client-access.repository', 'ClientAccessRepository');
24
+ const activityRepo = () => crossModuleRepo('activity.repository', 'ActivityRepository');
25
+ // ── Tickets handler ─────────────────────────────────────────────────
26
+ const tickets = createTicketsHandler({
27
+ checkAuth: noAuth,
28
+ getRepositories: async () => ({
29
+ ticketRepo: await ticketRepo(),
30
+ clientRepo: await clientRepo(),
31
+ clientAccessRepo: await clientAccessRepo(),
32
+ activityRepo: await activityRepo(),
33
+ }),
34
+ });
35
+ // ── Scan handler ────────────────────────────────────────────────────
36
+ const scan = createScanHandler({
37
+ checkAuth: async (req) => {
38
+ const userId = req.headers.get('x-auth-user-id') || '';
39
+ return { error: null, userId };
40
+ },
41
+ getRepositories: async () => ({
42
+ ticketRepo: await ticketRepo(),
43
+ scanLogRepo: await scanLogRepo(),
44
+ clientRepo: await clientRepo(),
45
+ clientAccessRepo: await clientAccessRepo(),
46
+ }),
47
+ });
48
+ // ── Exports (RouteHandler-compatible) ────────────────────────────────
49
+ export const ticketsHandlers = { GET: tickets.GET, POST: tickets.POST };
50
+ export const scanHandlers = { POST: scan.POST };
51
+ //# sourceMappingURL=route-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-handlers.js","sourceRoot":"","sources":["../../lib/route-handlers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wCAAwC;AACxC,6EAA6E;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,iEAAiE;AACjE,MAAM,MAAM,GAAG,KAAK,EAAE,IAAa,EAAE,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AAErH,kCAAkC;AAClC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;AACvE,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,iBAAiB,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;AAEzE,8DAA8D;AAC9D,+EAA+E;AAC/E,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,SAAiB;IAChE,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAA;IAClC,gFAAgF;IAChF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mCAAmC,QAAQ,KAAK,CAAC,CAAA;IAC1E,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;AACjF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,0BAA0B,EAAE,wBAAwB,CAAC,CAAA;AACpG,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAA;AAEvF,uEAAuE;AACvE,MAAM,OAAO,GAAG,oBAAoB,CAAC;IACnC,SAAS,EAAE,MAAa;IACxB,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAM,UAAU,EAAE;QAC9B,UAAU,EAAE,MAAM,UAAU,EAAE;QAC9B,gBAAgB,EAAE,MAAM,gBAAgB,EAAE;QAC1C,YAAY,EAAE,MAAM,YAAY,EAAE;KACnC,CAAC;CACH,CAAC,CAAA;AAEF,uEAAuE;AACvE,MAAM,IAAI,GAAG,iBAAiB,CAAC;IAC7B,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QACtD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,MAAM,EAAE,CAAA;IACzC,CAAC;IACD,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAM,UAAU,EAAE;QAC9B,WAAW,EAAE,MAAM,WAAW,EAAE;QAChC,UAAU,EAAE,MAAM,UAAU,EAAE;QAC9B,gBAAgB,EAAE,MAAM,gBAAgB,EAAE;KAC3C,CAAC;CACH,CAAC,CAAA;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAW,EAAE,CAAA;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAW,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAWxD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CA4ClF"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAYxD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAiDlF"}
package/dist/register.js CHANGED
@@ -7,6 +7,7 @@ import { TicketRepository } from './repositories/ticket.repository';
7
7
  import { ScanLogRepository } from './repositories/scan-log.repository';
8
8
  import { ticketingMenuContribution } from './lib/menu';
9
9
  import { TICKETING_PERMISSIONS, TICKETING_PERMISSION_DEFINITIONS, TICKETING_CATEGORY_DEFINITIONS } from './lib/permissions';
10
+ import { ticketsHandlers, scanHandlers } from './lib/route-handlers';
10
11
  import TicketsPage from './pages/TicketsPage';
11
12
  import ScanPage from './pages/ScanPage';
12
13
  export function register(registry) {
@@ -37,6 +38,10 @@ export function register(registry) {
37
38
  definitions: TICKETING_PERMISSION_DEFINITIONS,
38
39
  categories: TICKETING_CATEGORY_DEFINITIONS,
39
40
  },
41
+ routes: [
42
+ { path: 'tickets', handlers: ticketsHandlers, permission: { GET: 'ticket:view', POST: 'ticket:create' } },
43
+ { path: 'scan', handlers: scanHandlers, permission: 'scan:validate' },
44
+ ],
40
45
  pages: [
41
46
  { path: 'tickets', component: TicketsPage, permission: 'ticket:view' },
42
47
  { path: 'scan', component: ScanPage, permission: 'scan:validate' },
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wCAAwC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA;AAC3H,OAAO,WAAW,MAAM,qBAAqB,CAAA;AAC7C,OAAO,QAAQ,MAAM,kBAAkB,CAAA;AAEvC,MAAM,UAAU,QAAQ,CAAC,QAAmD;IAC1E,QAAQ,CAAC,QAAQ,CAAC;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;YACvC,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,oEAAoE;YACjF,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oBAAoB;SAC/B;QAED,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE;YAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE;SAC3C;QAED,YAAY,EAAE;YACZ,UAAU,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,OAAgB,CAAC;YACxE,WAAW,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,OAAgB,CAAC;SAC3E;QAED,WAAW,EAAE;YACX,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,gCAAgC;YAC7C,UAAU,EAAE,8BAA8B;SAC3C;QAED,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE;YACtE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE;SACnE;QAED,IAAI,EAAE,yBAAyB;QAE/B,IAAI,EAAE;YACJ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE;YACxF,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mDAAmD,EAAE;SACnF;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wCAAwC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA;AAC3H,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,WAAW,MAAM,qBAAqB,CAAA;AAC7C,OAAO,QAAQ,MAAM,kBAAkB,CAAA;AAEvC,MAAM,UAAU,QAAQ,CAAC,QAAmD;IAC1E,QAAQ,CAAC,QAAQ,CAAC;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;YACvC,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,oEAAoE;YACjF,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oBAAoB;SAC/B;QAED,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE;YACxC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE;YAC1C,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE;SAC3C;QAED,YAAY,EAAE;YACZ,UAAU,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,OAAgB,CAAC;YACxE,WAAW,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,OAAgB,CAAC;SAC3E;QAED,WAAW,EAAE;YACX,WAAW,EAAE,qBAAqB;YAClC,WAAW,EAAE,gCAAgC;YAC7C,UAAU,EAAE,8BAA8B;SAC3C;QAED,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE;YACzG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE;SACtE;QAED,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE;YACtE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE;SACnE;QAED,IAAI,EAAE,yBAAyB;QAE/B,IAAI,EAAE;YACJ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE;YACxF,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mDAAmD,EAAE;SACnF;KACF,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/ticketing",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "Ticketing module — tickets, scan, face recognition, quota management (merged scan+face)",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "MIT",
@@ -103,6 +103,7 @@
103
103
  "import": "./dist/api/detect.route.js",
104
104
  "default": "./dist/api/detect.route.js"
105
105
  },
106
+ "./i18n/*": "./i18n/*",
106
107
  "./api/recognize.route": {
107
108
  "types": "./dist/api/recognize.route.d.ts",
108
109
  "import": "./dist/api/recognize.route.js",