@onroad/core 4.0.0-alpha.21 → 4.0.0-alpha.22

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.
@@ -17,10 +17,10 @@ export declare abstract class AbstractController<TService = unknown> {
17
17
  setService(service: TService): void;
18
18
  getRoutes(): Record<string, RouteConfig>;
19
19
  /**
20
- * Extracts a common context prefix (e.g. "/acao") from explicitly defined routes.
21
- * Returns null when no prefix can be inferred, preserving default CRUD behaviour.
20
+ * Derives a URL prefix from the service class name.
21
+ * e.g. "TurnoService" "/turno", "BranchLevelService" "/branchLevel"
22
22
  */
23
- private inferContextPrefix;
23
+ private inferPrefixFromServiceName;
24
24
  getServiceClass(): Constructor<TService>;
25
25
  create(req: any, res: any): Promise<any>;
26
26
  readAll(req: any, res: any): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../src/core/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IACxC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CACrC;AAED,8BAAsB,kBAAkB,CAAC,QAAQ,GAAG,OAAO;IACzD,SAAS,CAAC,OAAO,EAAG,QAAQ,CAAA;IAC5B,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;gBAEhC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC;IAI9C,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAInC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IA2BxC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAU1B,eAAe,IAAI,WAAW,CAAC,QAAQ,CAAC;IAIlC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAOzB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAO1B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAOvB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAOzB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAMhC"}
1
+ {"version":3,"file":"AbstractController.d.ts","sourceRoot":"","sources":["../../src/core/AbstractController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IACxC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CACrC;AAED,8BAAsB,kBAAkB,CAAC,QAAQ,GAAG,OAAO;IACzD,SAAS,CAAC,OAAO,EAAG,QAAQ,CAAA;IAC5B,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;gBAEhC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC;IAI9C,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI;IAInC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IA4BxC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAOlC,eAAe,IAAI,WAAW,CAAC,QAAQ,CAAC;IAIlC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAOzB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAO1B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAOvB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAOzB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAMhC"}
@@ -9,10 +9,11 @@ export class AbstractController {
9
9
  }
10
10
  getRoutes() {
11
11
  const explicitRoutes = this.config.routes ?? {};
12
- // Infer route context prefix from explicit route paths.
13
- // When controllers use @Controller("/") with explicit paths like "/acao/:id",
14
- // auto-CRUD routes must share the same prefix to avoid catch-all "/:id".
15
- const prefix = this.inferContextPrefix(explicitRoutes);
12
+ // Derive the route context prefix from the service class name.
13
+ // e.g. TurnoService /turno, BranchLevelService /branchLevel
14
+ // When controllers use @Controller("/"), this prevents auto-CRUD routes from
15
+ // becoming catch-all /:id that intercept unrelated requests.
16
+ const prefix = this.inferPrefixFromServiceName(this.config.service.name);
16
17
  const autoConfig = prefix
17
18
  ? {
18
19
  create: { method: "post", path: prefix },
@@ -31,18 +32,15 @@ export class AbstractController {
31
32
  return { ...autoConfig, ...explicitRoutes };
32
33
  }
33
34
  /**
34
- * Extracts a common context prefix (e.g. "/acao") from explicitly defined routes.
35
- * Returns null when no prefix can be inferred, preserving default CRUD behaviour.
35
+ * Derives a URL prefix from the service class name.
36
+ * e.g. "TurnoService" "/turno", "BranchLevelService" "/branchLevel"
36
37
  */
37
- inferContextPrefix(routes) {
38
- for (const route of Object.values(routes)) {
39
- if (route.path) {
40
- const match = route.path.match(/^(\/[a-zA-Z][a-zA-Z0-9_-]*)/);
41
- if (match)
42
- return match[1];
43
- }
44
- }
45
- return null;
38
+ inferPrefixFromServiceName(name) {
39
+ const match = name.match(/^([A-Z][a-zA-Z0-9]*)Service$/);
40
+ if (!match)
41
+ return null;
42
+ const entity = match[1];
43
+ return "/" + entity.charAt(0).toLowerCase() + entity.slice(1);
46
44
  }
47
45
  getServiceClass() {
48
46
  return this.config.service;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../src/core/AbstractController.ts"],"names":[],"mappings":"AAeA,MAAM,OAAgB,kBAAkB;IAC5B,OAAO,CAAW;IAClB,MAAM,CAA4B;IAE5C,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,UAAU,CAAC,OAAiB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,SAAS;QACP,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAE/C,wDAAwD;QACxD,8EAA8E;QAC9E,yEAAyE;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;QAEtD,MAAM,UAAU,GAAgC,MAAM;YACpD,CAAC,CAAC;gBACE,MAAM,EAAG,EAAE,MAAM,EAAE,MAAM,EAAI,IAAI,EAAE,MAAM,EAAE;gBAC3C,MAAM,EAAG,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,GAAG,MAAM,MAAM,EAAE;gBACpD,IAAI,EAAK,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,GAAG,MAAM,MAAM,EAAE;gBACpD,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,MAAM,EAAE;gBAC3C,MAAM,EAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,EAAE;aACrD;YACH,CAAC,CAAC;gBACE,MAAM,EAAG,EAAE,MAAM,EAAE,MAAM,EAAI,IAAI,EAAE,GAAG,EAAE;gBACxC,MAAM,EAAG,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,MAAM,EAAE;gBAC3C,IAAI,EAAK,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,MAAM,EAAE;gBAC3C,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,GAAG,EAAE;gBACxC,MAAM,EAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;aAC5C,CAAA;QAEL,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,MAAmC;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;gBAC7D,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ,EAAE,GAAQ;QAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxE,OAAQ,IAAI,CAAC,OAAe,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAQ,EAAE,GAAQ;QAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrE,OAAQ,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9D,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../src/core/AbstractController.ts"],"names":[],"mappings":"AAeA,MAAM,OAAgB,kBAAkB;IAC5B,OAAO,CAAW;IAClB,MAAM,CAA4B;IAE5C,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,UAAU,CAAC,OAAiB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,SAAS;QACP,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAE/C,+DAA+D;QAC/D,gEAAgE;QAChE,6EAA6E;QAC7E,6DAA6D;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAExE,MAAM,UAAU,GAAgC,MAAM;YACpD,CAAC,CAAC;gBACE,MAAM,EAAG,EAAE,MAAM,EAAE,MAAM,EAAI,IAAI,EAAE,MAAM,EAAE;gBAC3C,MAAM,EAAG,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,GAAG,MAAM,MAAM,EAAE;gBACpD,IAAI,EAAK,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,GAAG,MAAM,MAAM,EAAE;gBACpD,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,MAAM,EAAE;gBAC3C,MAAM,EAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,EAAE;aACrD;YACH,CAAC,CAAC;gBACE,MAAM,EAAG,EAAE,MAAM,EAAE,MAAM,EAAI,IAAI,EAAE,GAAG,EAAE;gBACxC,MAAM,EAAG,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,MAAM,EAAE;gBAC3C,IAAI,EAAK,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,MAAM,EAAE;gBAC3C,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAK,IAAI,EAAE,GAAG,EAAE;gBACxC,MAAM,EAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;aAC5C,CAAA;QAEL,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACK,0BAA0B,CAAC,IAAY;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACxD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACvB,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ,EAAE,GAAQ;QAC9B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxE,OAAQ,IAAI,CAAC,OAAe,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAQ,EAAE,GAAQ;QAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrE,OAAQ,IAAI,CAAC,OAAe,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9D,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,IAAI,CAAC,OAAe,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpD,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC,CAAA;IAC7E,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onroad/core",
3
- "version": "4.0.0-alpha.21",
3
+ "version": "4.0.0-alpha.22",
4
4
  "description": "TypeScript backend framework — DI Container, Filter Chain, EventBus, Provider Pattern",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",