@servicelabsco/slabs-access-manager 1.0.67 → 1.0.69
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/dist/access/controllers/business.report.controller.js.map +1 -1
- package/dist/access/controllers/dashboard.report.controller.js +2 -1
- package/dist/access/controllers/dashboard.report.controller.js.map +1 -1
- package/dist/access/controllers/index.d.ts +1 -0
- package/dist/access/controllers/index.js +1 -0
- package/dist/access/controllers/index.js.map +1 -1
- package/dist/access/controllers/oauth.as.controller.d.ts +1 -0
- package/dist/access/controllers/oauth.as.controller.js +24 -0
- package/dist/access/controllers/oauth.as.controller.js.map +1 -1
- package/dist/access/controllers/report.view.controller.d.ts +101 -0
- package/dist/access/controllers/report.view.controller.js +66 -0
- package/dist/access/controllers/report.view.controller.js.map +1 -0
- package/dist/access/controllers/whoami.controller.js +3 -2
- package/dist/access/controllers/whoami.controller.js.map +1 -1
- package/dist/access/dtos/index.d.ts +1 -0
- package/dist/access/dtos/index.js +1 -0
- package/dist/access/dtos/index.js.map +1 -1
- package/dist/access/dtos/report.view.query.dto.d.ts +23 -0
- package/dist/access/dtos/report.view.query.dto.js +56 -0
- package/dist/access/dtos/report.view.query.dto.js.map +1 -0
- package/dist/access/es6.classes.d.ts +24 -14
- package/dist/access/es6.classes.js +42 -25
- package/dist/access/es6.classes.js.map +1 -1
- package/dist/access/jobs/form.script.job.js +1 -1
- package/dist/access/libraries/index.d.ts +1 -0
- package/dist/access/libraries/index.js +1 -0
- package/dist/access/libraries/index.js.map +1 -1
- package/dist/access/libraries/process.form.script.list.js.map +1 -1
- package/dist/access/libraries/report.view.query.compiler.d.ts +163 -0
- package/dist/access/libraries/report.view.query.compiler.js +399 -0
- package/dist/access/libraries/report.view.query.compiler.js.map +1 -0
- package/dist/access/services/credential.resolve.service.js +18 -3
- package/dist/access/services/credential.resolve.service.js.map +1 -1
- package/dist/access/services/es6.jobs.service.d.ts +3 -3
- package/dist/access/services/es6.jobs.service.js +5 -5
- package/dist/access/services/es6.jobs.service.js.map +1 -1
- package/dist/access/services/index.d.ts +1 -0
- package/dist/access/services/index.js +1 -0
- package/dist/access/services/index.js.map +1 -1
- package/dist/access/services/oauth.as.service.d.ts +8 -5
- package/dist/access/services/oauth.as.service.js +92 -48
- package/dist/access/services/oauth.as.service.js.map +1 -1
- package/dist/access/services/report.view.service.d.ts +111 -0
- package/dist/access/services/report.view.service.js +234 -0
- package/dist/access/services/report.view.service.js.map +1 -0
- package/dist/accessUtility/access.utility.module.js +2 -2
- package/dist/accessUtility/access.utility.module.js.map +1 -1
- package/dist/accessUtility/es6.classes.d.ts +1 -1
- package/dist/accessUtility/es6.classes.js +2 -2
- package/dist/accessUtility/es6.classes.js.map +1 -1
- package/dist/accessUtility/index.d.ts +1 -1
- package/dist/accessUtility/index.js +1 -1
- package/dist/accessUtility/index.js.map +1 -1
- package/dist/accessUtility/{types/bulk.upload.item.record.js → interfaces/bulk.upload.item.record.interface.js} +1 -1
- package/dist/accessUtility/interfaces/bulk.upload.item.record.interface.js.map +1 -0
- package/dist/accessUtility/interfaces/index.d.ts +1 -0
- package/dist/accessUtility/interfaces/index.js +18 -0
- package/dist/accessUtility/interfaces/index.js.map +1 -0
- package/dist/accessUtility/jobs/bulk.upload.column.match.job.js.map +1 -1
- package/dist/accessUtility/jobs/push.to.bulk.item.job.d.ts +1 -1
- package/dist/accessUtility/libraries/set.bulk.upload.log.file.js.map +1 -1
- package/dist/accessUtility/services/bulk.upload.item.store.d.ts +1 -1
- package/dist/accessUtility/services/bulk.upload.item.store.js.map +1 -1
- package/dist/app.module.js +2 -0
- package/dist/app.module.js.map +1 -1
- package/dist/config/entity.constants.d.ts +2 -2
- package/dist/config/entity.constants.js +2 -2
- package/dist/config/entity.constants.js.map +1 -1
- package/dist/config/mongo.config.d.ts +3 -0
- package/dist/config/mongo.config.js +16 -0
- package/dist/config/mongo.config.js.map +1 -0
- package/dist/config/source.hash.d.ts +1 -0
- package/dist/config/source.hash.js +1 -0
- package/dist/config/source.hash.js.map +1 -1
- package/dist/development/controllers/development.catalog.controller.d.ts +53 -0
- package/dist/development/controllers/development.catalog.controller.js +112 -0
- package/dist/development/controllers/development.catalog.controller.js.map +1 -0
- package/dist/development/controllers/index.d.ts +1 -0
- package/dist/development/controllers/index.js +1 -0
- package/dist/development/controllers/index.js.map +1 -1
- package/dist/development/development.module.js +2 -1
- package/dist/development/development.module.js.map +1 -1
- package/dist/development/dtos/column.catalog.attributes.dto.d.ts +10 -0
- package/dist/development/dtos/column.catalog.attributes.dto.js +58 -0
- package/dist/development/dtos/column.catalog.attributes.dto.js.map +1 -0
- package/dist/development/dtos/index.d.ts +2 -0
- package/dist/development/dtos/index.js +19 -0
- package/dist/development/dtos/index.js.map +1 -0
- package/dist/development/dtos/material.view.catalog.attributes.dto.d.ts +25 -0
- package/dist/development/dtos/material.view.catalog.attributes.dto.js +114 -0
- package/dist/development/dtos/material.view.catalog.attributes.dto.js.map +1 -0
- package/dist/development/es6.classes.d.ts +10 -3
- package/dist/development/es6.classes.js +10 -3
- package/dist/development/es6.classes.js.map +1 -1
- package/dist/development/gates/index.d.ts +1 -0
- package/dist/{accessUtility/types → development/gates}/index.js +1 -1
- package/dist/development/gates/index.js.map +1 -0
- package/dist/development/gates/reporting.catalog.gate.d.ts +8 -0
- package/dist/development/gates/reporting.catalog.gate.js +39 -0
- package/dist/development/gates/reporting.catalog.gate.js.map +1 -0
- package/dist/development/index.d.ts +2 -0
- package/dist/development/index.js +2 -0
- package/dist/development/index.js.map +1 -1
- package/dist/development/services/admin.report.view.service.d.ts +92 -0
- package/dist/development/services/admin.report.view.service.js +459 -0
- package/dist/development/services/admin.report.view.service.js.map +1 -0
- package/dist/development/services/index.d.ts +1 -0
- package/dist/development/services/index.js +1 -0
- package/dist/development/services/index.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/mcp/admin/tools/admin.tool.registry.js +14 -0
- package/dist/mcp/admin/tools/admin.tool.registry.js.map +1 -1
- package/dist/mcp/admin/tools/catalog/admin.catalog.validate.tool.d.ts +16 -0
- package/dist/mcp/admin/tools/catalog/admin.catalog.validate.tool.js +22 -0
- package/dist/mcp/admin/tools/catalog/admin.catalog.validate.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.d.ts +30 -0
- package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.js +37 -0
- package/dist/mcp/admin/tools/catalog/admin.column.describe.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.d.ts +22 -0
- package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.js +31 -0
- package/dist/mcp/admin/tools/catalog/admin.view.columns.sync.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.register.tool.d.ts +22 -0
- package/dist/mcp/admin/tools/catalog/admin.view.register.tool.js +28 -0
- package/dist/mcp/admin/tools/catalog/admin.view.register.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.sample.tool.d.ts +21 -0
- package/dist/mcp/admin/tools/catalog/admin.view.sample.tool.js +32 -0
- package/dist/mcp/admin/tools/catalog/admin.view.sample.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.view.update.tool.d.ts +22 -0
- package/dist/mcp/admin/tools/catalog/admin.view.update.tool.js +29 -0
- package/dist/mcp/admin/tools/catalog/admin.view.update.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/admin.views.list.tool.d.ts +10 -0
- package/dist/mcp/admin/tools/catalog/admin.views.list.tool.js +20 -0
- package/dist/mcp/admin/tools/catalog/admin.views.list.tool.js.map +1 -0
- package/dist/mcp/admin/tools/catalog/index.d.ts +7 -0
- package/dist/mcp/admin/tools/catalog/index.js +24 -0
- package/dist/mcp/admin/tools/catalog/index.js.map +1 -0
- package/dist/mcp/admin/tools/form_script/form.script.create.tool.js.map +1 -1
- package/dist/mcp/admin/tools/form_script/form.script.list.tool.js.map +1 -1
- package/dist/mcp/admin/tools/form_script/form.script.update.tool.js.map +1 -1
- package/dist/mcp/admin/tools/index.d.ts +1 -0
- package/dist/mcp/admin/tools/index.js +1 -0
- package/dist/mcp/admin/tools/index.js.map +1 -1
- package/dist/mcp/admin/tools/report/report.create.tool.js.map +1 -1
- package/dist/mcp/admin/tools/report/report.update.tool.js.map +1 -1
- package/dist/mcp/auth/mcp.idempotency.store.js +3 -1
- package/dist/mcp/auth/mcp.idempotency.store.js.map +1 -1
- package/dist/mcp/catalog/assert.valid.catalog.d.ts +3 -0
- package/dist/mcp/catalog/assert.valid.catalog.js +2 -0
- package/dist/mcp/catalog/assert.valid.catalog.js.map +1 -1
- package/dist/mcp/es6.classes.d.ts +54 -8
- package/dist/mcp/es6.classes.js +74 -12
- package/dist/mcp/es6.classes.js.map +1 -1
- package/dist/mcp/http/mcp.http.module.js +5 -2
- package/dist/mcp/http/mcp.http.module.js.map +1 -1
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/logging/index.d.ts +3 -0
- package/dist/mcp/logging/index.js +20 -0
- package/dist/mcp/logging/index.js.map +1 -0
- package/dist/mcp/logging/mcp.call.log.interceptor.d.ts +16 -0
- package/dist/mcp/logging/mcp.call.log.interceptor.js +140 -0
- package/dist/mcp/logging/mcp.call.log.interceptor.js.map +1 -0
- package/dist/mcp/logging/mcp.call.log.writer.d.ts +11 -0
- package/dist/mcp/logging/mcp.call.log.writer.js +62 -0
- package/dist/mcp/logging/mcp.call.log.writer.js.map +1 -0
- package/dist/mcp/logging/sanitize.mcp.call.log.d.ts +44 -0
- package/dist/mcp/logging/sanitize.mcp.call.log.js +112 -0
- package/dist/mcp/logging/sanitize.mcp.call.log.js.map +1 -0
- package/dist/mcp/mcp.module.d.ts +1 -1
- package/dist/mcp/mcp.module.js.map +1 -1
- package/dist/mcp/mentities/index.d.ts +1 -0
- package/dist/mcp/mentities/index.js +18 -0
- package/dist/mcp/mentities/index.js.map +1 -0
- package/dist/mcp/mentities/mcp.call.log.mentity.d.ts +17 -0
- package/dist/mcp/mentities/mcp.call.log.mentity.js +79 -0
- package/dist/mcp/mentities/mcp.call.log.mentity.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.js +3 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/reports.run.tool.js.map +1 -1
- package/dist/mcp/tools/tool.registry.js +4 -21
- package/dist/mcp/tools/tool.registry.js.map +1 -1
- package/dist/mcp/tools/view.describe.tool.d.ts +17 -0
- package/dist/mcp/tools/view.describe.tool.js +23 -0
- package/dist/mcp/tools/view.describe.tool.js.map +1 -0
- package/dist/mcp/tools/view.query.tool.d.ts +75 -0
- package/dist/mcp/tools/view.query.tool.js +51 -0
- package/dist/mcp/tools/view.query.tool.js.map +1 -0
- package/dist/mcp/tools/views.list.tool.d.ts +10 -0
- package/dist/mcp/tools/views.list.tool.js +20 -0
- package/dist/mcp/tools/views.list.tool.js.map +1 -0
- package/package.json +2 -2
- package/dist/accessUtility/types/bulk.upload.item.record.js.map +0 -1
- package/dist/accessUtility/types/index.d.ts +0 -1
- package/dist/accessUtility/types/index.js.map +0 -1
- /package/dist/accessUtility/{types/bulk.upload.item.record.d.ts → interfaces/bulk.upload.item.record.interface.d.ts} +0 -0
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReportViewQueryCompiler = exports.ReportViewQueryError = exports.REPORT_VIEW_GRAMMAR = exports.STATEMENT_TIMEOUT_MS = exports.GROUP_BY_CAP = exports.OFFSET_CAP = exports.DEFAULT_ROW_CAP = exports.SORT_DIRS = exports.BUCKETS = exports.AGG_FNS = exports.OPS = void 0;
|
|
4
|
+
exports.compileReportViewQuery = compileReportViewQuery;
|
|
5
|
+
exports.agentVisibleColumns = agentVisibleColumns;
|
|
6
|
+
exports.quoteIdent = quoteIdent;
|
|
7
|
+
exports.resolveRelativeDate = resolveRelativeDate;
|
|
8
|
+
exports.nearest = nearest;
|
|
9
|
+
exports.OPS = ['eq', 'neq', 'in', 'not_in', 'gt', 'gte', 'lt', 'lte', 'between', 'contains', 'is_null', 'not_null'];
|
|
10
|
+
exports.AGG_FNS = ['count', 'count_distinct', 'sum', 'avg', 'min', 'max'];
|
|
11
|
+
exports.BUCKETS = ['day', 'week', 'month', 'quarter', 'year'];
|
|
12
|
+
exports.SORT_DIRS = ['asc', 'desc'];
|
|
13
|
+
exports.DEFAULT_ROW_CAP = 500;
|
|
14
|
+
exports.OFFSET_CAP = 10_000;
|
|
15
|
+
exports.GROUP_BY_CAP = 3;
|
|
16
|
+
exports.STATEMENT_TIMEOUT_MS = 2000;
|
|
17
|
+
const IDENT = /^[a-z][a-z0-9_]*$/;
|
|
18
|
+
const NUMERIC_AGG = new Set(['sum', 'avg', 'min', 'max']);
|
|
19
|
+
const RELATIVE_DATE = /^@today(?:([+-])(\d+)d)?$/;
|
|
20
|
+
const RELATIVE_DATE_TZ = 'Asia/Kolkata';
|
|
21
|
+
exports.REPORT_VIEW_GRAMMAR = {
|
|
22
|
+
operators: [
|
|
23
|
+
{ op: 'eq', value: 'scalar' },
|
|
24
|
+
{ op: 'neq', value: 'scalar' },
|
|
25
|
+
{ op: 'in', value: 'array' },
|
|
26
|
+
{ op: 'not_in', value: 'array' },
|
|
27
|
+
{ op: 'gt', value: 'scalar' },
|
|
28
|
+
{ op: 'gte', value: 'scalar' },
|
|
29
|
+
{ op: 'lt', value: 'scalar' },
|
|
30
|
+
{ op: 'lte', value: 'scalar' },
|
|
31
|
+
{ op: 'between', value: '[from, to]' },
|
|
32
|
+
{
|
|
33
|
+
op: 'contains',
|
|
34
|
+
value: 'bare string — wildcards escaped, compiled as ILIKE %value%. Do not send % or SQL LIKE syntax.',
|
|
35
|
+
},
|
|
36
|
+
{ op: 'is_null', value: 'none' },
|
|
37
|
+
{ op: 'not_null', value: 'none' },
|
|
38
|
+
],
|
|
39
|
+
aggregates: [...exports.AGG_FNS],
|
|
40
|
+
buckets: [...exports.BUCKETS],
|
|
41
|
+
sort_dirs: [...exports.SORT_DIRS],
|
|
42
|
+
relative_dates: {
|
|
43
|
+
tokens: ['@today', '@today-Nd', '@today+Nd'],
|
|
44
|
+
example: '@today-30d',
|
|
45
|
+
timezone: RELATIVE_DATE_TZ,
|
|
46
|
+
note: 'Resolved server-side to an ISO calendar date. Do not compute today in the client.',
|
|
47
|
+
},
|
|
48
|
+
rails: {
|
|
49
|
+
tenancy: 'injected',
|
|
50
|
+
limit_cap: exports.DEFAULT_ROW_CAP,
|
|
51
|
+
group_by_cap: exports.GROUP_BY_CAP,
|
|
52
|
+
offset_cap: exports.OFFSET_CAP,
|
|
53
|
+
statement_timeout_ms: exports.STATEMENT_TIMEOUT_MS,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
class ReportViewQueryError extends Error {
|
|
57
|
+
constructor(code, message) {
|
|
58
|
+
super(message);
|
|
59
|
+
this.code = code;
|
|
60
|
+
this.name = 'ReportViewQueryError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.ReportViewQueryError = ReportViewQueryError;
|
|
64
|
+
function compileReportViewQuery(view, dsl, businessId, options = {}) {
|
|
65
|
+
if (!Number.isFinite(businessId) || businessId <= 0) {
|
|
66
|
+
throw new ReportViewQueryError('unknown_column', 'business_id is injected from the caller and cannot be supplied in the DSL.');
|
|
67
|
+
}
|
|
68
|
+
const agentColumns = agentVisibleColumns(view);
|
|
69
|
+
const byName = new Map(agentColumns.map((column) => [column.name, column]));
|
|
70
|
+
const names = agentColumns.map((column) => column.name);
|
|
71
|
+
assertNoTenancyLeak(dsl, view, names);
|
|
72
|
+
const aggregates = dsl.aggregates || [];
|
|
73
|
+
const groupBy = dsl.group_by || [];
|
|
74
|
+
const isAggregate = aggregates.length > 0 || groupBy.length > 0;
|
|
75
|
+
if (groupBy.length > exports.GROUP_BY_CAP) {
|
|
76
|
+
throw new ReportViewQueryError('group_by_limit', `group_by_limit: at most ${exports.GROUP_BY_CAP} group_by columns are allowed.`);
|
|
77
|
+
}
|
|
78
|
+
const offset = dsl.offset === undefined ? 0 : assertInt(dsl.offset, 'offset');
|
|
79
|
+
if (offset < 0)
|
|
80
|
+
throw new ReportViewQueryError('offset_limit', 'offset_limit: offset must be ≥ 0.');
|
|
81
|
+
if (offset > exports.OFFSET_CAP) {
|
|
82
|
+
throw new ReportViewQueryError('offset_limit', `offset_limit: offset must be ≤ ${exports.OFFSET_CAP}.`);
|
|
83
|
+
}
|
|
84
|
+
const rowCap = Math.min(Math.max(view.row_cap || exports.DEFAULT_ROW_CAP, 1), exports.DEFAULT_ROW_CAP);
|
|
85
|
+
const requested = dsl.limit === undefined ? rowCap : assertInt(dsl.limit, 'limit');
|
|
86
|
+
if (requested <= 0)
|
|
87
|
+
throw new ReportViewQueryError('limit', 'limit must be a positive integer.');
|
|
88
|
+
const limit = Math.min(requested, rowCap);
|
|
89
|
+
const now = options.now || new Date();
|
|
90
|
+
const params = [businessId];
|
|
91
|
+
const select = [];
|
|
92
|
+
const output = [];
|
|
93
|
+
const selectNames = new Set();
|
|
94
|
+
const addOutput = (column) => {
|
|
95
|
+
output.push({
|
|
96
|
+
name: column.name,
|
|
97
|
+
title: column.display_name || column.name,
|
|
98
|
+
type: column.semantic_type || 'string',
|
|
99
|
+
...(column.format ? { format: column.format } : {}),
|
|
100
|
+
...(column.enum_map ? { enum_map: column.enum_map } : {}),
|
|
101
|
+
});
|
|
102
|
+
selectNames.add(column.name);
|
|
103
|
+
};
|
|
104
|
+
if (isAggregate) {
|
|
105
|
+
for (const group of groupBy) {
|
|
106
|
+
const column = requireColumn(group.column, byName, names, view.catalog_name);
|
|
107
|
+
if (column.groupable === false) {
|
|
108
|
+
throw new ReportViewQueryError('not_groupable', `not_groupable: column '${column.name}' cannot be grouped.`);
|
|
109
|
+
}
|
|
110
|
+
if (group.bucket) {
|
|
111
|
+
if (column.bucketable !== true) {
|
|
112
|
+
throw new ReportViewQueryError('not_bucketable', `not_bucketable: column '${column.name}' is not bucketable.`);
|
|
113
|
+
}
|
|
114
|
+
const bucket = requireAllowlisted(group.bucket, exports.BUCKETS, 'bucket');
|
|
115
|
+
select.push(`date_trunc('${bucket}', ${quoteIdent(column.name)}) AS ${quoteIdent(column.name)}`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
select.push(quoteIdent(column.name));
|
|
119
|
+
}
|
|
120
|
+
addOutput(column);
|
|
121
|
+
}
|
|
122
|
+
for (const aggregate of aggregates) {
|
|
123
|
+
const fn = requireAllowlisted(aggregate.fn, exports.AGG_FNS, 'aggregate');
|
|
124
|
+
const alias = resolveAlias(aggregate, fn);
|
|
125
|
+
if (selectNames.has(alias)) {
|
|
126
|
+
throw new ReportViewQueryError('unknown_column', `unknown_column: aggregate alias '${alias}' collides with another selected name.`);
|
|
127
|
+
}
|
|
128
|
+
if (fn === 'count' && !aggregate.column) {
|
|
129
|
+
select.push(`COUNT(*) AS ${quoteIdent(alias)}`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const column = requireColumn(aggregate.column, byName, names, view.catalog_name);
|
|
133
|
+
assertAggregatable(column, fn);
|
|
134
|
+
if (fn === 'count')
|
|
135
|
+
select.push(`COUNT(${quoteIdent(column.name)}) AS ${quoteIdent(alias)}`);
|
|
136
|
+
else if (fn === 'count_distinct')
|
|
137
|
+
select.push(`COUNT(DISTINCT ${quoteIdent(column.name)}) AS ${quoteIdent(alias)}`);
|
|
138
|
+
else
|
|
139
|
+
select.push(`${fn.toUpperCase()}(${quoteIdent(column.name)}) AS ${quoteIdent(alias)}`);
|
|
140
|
+
}
|
|
141
|
+
addOutput({ name: alias, display_name: alias, semantic_type: 'number' });
|
|
142
|
+
}
|
|
143
|
+
const selectedNonAgg = (dsl.columns || []).filter((name) => !aggregates.some((aggregate) => resolveAlias(aggregate, aggregate.fn) === name));
|
|
144
|
+
for (const name of selectedNonAgg) {
|
|
145
|
+
if (!selectNames.has(name)) {
|
|
146
|
+
throw new ReportViewQueryError('not_groupable', `not_groupable: selected column '${name}' must appear in group_by when aggregating.`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const requestedCols = dsl.columns?.length ? dsl.columns : names;
|
|
152
|
+
for (const name of requestedCols) {
|
|
153
|
+
const column = requireColumn(name, byName, names, view.catalog_name);
|
|
154
|
+
select.push(quoteIdent(column.name));
|
|
155
|
+
addOutput(column);
|
|
156
|
+
}
|
|
157
|
+
if (!select.length) {
|
|
158
|
+
throw new ReportViewQueryError('unknown_column', `unknown_column: view '${view.catalog_name}' has no selectable columns.`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const where = [`${quoteIdent(view.tenancy_column)} = $1`];
|
|
162
|
+
for (const filter of dsl.filters || []) {
|
|
163
|
+
const column = requireColumn(filter.column, byName, names, view.catalog_name);
|
|
164
|
+
if (column.filterable === false) {
|
|
165
|
+
throw new ReportViewQueryError('not_filterable', `not_filterable: column '${column.name}' cannot be filtered.`);
|
|
166
|
+
}
|
|
167
|
+
const op = requireAllowlisted(filter.op, exports.OPS, 'op');
|
|
168
|
+
where.push(compileFilter(column, op, filter.value, params, now));
|
|
169
|
+
}
|
|
170
|
+
const sql = [`SELECT ${select.join(', ')}`, `FROM ${quoteIdent(view.table_name)}`, `WHERE ${where.join(' AND ')}`];
|
|
171
|
+
if (groupBy.length) {
|
|
172
|
+
sql.push(`GROUP BY ${groupBy.map((_, index) => String(index + 1)).join(', ')}`);
|
|
173
|
+
}
|
|
174
|
+
if (dsl.sort?.length) {
|
|
175
|
+
const order = dsl.sort.map((item) => {
|
|
176
|
+
const by = String(item.by || '');
|
|
177
|
+
if (!selectNames.has(by)) {
|
|
178
|
+
throw unknownColumn(by, [...selectNames], view.catalog_name);
|
|
179
|
+
}
|
|
180
|
+
const dir = item.dir ? requireAllowlisted(String(item.dir).toLowerCase(), exports.SORT_DIRS, 'dir') : 'asc';
|
|
181
|
+
return `${quoteIdent(by)} ${dir.toUpperCase()}`;
|
|
182
|
+
});
|
|
183
|
+
sql.push(`ORDER BY ${order.join(', ')}`);
|
|
184
|
+
}
|
|
185
|
+
params.push(limit + 1, offset);
|
|
186
|
+
sql.push(`LIMIT $${params.length - 1} OFFSET $${params.length}`);
|
|
187
|
+
return {
|
|
188
|
+
sql: sql.join(' '),
|
|
189
|
+
params,
|
|
190
|
+
limit,
|
|
191
|
+
offset,
|
|
192
|
+
fetchLimit: limit + 1,
|
|
193
|
+
output,
|
|
194
|
+
view: {
|
|
195
|
+
name: view.catalog_name,
|
|
196
|
+
grain: view.grain,
|
|
197
|
+
table_name: view.table_name,
|
|
198
|
+
refreshed_at: view.last_run_time ?? null,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function agentVisibleColumns(view) {
|
|
203
|
+
return (view.columns || []).filter((column) => {
|
|
204
|
+
if (!column?.name || column.name === view.tenancy_column || column.name === 'business_id')
|
|
205
|
+
return false;
|
|
206
|
+
if (column.visibility === false)
|
|
207
|
+
return false;
|
|
208
|
+
if (column.sensitive === true)
|
|
209
|
+
return false;
|
|
210
|
+
return true;
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
function quoteIdent(name) {
|
|
214
|
+
if (!IDENT.test(name))
|
|
215
|
+
throw new ReportViewQueryError('unknown_column', `unknown_column: '${name}' is not a valid identifier.`);
|
|
216
|
+
return `"${name}"`;
|
|
217
|
+
}
|
|
218
|
+
function requireColumn(name, byName, names, viewName) {
|
|
219
|
+
const key = String(name || '');
|
|
220
|
+
if (key === 'business_id')
|
|
221
|
+
throw unknownColumn(key, names, viewName);
|
|
222
|
+
const column = byName.get(key);
|
|
223
|
+
if (!column)
|
|
224
|
+
throw unknownColumn(key, names, viewName);
|
|
225
|
+
return column;
|
|
226
|
+
}
|
|
227
|
+
function unknownColumn(name, names, viewName) {
|
|
228
|
+
const suggestions = nearest(name, names, 3);
|
|
229
|
+
const hint = suggestions.length ? ` Did you mean ${suggestions.join(', ')}?` : '';
|
|
230
|
+
return new ReportViewQueryError('unknown_column', `unknown_column: '${name}' is not a column on ${viewName}.${hint}`);
|
|
231
|
+
}
|
|
232
|
+
function requireAllowlisted(value, allowed, kind) {
|
|
233
|
+
const raw = String(value || '');
|
|
234
|
+
if (kind === 'op' && raw === 'like') {
|
|
235
|
+
throw new ReportViewQueryError('unknown_column', "unknown_column: 'like' is not a valid op. Use contains with a bare string — wildcards are applied server-side.");
|
|
236
|
+
}
|
|
237
|
+
if (allowed.includes(raw))
|
|
238
|
+
return raw;
|
|
239
|
+
throw new ReportViewQueryError('unknown_column', `unknown_column: '${raw}' is not a valid ${kind}.`);
|
|
240
|
+
}
|
|
241
|
+
function resolveAlias(aggregate, fn) {
|
|
242
|
+
if (aggregate.as) {
|
|
243
|
+
if (!IDENT.test(aggregate.as)) {
|
|
244
|
+
throw new ReportViewQueryError('unknown_column', `unknown_column: alias '${aggregate.as}' is not a valid identifier.`);
|
|
245
|
+
}
|
|
246
|
+
return aggregate.as;
|
|
247
|
+
}
|
|
248
|
+
return aggregate.column ? `${fn}_${aggregate.column}` : fn;
|
|
249
|
+
}
|
|
250
|
+
function assertAggregatable(column, fn) {
|
|
251
|
+
const allowed = Array.isArray(column.aggregatable)
|
|
252
|
+
? column.aggregatable
|
|
253
|
+
: fn === 'count' || fn === 'count_distinct' || column.semantic_type === 'money'
|
|
254
|
+
? ['count', 'count_distinct', 'sum', 'avg', 'min', 'max']
|
|
255
|
+
: ['count', 'count_distinct'];
|
|
256
|
+
if (!allowed.includes(fn)) {
|
|
257
|
+
const suggestion = allowed.includes('count') ? ' Did you mean count?' : '';
|
|
258
|
+
throw new ReportViewQueryError('aggregate_not_allowed', `aggregate_not_allowed: ${fn} on ${column.name} is not allowed.${suggestion}`);
|
|
259
|
+
}
|
|
260
|
+
if (NUMERIC_AGG.has(fn) &&
|
|
261
|
+
column.semantic_type &&
|
|
262
|
+
!['money', 'percent'].includes(column.semantic_type) &&
|
|
263
|
+
Array.isArray(column.aggregatable) &&
|
|
264
|
+
!column.aggregatable.includes(fn)) {
|
|
265
|
+
throw new ReportViewQueryError('aggregate_not_allowed', `aggregate_not_allowed: ${fn} on ${column.name} — did you mean count?`);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function compileFilter(column, op, value, params, now) {
|
|
269
|
+
const ident = quoteIdent(column.name);
|
|
270
|
+
if (op === 'is_null')
|
|
271
|
+
return `${ident} IS NULL`;
|
|
272
|
+
if (op === 'not_null')
|
|
273
|
+
return `${ident} IS NOT NULL`;
|
|
274
|
+
if (op === 'in' || op === 'not_in') {
|
|
275
|
+
const list = Array.isArray(value) ? value : null;
|
|
276
|
+
if (!list?.length)
|
|
277
|
+
throw new ReportViewQueryError('value_type_mismatch', `value_type_mismatch: ${op} on ${column.name} needs a non-empty array.`);
|
|
278
|
+
const placeholders = list.map((item) => bind(params, mapEnum(column, resolveRelativeDate(item, now))));
|
|
279
|
+
return op === 'in' ? `${ident} IN (${placeholders.join(', ')})` : `${ident} NOT IN (${placeholders.join(', ')})`;
|
|
280
|
+
}
|
|
281
|
+
if (op === 'between') {
|
|
282
|
+
const pair = Array.isArray(value) ? value : null;
|
|
283
|
+
if (pair?.length !== 2) {
|
|
284
|
+
throw new ReportViewQueryError('value_type_mismatch', `value_type_mismatch: between on ${column.name} needs [from, to].`);
|
|
285
|
+
}
|
|
286
|
+
return `${ident} BETWEEN ${bind(params, mapEnum(column, resolveRelativeDate(pair[0], now)))} AND ${bind(params, mapEnum(column, resolveRelativeDate(pair[1], now)))}`;
|
|
287
|
+
}
|
|
288
|
+
if (op === 'contains') {
|
|
289
|
+
if (typeof value !== 'string') {
|
|
290
|
+
throw new ReportViewQueryError('value_type_mismatch', `value_type_mismatch: contains on ${column.name} needs a string.`);
|
|
291
|
+
}
|
|
292
|
+
return `${ident} ILIKE ${bind(params, `%${escapeLike(value)}%`)} ESCAPE '\\\\'`;
|
|
293
|
+
}
|
|
294
|
+
if (value === undefined || value === null || Array.isArray(value)) {
|
|
295
|
+
throw new ReportViewQueryError('value_type_mismatch', `value_type_mismatch: ${op} on ${column.name} needs a single value.`);
|
|
296
|
+
}
|
|
297
|
+
const mapped = mapEnum(column, resolveRelativeDate(value, now));
|
|
298
|
+
const sqlOp = { eq: '=', neq: '<>', gt: '>', gte: '>=', lt: '<', lte: '<=' }[op];
|
|
299
|
+
return `${ident} ${sqlOp} ${bind(params, mapped)}`;
|
|
300
|
+
}
|
|
301
|
+
function resolveRelativeDate(value, now) {
|
|
302
|
+
if (typeof value !== 'string')
|
|
303
|
+
return value;
|
|
304
|
+
if (value.startsWith('@') && !RELATIVE_DATE.test(value)) {
|
|
305
|
+
throw new ReportViewQueryError('value_type_mismatch', 'value_type_mismatch: relative dates must be @today or @today±Nd (e.g. @today-30d). Do not compute today in the client.');
|
|
306
|
+
}
|
|
307
|
+
const match = value.match(RELATIVE_DATE);
|
|
308
|
+
if (!match)
|
|
309
|
+
return value;
|
|
310
|
+
const today = calendarDate(now, RELATIVE_DATE_TZ);
|
|
311
|
+
if (!match[1])
|
|
312
|
+
return today;
|
|
313
|
+
const delta = Number(match[2]) * (match[1] === '-' ? -1 : 1);
|
|
314
|
+
return addCalendarDays(today, delta);
|
|
315
|
+
}
|
|
316
|
+
function calendarDate(now, timeZone) {
|
|
317
|
+
return new Intl.DateTimeFormat('en-CA', { timeZone, year: 'numeric', month: '2-digit', day: '2-digit' }).format(now);
|
|
318
|
+
}
|
|
319
|
+
function addCalendarDays(isoDate, days) {
|
|
320
|
+
const [year, month, day] = isoDate.split('-').map(Number);
|
|
321
|
+
const utc = new Date(Date.UTC(year, month - 1, day + days));
|
|
322
|
+
return utc.toISOString().slice(0, 10);
|
|
323
|
+
}
|
|
324
|
+
function mapEnum(column, value) {
|
|
325
|
+
const map = column.enum_map;
|
|
326
|
+
if (!map || value === undefined || value === null || typeof value === 'object')
|
|
327
|
+
return value;
|
|
328
|
+
const raw = String(value);
|
|
329
|
+
if (Object.prototype.hasOwnProperty.call(map, raw))
|
|
330
|
+
return raw;
|
|
331
|
+
const match = Object.entries(map).find(([, label]) => String(label).toLowerCase() === raw.toLowerCase());
|
|
332
|
+
return match ? match[0] : value;
|
|
333
|
+
}
|
|
334
|
+
function bind(params, value) {
|
|
335
|
+
params.push(value);
|
|
336
|
+
return `$${params.length}`;
|
|
337
|
+
}
|
|
338
|
+
function escapeLike(value) {
|
|
339
|
+
return value.replace(/\\/g, '\\\\').replace(/%/g, '\\%').replace(/_/g, '\\_');
|
|
340
|
+
}
|
|
341
|
+
function assertInt(value, field) {
|
|
342
|
+
const n = Number(value);
|
|
343
|
+
if (!Number.isInteger(n))
|
|
344
|
+
throw new ReportViewQueryError('value_type_mismatch', `value_type_mismatch: ${field} must be an integer.`);
|
|
345
|
+
return n;
|
|
346
|
+
}
|
|
347
|
+
function assertNoTenancyLeak(dsl, view, names) {
|
|
348
|
+
const banned = new Set([view.tenancy_column, 'business_id']);
|
|
349
|
+
const check = (value) => {
|
|
350
|
+
const key = String(value || '');
|
|
351
|
+
if (banned.has(key))
|
|
352
|
+
throw unknownColumn(key, names, view.catalog_name);
|
|
353
|
+
};
|
|
354
|
+
(dsl.columns || []).forEach(check);
|
|
355
|
+
for (const filter of dsl.filters || [])
|
|
356
|
+
check(filter.column);
|
|
357
|
+
for (const group of dsl.group_by || [])
|
|
358
|
+
check(group.column);
|
|
359
|
+
for (const aggregate of dsl.aggregates || []) {
|
|
360
|
+
check(aggregate.column);
|
|
361
|
+
if (aggregate.as)
|
|
362
|
+
check(aggregate.as);
|
|
363
|
+
}
|
|
364
|
+
for (const item of dsl.sort || [])
|
|
365
|
+
check(item.by);
|
|
366
|
+
}
|
|
367
|
+
function nearest(input, names, n) {
|
|
368
|
+
const needle = String(input || '').toLowerCase();
|
|
369
|
+
return names
|
|
370
|
+
.map((name) => ({ name, d: levenshtein(needle, name.toLowerCase()) }))
|
|
371
|
+
.sort((a, b) => a.d - b.d || a.name.localeCompare(b.name))
|
|
372
|
+
.slice(0, n)
|
|
373
|
+
.filter((row) => row.d <= Math.max(3, Math.floor(needle.length / 2) + 1))
|
|
374
|
+
.map((row) => row.name);
|
|
375
|
+
}
|
|
376
|
+
function levenshtein(a, b) {
|
|
377
|
+
const rows = a.length + 1;
|
|
378
|
+
const cols = b.length + 1;
|
|
379
|
+
const grid = Array.from({ length: rows }, () => new Array(cols).fill(0));
|
|
380
|
+
for (let i = 0; i < rows; i++)
|
|
381
|
+
grid[i][0] = i;
|
|
382
|
+
for (let j = 0; j < cols; j++)
|
|
383
|
+
grid[0][j] = j;
|
|
384
|
+
for (let i = 1; i < rows; i++) {
|
|
385
|
+
for (let j = 1; j < cols; j++) {
|
|
386
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
387
|
+
grid[i][j] = Math.min(grid[i - 1][j] + 1, grid[i][j - 1] + 1, grid[i - 1][j - 1] + cost);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return grid[a.length][b.length];
|
|
391
|
+
}
|
|
392
|
+
exports.ReportViewQueryCompiler = {
|
|
393
|
+
compileReportViewQuery,
|
|
394
|
+
agentVisibleColumns,
|
|
395
|
+
quoteIdent,
|
|
396
|
+
resolveRelativeDate,
|
|
397
|
+
nearest,
|
|
398
|
+
};
|
|
399
|
+
//# sourceMappingURL=report.view.query.compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.view.query.compiler.js","sourceRoot":"","sources":["../../../src/access/libraries/report.view.query.compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,8 +61,10 @@ let CredentialResolveService = class CredentialResolveService {
|
|
|
61
61
|
throw new nestjs_utility_services_1.OperationException('This user is blocked from the platform');
|
|
62
62
|
}
|
|
63
63
|
if (resolved.kind === 'user') {
|
|
64
|
+
const scopes = normalizeScopes(resolved.scope);
|
|
64
65
|
nestjs_utility_services_1.Auth.login({
|
|
65
66
|
...accessObject,
|
|
67
|
+
roles: Array.isArray(accessObject?.roles) ? accessObject.roles : [],
|
|
66
68
|
req: { ip },
|
|
67
69
|
client_id: resolved.clientId,
|
|
68
70
|
business_id: resolved.businessId,
|
|
@@ -71,8 +73,8 @@ let CredentialResolveService = class CredentialResolveService {
|
|
|
71
73
|
product_id: product_type_enum_1.ProductTypeEnum.EMPLOYEE,
|
|
72
74
|
api_key_kind: 'user',
|
|
73
75
|
client_id: resolved.clientId,
|
|
74
|
-
scope:
|
|
75
|
-
read_only:
|
|
76
|
+
scope: scopes.length ? scopes : ['mcp'],
|
|
77
|
+
read_only: scopes.length === 1 && scopes[0] === 'reporting:read',
|
|
76
78
|
},
|
|
77
79
|
});
|
|
78
80
|
return;
|
|
@@ -81,8 +83,12 @@ let CredentialResolveService = class CredentialResolveService {
|
|
|
81
83
|
client_id: resolved.clientId,
|
|
82
84
|
business_id: resolved.businessId,
|
|
83
85
|
api_key_kind: 'api',
|
|
86
|
+
scope: ['mcp'],
|
|
84
87
|
};
|
|
85
|
-
nestjs_utility_services_1.Auth.login(
|
|
88
|
+
nestjs_utility_services_1.Auth.login({
|
|
89
|
+
...accessObject,
|
|
90
|
+
roles: Array.isArray(accessObject?.roles) ? accessObject.roles : [],
|
|
91
|
+
});
|
|
86
92
|
}
|
|
87
93
|
async touchUserSecretActivity(userId, clientId) {
|
|
88
94
|
await user_business_secret_entity_1.UserBusinessSecretEntity.update({ user_id: userId, client_id: clientId }, { last_activity_at: new Date() });
|
|
@@ -106,4 +112,13 @@ exports.CredentialResolveService = CredentialResolveService = __decorate([
|
|
|
106
112
|
user_business_access_service_1.UserBusinessAccessService,
|
|
107
113
|
nestjs_utility_services_1.AuthService])
|
|
108
114
|
], CredentialResolveService);
|
|
115
|
+
function normalizeScopes(scope) {
|
|
116
|
+
if (scope == null || scope === '')
|
|
117
|
+
return [];
|
|
118
|
+
const parts = Array.isArray(scope) ? scope : String(scope).split(/[\s,]+/);
|
|
119
|
+
return parts
|
|
120
|
+
.flatMap((entry) => String(entry).split(/[\s,]+/))
|
|
121
|
+
.map((entry) => entry.trim())
|
|
122
|
+
.filter(Boolean);
|
|
123
|
+
}
|
|
109
124
|
//# sourceMappingURL=credential.resolve.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential.resolve.service.js","sourceRoot":"","sources":["../../../src/access/services/credential.resolve.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"credential.resolve.service.js","sourceRoot":"","sources":["../../../src/access/services/credential.resolve.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,6 @@ import { EmailTemplateLogJob } from '../jobs/email.template.log.job';
|
|
|
40
40
|
import { EmailTemplateRecipientJob } from '../jobs/email.template.recipient.job';
|
|
41
41
|
import { EvaluateEmailRuleJob } from '../jobs/evaluate.email.rule.job';
|
|
42
42
|
import { EventTriggerJob } from '../jobs/event.trigger.job';
|
|
43
|
-
import { FormScriptJob } from '../jobs/form.script.job';
|
|
44
43
|
import { EventTriggerLogJob } from '../jobs/event.trigger.log.job';
|
|
45
44
|
import { ExecuteBusinessScriptJob } from '../jobs/execute.business.script.job';
|
|
46
45
|
import { ExecutionLogJob } from '../jobs/execution.log.job';
|
|
@@ -50,6 +49,7 @@ import { FcmTemplateJob } from '../jobs/fcm.template.job';
|
|
|
50
49
|
import { FcmTokenJob } from '../jobs/fcm.token.job';
|
|
51
50
|
import { FeatureJob } from '../jobs/feature.job';
|
|
52
51
|
import { FeatureMenuJob } from '../jobs/feature.menu.job';
|
|
52
|
+
import { FormScriptJob } from '../jobs/form.script.job';
|
|
53
53
|
import { GchatIncomingWebhookJob } from '../jobs/gchat.incoming.webhook.job';
|
|
54
54
|
import { GchatMessageJob } from '../jobs/gchat.message.job';
|
|
55
55
|
import { GchatTemplateJob } from '../jobs/gchat.template.job';
|
|
@@ -157,7 +157,6 @@ export declare class Es6JobsService {
|
|
|
157
157
|
private readonly emailTemplateRecipientJob;
|
|
158
158
|
private readonly evaluateEmailRuleJob;
|
|
159
159
|
private readonly eventTriggerJob;
|
|
160
|
-
private readonly formScriptJob;
|
|
161
160
|
private readonly eventTriggerLogJob;
|
|
162
161
|
private readonly executeBusinessScriptJob;
|
|
163
162
|
private readonly executionLogJob;
|
|
@@ -167,6 +166,7 @@ export declare class Es6JobsService {
|
|
|
167
166
|
private readonly fcmTokenJob;
|
|
168
167
|
private readonly featureJob;
|
|
169
168
|
private readonly featureMenuJob;
|
|
169
|
+
private readonly formScriptJob;
|
|
170
170
|
private readonly gchatIncomingWebhookJob;
|
|
171
171
|
private readonly gchatMessageJob;
|
|
172
172
|
private readonly gchatTemplateJob;
|
|
@@ -232,7 +232,7 @@ export declare class Es6JobsService {
|
|
|
232
232
|
private readonly whatsappTemplateJob;
|
|
233
233
|
private readonly whitelistedWhatsappNumberJob;
|
|
234
234
|
private jobs;
|
|
235
|
-
constructor(accessTestJob: AccessTestJob, apiAccountJob: ApiAccountJob, appIntegrationJob: AppIntegrationJob, businessAppIntegrationCredentialJob: BusinessAppIntegrationCredentialJob, businessAppIntegrationJob: BusinessAppIntegrationJob, businessAppIntegrationMessagesJob: BusinessAppIntegrationMessagesJob, businessCurrencyJob: BusinessCurrencyJob, businessDownloadableReportJob: BusinessDownloadableReportJob, businessEmailJob: BusinessEmailJob, businessFeatureJob: BusinessFeatureJob, businessGroupRoleJob: BusinessGroupRoleJob, businessMenuJob: BusinessMenuJob, businessPreferenceJob: BusinessPreferenceJob, businessPropertyJob: BusinessPropertyJob, businessReportJob: BusinessReportJob, businessScriptJob: BusinessScriptJob, businessUserGroupJob: BusinessUserGroupJob, businessUserJob: BusinessUserJob, businessUserNotificationPreferenceJob: BusinessUserNotificationPreferenceJob, businessUserRoleJob: BusinessUserRoleJob, businessWebhookJob: BusinessWebhookJob, bzNotificationChannelPreferenceJob: BzNotificationChannelPreferenceJob, captureEventTriggerJob: CaptureEventTriggerJob, childMenuJob: ChildMenuJob, choiceListJob: ChoiceListJob, choiceTypeJob: ChoiceTypeJob, conversationJob: ConversationJob, currencyRateJob: CurrencyRateJob, customFieldJob: CustomFieldJob, customReportJob: CustomReportJob, dashboardComponentJob: DashboardComponentJob, dashboardJob: DashboardJob, downloadLogJob: DownloadLogJob, emailAttachmentJob: EmailAttachmentJob, emailMessageJob: EmailMessageJob, emailRecipientJob: EmailRecipientJob, emailRuleJob: EmailRuleJob, emailStyleJob: EmailStyleJob, emailTemplateLogJob: EmailTemplateLogJob, emailTemplateRecipientJob: EmailTemplateRecipientJob, evaluateEmailRuleJob: EvaluateEmailRuleJob, eventTriggerJob: EventTriggerJob,
|
|
235
|
+
constructor(accessTestJob: AccessTestJob, apiAccountJob: ApiAccountJob, appIntegrationJob: AppIntegrationJob, businessAppIntegrationCredentialJob: BusinessAppIntegrationCredentialJob, businessAppIntegrationJob: BusinessAppIntegrationJob, businessAppIntegrationMessagesJob: BusinessAppIntegrationMessagesJob, businessCurrencyJob: BusinessCurrencyJob, businessDownloadableReportJob: BusinessDownloadableReportJob, businessEmailJob: BusinessEmailJob, businessFeatureJob: BusinessFeatureJob, businessGroupRoleJob: BusinessGroupRoleJob, businessMenuJob: BusinessMenuJob, businessPreferenceJob: BusinessPreferenceJob, businessPropertyJob: BusinessPropertyJob, businessReportJob: BusinessReportJob, businessScriptJob: BusinessScriptJob, businessUserGroupJob: BusinessUserGroupJob, businessUserJob: BusinessUserJob, businessUserNotificationPreferenceJob: BusinessUserNotificationPreferenceJob, businessUserRoleJob: BusinessUserRoleJob, businessWebhookJob: BusinessWebhookJob, bzNotificationChannelPreferenceJob: BzNotificationChannelPreferenceJob, captureEventTriggerJob: CaptureEventTriggerJob, childMenuJob: ChildMenuJob, choiceListJob: ChoiceListJob, choiceTypeJob: ChoiceTypeJob, conversationJob: ConversationJob, currencyRateJob: CurrencyRateJob, customFieldJob: CustomFieldJob, customReportJob: CustomReportJob, dashboardComponentJob: DashboardComponentJob, dashboardJob: DashboardJob, downloadLogJob: DownloadLogJob, emailAttachmentJob: EmailAttachmentJob, emailMessageJob: EmailMessageJob, emailRecipientJob: EmailRecipientJob, emailRuleJob: EmailRuleJob, emailStyleJob: EmailStyleJob, emailTemplateLogJob: EmailTemplateLogJob, emailTemplateRecipientJob: EmailTemplateRecipientJob, evaluateEmailRuleJob: EvaluateEmailRuleJob, eventTriggerJob: EventTriggerJob, eventTriggerLogJob: EventTriggerLogJob, executeBusinessScriptJob: ExecuteBusinessScriptJob, executionLogJob: ExecutionLogJob, fcmMessageJob: FcmMessageJob, fcmNotificationJob: FcmNotificationJob, fcmTemplateJob: FcmTemplateJob, fcmTokenJob: FcmTokenJob, featureJob: FeatureJob, featureMenuJob: FeatureMenuJob, formScriptJob: FormScriptJob, gchatIncomingWebhookJob: GchatIncomingWebhookJob, gchatMessageJob: GchatMessageJob, gchatTemplateJob: GchatTemplateJob, gchatUserJob: GchatUserJob, gchatWebhookJob: GchatWebhookJob, gchatWebhookMessageJob: GchatWebhookMessageJob, generateBusinessReportJob: GenerateBusinessReportJob, gmailIntegrationFetchMessagesJob: GmailIntegrationFetchMessagesJob, groupMemberJob: GroupMemberJob, groupRoleJob: GroupRoleJob, gstMappingJob: GstMappingJob, listPreferenceJob: ListPreferenceJob, listingColumnJob: ListingColumnJob, listingPageJob: ListingPageJob, listingPreferenceJob: ListingPreferenceJob, lockScriptJob: LockScriptJob, menuActionJob: MenuActionJob, menuJob: MenuJob, menuRoleJob: MenuRoleJob, moduleJob: ModuleJob, moduleMenuJob: ModuleMenuJob, onholdDocumentJob: OnholdDocumentJob, overridingScriptJob: OverridingScriptJob, preferenceUserGroupJob: PreferenceUserGroupJob, preferenceUsersJob: PreferenceUsersJob, processServerEmailJob: ProcessServerEmailJob, productJob: ProductJob, refreshBusinessPropertyJob: RefreshBusinessPropertyJob, reportLogJob: ReportLogJob, requestLogJob: RequestLogJob, roleGroupJob: RoleGroupJob, scheduledReportEmailJob: ScheduledReportEmailJob, scheduledReportItemJob: ScheduledReportItemJob, scheduledReportJob: ScheduledReportJob, sendBusinessReportNotificationJob: SendBusinessReportNotificationJob, setBusinessScriptScheduleJob: SetBusinessScriptScheduleJob, setEmailUnreadCountJob: SetEmailUnreadCountJob, slackIncomingWebhookJob: SlackIncomingWebhookJob, slackIntegrationJob: SlackIntegrationJob, slackMessageJob: SlackMessageJob, slackTemplateJob: SlackTemplateJob, slackUserJob: SlackUserJob, slackWebhookJob: SlackWebhookJob, slackWebhookMessageJob: SlackWebhookMessageJob, syncBURoleJob: SyncBURoleJob, syncEmailMessageMetricsJob: SyncEmailMessageMetricsJob, syncEmailMessagesJob: SyncEmailMessagesJob, syncMenuJob: SyncMenuJob, uiActionJob: UiActionJob, uiActionRoleJob: UiActionRoleJob, userBusinessSecretJob: UserBusinessSecretJob, userNotificationJob: UserNotificationJob, userPreferenceJob: UserPreferenceJob, userRoleJob: UserRoleJob, watchlistAssignmentJob: WatchlistAssignmentJob, webhookEventJob: WebhookEventJob, webhookLogJob: WebhookLogJob, webhookSlugJob: WebhookSlugJob, webhookTypeJob: WebhookTypeJob, whatsappIncomingWebhookJob: WhatsappIncomingWebhookJob, whatsappMessageJob: WhatsappMessageJob, whatsappMessagePayloadDto: WhatsappMessagePayloadDto, whatsappTemplateJob: WhatsappTemplateJob, whitelistedWhatsappNumberJob: WhitelistedWhatsappNumberJob);
|
|
236
236
|
alignJobs(): void;
|
|
237
237
|
setJobs(): void;
|
|
238
238
|
}
|
|
@@ -53,7 +53,6 @@ const email_template_log_job_1 = require("../jobs/email.template.log.job");
|
|
|
53
53
|
const email_template_recipient_job_1 = require("../jobs/email.template.recipient.job");
|
|
54
54
|
const evaluate_email_rule_job_1 = require("../jobs/evaluate.email.rule.job");
|
|
55
55
|
const event_trigger_job_1 = require("../jobs/event.trigger.job");
|
|
56
|
-
const form_script_job_1 = require("../jobs/form.script.job");
|
|
57
56
|
const event_trigger_log_job_1 = require("../jobs/event.trigger.log.job");
|
|
58
57
|
const execute_business_script_job_1 = require("../jobs/execute.business.script.job");
|
|
59
58
|
const execution_log_job_1 = require("../jobs/execution.log.job");
|
|
@@ -63,6 +62,7 @@ const fcm_template_job_1 = require("../jobs/fcm.template.job");
|
|
|
63
62
|
const fcm_token_job_1 = require("../jobs/fcm.token.job");
|
|
64
63
|
const feature_job_1 = require("../jobs/feature.job");
|
|
65
64
|
const feature_menu_job_1 = require("../jobs/feature.menu.job");
|
|
65
|
+
const form_script_job_1 = require("../jobs/form.script.job");
|
|
66
66
|
const gchat_incoming_webhook_job_1 = require("../jobs/gchat.incoming.webhook.job");
|
|
67
67
|
const gchat_message_job_1 = require("../jobs/gchat.message.job");
|
|
68
68
|
const gchat_template_job_1 = require("../jobs/gchat.template.job");
|
|
@@ -129,7 +129,7 @@ const whatsapp_template_job_1 = require("../jobs/whatsapp.template.job");
|
|
|
129
129
|
const whitelisted_whatsapp_number_job_1 = require("../jobs/whitelisted.whatsapp.number.job");
|
|
130
130
|
const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
|
|
131
131
|
let Es6JobsService = class Es6JobsService {
|
|
132
|
-
constructor(accessTestJob, apiAccountJob, appIntegrationJob, businessAppIntegrationCredentialJob, businessAppIntegrationJob, businessAppIntegrationMessagesJob, businessCurrencyJob, businessDownloadableReportJob, businessEmailJob, businessFeatureJob, businessGroupRoleJob, businessMenuJob, businessPreferenceJob, businessPropertyJob, businessReportJob, businessScriptJob, businessUserGroupJob, businessUserJob, businessUserNotificationPreferenceJob, businessUserRoleJob, businessWebhookJob, bzNotificationChannelPreferenceJob, captureEventTriggerJob, childMenuJob, choiceListJob, choiceTypeJob, conversationJob, currencyRateJob, customFieldJob, customReportJob, dashboardComponentJob, dashboardJob, downloadLogJob, emailAttachmentJob, emailMessageJob, emailRecipientJob, emailRuleJob, emailStyleJob, emailTemplateLogJob, emailTemplateRecipientJob, evaluateEmailRuleJob, eventTriggerJob,
|
|
132
|
+
constructor(accessTestJob, apiAccountJob, appIntegrationJob, businessAppIntegrationCredentialJob, businessAppIntegrationJob, businessAppIntegrationMessagesJob, businessCurrencyJob, businessDownloadableReportJob, businessEmailJob, businessFeatureJob, businessGroupRoleJob, businessMenuJob, businessPreferenceJob, businessPropertyJob, businessReportJob, businessScriptJob, businessUserGroupJob, businessUserJob, businessUserNotificationPreferenceJob, businessUserRoleJob, businessWebhookJob, bzNotificationChannelPreferenceJob, captureEventTriggerJob, childMenuJob, choiceListJob, choiceTypeJob, conversationJob, currencyRateJob, customFieldJob, customReportJob, dashboardComponentJob, dashboardJob, downloadLogJob, emailAttachmentJob, emailMessageJob, emailRecipientJob, emailRuleJob, emailStyleJob, emailTemplateLogJob, emailTemplateRecipientJob, evaluateEmailRuleJob, eventTriggerJob, eventTriggerLogJob, executeBusinessScriptJob, executionLogJob, fcmMessageJob, fcmNotificationJob, fcmTemplateJob, fcmTokenJob, featureJob, featureMenuJob, formScriptJob, gchatIncomingWebhookJob, gchatMessageJob, gchatTemplateJob, gchatUserJob, gchatWebhookJob, gchatWebhookMessageJob, generateBusinessReportJob, gmailIntegrationFetchMessagesJob, groupMemberJob, groupRoleJob, gstMappingJob, listPreferenceJob, listingColumnJob, listingPageJob, listingPreferenceJob, lockScriptJob, menuActionJob, menuJob, menuRoleJob, moduleJob, moduleMenuJob, onholdDocumentJob, overridingScriptJob, preferenceUserGroupJob, preferenceUsersJob, processServerEmailJob, productJob, refreshBusinessPropertyJob, reportLogJob, requestLogJob, roleGroupJob, scheduledReportEmailJob, scheduledReportItemJob, scheduledReportJob, sendBusinessReportNotificationJob, setBusinessScriptScheduleJob, setEmailUnreadCountJob, slackIncomingWebhookJob, slackIntegrationJob, slackMessageJob, slackTemplateJob, slackUserJob, slackWebhookJob, slackWebhookMessageJob, syncBURoleJob, syncEmailMessageMetricsJob, syncEmailMessagesJob, syncMenuJob, uiActionJob, uiActionRoleJob, userBusinessSecretJob, userNotificationJob, userPreferenceJob, userRoleJob, watchlistAssignmentJob, webhookEventJob, webhookLogJob, webhookSlugJob, webhookTypeJob, whatsappIncomingWebhookJob, whatsappMessageJob, whatsappMessagePayloadDto, whatsappTemplateJob, whitelistedWhatsappNumberJob) {
|
|
133
133
|
this.accessTestJob = accessTestJob;
|
|
134
134
|
this.apiAccountJob = apiAccountJob;
|
|
135
135
|
this.appIntegrationJob = appIntegrationJob;
|
|
@@ -172,7 +172,6 @@ let Es6JobsService = class Es6JobsService {
|
|
|
172
172
|
this.emailTemplateRecipientJob = emailTemplateRecipientJob;
|
|
173
173
|
this.evaluateEmailRuleJob = evaluateEmailRuleJob;
|
|
174
174
|
this.eventTriggerJob = eventTriggerJob;
|
|
175
|
-
this.formScriptJob = formScriptJob;
|
|
176
175
|
this.eventTriggerLogJob = eventTriggerLogJob;
|
|
177
176
|
this.executeBusinessScriptJob = executeBusinessScriptJob;
|
|
178
177
|
this.executionLogJob = executionLogJob;
|
|
@@ -182,6 +181,7 @@ let Es6JobsService = class Es6JobsService {
|
|
|
182
181
|
this.fcmTokenJob = fcmTokenJob;
|
|
183
182
|
this.featureJob = featureJob;
|
|
184
183
|
this.featureMenuJob = featureMenuJob;
|
|
184
|
+
this.formScriptJob = formScriptJob;
|
|
185
185
|
this.gchatIncomingWebhookJob = gchatIncomingWebhookJob;
|
|
186
186
|
this.gchatMessageJob = gchatMessageJob;
|
|
187
187
|
this.gchatTemplateJob = gchatTemplateJob;
|
|
@@ -294,7 +294,6 @@ let Es6JobsService = class Es6JobsService {
|
|
|
294
294
|
'6f4a79a7fb7bdf66788368a36e780fde': this.emailTemplateRecipientJob,
|
|
295
295
|
'5e77b61f1ec9433816b0304cca59b845': this.evaluateEmailRuleJob,
|
|
296
296
|
'71a7bf7f64dd313c91f38c48aea8b18e': this.eventTriggerJob,
|
|
297
|
-
'69f08636173c0e1a797ccc54d25e8c25': this.formScriptJob,
|
|
298
297
|
aedf078502ae7a9447edd334b17b1d89: this.eventTriggerLogJob,
|
|
299
298
|
'2b123e3dcf817a37ade84326f01859c1': this.executeBusinessScriptJob,
|
|
300
299
|
a26abc298b6b26cfbf3a7d0c52aa991d: this.executionLogJob,
|
|
@@ -304,6 +303,7 @@ let Es6JobsService = class Es6JobsService {
|
|
|
304
303
|
'1ee5cf5eee1013306eab4a4190a2dd09': this.fcmTokenJob,
|
|
305
304
|
dbe13000898bdfd0a0601490e0bbf703: this.featureJob,
|
|
306
305
|
'49cfbc22351965d1f4355f0079d49373': this.featureMenuJob,
|
|
306
|
+
c3c871dbe1165edfe3b79f871f7d8a10: this.formScriptJob,
|
|
307
307
|
ba74133d03313f6620374ed9be540907: this.gchatIncomingWebhookJob,
|
|
308
308
|
'4cc7d538a35084dbfbc13f1ba17c1dfa': this.gchatMessageJob,
|
|
309
309
|
'34424d2faf4bda66bab01b98e9232ce9': this.gchatTemplateJob,
|
|
@@ -419,7 +419,6 @@ exports.Es6JobsService = Es6JobsService = __decorate([
|
|
|
419
419
|
email_template_recipient_job_1.EmailTemplateRecipientJob,
|
|
420
420
|
evaluate_email_rule_job_1.EvaluateEmailRuleJob,
|
|
421
421
|
event_trigger_job_1.EventTriggerJob,
|
|
422
|
-
form_script_job_1.FormScriptJob,
|
|
423
422
|
event_trigger_log_job_1.EventTriggerLogJob,
|
|
424
423
|
execute_business_script_job_1.ExecuteBusinessScriptJob,
|
|
425
424
|
execution_log_job_1.ExecutionLogJob,
|
|
@@ -429,6 +428,7 @@ exports.Es6JobsService = Es6JobsService = __decorate([
|
|
|
429
428
|
fcm_token_job_1.FcmTokenJob,
|
|
430
429
|
feature_job_1.FeatureJob,
|
|
431
430
|
feature_menu_job_1.FeatureMenuJob,
|
|
431
|
+
form_script_job_1.FormScriptJob,
|
|
432
432
|
gchat_incoming_webhook_job_1.GchatIncomingWebhookJob,
|
|
433
433
|
gchat_message_job_1.GchatMessageJob,
|
|
434
434
|
gchat_template_job_1.GchatTemplateJob,
|