@carlonicora/nestjs-neo4jsonapi 2.5.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/config/base.config.d.ts.map +1 -1
  2. package/dist/config/base.config.js +1 -0
  3. package/dist/config/base.config.js.map +1 -1
  4. package/dist/config/interfaces/config.ai.interface.d.ts +15 -0
  5. package/dist/config/interfaces/config.ai.interface.d.ts.map +1 -1
  6. package/dist/core/llm/services/audio.llm.service.d.ts +16 -8
  7. package/dist/core/llm/services/audio.llm.service.d.ts.map +1 -1
  8. package/dist/core/llm/services/audio.llm.service.js +41 -19
  9. package/dist/core/llm/services/audio.llm.service.js.map +1 -1
  10. package/dist/foundations/tokenusage/common/tokenusage.target-labels.d.ts +89 -0
  11. package/dist/foundations/tokenusage/common/tokenusage.target-labels.d.ts.map +1 -0
  12. package/dist/foundations/tokenusage/common/tokenusage.target-labels.js +79 -0
  13. package/dist/foundations/tokenusage/common/tokenusage.target-labels.js.map +1 -0
  14. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.d.ts +1 -1
  15. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.d.ts.map +1 -1
  16. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.js +8 -3
  17. package/dist/foundations/tokenusage/controllers/tokenusage.admin.controller.js.map +1 -1
  18. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.d.ts +35 -0
  19. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.d.ts.map +1 -0
  20. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.js +133 -0
  21. package/dist/foundations/tokenusage/controllers/tokenusage.report.controller.js.map +1 -0
  22. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.d.ts +2 -7
  23. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.d.ts.map +1 -1
  24. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.js +2 -6
  25. package/dist/foundations/tokenusage/entities/tokenusage-admin-breakdown.js.map +1 -1
  26. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.d.ts +2 -7
  27. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.d.ts.map +1 -1
  28. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.js +2 -6
  29. package/dist/foundations/tokenusage/entities/tokenusage-admin-summary.js.map +1 -1
  30. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.d.ts +2 -7
  31. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.d.ts.map +1 -1
  32. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.js +2 -6
  33. package/dist/foundations/tokenusage/entities/tokenusage-admin-timeline.js.map +1 -1
  34. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.d.ts +20 -0
  35. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.d.ts.map +1 -0
  36. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.js +17 -0
  37. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.js.map +1 -0
  38. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.d.ts +3 -0
  39. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.d.ts.map +1 -0
  40. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.js +10 -0
  41. package/dist/foundations/tokenusage/entities/tokenusage-report-breakdown.meta.js.map +1 -0
  42. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.d.ts +19 -0
  43. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.d.ts.map +1 -0
  44. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.js +16 -0
  45. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.js.map +1 -0
  46. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.d.ts +3 -0
  47. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.d.ts.map +1 -0
  48. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.js +10 -0
  49. package/dist/foundations/tokenusage/entities/tokenusage-report-summary.meta.js.map +1 -0
  50. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.d.ts +17 -0
  51. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.d.ts.map +1 -0
  52. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.js +17 -0
  53. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.js.map +1 -0
  54. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.d.ts +3 -0
  55. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.d.ts.map +1 -0
  56. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.js +10 -0
  57. package/dist/foundations/tokenusage/entities/tokenusage-report-timeline.meta.js.map +1 -0
  58. package/dist/foundations/tokenusage/entities/usage-metric.fields.d.ts +48 -0
  59. package/dist/foundations/tokenusage/entities/usage-metric.fields.d.ts.map +1 -0
  60. package/dist/foundations/tokenusage/entities/usage-metric.fields.js +24 -0
  61. package/dist/foundations/tokenusage/entities/usage-metric.fields.js.map +1 -0
  62. package/dist/foundations/tokenusage/index.d.ts +11 -0
  63. package/dist/foundations/tokenusage/index.d.ts.map +1 -1
  64. package/dist/foundations/tokenusage/index.js +24 -1
  65. package/dist/foundations/tokenusage/index.js.map +1 -1
  66. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.d.ts +13 -2
  67. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.d.ts.map +1 -1
  68. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js +43 -2
  69. package/dist/foundations/tokenusage/repositories/tokenusage.admin.repository.js.map +1 -1
  70. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.d.ts +104 -0
  71. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.d.ts.map +1 -0
  72. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.js +286 -0
  73. package/dist/foundations/tokenusage/repositories/tokenusage.report.repository.js.map +1 -0
  74. package/dist/foundations/tokenusage/services/tokenusage.admin.service.d.ts +3 -1
  75. package/dist/foundations/tokenusage/services/tokenusage.admin.service.d.ts.map +1 -1
  76. package/dist/foundations/tokenusage/services/tokenusage.admin.service.js +1 -0
  77. package/dist/foundations/tokenusage/services/tokenusage.admin.service.js.map +1 -1
  78. package/dist/foundations/tokenusage/services/tokenusage.report.service.d.ts +43 -0
  79. package/dist/foundations/tokenusage/services/tokenusage.report.service.d.ts.map +1 -0
  80. package/dist/foundations/tokenusage/services/tokenusage.report.service.js +73 -0
  81. package/dist/foundations/tokenusage/services/tokenusage.report.service.js.map +1 -0
  82. package/dist/foundations/tokenusage/tokenusage.module.d.ts.map +1 -1
  83. package/dist/foundations/tokenusage/tokenusage.module.js +16 -2
  84. package/dist/foundations/tokenusage/tokenusage.module.js.map +1 -1
  85. package/dist/foundations/user/repositories/user.repository.d.ts.map +1 -1
  86. package/dist/foundations/user/repositories/user.repository.js +5 -1
  87. package/dist/foundations/user/repositories/user.repository.js.map +1 -1
  88. package/package.json +1 -1
@@ -0,0 +1,286 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TokenUsageReportRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const nestjs_cls_1 = require("nestjs-cls");
18
+ const abstract_repository_1 = require("../../../core/neo4j/abstracts/abstract.repository");
19
+ const neo4j_service_1 = require("../../../core/neo4j/services/neo4j.service");
20
+ const security_service_1 = require("../../../core/security/services/security.service");
21
+ const tokenusage_target_labels_1 = require("../common/tokenusage.target-labels");
22
+ const tokenusage_1 = require("../entities/tokenusage");
23
+ const tokenusage_meta_1 = require("../entities/tokenusage.meta");
24
+ const NODE = tokenusage_meta_1.tokenUsageMeta.nodeName; // "tokenusage"
25
+ /**
26
+ * The date.truncate units this repository may emit, keyed by granularity. A
27
+ * lookup rather than an interpolation of the caller's string: nothing that did
28
+ * not come from this table can ever reach the query text.
29
+ */
30
+ const TRUNCATION_UNITS = {
31
+ week: "week",
32
+ month: "month",
33
+ };
34
+ /** The metric column each breakdown orders by. Same closed-lookup rule. */
35
+ const ORDER_COLUMNS = {
36
+ credits: "credits",
37
+ tokens: "tokens",
38
+ };
39
+ /**
40
+ * Self-service token-usage reporting: the caller's OWN company, nothing else.
41
+ *
42
+ * This is the deliberate mirror image of TokenUsageAdminRepository. That class
43
+ * carries a file-level lint-ignore and omits buildDefaultMatch() because a
44
+ * platform-wide dashboard must not be scoped to the caller. THIS class must be
45
+ * scoped, so every query below goes through buildDefaultMatch(), which injects
46
+ * the CLS company filter. There is deliberately no file-level ignore header
47
+ * here, and no companyId parameter anywhere in this file: a self-service caller
48
+ * cannot name a company, so there is nothing to spoof.
49
+ *
50
+ * Rollup RETURNs are scalar columns, not graph nodes, so readOne()/readMany()
51
+ * cannot map them - entityFactory.createGraphList expects nodes. Same shape and
52
+ * same rationale as TokenUsageRepository.findAggregatedByDateAndType in this
53
+ * folder, which is the canonical company-scoped aggregation.
54
+ *
55
+ * EVERY traversal constrains its target label. The company traversal inherits
56
+ * the label constraint from Neo4jService.initQuery()'s preamble, which binds
57
+ * (company:Company {id: $companyId}); the target traversal below constrains
58
+ * (grp:<AllowlistedLabel>). The write bug fixed in tokenusage.repository.ts left
59
+ * label-less nodes on exactly these relationships, and an unconstrained match
60
+ * returns them.
61
+ *
62
+ * It does NOT override onModuleInit: the :TokenUsage indexes belong to
63
+ * TokenUsageRepository, and duplicating the CREATE INDEX would be a second
64
+ * writer for one schema object.
65
+ */
66
+ let TokenUsageReportRepository = class TokenUsageReportRepository extends abstract_repository_1.AbstractRepository {
67
+ constructor(neo4j, securityService, clsService, targetLabels = []) {
68
+ super(neo4j, securityService, clsService);
69
+ this.targetLabels = targetLabels;
70
+ this.descriptor = tokenusage_1.TokenUsageDescriptor;
71
+ }
72
+ /**
73
+ * Two rows: the requested window and the equal-length span immediately
74
+ * preceding it, which is what the KPI tile's delta is measured against.
75
+ *
76
+ * Both rows are ALWAYS returned, zero-filled when the database has nothing —
77
+ * the tiles then never have to branch on a missing window.
78
+ */
79
+ async findSummary(params) {
80
+ const span = new Date(params.to).getTime() - new Date(params.from).getTime();
81
+ const previousFrom = new Date(new Date(params.from).getTime() - span).toISOString();
82
+ const query = this.neo4j.initQuery();
83
+ query.queryParams = { ...query.queryParams, from: params.from, to: params.to, previousFrom };
84
+ query.query += `
85
+ ${this.buildDefaultMatch()}
86
+ WHERE ${NODE}.createdAt >= datetime($previousFrom) AND ${NODE}.createdAt <= datetime($to)
87
+
88
+ WITH ${NODE},
89
+ CASE WHEN ${NODE}.createdAt >= datetime($from) THEN 'current' ELSE 'previous' END AS window
90
+
91
+ RETURN window AS window,
92
+ ${this._metricProjection()}
93
+ `;
94
+ const result = await this.neo4j.read(query.query, query.queryParams); // nja-lint-ignore: buildDefaultMatch()-scoped scalar aggregation — non-entity shape
95
+ const found = new Map();
96
+ for (const record of result.records) {
97
+ // nja-lint-ignore: aggregation rows, not entity nodes
98
+ const window = record.get("window");
99
+ found.set(window, { id: window, window, ...this._metrics(record) });
100
+ }
101
+ return ["current", "previous"].map((window) => found.get(window) ??
102
+ {
103
+ id: window,
104
+ window,
105
+ cost: 0,
106
+ credits: 0,
107
+ tokensIn: 0,
108
+ tokensOut: 0,
109
+ cached: 0,
110
+ calls: 0,
111
+ });
112
+ }
113
+ /**
114
+ * One row per (bucket, operation type). `stackBy` is accepted for signature
115
+ * parity with the administrative timeline but only "type" is meaningful inside
116
+ * a single tenant, so it is not interpolated anywhere.
117
+ */
118
+ async findTimeline(params) {
119
+ const query = this.neo4j.initQuery();
120
+ query.queryParams = { ...query.queryParams, from: params.from, to: params.to };
121
+ const unit = params.granularity === "day" ? undefined : TRUNCATION_UNITS[params.granularity];
122
+ const bucketExpression = unit ? `date.truncate('${unit}', date(${NODE}.createdAt))` : `date(${NODE}.createdAt)`;
123
+ query.query += `
124
+ ${this.buildDefaultMatch()}
125
+ WHERE ${NODE}.createdAt >= datetime($from) AND ${NODE}.createdAt <= datetime($to)
126
+
127
+ WITH ${NODE},
128
+ ${bucketExpression} AS bucket,
129
+ ${NODE}.tokenUsageType AS series
130
+
131
+ RETURN toString(bucket) AS bucket,
132
+ series AS series,
133
+ ${this._metricProjection()}
134
+ ORDER BY bucket ASC, series ASC
135
+ `;
136
+ const result = await this.neo4j.read(query.query, query.queryParams); // nja-lint-ignore: buildDefaultMatch()-scoped scalar aggregation — non-entity shape
137
+ return result.records.map((record) => {
138
+ // nja-lint-ignore: aggregation rows, not entity nodes
139
+ const bucket = record.get("bucket");
140
+ const series = record.get("series");
141
+ return {
142
+ id: `${bucket}|${series}`,
143
+ bucket,
144
+ series,
145
+ ...this._metrics(record),
146
+ };
147
+ });
148
+ }
149
+ /**
150
+ * Ranked rows for one dimension, ordered by the SELECTED metric.
151
+ *
152
+ * Ordering by the selected metric rather than unconditionally by cost is not
153
+ * cosmetic: credits are max(minCreditsPerRecord, round4(cost / creditCost)),
154
+ * and that floor breaks proportionality for cheap calls — so a credits panel
155
+ * ranked by cost is visibly mis-ordered whenever the two diverge.
156
+ *
157
+ * Everything past `limit` is folded into a single "other" row so the shares
158
+ * still sum to 100 percent.
159
+ */
160
+ async findBreakdown(params) {
161
+ let grouping;
162
+ let projection;
163
+ if (params.dimension === "target") {
164
+ // Label and relationship types come from the allowlist, not the request —
165
+ // see _resolveTarget and normaliseTargetLabel.
166
+ grouping = (0, tokenusage_target_labels_1.buildTargetGrouping)({
167
+ target: this._resolveTarget(params.targetLabel),
168
+ nodeName: NODE,
169
+ carried: [],
170
+ });
171
+ projection = `
172
+ grp.id AS id,
173
+ coalesce(grp.name, grp.title) AS label,
174
+ null AS sublabel,`;
175
+ }
176
+ else {
177
+ grouping = `WITH ${NODE}, ${NODE}.tokenUsageType AS grp`;
178
+ projection = `
179
+ grp AS id,
180
+ grp AS label,
181
+ null AS sublabel,`;
182
+ }
183
+ const query = this.neo4j.initQuery();
184
+ query.queryParams = { ...query.queryParams, from: params.from, to: params.to };
185
+ query.query += `
186
+ ${this.buildDefaultMatch()}
187
+ WHERE ${NODE}.createdAt >= datetime($from) AND ${NODE}.createdAt <= datetime($to)
188
+ ${grouping}
189
+
190
+ RETURN ${projection}
191
+ ${this._metricProjection()}
192
+ ORDER BY ${ORDER_COLUMNS[params.metric]} DESC
193
+ `;
194
+ const result = await this.neo4j.read(query.query, query.queryParams); // nja-lint-ignore: buildDefaultMatch()-scoped scalar aggregation — non-entity shape
195
+ const all = result.records.map((record) => {
196
+ // nja-lint-ignore: aggregation rows, not entity nodes
197
+ const sublabel = record.get("sublabel");
198
+ return {
199
+ id: record.get("id") ?? "unknown",
200
+ label: record.get("label") ?? record.get("id") ?? "unknown",
201
+ ...(sublabel ? { sublabel: sublabel } : {}),
202
+ ...this._metrics(record),
203
+ };
204
+ });
205
+ if (all.length <= params.limit)
206
+ return all;
207
+ const kept = all.slice(0, params.limit);
208
+ const folded = all.slice(params.limit);
209
+ kept.push({
210
+ id: "other",
211
+ label: "other",
212
+ cost: folded.reduce((sum, row) => sum + row.cost, 0),
213
+ credits: folded.reduce((sum, row) => sum + row.credits, 0),
214
+ tokensIn: folded.reduce((sum, row) => sum + row.tokensIn, 0),
215
+ tokensOut: folded.reduce((sum, row) => sum + row.tokensOut, 0),
216
+ cached: folded.reduce((sum, row) => sum + row.cached, 0),
217
+ calls: folded.reduce((sum, row) => sum + row.calls, 0),
218
+ });
219
+ return kept;
220
+ }
221
+ /**
222
+ * The six metric columns, identical in all three queries.
223
+ *
224
+ * `tokens` is projected as a column of its own so ORDER BY can name it — a
225
+ * Cypher ORDER BY cannot reference an expression built from two aggregates
226
+ * unless that expression is itself projected.
227
+ */
228
+ _metricProjection() {
229
+ return `
230
+ sum(toFloat(${NODE}.cost)) AS cost,
231
+ sum(toFloat(${NODE}.credits)) AS credits,
232
+ sum(toInteger(${NODE}.inputTokens)) AS tokensIn,
233
+ sum(toInteger(${NODE}.outputTokens)) AS tokensOut,
234
+ sum(toInteger(${NODE}.cachedInputTokens)) AS cached,
235
+ count(${NODE}) AS calls,
236
+ sum(toInteger(${NODE}.inputTokens)) + sum(toInteger(${NODE}.outputTokens)) AS tokens`;
237
+ }
238
+ _metrics(record) {
239
+ return {
240
+ cost: this.toNumber(record.get("cost")),
241
+ credits: this.toNumber(record.get("credits")),
242
+ tokensIn: this.toNumber(record.get("tokensIn")),
243
+ tokensOut: this.toNumber(record.get("tokensOut")),
244
+ cached: this.toNumber(record.get("cached")),
245
+ calls: this.toNumber(record.get("calls")),
246
+ };
247
+ }
248
+ /**
249
+ * Resolves the requested label against the host application's allowlist and
250
+ * returns the ALLOWLIST'S OWN string, never the caller's. An empty allowlist
251
+ * means the app never opted in, so every target request is refused.
252
+ */
253
+ _resolveTarget(requested) {
254
+ const available = this.targetLabels.map(tokenusage_target_labels_1.normaliseTargetLabel);
255
+ const match = available.find((target) => target.label === requested);
256
+ if (!match)
257
+ throw new common_1.BadRequestException(available.length === 0
258
+ ? "dimension=target is not enabled for this application"
259
+ : `targetLabel must be one of ${available.map((target) => target.label).join(", ")}`);
260
+ return match;
261
+ }
262
+ /**
263
+ * Neo4j hands integers back as driver Integer objects. Same helper, same
264
+ * shape, as TokenUsageRepository.toNumber — AbstractRepository does not
265
+ * provide one, and the aggregation path is the only place that needs it.
266
+ */
267
+ toNumber(value) {
268
+ if (value === null || value === undefined)
269
+ return 0;
270
+ if (typeof value === "number")
271
+ return value;
272
+ if (typeof value.toNumber === "function")
273
+ return value.toNumber();
274
+ return Number(value) || 0;
275
+ }
276
+ };
277
+ exports.TokenUsageReportRepository = TokenUsageReportRepository;
278
+ exports.TokenUsageReportRepository = TokenUsageReportRepository = __decorate([
279
+ (0, common_1.Injectable)(),
280
+ __param(3, (0, common_1.Optional)()),
281
+ __param(3, (0, common_1.Inject)(tokenusage_target_labels_1.TOKEN_USAGE_TARGET_LABELS)),
282
+ __metadata("design:paramtypes", [neo4j_service_1.Neo4jService,
283
+ security_service_1.SecurityService,
284
+ nestjs_cls_1.ClsService, Array])
285
+ ], TokenUsageReportRepository);
286
+ //# sourceMappingURL=tokenusage.report.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.report.repository.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/repositories/tokenusage.report.repository.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ClsService } from "nestjs-cls";
2
2
  import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
3
3
  import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
4
+ import { TokenUsageDimension } from "../common/tokenusage.target-labels";
4
5
  import { TokenUsage, TokenUsageDescriptor } from "../entities/tokenusage";
5
6
  import { TokenUsageAdminRepository } from "../repositories/tokenusage.admin.repository";
6
7
  /**
@@ -41,7 +42,8 @@ export declare class TokenUsageAdminService extends AbstractService<TokenUsage,
41
42
  getBreakdown(params: {
42
43
  from: string;
43
44
  to: string;
44
- dimension: "company" | "user" | "operation";
45
+ dimension: TokenUsageDimension;
46
+ targetLabel?: string;
45
47
  scope: "customer" | "platform";
46
48
  companyId?: string;
47
49
  limit: number;
@@ -1 +1 @@
1
- {"version":3,"file":"tokenusage.admin.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/services/tokenusage.admin.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,sBAAuB,SAAQ,eAAe,CAAC,UAAU,EAAE,OAAO,oBAAoB,CAAC,aAAa,CAAC;IAK9G,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,yBAAyB;IAJzE,SAAS,CAAC,QAAQ,CAAC,UAAU,sDAAwB;gBAGnD,cAAc,EAAE,cAAc,EACX,yBAAyB,EAAE,yBAAyB,EACvE,UAAU,EAAE,UAAU;IAKlB,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAUlF,WAAW,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;QACtC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,GAAG,CAAC;IAYV,YAAY,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;QAC5C,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,GAAG,CAAC;CAYjB"}
1
+ {"version":3,"file":"tokenusage.admin.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/services/tokenusage.admin.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBACa,sBAAuB,SAAQ,eAAe,CAAC,UAAU,EAAE,OAAO,oBAAoB,CAAC,aAAa,CAAC;IAK9G,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,yBAAyB;IAJzE,SAAS,CAAC,QAAQ,CAAC,UAAU,sDAAwB;gBAGnD,cAAc,EAAE,cAAc,EACX,yBAAyB,EAAE,yBAAyB,EACvE,UAAU,EAAE,UAAU;IAKlB,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAUlF,WAAW,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;QACtC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,GAAG,CAAC;IAYV,YAAY,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,mBAAmB,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,GAAG,CAAC;CAajB"}
@@ -67,6 +67,7 @@ let TokenUsageAdminService = class TokenUsageAdminService extends abstract_servi
67
67
  from: params.from,
68
68
  to: params.to,
69
69
  dimension: params.dimension,
70
+ targetLabel: params.targetLabel,
70
71
  scope: params.scope,
71
72
  companyId: params.companyId,
72
73
  limit: params.limit,
@@ -1 +1 @@
1
- {"version":3,"file":"tokenusage.admin.service.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/services/tokenusage.admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,oFAAgF;AAChF,qFAAiF;AACjF,uDAA0E;AAC1E,uFAA4F;AAC5F,mFAAwF;AACxF,qFAA0F;AAC1F,6FAAwF;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,kCAAsE;IAGhH,YACE,cAA8B,EACX,yBAAoD,EACvE,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,iCAAoB,CAAC,KAAK,CAAC,CAAC;QAHtE,8BAAyB,GAAzB,yBAAyB,CAA2B;QAJtD,eAAU,GAAG,iCAAoB,CAAC;IAQrD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwD;QACvE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;YAC5D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,2DAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAMjB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;YAC7D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,6DAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAOlB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC;YAC9D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,+DAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvF,CAAC;CACF,CAAA;AA1DY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAKO,gCAAc;QACgB,uDAAyB;QAC3D,uBAAU;GANb,sBAAsB,CA0DlC"}
1
+ {"version":3,"file":"tokenusage.admin.service.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/services/tokenusage.admin.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,oFAAgF;AAChF,qFAAiF;AAEjF,uDAA0E;AAC1E,uFAA4F;AAC5F,mFAAwF;AACxF,qFAA0F;AAC1F,6FAAwF;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AAEI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,kCAAsE;IAGhH,YACE,cAA8B,EACX,yBAAoD,EACvE,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,iCAAoB,CAAC,KAAK,CAAC,CAAC;QAHtE,8BAAyB,GAAzB,yBAAyB,CAA2B;QAJtD,eAAU,GAAG,iCAAoB,CAAC;IAQrD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwD;QACvE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;YAC5D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,2DAAgC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAMjB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC;YAC7D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,6DAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAQlB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC;YAC9D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,+DAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvF,CAAC;CACF,CAAA;AA5DY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAKO,gCAAc;QACgB,uDAAyB;QAC3D,uBAAU;GANb,sBAAsB,CA4DlC"}
@@ -0,0 +1,43 @@
1
+ import { ClsService } from "nestjs-cls";
2
+ import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
3
+ import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
4
+ import { TokenUsageReportDimension, TokenUsageReportMetric } from "../common/tokenusage.target-labels";
5
+ import { TokenUsage, TokenUsageDescriptor } from "../entities/tokenusage";
6
+ import { TokenUsageReportRepository } from "../repositories/tokenusage.report.repository";
7
+ /**
8
+ * Serialises the self-service reporting rollups as JSON:API documents.
9
+ *
10
+ * Same generics, descriptor and super() argument order as its two siblings in
11
+ * this folder, so all three tokenusage services are wired identically.
12
+ * `descriptor` and the inherited `model` are the TokenUsage entity — that is
13
+ * what the repository reads and what the base class needs to be coherent — while
14
+ * the three methods below serialise with the AGGREGATE descriptors' models,
15
+ * because their return shapes are rollups, not TokenUsage nodes.
16
+ *
17
+ * JSON:API documents are built exclusively by the framework; nothing here
18
+ * hand-assembles a { data: { type, attributes } } object.
19
+ */
20
+ export declare class TokenUsageReportService extends AbstractService<TokenUsage, typeof TokenUsageDescriptor.relationships> {
21
+ protected readonly tokenUsageReportRepository: TokenUsageReportRepository;
22
+ protected readonly descriptor: import("../../..").EntityDescriptor<TokenUsage, {}>;
23
+ constructor(jsonApiService: JsonApiService, tokenUsageReportRepository: TokenUsageReportRepository, clsService: ClsService);
24
+ getSummary(params: {
25
+ from: string;
26
+ to: string;
27
+ }): Promise<any>;
28
+ getTimeline(params: {
29
+ from: string;
30
+ to: string;
31
+ granularity: "day" | "week" | "month";
32
+ stackBy: "type";
33
+ }): Promise<any>;
34
+ getBreakdown(params: {
35
+ from: string;
36
+ to: string;
37
+ dimension: TokenUsageReportDimension;
38
+ targetLabel?: string;
39
+ metric: TokenUsageReportMetric;
40
+ limit: number;
41
+ }): Promise<any>;
42
+ }
43
+ //# sourceMappingURL=tokenusage.report.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.report.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/services/tokenusage.report.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAE1F;;;;;;;;;;;;GAYG;AACH,qBACa,uBAAwB,SAAQ,eAAe,CAAC,UAAU,EAAE,OAAO,oBAAoB,CAAC,aAAa,CAAC;IAK/G,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B;IAJ3E,SAAS,CAAC,QAAQ,CAAC,UAAU,sDAAwB;gBAGnD,cAAc,EAAE,cAAc,EACX,0BAA0B,EAAE,0BAA0B,EACzE,UAAU,EAAE,UAAU;IAKlB,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAM9D,WAAW,CAAC,MAAM,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,GAAG,CAAC;IAWV,YAAY,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,yBAAyB,CAAC;QACrC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,sBAAsB,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,GAAG,CAAC;CAYjB"}
@@ -0,0 +1,73 @@
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.TokenUsageReportService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_cls_1 = require("nestjs-cls");
15
+ const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
16
+ const abstract_service_1 = require("../../../core/neo4j/abstracts/abstract.service");
17
+ const tokenusage_1 = require("../entities/tokenusage");
18
+ const tokenusage_report_breakdown_1 = require("../entities/tokenusage-report-breakdown");
19
+ const tokenusage_report_summary_1 = require("../entities/tokenusage-report-summary");
20
+ const tokenusage_report_timeline_1 = require("../entities/tokenusage-report-timeline");
21
+ const tokenusage_report_repository_1 = require("../repositories/tokenusage.report.repository");
22
+ /**
23
+ * Serialises the self-service reporting rollups as JSON:API documents.
24
+ *
25
+ * Same generics, descriptor and super() argument order as its two siblings in
26
+ * this folder, so all three tokenusage services are wired identically.
27
+ * `descriptor` and the inherited `model` are the TokenUsage entity — that is
28
+ * what the repository reads and what the base class needs to be coherent — while
29
+ * the three methods below serialise with the AGGREGATE descriptors' models,
30
+ * because their return shapes are rollups, not TokenUsage nodes.
31
+ *
32
+ * JSON:API documents are built exclusively by the framework; nothing here
33
+ * hand-assembles a { data: { type, attributes } } object.
34
+ */
35
+ let TokenUsageReportService = class TokenUsageReportService extends abstract_service_1.AbstractService {
36
+ constructor(jsonApiService, tokenUsageReportRepository, clsService) {
37
+ super(jsonApiService, tokenUsageReportRepository, clsService, tokenusage_1.TokenUsageDescriptor.model);
38
+ this.tokenUsageReportRepository = tokenUsageReportRepository;
39
+ this.descriptor = tokenusage_1.TokenUsageDescriptor;
40
+ }
41
+ async getSummary(params) {
42
+ const rows = await this.tokenUsageReportRepository.findSummary({ from: params.from, to: params.to });
43
+ return this.jsonApiService.buildList(tokenusage_report_summary_1.TokenUsageReportSummaryDescriptor.model, rows);
44
+ }
45
+ async getTimeline(params) {
46
+ const rows = await this.tokenUsageReportRepository.findTimeline({
47
+ from: params.from,
48
+ to: params.to,
49
+ granularity: params.granularity,
50
+ stackBy: params.stackBy,
51
+ });
52
+ return this.jsonApiService.buildList(tokenusage_report_timeline_1.TokenUsageReportTimelineDescriptor.model, rows);
53
+ }
54
+ async getBreakdown(params) {
55
+ const rows = await this.tokenUsageReportRepository.findBreakdown({
56
+ from: params.from,
57
+ to: params.to,
58
+ dimension: params.dimension,
59
+ targetLabel: params.targetLabel,
60
+ metric: params.metric,
61
+ limit: params.limit,
62
+ });
63
+ return this.jsonApiService.buildList(tokenusage_report_breakdown_1.TokenUsageReportBreakdownDescriptor.model, rows);
64
+ }
65
+ };
66
+ exports.TokenUsageReportService = TokenUsageReportService;
67
+ exports.TokenUsageReportService = TokenUsageReportService = __decorate([
68
+ (0, common_1.Injectable)(),
69
+ __metadata("design:paramtypes", [jsonapi_service_1.JsonApiService,
70
+ tokenusage_report_repository_1.TokenUsageReportRepository,
71
+ nestjs_cls_1.ClsService])
72
+ ], TokenUsageReportService);
73
+ //# sourceMappingURL=tokenusage.report.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenusage.report.service.js","sourceRoot":"","sources":["../../../../src/foundations/tokenusage/services/tokenusage.report.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,oFAAgF;AAChF,qFAAiF;AAEjF,uDAA0E;AAC1E,yFAA8F;AAC9F,qFAA0F;AAC1F,uFAA4F;AAC5F,+FAA0F;AAE1F;;;;;;;;;;;;GAYG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,kCAAsE;IAGjH,YACE,cAA8B,EACX,0BAAsD,EACzE,UAAsB;QAEtB,KAAK,CAAC,cAAc,EAAE,0BAA0B,EAAE,UAAU,EAAE,iCAAoB,CAAC,KAAK,CAAC,CAAC;QAHvE,+BAA0B,GAA1B,0BAA0B,CAA4B;QAJxD,eAAU,GAAG,iCAAoB,CAAC;IAQrD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAoC;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAErG,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,6DAAiC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAKjB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC;YAC9D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,+DAAkC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAOlB;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC;YAC/D,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,iEAAmC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;CACF,CAAA;AApDY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAKO,gCAAc;QACiB,yDAA0B;QAC7D,uBAAU;GANb,uBAAuB,CAoDnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenusage.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/tokenusage/tokenusage.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAYtD,qBAea,gBAAiB,YAAW,YAAY;IACnD,YAAY;CAMb"}
1
+ {"version":3,"file":"tokenusage.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/tokenusage/tokenusage.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAkBtD,qBAoBa,gBAAiB,YAAW,YAAY;IACnD,YAAY;CASb"}
@@ -10,13 +10,19 @@ exports.TokenUsageModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const registry_1 = require("../../common/registries/registry");
12
12
  const tokenusage_admin_controller_1 = require("./controllers/tokenusage.admin.controller");
13
+ const tokenusage_report_controller_1 = require("./controllers/tokenusage.report.controller");
13
14
  const tokenusage_1 = require("./entities/tokenusage");
14
15
  const tokenusage_admin_breakdown_1 = require("./entities/tokenusage-admin-breakdown");
15
16
  const tokenusage_admin_summary_1 = require("./entities/tokenusage-admin-summary");
16
17
  const tokenusage_admin_timeline_1 = require("./entities/tokenusage-admin-timeline");
18
+ const tokenusage_report_breakdown_1 = require("./entities/tokenusage-report-breakdown");
19
+ const tokenusage_report_summary_1 = require("./entities/tokenusage-report-summary");
20
+ const tokenusage_report_timeline_1 = require("./entities/tokenusage-report-timeline");
17
21
  const tokenusage_admin_repository_1 = require("./repositories/tokenusage.admin.repository");
22
+ const tokenusage_report_repository_1 = require("./repositories/tokenusage.report.repository");
18
23
  const tokenusage_repository_1 = require("./repositories/tokenusage.repository");
19
24
  const tokenusage_admin_service_1 = require("./services/tokenusage.admin.service");
25
+ const tokenusage_report_service_1 = require("./services/tokenusage.report.service");
20
26
  const tokenusage_service_1 = require("./services/tokenusage.service");
21
27
  let TokenUsageModule = class TokenUsageModule {
22
28
  onModuleInit() {
@@ -24,23 +30,31 @@ let TokenUsageModule = class TokenUsageModule {
24
30
  registry_1.modelRegistry.register(tokenusage_admin_summary_1.TokenUsageAdminSummaryDescriptor.model);
25
31
  registry_1.modelRegistry.register(tokenusage_admin_timeline_1.TokenUsageAdminTimelineDescriptor.model);
26
32
  registry_1.modelRegistry.register(tokenusage_admin_breakdown_1.TokenUsageAdminBreakdownDescriptor.model);
33
+ registry_1.modelRegistry.register(tokenusage_report_summary_1.TokenUsageReportSummaryDescriptor.model);
34
+ registry_1.modelRegistry.register(tokenusage_report_timeline_1.TokenUsageReportTimelineDescriptor.model);
35
+ registry_1.modelRegistry.register(tokenusage_report_breakdown_1.TokenUsageReportBreakdownDescriptor.model);
27
36
  }
28
37
  };
29
38
  exports.TokenUsageModule = TokenUsageModule;
30
39
  exports.TokenUsageModule = TokenUsageModule = __decorate([
31
40
  (0, common_1.Module)({
32
- controllers: [tokenusage_admin_controller_1.TokenUsageAdminController],
41
+ controllers: [tokenusage_admin_controller_1.TokenUsageAdminController, tokenusage_report_controller_1.TokenUsageReportController],
33
42
  providers: [
34
43
  tokenusage_1.TokenUsageDescriptor.model.serialiser,
35
44
  tokenusage_admin_summary_1.TokenUsageAdminSummaryDescriptor.model.serialiser,
36
45
  tokenusage_admin_timeline_1.TokenUsageAdminTimelineDescriptor.model.serialiser,
37
46
  tokenusage_admin_breakdown_1.TokenUsageAdminBreakdownDescriptor.model.serialiser,
47
+ tokenusage_report_summary_1.TokenUsageReportSummaryDescriptor.model.serialiser,
48
+ tokenusage_report_timeline_1.TokenUsageReportTimelineDescriptor.model.serialiser,
49
+ tokenusage_report_breakdown_1.TokenUsageReportBreakdownDescriptor.model.serialiser,
38
50
  tokenusage_repository_1.TokenUsageRepository,
39
51
  tokenusage_admin_repository_1.TokenUsageAdminRepository,
52
+ tokenusage_report_repository_1.TokenUsageReportRepository,
40
53
  tokenusage_service_1.TokenUsageService,
41
54
  tokenusage_admin_service_1.TokenUsageAdminService,
55
+ tokenusage_report_service_1.TokenUsageReportService,
42
56
  ],
43
- exports: [tokenusage_service_1.TokenUsageService, tokenusage_admin_service_1.TokenUsageAdminService],
57
+ exports: [tokenusage_service_1.TokenUsageService, tokenusage_admin_service_1.TokenUsageAdminService, tokenusage_report_service_1.TokenUsageReportService],
44
58
  imports: [],
45
59
  })
46
60
  ], TokenUsageModule);
@@ -1 +1 @@
1
- {"version":3,"file":"tokenusage.module.js","sourceRoot":"","sources":["../../../src/foundations/tokenusage/tokenusage.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsD;AACtD,+DAAiE;AACjE,2FAAsF;AACtF,sDAA6D;AAC7D,sFAA2F;AAC3F,kFAAuF;AACvF,oFAAyF;AACzF,4FAAuF;AACvF,gFAA4E;AAC5E,kFAA6E;AAC7E,sEAAkE;AAiB3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAAY;QACV,wBAAa,CAAC,QAAQ,CAAC,iCAAoB,CAAC,KAAK,CAAC,CAAC;QACnD,wBAAa,CAAC,QAAQ,CAAC,2DAAgC,CAAC,KAAK,CAAC,CAAC;QAC/D,wBAAa,CAAC,QAAQ,CAAC,6DAAiC,CAAC,KAAK,CAAC,CAAC;QAChE,wBAAa,CAAC,QAAQ,CAAC,+DAAkC,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;CACF,CAAA;AAPY,4CAAgB;2BAAhB,gBAAgB;IAf5B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,uDAAyB,CAAC;QACxC,SAAS,EAAE;YACT,iCAAoB,CAAC,KAAK,CAAC,UAAU;YACrC,2DAAgC,CAAC,KAAK,CAAC,UAAU;YACjD,6DAAiC,CAAC,KAAK,CAAC,UAAU;YAClD,+DAAkC,CAAC,KAAK,CAAC,UAAU;YACnD,4CAAoB;YACpB,uDAAyB;YACzB,sCAAiB;YACjB,iDAAsB;SACvB;QACD,OAAO,EAAE,CAAC,sCAAiB,EAAE,iDAAsB,CAAC;QACpD,OAAO,EAAE,EAAE;KACZ,CAAC;GACW,gBAAgB,CAO5B"}
1
+ {"version":3,"file":"tokenusage.module.js","sourceRoot":"","sources":["../../../src/foundations/tokenusage/tokenusage.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsD;AACtD,+DAAiE;AACjE,2FAAsF;AACtF,6FAAwF;AACxF,sDAA6D;AAC7D,sFAA2F;AAC3F,kFAAuF;AACvF,oFAAyF;AACzF,wFAA6F;AAC7F,oFAAyF;AACzF,sFAA2F;AAC3F,4FAAuF;AACvF,8FAAyF;AACzF,gFAA4E;AAC5E,kFAA6E;AAC7E,oFAA+E;AAC/E,sEAAkE;AAsB3D,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAAY;QACV,wBAAa,CAAC,QAAQ,CAAC,iCAAoB,CAAC,KAAK,CAAC,CAAC;QACnD,wBAAa,CAAC,QAAQ,CAAC,2DAAgC,CAAC,KAAK,CAAC,CAAC;QAC/D,wBAAa,CAAC,QAAQ,CAAC,6DAAiC,CAAC,KAAK,CAAC,CAAC;QAChE,wBAAa,CAAC,QAAQ,CAAC,+DAAkC,CAAC,KAAK,CAAC,CAAC;QACjE,wBAAa,CAAC,QAAQ,CAAC,6DAAiC,CAAC,KAAK,CAAC,CAAC;QAChE,wBAAa,CAAC,QAAQ,CAAC,+DAAkC,CAAC,KAAK,CAAC,CAAC;QACjE,wBAAa,CAAC,QAAQ,CAAC,iEAAmC,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;CACF,CAAA;AAVY,4CAAgB;2BAAhB,gBAAgB;IApB5B,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,uDAAyB,EAAE,yDAA0B,CAAC;QACpE,SAAS,EAAE;YACT,iCAAoB,CAAC,KAAK,CAAC,UAAU;YACrC,2DAAgC,CAAC,KAAK,CAAC,UAAU;YACjD,6DAAiC,CAAC,KAAK,CAAC,UAAU;YAClD,+DAAkC,CAAC,KAAK,CAAC,UAAU;YACnD,6DAAiC,CAAC,KAAK,CAAC,UAAU;YAClD,+DAAkC,CAAC,KAAK,CAAC,UAAU;YACnD,iEAAmC,CAAC,KAAK,CAAC,UAAU;YACpD,4CAAoB;YACpB,uDAAyB;YACzB,yDAA0B;YAC1B,sCAAiB;YACjB,iDAAsB;YACtB,mDAAuB;SACxB;QACD,OAAO,EAAE,CAAC,sCAAiB,EAAE,iDAAsB,EAAE,mDAAuB,CAAC;QAC7E,OAAO,EAAE,EAAE;KACZ,CAAC;GACW,gBAAgB,CAU5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user/repositories/user.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../../../src/foundations/user/repositories/user.repository.ts"],"names":[],"mappings":"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"}
@@ -267,8 +267,12 @@ let UserRepository = class UserRepository extends abstract_repository_1.Abstract
267
267
  query.query += `
268
268
  {CURSOR}
269
269
 
270
+ // The company is what makes the platform-wide list readable: an
271
+ // administrator browsing every user needs to see which company each one
272
+ // belongs to. OPTIONAL, because a system administrator belongs to none.
273
+ OPTIONAL MATCH (${user_meta_1.userMeta.nodeName})-[:BELONGS_TO]->(${user_meta_1.userMeta.nodeName}_${company_meta_1.companyMeta.nodeName}:${company_meta_1.companyMeta.labelName})
270
274
  ${(0, membership_query_1.membershipRoleMatch)({ userAlias: user_meta_1.userMeta.nodeName, roleAlias: `${user_meta_1.userMeta.nodeName}_role` })}
271
- RETURN ${user_meta_1.userMeta.nodeName}, ${user_meta_1.userMeta.nodeName}_role
275
+ RETURN ${user_meta_1.userMeta.nodeName}, ${user_meta_1.userMeta.nodeName}_role, ${user_meta_1.userMeta.nodeName}_${company_meta_1.companyMeta.nodeName}
272
276
  `;
273
277
  return this.neo4j.readMany(query);
274
278
  }