@servicelabsco/slabs-access-manager 1.0.71 → 1.0.74

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 (91) hide show
  1. package/dist/access/controllers/custom.field.controller.d.ts +2 -0
  2. package/dist/access/controllers/custom.field.controller.js +28 -0
  3. package/dist/access/controllers/custom.field.controller.js.map +1 -1
  4. package/dist/access/controllers/report.view.controller.js +1 -1
  5. package/dist/access/controllers/report.view.controller.js.map +1 -1
  6. package/dist/access/dtos/add.custom.field.dto.d.ts +1 -0
  7. package/dist/access/dtos/add.custom.field.dto.js +6 -0
  8. package/dist/access/dtos/add.custom.field.dto.js.map +1 -1
  9. package/dist/access/dtos/index.d.ts +1 -0
  10. package/dist/access/dtos/index.js +1 -0
  11. package/dist/access/dtos/index.js.map +1 -1
  12. package/dist/access/dtos/modify.custom.field.dto.d.ts +8 -0
  13. package/dist/access/dtos/modify.custom.field.dto.js +54 -0
  14. package/dist/access/dtos/modify.custom.field.dto.js.map +1 -0
  15. package/dist/access/es6.classes.d.ts +4 -4
  16. package/dist/access/es6.classes.js +8 -6
  17. package/dist/access/es6.classes.js.map +1 -1
  18. package/dist/access/libraries/process.custom.field.creation.js +2 -0
  19. package/dist/access/libraries/process.custom.field.creation.js.map +1 -1
  20. package/dist/access/middlewares/mcp.rate.limit.middleware.d.ts +2 -0
  21. package/dist/access/middlewares/mcp.rate.limit.middleware.js +27 -6
  22. package/dist/access/middlewares/mcp.rate.limit.middleware.js.map +1 -1
  23. package/dist/access/services/oauth.as.service.d.ts +1 -0
  24. package/dist/access/services/oauth.as.service.js +1 -0
  25. package/dist/access/services/oauth.as.service.js.map +1 -1
  26. package/dist/access/services/report.view.service.js +1 -1
  27. package/dist/access/services/report.view.service.js.map +1 -1
  28. package/dist/accessUtility/es6.classes.d.ts +2 -3
  29. package/dist/accessUtility/es6.classes.js +0 -2
  30. package/dist/accessUtility/es6.classes.js.map +1 -1
  31. package/dist/accessUtility/libraries/json.evaluator.d.ts +4 -1
  32. package/dist/accessUtility/libraries/json.evaluator.js +77 -22
  33. package/dist/accessUtility/libraries/json.evaluator.js.map +1 -1
  34. package/dist/accessUtility/libraries/process.report.listing.d.ts +1 -1
  35. package/dist/accessUtility/services/es6.service.d.ts +1 -3
  36. package/dist/accessUtility/services/es6.service.js +2 -6
  37. package/dist/accessUtility/services/es6.service.js.map +1 -1
  38. package/dist/accessUtility/services/index.d.ts +0 -1
  39. package/dist/accessUtility/services/index.js +0 -1
  40. package/dist/accessUtility/services/index.js.map +1 -1
  41. package/dist/accessWorkflow/dtos/workflow.approval.payload.dto.d.ts +1 -0
  42. package/dist/accessWorkflow/dtos/workflow.approval.payload.dto.js.map +1 -1
  43. package/dist/accessWorkflow/enums/approval.step.type.enum.d.ts +3 -1
  44. package/dist/accessWorkflow/enums/approval.step.type.enum.js +2 -0
  45. package/dist/accessWorkflow/enums/approval.step.type.enum.js.map +1 -1
  46. package/dist/accessWorkflow/libraries/process.approval.rule.data.d.ts +2 -0
  47. package/dist/accessWorkflow/libraries/process.approval.rule.data.js +36 -0
  48. package/dist/accessWorkflow/libraries/process.approval.rule.data.js.map +1 -1
  49. package/dist/app.controller.d.ts +1 -2
  50. package/dist/app.controller.js +1 -2
  51. package/dist/app.controller.js.map +1 -1
  52. package/dist/config/entity.constants.d.ts +2 -0
  53. package/dist/config/entity.constants.js +2 -0
  54. package/dist/config/entity.constants.js.map +1 -1
  55. package/dist/development/controllers/development.catalog.controller.d.ts +1 -3
  56. package/dist/development/services/admin.report.view.service.d.ts +2 -1
  57. package/dist/development/services/admin.report.view.service.js.map +1 -1
  58. package/dist/mcp/admin/tools/catalog/admin.view.businesses.tool.js.map +1 -1
  59. package/dist/mcp/admin/tools/catalog/admin.views.list.tool.js.map +1 -1
  60. package/dist/mcp/auth/index.d.ts +2 -0
  61. package/dist/mcp/auth/index.js +2 -0
  62. package/dist/mcp/auth/index.js.map +1 -1
  63. package/dist/mcp/auth/mcp.execution.context.d.ts +8 -0
  64. package/dist/mcp/auth/mcp.execution.context.js +44 -0
  65. package/dist/mcp/auth/mcp.execution.context.js.map +1 -0
  66. package/dist/mcp/auth/mcp.scope.policy.d.ts +12 -0
  67. package/dist/mcp/auth/mcp.scope.policy.js +28 -0
  68. package/dist/mcp/auth/mcp.scope.policy.js.map +1 -0
  69. package/dist/mcp/es6.classes.d.ts +7 -2
  70. package/dist/mcp/es6.classes.js +9 -1
  71. package/dist/mcp/es6.classes.js.map +1 -1
  72. package/dist/mcp/http/business.mcp.controller.d.ts +1 -3
  73. package/dist/mcp/http/business.mcp.controller.js +7 -19
  74. package/dist/mcp/http/business.mcp.controller.js.map +1 -1
  75. package/dist/mcp/interfaces/mcp.tool.interface.d.ts +1 -0
  76. package/dist/mcp/slabs.mcp.server.js +5 -1
  77. package/dist/mcp/slabs.mcp.server.js.map +1 -1
  78. package/dist/mcp/tools/mcp.tool.d.ts +1 -0
  79. package/dist/mcp/tools/mcp.tool.js +9 -0
  80. package/dist/mcp/tools/mcp.tool.js.map +1 -1
  81. package/dist/mcp/tools/view.query.tool.d.ts +4 -4
  82. package/dist/mcp/tools/views.list.tool.d.ts +1 -1
  83. package/dist/mcp/tools/views.list.tool.js +1 -1
  84. package/dist/mcp/tools/views.list.tool.js.map +1 -1
  85. package/dist/migrations/1788407457838-AddBusinessUnitApprovalStepTypeDataSeederTable.d.ts +6 -0
  86. package/dist/migrations/1788407457838-AddBusinessUnitApprovalStepTypeDataSeederTable.js +36 -0
  87. package/dist/migrations/1788407457838-AddBusinessUnitApprovalStepTypeDataSeederTable.js.map +1 -0
  88. package/package.json +4 -1
  89. package/dist/accessUtility/services/pdf.service.d.ts +0 -14
  90. package/dist/accessUtility/services/pdf.service.js +0 -89
  91. package/dist/accessUtility/services/pdf.service.js.map +0 -1
@@ -14,8 +14,9 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.BusinessMcpController = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
- const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
18
17
  const extract_client_credentials_1 = require("../../access/libraries/extract.client.credentials");
18
+ const mcp_execution_context_1 = require("../auth/mcp.execution.context");
19
+ const mcp_scope_policy_1 = require("../auth/mcp.scope.policy");
19
20
  const client_credential_auth_1 = require("../client/client.credential.auth");
20
21
  const mcp_constants_1 = require("../mcp.constants");
21
22
  const tool_registry_1 = require("../tools/tool.registry");
@@ -45,35 +46,22 @@ let BusinessMcpController = class BusinessMcpController {
45
46
  return unauthorized_mcp_response_1.UnauthorizedMcpResponse.unauthorized(res, 'Missing Authorization Bearer token or x-client-id / x-client-secret headers.');
46
47
  }
47
48
  const auth = new client_credential_auth_1.ClientCredentialAuth(creds.clientId, creds.clientSecret);
48
- const scopes = this.callerScopes();
49
+ const context = mcp_execution_context_1.McpExecutionContext.fromAuth();
49
50
  return this.handler.handle(req, res, {
50
51
  name: (0, mcp_constants_1.getMcpServerName)(),
51
52
  auth,
52
- tools: (client) => this.toolsFor(client, scopes),
53
+ tools: (client) => mcp_scope_policy_1.McpScopePolicy.filter(this.allTools(client), context),
53
54
  });
54
55
  }
55
- toolsFor(client, scopes) {
56
- const merged = [...new tool_registry_1.ToolRegistry(client).tools(), ...(0, mcp_constants_1.getHostMcpRegistries)().flatMap((factory) => factory(client))];
57
- return merged.filter((tool) => this.scopeAllows(tool, scopes));
58
- }
59
- scopeAllows(tool, scopes) {
60
- if (scopes.includes('mcp'))
61
- return true;
62
- const required = tool.requiredScopes || [];
63
- if (!required.length)
64
- return true;
65
- return required.some((scope) => scopes.includes(scope));
66
- }
67
- callerScopes() {
68
- const user = nestjs_utility_services_1.Auth.user();
69
- const scope = user?.auth_attributes?.scope;
70
- return Array.isArray(scope) && scope.length ? scope : ['mcp'];
56
+ allTools(client) {
57
+ return [...new tool_registry_1.ToolRegistry(client).tools(), ...(0, mcp_constants_1.getHostMcpRegistries)().flatMap((factory) => factory(client))];
71
58
  }
72
59
  keepAlive(req, res) {
73
60
  res.status(200);
74
61
  res.setHeader('Content-Type', 'text/event-stream');
75
62
  res.setHeader('Cache-Control', 'no-cache, no-transform');
76
63
  res.setHeader('Connection', 'keep-alive');
64
+ res.setHeader('X-Accel-Buffering', 'no');
77
65
  res.flushHeaders?.();
78
66
  res.write(': ping\n\n');
79
67
  const timer = setInterval(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"business.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/business.mcp.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"business.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/business.mcp.controller.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,6 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  export interface McpToolInterface {
3
3
  readonly name: string;
4
4
  readonly requiredScopes?: string[];
5
+ readonly isReadOnly?: boolean;
5
6
  register(server: McpServer): void;
6
7
  }
@@ -2,9 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SlabsMcpServer = void 0;
4
4
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const SERVER_INSTRUCTIONS = [
6
+ 'The reporting catalog is dynamic: new views and columns appear at any time without reconnection.',
7
+ "If a question doesn't fit the views you've already seen, call views_list again before concluding it can't be answered.",
8
+ ].join(' ');
5
9
  class SlabsMcpServer {
6
10
  constructor(name, tools) {
7
- this.server = new mcp_js_1.McpServer({ name, version: '1.0.0' });
11
+ this.server = new mcp_js_1.McpServer({ name, version: '1.0.0' }, { instructions: SERVER_INSTRUCTIONS });
8
12
  tools.forEach((tool) => tool.register(this.server));
9
13
  }
10
14
  instance() {
@@ -1 +1 @@
1
- {"version":3,"file":"slabs.mcp.server.js","sourceRoot":"","sources":["../../src/mcp/slabs.mcp.server.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AASpE,MAAa,cAAc;IAGvB,YAAY,IAAY,EAAE,KAAyB;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAXD,wCAWC"}
1
+ {"version":3,"file":"slabs.mcp.server.js","sourceRoot":"","sources":["../../src/mcp/slabs.mcp.server.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AASpE,MAAM,mBAAmB,GAAG;IACxB,kGAAkG;IAClG,wHAAwH;CAC3H,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAQZ,MAAa,cAAc;IAGvB,YAAY,IAAY,EAAE,KAAyB;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC/F,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AAXD,wCAWC"}
@@ -14,6 +14,7 @@ export declare abstract class McpTool<TArgs = Record<string, unknown>> implement
14
14
  protected readonly idempotent: boolean;
15
15
  readonly requiredScopes: string[];
16
16
  constructor(client: SlabsApiClient);
17
+ get isReadOnly(): boolean;
17
18
  abstract execute(args: TArgs): Promise<McpToolResultInterface>;
18
19
  register(server: McpServer): void;
19
20
  private dispatch;
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.McpTool = void 0;
4
4
  const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
5
5
  const zod_1 = require("zod");
6
+ const mcp_execution_context_1 = require("../auth/mcp.execution.context");
6
7
  const mcp_idempotency_store_1 = require("../auth/mcp.idempotency.store");
8
+ const mcp_scope_policy_1 = require("../auth/mcp.scope.policy");
7
9
  const slabs_api_error_1 = require("../client/slabs.api.error");
8
10
  class McpTool {
9
11
  constructor(client) {
@@ -13,6 +15,9 @@ class McpTool {
13
15
  this.idempotent = false;
14
16
  this.requiredScopes = [];
15
17
  }
18
+ get isReadOnly() {
19
+ return this.readOnly;
20
+ }
16
21
  register(server) {
17
22
  const inputSchema = this.destructive
18
23
  ? {
@@ -31,6 +36,10 @@ class McpTool {
31
36
  }, async (args) => this.dispatch(args));
32
37
  }
33
38
  async dispatch(args) {
39
+ const context = mcp_execution_context_1.McpExecutionContext.fromAuth();
40
+ if (!mcp_scope_policy_1.McpScopePolicy.allows(this, context)) {
41
+ return { content: [{ type: 'text', text: JSON.stringify(mcp_scope_policy_1.McpScopePolicy.denial(this.name, context)) }], isError: true };
42
+ }
34
43
  if (this.destructive && args?.confirm !== true) {
35
44
  return {
36
45
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/mcp.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/mcp.tool.ts"],"names":[],"mappings":"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"}
@@ -45,18 +45,18 @@ export declare class ViewQueryTool extends McpTool<ViewQueryInput> {
45
45
  bucket: z.ZodOptional<z.ZodEnum<{
46
46
  year: "year";
47
47
  week: "week";
48
- day: "day";
49
48
  month: "month";
49
+ day: "day";
50
50
  quarter: "quarter";
51
51
  }>>;
52
52
  }, z.core.$strip>>>;
53
53
  aggregates: z.ZodOptional<z.ZodArray<z.ZodObject<{
54
54
  fn: z.ZodEnum<{
55
- count: "count";
56
- max: "max";
57
55
  min: "min";
58
- sum: "sum";
56
+ max: "max";
57
+ count: "count";
59
58
  avg: "avg";
59
+ sum: "sum";
60
60
  count_distinct: "count_distinct";
61
61
  }>;
62
62
  column: z.ZodOptional<z.ZodString>;
@@ -3,7 +3,7 @@ import { McpTool } from './mcp.tool';
3
3
  export declare class ViewsListTool extends McpTool<Record<string, never>> {
4
4
  readonly name = "views_list";
5
5
  readonly title = "List analytical views";
6
- readonly description = "Discover the analytical views available for answering aggregate and analytical questions about your business \u2014 expenses, purchase orders, and related domains. Returns each view's name, title, what it answers, and its data grain. This is the reporting layer: prefer it over listing tools whenever the question involves totals, breakdowns, comparisons, or trends. Follow with view_describe, then view_query.";
6
+ readonly description = "Discover the analytical views available for answering aggregate and analytical questions about your business \u2014 expenses, purchase orders, and related domains. Returns each view's name, title, what it answers, and its data grain. This is the reporting layer: prefer it over listing tools whenever the question involves totals, breakdowns, comparisons, or trends. Follow with view_describe, then view_query. Call again whenever a question doesn't match the views you already know \u2014 the catalog grows over time and new views need no reconnection.";
7
7
  readonly inputSchema: {};
8
8
  protected readonly readOnly = true;
9
9
  execute(): Promise<McpToolResultInterface>;
@@ -8,7 +8,7 @@ class ViewsListTool extends mcp_tool_1.McpTool {
8
8
  super(...arguments);
9
9
  this.name = 'views_list';
10
10
  this.title = 'List analytical views';
11
- this.description = "Discover the analytical views available for answering aggregate and analytical questions about your business — expenses, purchase orders, and related domains. Returns each view's name, title, what it answers, and its data grain. This is the reporting layer: prefer it over listing tools whenever the question involves totals, breakdowns, comparisons, or trends. Follow with view_describe, then view_query.";
11
+ this.description = "Discover the analytical views available for answering aggregate and analytical questions about your business — expenses, purchase orders, and related domains. Returns each view's name, title, what it answers, and its data grain. This is the reporting layer: prefer it over listing tools whenever the question involves totals, breakdowns, comparisons, or trends. Follow with view_describe, then view_query. Call again whenever a question doesn't match the views you already know — the catalog grows over time and new views need no reconnection.";
12
12
  this.inputSchema = inputSchema;
13
13
  this.readOnly = true;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"views.list.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/views.list.tool.ts"],"names":[],"mappings":";;;AACA,yCAAqC;AAErC,MAAM,WAAW,GAAG,EAAE,CAAC;AAKvB,MAAa,aAAc,SAAQ,kBAA8B;IAAjE;;QACa,SAAI,GAAG,YAAY,CAAC;QACpB,UAAK,GAAG,uBAAuB,CAAC;QAChC,gBAAW,GAChB,uZAAuZ,CAAC;QACnZ,gBAAW,GAAG,WAAW,CAAC;QAChB,aAAQ,GAAG,IAAI,CAAC;IAKvC,CAAC;IAHG,OAAO;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;CACJ;AAXD,sCAWC"}
1
+ {"version":3,"file":"views.list.tool.js","sourceRoot":"","sources":["../../../src/mcp/tools/views.list.tool.ts"],"names":[],"mappings":";;;AACA,yCAAqC;AAErC,MAAM,WAAW,GAAG,EAAE,CAAC;AAKvB,MAAa,aAAc,SAAQ,kBAA8B;IAAjE;;QACa,SAAI,GAAG,YAAY,CAAC;QACpB,UAAK,GAAG,uBAAuB,CAAC;QAChC,gBAAW,GAChB,iiBAAiiB,CAAC;QAC7hB,gBAAW,GAAG,WAAW,CAAC;QAChB,aAAQ,GAAG,IAAI,CAAC;IAKvC,CAAC;IAHG,OAAO;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;CACJ;AAXD,sCAWC"}
@@ -0,0 +1,6 @@
1
+ import { SeederUtility } from '@servicelabsco/nestjs-utility-services';
2
+ export declare class AddBusinessUnitApprovalStepTypeDataSeederTable1788407457838 extends SeederUtility {
3
+ constructor();
4
+ process(): void;
5
+ addLookupValues(): void;
6
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddBusinessUnitApprovalStepTypeDataSeederTable1788407457838 = void 0;
4
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
5
+ class AddBusinessUnitApprovalStepTypeDataSeederTable1788407457838 extends nestjs_utility_services_1.SeederUtility {
6
+ constructor() {
7
+ super('sys_lookup_values');
8
+ this.process();
9
+ }
10
+ process() {
11
+ this.addLookupValues();
12
+ }
13
+ addLookupValues() {
14
+ const records = [
15
+ {
16
+ id: 5108,
17
+ name: 'Business Unit Manager',
18
+ value: 'Business Unit Manager',
19
+ description: 'Business Unit Manager',
20
+ lookup_type_id: 116,
21
+ },
22
+ {
23
+ id: 5109,
24
+ name: 'Parent Business Unit Head',
25
+ value: 'Parent Business Unit Head',
26
+ description: 'Parent Business Unit Head',
27
+ lookup_type_id: 116,
28
+ },
29
+ ];
30
+ for (const record of records) {
31
+ this.addRecord(record);
32
+ }
33
+ }
34
+ }
35
+ exports.AddBusinessUnitApprovalStepTypeDataSeederTable1788407457838 = AddBusinessUnitApprovalStepTypeDataSeederTable1788407457838;
36
+ //# sourceMappingURL=1788407457838-AddBusinessUnitApprovalStepTypeDataSeederTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1788407457838-AddBusinessUnitApprovalStepTypeDataSeederTable.js","sourceRoot":"","sources":["../../src/migrations/1788407457838-AddBusinessUnitApprovalStepTypeDataSeederTable.ts"],"names":[],"mappings":";;;AAAA,oFAAuE;AAEvE,MAAa,2DAA4D,SAAQ,uCAAa;IAC1F;QACI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,OAAO;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,eAAe;QACX,MAAM,OAAO,GAAG;YACZ;gBACI,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,uBAAuB;gBACpC,cAAc,EAAE,GAAG;aACtB;YACD;gBACI,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,2BAA2B;gBAClC,WAAW,EAAE,2BAA2B;gBACxC,cAAc,EAAE,GAAG;aACtB;SACJ,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ;AAhCD,kIAgCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicelabsco/slabs-access-manager",
3
- "version": "1.0.71",
3
+ "version": "1.0.74",
4
4
  "description": "Support for application level menus and dashboards",
5
5
  "author": "Hemant Kumar Sah <hemantanshu@gmail.com>",
6
6
  "license": "MIT",
@@ -15,6 +15,9 @@
15
15
  "access": "public",
16
16
  "registry": "https://registry.npmjs.org/"
17
17
  },
18
+ "engines": {
19
+ "node": ">=24.11.0"
20
+ },
18
21
  "types": "dist/index.d.ts",
19
22
  "scripts": {
20
23
  "build": "nest build",
@@ -1,14 +0,0 @@
1
- import { CommonService, PropertyService, RemoteRequestService } from '@servicelabsco/nestjs-utility-services';
2
- import { FileUploadService } from './file.upload.service';
3
- export declare class PdfService extends CommonService {
4
- protected readonly propertyService: PropertyService;
5
- protected readonly fileUploadService: FileUploadService;
6
- protected readonly remoteRequestService: RemoteRequestService;
7
- protected publicExposed: boolean;
8
- protected token: any;
9
- constructor(propertyService: PropertyService, fileUploadService: FileUploadService, remoteRequestService: RemoteRequestService);
10
- getUrl(template: string, data: any, path: string): Promise<string>;
11
- getHtmlUrl(template: string, data: any, path: string): Promise<string>;
12
- getPdfFromHtmlUrl(url: string): Promise<any>;
13
- private getToken;
14
- }
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PdfService = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
15
- const pdf_templates_entity_1 = require("../entities/pdf.templates.entity");
16
- const file_upload_service_1 = require("./file.upload.service");
17
- let PdfService = class PdfService extends nestjs_utility_services_1.CommonService {
18
- constructor(propertyService, fileUploadService, remoteRequestService) {
19
- super();
20
- this.propertyService = propertyService;
21
- this.fileUploadService = fileUploadService;
22
- this.remoteRequestService = remoteRequestService;
23
- this.publicExposed = true;
24
- }
25
- async getUrl(template, data, path) {
26
- const htmlUrl = await this.getHtmlUrl(template, data, path);
27
- return this.getPdfFromHtmlUrl(htmlUrl);
28
- }
29
- async getHtmlUrl(template, data, path) {
30
- const { script } = await pdf_templates_entity_1.PdfTemplatesEntity.findOne({ where: { identifier: template }, relations: ['script'] });
31
- const compiledData = nestjs_utility_services_1.PlatformUtility.compileHandlebar(script.script, data);
32
- const uniqueString = nestjs_utility_services_1.PlatformUtility.getFileName(template);
33
- const filename = `${uniqueString}.html`;
34
- const urlKey = `${path}/${filename}`;
35
- const bucket = await this.propertyService.get('aws.config.bucket');
36
- const params = {
37
- Bucket: bucket,
38
- Key: urlKey,
39
- Body: compiledData,
40
- ContentType: 'text/html',
41
- ACL: 'public-read',
42
- };
43
- return this.fileUploadService.uploadToS3(params);
44
- }
45
- async getPdfFromHtmlUrl(url) {
46
- const token = await this.getToken();
47
- const options = {
48
- url: `https://ei5oni4xxk.execute-api.ap-south-1.amazonaws.com/prod/html-pdf`,
49
- method: 'POST',
50
- headers: {
51
- 'Content-Type': 'application/json',
52
- Authorization: `Bearer ${token}`,
53
- },
54
- data: {
55
- html_url: url,
56
- },
57
- timeout: 900000,
58
- };
59
- try {
60
- const response = await this.remoteRequestService.sendThroughAxios(options);
61
- if (!response?.data?.success) {
62
- throw new nestjs_utility_services_1.OperationException(response?.data?.error || response?.data?.message || 'Failed to convert HTML to PDF');
63
- }
64
- return response?.data?.pdf?.url;
65
- }
66
- catch (error) {
67
- if (error.response?.data) {
68
- throw new nestjs_utility_services_1.OperationException(error.response.data.error || error.response.data.message);
69
- }
70
- throw error;
71
- }
72
- }
73
- async getToken() {
74
- if (this.token)
75
- return this.token;
76
- this.token = await this.propertyService.get('html.to.pdf.token');
77
- if (!this.token)
78
- throw new nestjs_utility_services_1.OperationException('HTML-to-PDF token not found, set property html.to.pdf.token');
79
- return this.token;
80
- }
81
- };
82
- exports.PdfService = PdfService;
83
- exports.PdfService = PdfService = __decorate([
84
- (0, common_1.Injectable)(),
85
- __metadata("design:paramtypes", [nestjs_utility_services_1.PropertyService,
86
- file_upload_service_1.FileUploadService,
87
- nestjs_utility_services_1.RemoteRequestService])
88
- ], PdfService);
89
- //# sourceMappingURL=pdf.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdf.service.js","sourceRoot":"","sources":["../../../src/accessUtility/services/pdf.service.ts"],"names":[],"mappings":"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"}