bways-report 0.1.2 → 0.1.3

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 (100) hide show
  1. package/README.md +150 -51
  2. package/esm2022/lib/core/errors/reporting-errors.mjs +2 -2
  3. package/esm2022/lib/core/index.mjs +3 -1
  4. package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
  5. package/esm2022/lib/core/models/report-definition.model.mjs +1 -1
  6. package/esm2022/lib/core/models/report-grid.model.mjs +1 -1
  7. package/esm2022/lib/core/services/report-session-context.service.mjs +50 -5
  8. package/esm2022/lib/core/utils/data-normalization.util.mjs +56 -0
  9. package/esm2022/lib/core/utils/report-parameter.util.mjs +180 -0
  10. package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +82 -0
  11. package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +34 -9
  12. package/esm2022/lib/data-access/adapters/http-masterdata.adapter.mjs +38 -0
  13. package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +217 -0
  14. package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +3 -1
  15. package/esm2022/lib/data-access/adapters/index.mjs +8 -3
  16. package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +167 -0
  17. package/esm2022/lib/data-access/adapters/mock-datasource.adapter.mjs +60 -0
  18. package/esm2022/lib/data-access/contracts/api-dtos.mjs +6 -0
  19. package/esm2022/lib/data-access/contracts/index.mjs +2 -1
  20. package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +555 -92
  21. package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +593 -0
  22. package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +164 -23
  23. package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +410 -12
  24. package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +149 -2
  25. package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +109 -6
  26. package/esm2022/lib/features/designer/designer.component.mjs +101 -12
  27. package/esm2022/lib/features/designer/index.mjs +4 -1
  28. package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +102 -0
  29. package/esm2022/lib/features/designer/services/designer-state.service.mjs +10 -9
  30. package/esm2022/lib/features/designer/services/report-template.service.mjs +318 -0
  31. package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +41 -9
  32. package/esm2022/lib/features/export/index.mjs +2 -2
  33. package/esm2022/lib/features/export/models/export.models.mjs +1 -1
  34. package/esm2022/lib/features/export/services/report-export.service.mjs +420 -5
  35. package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +2 -2
  36. package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +231 -33
  37. package/esm2022/lib/features/runtime/index.mjs +2 -1
  38. package/esm2022/lib/features/runtime/report-execution.service.mjs +64 -0
  39. package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +224 -26
  40. package/esm2022/lib/features/runtime/report-runtime.component.mjs +341 -7
  41. package/esm2022/lib/features/runtime/rpt-report.component.mjs +537 -0
  42. package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +19 -8
  43. package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +18 -7
  44. package/esm2022/lib/primitives/components/date-range/rpt-date-range.component.mjs +346 -0
  45. package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +727 -73
  46. package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +8 -1
  47. package/esm2022/lib/primitives/components/index.mjs +2 -1
  48. package/esm2022/lib/primitives/register-builtins.mjs +51 -2
  49. package/esm2022/lib/provide-reporting.mjs +145 -24
  50. package/fesm2022/bways-report.mjs +6871 -753
  51. package/fesm2022/bways-report.mjs.map +1 -1
  52. package/lib/core/index.d.ts +2 -0
  53. package/lib/core/models/report-datasource.model.d.ts +9 -0
  54. package/lib/core/models/report-definition.model.d.ts +2 -0
  55. package/lib/core/models/report-grid.model.d.ts +44 -0
  56. package/lib/core/services/report-session-context.service.d.ts +6 -1
  57. package/lib/core/utils/data-normalization.util.d.ts +15 -0
  58. package/lib/core/utils/report-parameter.util.d.ts +35 -0
  59. package/lib/data-access/adapters/http-datasource.adapter.d.ts +20 -0
  60. package/lib/data-access/adapters/http-lookup.adapter.d.ts +3 -0
  61. package/lib/data-access/adapters/http-masterdata.adapter.d.ts +13 -0
  62. package/lib/data-access/adapters/http-persistence.adapter.d.ts +27 -0
  63. package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +2 -0
  64. package/lib/data-access/adapters/index.d.ts +7 -2
  65. package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +19 -0
  66. package/lib/data-access/adapters/mock-datasource.adapter.d.ts +9 -0
  67. package/lib/data-access/contracts/api-dtos.d.ts +67 -0
  68. package/lib/data-access/contracts/index.d.ts +1 -0
  69. package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +22 -0
  70. package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +1 -1
  71. package/lib/features/designer/components/property-editor/property-editor-action.component.d.ts +33 -0
  72. package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +4 -0
  73. package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +16 -2
  74. package/lib/features/designer/components/property-editor/property-editor.component.d.ts +5 -0
  75. package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -0
  76. package/lib/features/designer/designer.component.d.ts +5 -0
  77. package/lib/features/designer/index.d.ts +4 -0
  78. package/lib/features/designer/rpt-report-designer.component.d.ts +38 -0
  79. package/lib/features/designer/services/designer-state.service.d.ts +1 -1
  80. package/lib/features/designer/services/report-template.service.d.ts +32 -0
  81. package/lib/features/designer/utilities/canvas-layout.util.d.ts +4 -0
  82. package/lib/features/export/index.d.ts +2 -2
  83. package/lib/features/export/models/export.models.d.ts +23 -0
  84. package/lib/features/export/services/report-export.service.d.ts +31 -2
  85. package/lib/features/runtime/dynamic-renderer.component.d.ts +39 -2
  86. package/lib/features/runtime/index.d.ts +2 -0
  87. package/lib/features/runtime/report-execution.service.d.ts +16 -0
  88. package/lib/features/runtime/report-grid-bridge.component.d.ts +129 -6
  89. package/lib/features/runtime/report-runtime.component.d.ts +83 -1
  90. package/lib/features/runtime/rpt-report.component.d.ts +66 -0
  91. package/lib/primitives/components/button/rpt-button.component.d.ts +5 -2
  92. package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +1 -0
  93. package/lib/primitives/components/date-range/rpt-date-range.component.d.ts +43 -0
  94. package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +55 -7
  95. package/lib/primitives/components/index.d.ts +2 -0
  96. package/lib/provide-reporting.d.ts +79 -26
  97. package/package.json +2 -1
  98. package/schematics/collection.json +10 -0
  99. package/schematics/ng-add/index.js +45 -0
  100. package/schematics/ng-add/schema.json +17 -0
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Utility to normalize arbitrary backend HTTP responses into standard array of records.
3
+ *
4
+ * Supports:
5
+ * - Direct array payloads: `[ { ... }, { ... } ]`
6
+ * - Standard envelope wrappers: `{ data: [...] }`, `{ rows: [...] }`, `{ result: [...] }`, `{ items: [...] }`
7
+ * - OData envelopes: `{ value: [...] }`
8
+ * - Paginated wrappers: `{ total: 100, page: 1, data: [...] }`
9
+ */
10
+ export function extractRowArray(response) {
11
+ if (Array.isArray(response)) {
12
+ return response;
13
+ }
14
+ if (!response || typeof response !== 'object') {
15
+ return [];
16
+ }
17
+ const obj = response;
18
+ // Check common wrapper property names
19
+ const candidateKeys = ['data', 'rows', 'result', 'items', 'value', 'records', 'entities'];
20
+ for (const key of candidateKeys) {
21
+ const val = obj[key];
22
+ if (Array.isArray(val)) {
23
+ return val;
24
+ }
25
+ }
26
+ return [];
27
+ }
28
+ /**
29
+ * Case-insensitive lookup in an object/record.
30
+ * Searches for exact match first, then lower-cased match, then normalized (ignoring underscores/dashes).
31
+ */
32
+ export function getFieldCaseInsensitive(record, targetKey) {
33
+ if (!record || typeof record !== 'object')
34
+ return undefined;
35
+ // 1. Exact match
36
+ if (targetKey in record) {
37
+ return record[targetKey];
38
+ }
39
+ // 2. Case-insensitive match
40
+ const targetLower = targetKey.toLowerCase();
41
+ for (const [k, v] of Object.entries(record)) {
42
+ if (k.toLowerCase() === targetLower) {
43
+ return v;
44
+ }
45
+ }
46
+ // 3. Normalized match (strip leading '@', underscores, dashes)
47
+ const normalize = (s) => s.replace(/^@/, '').replace(/[_\-\s]/g, '').toLowerCase();
48
+ const normalizedTarget = normalize(targetKey);
49
+ for (const [k, v] of Object.entries(record)) {
50
+ if (normalize(k) === normalizedTarget) {
51
+ return v;
52
+ }
53
+ }
54
+ return undefined;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL3V0aWxzL2RhdGEtbm9ybWFsaXphdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBYyxRQUFpQjtJQUM1RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLFFBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxRQUFtQyxDQUFDO0lBRWhELHNDQUFzQztJQUN0QyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFGLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBVSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxNQUFrRCxFQUNsRCxTQUFpQjtJQUVqQixJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU1RCxpQkFBaUI7SUFDakIsSUFBSSxTQUFTLElBQUksTUFBTSxFQUFFLENBQUM7UUFDeEIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsK0RBQStEO0lBQy9ELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNGLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXRpbGl0eSB0byBub3JtYWxpemUgYXJiaXRyYXJ5IGJhY2tlbmQgSFRUUCByZXNwb25zZXMgaW50byBzdGFuZGFyZCBhcnJheSBvZiByZWNvcmRzLlxuICpcbiAqIFN1cHBvcnRzOlxuICogLSBEaXJlY3QgYXJyYXkgcGF5bG9hZHM6IGBbIHsgLi4uIH0sIHsgLi4uIH0gXWBcbiAqIC0gU3RhbmRhcmQgZW52ZWxvcGUgd3JhcHBlcnM6IGB7IGRhdGE6IFsuLi5dIH1gLCBgeyByb3dzOiBbLi4uXSB9YCwgYHsgcmVzdWx0OiBbLi4uXSB9YCwgYHsgaXRlbXM6IFsuLi5dIH1gXG4gKiAtIE9EYXRhIGVudmVsb3BlczogYHsgdmFsdWU6IFsuLi5dIH1gXG4gKiAtIFBhZ2luYXRlZCB3cmFwcGVyczogYHsgdG90YWw6IDEwMCwgcGFnZTogMSwgZGF0YTogWy4uLl0gfWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSb3dBcnJheTxUID0gdW5rbm93bj4ocmVzcG9uc2U6IHVua25vd24pOiBUW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHtcbiAgICByZXR1cm4gcmVzcG9uc2UgYXMgVFtdO1xuICB9XG5cbiAgaWYgKCFyZXNwb25zZSB8fCB0eXBlb2YgcmVzcG9uc2UgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3Qgb2JqID0gcmVzcG9uc2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLy8gQ2hlY2sgY29tbW9uIHdyYXBwZXIgcHJvcGVydHkgbmFtZXNcbiAgY29uc3QgY2FuZGlkYXRlS2V5cyA9IFsnZGF0YScsICdyb3dzJywgJ3Jlc3VsdCcsICdpdGVtcycsICd2YWx1ZScsICdyZWNvcmRzJywgJ2VudGl0aWVzJ107XG4gIGZvciAoY29uc3Qga2V5IG9mIGNhbmRpZGF0ZUtleXMpIHtcbiAgICBjb25zdCB2YWwgPSBvYmpba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsIGFzIFRbXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW107XG59XG5cbi8qKlxuICogQ2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgaW4gYW4gb2JqZWN0L3JlY29yZC5cbiAqIFNlYXJjaGVzIGZvciBleGFjdCBtYXRjaCBmaXJzdCwgdGhlbiBsb3dlci1jYXNlZCBtYXRjaCwgdGhlbiBub3JtYWxpemVkIChpZ25vcmluZyB1bmRlcnNjb3Jlcy9kYXNoZXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUoXG4gIHJlY29yZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsIHwgdW5kZWZpbmVkLFxuICB0YXJnZXRLZXk6IHN0cmluZ1xuKTogdW5rbm93biB7XG4gIGlmICghcmVjb3JkIHx8IHR5cGVvZiByZWNvcmQgIT09ICdvYmplY3QnKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIDEuIEV4YWN0IG1hdGNoXG4gIGlmICh0YXJnZXRLZXkgaW4gcmVjb3JkKSB7XG4gICAgcmV0dXJuIHJlY29yZFt0YXJnZXRLZXldO1xuICB9XG5cbiAgLy8gMi4gQ2FzZS1pbnNlbnNpdGl2ZSBtYXRjaFxuICBjb25zdCB0YXJnZXRMb3dlciA9IHRhcmdldEtleS50b0xvd2VyQ2FzZSgpO1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhyZWNvcmQpKSB7XG4gICAgaWYgKGsudG9Mb3dlckNhc2UoKSA9PT0gdGFyZ2V0TG93ZXIpIHtcbiAgICAgIHJldHVybiB2O1xuICAgIH1cbiAgfVxuXG4gIC8vIDMuIE5vcm1hbGl6ZWQgbWF0Y2ggKHN0cmlwIGxlYWRpbmcgJ0AnLCB1bmRlcnNjb3JlcywgZGFzaGVzKVxuICBjb25zdCBub3JtYWxpemUgPSAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL15ALywgJycpLnJlcGxhY2UoL1tfXFwtXFxzXS9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgbm9ybWFsaXplZFRhcmdldCA9IG5vcm1hbGl6ZSh0YXJnZXRLZXkpO1xuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhyZWNvcmQpKSB7XG4gICAgaWYgKG5vcm1hbGl6ZShrKSA9PT0gbm9ybWFsaXplZFRhcmdldCkge1xuICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,180 @@
1
+ import { getFieldCaseInsensitive } from './data-normalization.util';
2
+ const TOKEN_RE = /^\{\{\s*(.+?)\s*\}\}$/;
3
+ const pad = (n) => String(n).padStart(2, '0');
4
+ const formatYMD = (d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
5
+ /** Resolves `{{context.xxx}}` presets such as today / startOfMonth. */
6
+ export function resolveContextPreset(key) {
7
+ const now = new Date();
8
+ switch (key.toLowerCase()) {
9
+ case 'yesterday': {
10
+ const y = new Date(now);
11
+ y.setDate(y.getDate() - 1);
12
+ return formatYMD(y);
13
+ }
14
+ case 'startofmonth':
15
+ return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-01`;
16
+ case 'endofmonth':
17
+ return formatYMD(new Date(now.getFullYear(), now.getMonth() + 1, 0));
18
+ case 'startofyear':
19
+ return `${now.getFullYear()}-01-01`;
20
+ case 'today':
21
+ default:
22
+ return formatYMD(now);
23
+ }
24
+ }
25
+ /**
26
+ * Looks up a field value from formValues supporting direct names, dot paths (a.b),
27
+ * and compound date ranges (e.g. dateRange.from, dateRange_from, dateRangeFrom).
28
+ */
29
+ export function resolveCanvasFieldValue(formValues, inner) {
30
+ // 1. Direct case-insensitive lookup
31
+ const direct = getFieldCaseInsensitive(formValues, inner);
32
+ if (direct !== undefined && direct !== null) {
33
+ return direct;
34
+ }
35
+ // 2. Dot-path lookup (e.g. dateRange.from or user.address.city)
36
+ if (inner.includes('.')) {
37
+ const parts = inner.split('.');
38
+ let curr = formValues;
39
+ for (const p of parts) {
40
+ if (curr && typeof curr === 'object') {
41
+ curr = getFieldCaseInsensitive(curr, p);
42
+ }
43
+ else {
44
+ curr = undefined;
45
+ break;
46
+ }
47
+ }
48
+ if (curr !== undefined && curr !== null) {
49
+ return curr;
50
+ }
51
+ }
52
+ // 3. Compound date range matching (e.g. dateRange_from, dateRangeFrom, fromDate, toDate)
53
+ const lowerInner = inner.toLowerCase();
54
+ const isFrom = lowerInner.endsWith('_from') ||
55
+ lowerInner.endsWith('from') ||
56
+ lowerInner.startsWith('from') ||
57
+ lowerInner.startsWith('from_');
58
+ const isTo = !isFrom &&
59
+ (lowerInner.endsWith('_to') ||
60
+ lowerInner.endsWith('to') ||
61
+ lowerInner.startsWith('to') ||
62
+ lowerInner.startsWith('to_'));
63
+ if (isFrom || isTo) {
64
+ for (const [key, val] of Object.entries(formValues)) {
65
+ if (val && typeof val === 'object' && 'from' in val && 'to' in val) {
66
+ const rangeObj = val;
67
+ const cleanInner = lowerInner
68
+ .replace(/^from_?|^to_?|_from$|_to$|from$|to$/, '')
69
+ .toLowerCase();
70
+ if (cleanInner === '' || key.toLowerCase().includes(cleanInner) || cleanInner.includes(key.toLowerCase())) {
71
+ return isFrom ? rangeObj.from : rangeObj.to;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ return undefined;
77
+ }
78
+ /**
79
+ * Resolves one raw mapping value against session + canvas form values.
80
+ * - `{{session.branchId}}` -> session value (case-insensitive)
81
+ * - `{{context.today}}` -> computed date
82
+ * - `{{fromDate}}` -> value of canvas field with key `fromDate` (case-insensitive)
83
+ * - `{{dateRange.from}}` -> value of nested from property
84
+ * - anything else -> returned unchanged (fixed value)
85
+ */
86
+ export function resolveParameterValue(raw, session, formValues) {
87
+ if (typeof raw !== 'string')
88
+ return raw;
89
+ const m = TOKEN_RE.exec(raw);
90
+ if (!m)
91
+ return raw;
92
+ const inner = m[1];
93
+ if (inner.startsWith('session.')) {
94
+ const sessionKey = inner.slice(8);
95
+ const val = getFieldCaseInsensitive(session, sessionKey);
96
+ return val !== undefined && val !== null ? val : '';
97
+ }
98
+ if (inner.startsWith('context.')) {
99
+ return resolveContextPreset(inner.slice(8));
100
+ }
101
+ const v = resolveCanvasFieldValue(formValues, inner);
102
+ return v !== undefined && v !== null ? v : '';
103
+ }
104
+ /** Resolves every mapping into concrete values (de-duplicating `@name` / `name`). */
105
+ export function resolveParameterMappings(mappings, session, formValues) {
106
+ const out = {};
107
+ for (const [key, raw] of Object.entries(mappings ?? {})) {
108
+ const val = resolveParameterValue(raw, session, formValues);
109
+ const cleanKey = key.replace(/^@/, '');
110
+ out[cleanKey] = val;
111
+ out[`@${cleanKey}`] = val;
112
+ }
113
+ return out;
114
+ }
115
+ /**
116
+ * Returns canvas field keys referenced by mappings that currently have no value.
117
+ * Session / context / fixed values never block execution.
118
+ */
119
+ export function findMissingCanvasFields(mappings, formValues) {
120
+ const missing = new Set();
121
+ for (const raw of Object.values(mappings ?? {})) {
122
+ if (typeof raw !== 'string')
123
+ continue;
124
+ const m = TOKEN_RE.exec(raw);
125
+ if (!m)
126
+ continue;
127
+ const inner = m[1];
128
+ if (inner.startsWith('session.') || inner.startsWith('context.'))
129
+ continue;
130
+ const v = resolveCanvasFieldValue(formValues, inner);
131
+ if (v === undefined || v === null || (typeof v === 'string' && v.trim() === '')) {
132
+ missing.add(inner);
133
+ }
134
+ else if (typeof v === 'object' && !Array.isArray(v) && 'from' in v) {
135
+ const r = v;
136
+ if (!r.from && !r.to) {
137
+ missing.add(inner);
138
+ }
139
+ }
140
+ }
141
+ return [...missing];
142
+ }
143
+ /**
144
+ * Picks the data source the result grid should run:
145
+ * 1. the one referenced by `grid.dataSourceId`
146
+ * 2. otherwise the first declared data source
147
+ * 3. otherwise a procedure/table bound to a component (legacy reports)
148
+ */
149
+ export function resolveExecutionDataSource(def) {
150
+ const sources = def.dataSources ?? [];
151
+ const byId = sources.find((d) => d.id === def.grid?.dataSourceId);
152
+ if (byId)
153
+ return byId;
154
+ if (sources.length > 0)
155
+ return sources[0];
156
+ const comp = def.components.find((c) => c.dataSource?.entityName);
157
+ const cds = comp?.dataSource;
158
+ if (cds?.entityName) {
159
+ const isTable = cds.sourceType === 'table';
160
+ return {
161
+ id: `sp-${cds.entityName}`,
162
+ name: cds.entityName,
163
+ endpoint: cds.entityName,
164
+ schema: cds.schema || 'dbo',
165
+ type: isTable ? 'table' : 'stored_procedure',
166
+ method: isTable ? 'GET' : 'STORED_PROCEDURE',
167
+ parameterMappings: cds.parameterMappings,
168
+ };
169
+ }
170
+ return null;
171
+ }
172
+ /** Strips SQL Server Hungarian prefixes: `@chrFromDate` -> `fromDate`. */
173
+ export function toFieldKey(paramName) {
174
+ const stripped = paramName
175
+ .replace(/^@+/, '')
176
+ .replace(/^(chr|int|vchr|nchr|dt|str|num|bit|dec|flt)(?=[A-Z_])/, '');
177
+ const clean = stripped.replace(/[^a-zA-Z0-9]+(.)?/g, (_m, c) => (c ? c.toUpperCase() : ''));
178
+ return clean ? clean.charAt(0).toLowerCase() + clean.slice(1) : paramName;
179
+ }
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhcmFtZXRlci51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvY29yZS91dGlscy9yZXBvcnQtcGFyYW1ldGVyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLENBQUM7QUFFekMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFTLEVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzlELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBTyxFQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBRXpHLHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsb0JBQW9CLENBQUMsR0FBVztJQUM5QyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDMUIsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxLQUFLLGNBQWM7WUFDakIsT0FBTyxHQUFHLEdBQUcsQ0FB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RCxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoSCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcmVwb3J0LWRhdGFzb3VyY2UubW9kZWwnO1xuaW1wb3J0IHsgZ2V0RmllbGRDYXNlSW5zZW5zaXRpdmUgfSBmcm9tICcuL2RhdGEtbm9ybWFsaXphdGlvbi51dGlsJztcblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyTWFwcGluZ3MgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuY29uc3QgVE9LRU5fUkUgPSAvXlxce1xce1xccyooLis/KVxccypcXH1cXH0kLztcblxuY29uc3QgcGFkID0gKG46IG51bWJlcik6IHN0cmluZyA9PiBTdHJpbmcobikucGFkU3RhcnQoMiwgJzAnKTtcbmNvbnN0IGZvcm1hdFlNRCA9IChkOiBEYXRlKTogc3RyaW5nID0+IGAke2QuZ2V0RnVsbFllYXIoKX0tJHtwYWQoZC5nZXRNb250aCgpICsgMSl9LSR7cGFkKGQuZ2V0RGF0ZSgpKX1gO1xuXG4vKiogUmVzb2x2ZXMgYHt7Y29udGV4dC54eHh9fWAgcHJlc2V0cyBzdWNoIGFzIHRvZGF5IC8gc3RhcnRPZk1vbnRoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb250ZXh0UHJlc2V0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgc3dpdGNoIChrZXkudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ3llc3RlcmRheSc6IHtcbiAgICAgIGNvbnN0IHkgPSBuZXcgRGF0ZShub3cpO1xuICAgICAgeS5zZXREYXRlKHkuZ2V0RGF0ZSgpIC0gMSk7XG4gICAgICByZXR1cm4gZm9ybWF0WU1EKHkpO1xuICAgIH1cbiAgICBjYXNlICdzdGFydG9mbW9udGgnOlxuICAgICAgcmV0dXJuIGAke25vdy5nZXRGdWxsWWVhcigpfS0ke3BhZChub3cuZ2V0TW9udGgoKSArIDEpfS0wMWA7XG4gICAgY2FzZSAnZW5kb2Ztb250aCc6XG4gICAgICByZXR1cm4gZm9ybWF0WU1EKG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSArIDEsIDApKTtcbiAgICBjYXNlICdzdGFydG9meWVhcic6XG4gICAgICByZXR1cm4gYCR7bm93LmdldEZ1bGxZZWFyKCl9LTAxLTAxYDtcbiAgICBjYXNlICd0b2RheSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRZTUQobm93KTtcbiAgfVxufVxuXG4vKipcbiAqIExvb2tzIHVwIGEgZmllbGQgdmFsdWUgZnJvbSBmb3JtVmFsdWVzIHN1cHBvcnRpbmcgZGlyZWN0IG5hbWVzLCBkb3QgcGF0aHMgKGEuYiksXG4gKiBhbmQgY29tcG91bmQgZGF0ZSByYW5nZXMgKGUuZy4gZGF0ZVJhbmdlLmZyb20sIGRhdGVSYW5nZV9mcm9tLCBkYXRlUmFuZ2VGcm9tKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDYW52YXNGaWVsZFZhbHVlKFxuICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgaW5uZXI6IHN0cmluZ1xuKTogdW5rbm93biB7XG4gIC8vIDEuIERpcmVjdCBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cFxuICBjb25zdCBkaXJlY3QgPSBnZXRGaWVsZENhc2VJbnNlbnNpdGl2ZShmb3JtVmFsdWVzLCBpbm5lcik7XG4gIGlmIChkaXJlY3QgIT09IHVuZGVmaW5lZCAmJiBkaXJlY3QgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZGlyZWN0O1xuICB9XG5cbiAgLy8gMi4gRG90LXBhdGggbG9va3VwIChlLmcuIGRhdGVSYW5nZS5mcm9tIG9yIHVzZXIuYWRkcmVzcy5jaXR5KVxuICBpZiAoaW5uZXIuaW5jbHVkZXMoJy4nKSkge1xuICAgIGNvbnN0IHBhcnRzID0gaW5uZXIuc3BsaXQoJy4nKTtcbiAgICBsZXQgY3VycjogdW5rbm93biA9IGZvcm1WYWx1ZXM7XG4gICAgZm9yIChjb25zdCBwIG9mIHBhcnRzKSB7XG4gICAgICBpZiAoY3VyciAmJiB0eXBlb2YgY3VyciA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY3VyciA9IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlKGN1cnIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VyciA9IHVuZGVmaW5lZDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjdXJyICE9PSB1bmRlZmluZWQgJiYgY3VyciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGN1cnI7XG4gICAgfVxuICB9XG5cbiAgLy8gMy4gQ29tcG91bmQgZGF0ZSByYW5nZSBtYXRjaGluZyAoZS5nLiBkYXRlUmFuZ2VfZnJvbSwgZGF0ZVJhbmdlRnJvbSwgZnJvbURhdGUsIHRvRGF0ZSlcbiAgY29uc3QgbG93ZXJJbm5lciA9IGlubmVyLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGlzRnJvbSA9XG4gICAgbG93ZXJJbm5lci5lbmRzV2l0aCgnX2Zyb20nKSB8fFxuICAgIGxvd2VySW5uZXIuZW5kc1dpdGgoJ2Zyb20nKSB8fFxuICAgIGxvd2VySW5uZXIuc3RhcnRzV2l0aCgnZnJvbScpIHx8XG4gICAgbG93ZXJJbm5lci5zdGFydHNXaXRoKCdmcm9tXycpO1xuXG4gIGNvbnN0IGlzVG8gPVxuICAgICFpc0Zyb20gJiZcbiAgICAobG93ZXJJbm5lci5lbmRzV2l0aCgnX3RvJykgfHxcbiAgICAgIGxvd2VySW5uZXIuZW5kc1dpdGgoJ3RvJykgfHxcbiAgICAgIGxvd2VySW5uZXIuc3RhcnRzV2l0aCgndG8nKSB8fFxuICAgICAgbG93ZXJJbm5lci5zdGFydHNXaXRoKCd0b18nKSk7XG5cbiAgaWYgKGlzRnJvbSB8fCBpc1RvKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKGZvcm1WYWx1ZXMpKSB7XG4gICAgICBpZiAodmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmICdmcm9tJyBpbiAodmFsIGFzIGFueSkgJiYgJ3RvJyBpbiAodmFsIGFzIGFueSkpIHtcbiAgICAgICAgY29uc3QgcmFuZ2VPYmogPSB2YWwgYXMgeyBmcm9tOiB1bmtub3duOyB0bzogdW5rbm93biB9O1xuICAgICAgICBjb25zdCBjbGVhbklubmVyID0gbG93ZXJJbm5lclxuICAgICAgICAgIC5yZXBsYWNlKC9eZnJvbV8/fF50b18/fF9mcm9tJHxfdG8kfGZyb20kfHRvJC8sICcnKVxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoY2xlYW5Jbm5lciA9PT0gJycgfHwga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY2xlYW5Jbm5lcikgfHwgY2xlYW5Jbm5lci5pbmNsdWRlcyhrZXkudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gaXNGcm9tID8gcmFuZ2VPYmouZnJvbSA6IHJhbmdlT2JqLnRvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBvbmUgcmF3IG1hcHBpbmcgdmFsdWUgYWdhaW5zdCBzZXNzaW9uICsgY2FudmFzIGZvcm0gdmFsdWVzLlxuICogLSBge3tzZXNzaW9uLmJyYW5jaElkfX1gICAtPiBzZXNzaW9uIHZhbHVlIChjYXNlLWluc2Vuc2l0aXZlKVxuICogLSBge3tjb250ZXh0LnRvZGF5fX1gICAgICAtPiBjb21wdXRlZCBkYXRlXG4gKiAtIGB7e2Zyb21EYXRlfX1gICAgICAgICAgIC0+IHZhbHVlIG9mIGNhbnZhcyBmaWVsZCB3aXRoIGtleSBgZnJvbURhdGVgIChjYXNlLWluc2Vuc2l0aXZlKVxuICogLSBge3tkYXRlUmFuZ2UuZnJvbX19YCAgICAtPiB2YWx1ZSBvZiBuZXN0ZWQgZnJvbSBwcm9wZXJ0eVxuICogLSBhbnl0aGluZyBlbHNlICAgICAgICAgICAtPiByZXR1cm5lZCB1bmNoYW5nZWQgKGZpeGVkIHZhbHVlKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcmFtZXRlclZhbHVlKFxuICByYXc6IHVua25vd24sXG4gIHNlc3Npb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogdW5rbm93biB7XG4gIGlmICh0eXBlb2YgcmF3ICE9PSAnc3RyaW5nJykgcmV0dXJuIHJhdztcbiAgY29uc3QgbSA9IFRPS0VOX1JFLmV4ZWMocmF3KTtcbiAgaWYgKCFtKSByZXR1cm4gcmF3O1xuICBjb25zdCBpbm5lciA9IG1bMV07XG4gIGlmIChpbm5lci5zdGFydHNXaXRoKCdzZXNzaW9uLicpKSB7XG4gICAgY29uc3Qgc2Vzc2lvbktleSA9IGlubmVyLnNsaWNlKDgpO1xuICAgIGNvbnN0IHZhbCA9IGdldEZpZWxkQ2FzZUluc2Vuc2l0aXZlKHNlc3Npb24sIHNlc3Npb25LZXkpO1xuICAgIHJldHVybiB2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwgPyB2YWwgOiAnJztcbiAgfVxuICBpZiAoaW5uZXIuc3RhcnRzV2l0aCgnY29udGV4dC4nKSkge1xuICAgIHJldHVybiByZXNvbHZlQ29udGV4dFByZXNldChpbm5lci5zbGljZSg4KSk7XG4gIH1cbiAgY29uc3QgdiA9IHJlc29sdmVDYW52YXNGaWVsZFZhbHVlKGZvcm1WYWx1ZXMsIGlubmVyKTtcbiAgcmV0dXJuIHYgIT09IHVuZGVmaW5lZCAmJiB2ICE9PSBudWxsID8gdiA6ICcnO1xufVxuXG4vKiogUmVzb2x2ZXMgZXZlcnkgbWFwcGluZyBpbnRvIGNvbmNyZXRlIHZhbHVlcyAoZGUtZHVwbGljYXRpbmcgYEBuYW1lYCAvIGBuYW1lYCkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcmFtZXRlck1hcHBpbmdzKFxuICBtYXBwaW5nczogUGFyYW1ldGVyTWFwcGluZ3MgfCB1bmRlZmluZWQsXG4gIHNlc3Npb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBmb3JtVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgcmF3XSBvZiBPYmplY3QuZW50cmllcyhtYXBwaW5ncyA/PyB7fSkpIHtcbiAgICBjb25zdCB2YWwgPSByZXNvbHZlUGFyYW1ldGVyVmFsdWUocmF3LCBzZXNzaW9uLCBmb3JtVmFsdWVzKTtcbiAgICBjb25zdCBjbGVhbktleSA9IGtleS5yZXBsYWNlKC9eQC8sICcnKTtcbiAgICBvdXRbY2xlYW5LZXldID0gdmFsO1xuICAgIG91dFtgQCR7Y2xlYW5LZXl9YF0gPSB2YWw7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGNhbnZhcyBmaWVsZCBrZXlzIHJlZmVyZW5jZWQgYnkgbWFwcGluZ3MgdGhhdCBjdXJyZW50bHkgaGF2ZSBubyB2YWx1ZS5cbiAqIFNlc3Npb24gLyBjb250ZXh0IC8gZml4ZWQgdmFsdWVzIG5ldmVyIGJsb2NrIGV4ZWN1dGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRNaXNzaW5nQ2FudmFzRmllbGRzKFxuICBtYXBwaW5nczogUGFyYW1ldGVyTWFwcGluZ3MgfCB1bmRlZmluZWQsXG4gIGZvcm1WYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IG1pc3NpbmcgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCByYXcgb2YgT2JqZWN0LnZhbHVlcyhtYXBwaW5ncyA/PyB7fSkpIHtcbiAgICBpZiAodHlwZW9mIHJhdyAhPT0gJ3N0cmluZycpIGNvbnRpbnVlO1xuICAgIGNvbnN0IG0gPSBUT0tFTl9SRS5leGVjKHJhdyk7XG4gICAgaWYgKCFtKSBjb250aW51ZTtcbiAgICBjb25zdCBpbm5lciA9IG1bMV07XG4gICAgaWYgKGlubmVyLnN0YXJ0c1dpdGgoJ3Nlc3Npb24uJykgfHwgaW5uZXIuc3RhcnRzV2l0aCgnY29udGV4dC4nKSkgY29udGludWU7XG4gICAgY29uc3QgdiA9IHJlc29sdmVDYW52YXNGaWVsZFZhbHVlKGZvcm1WYWx1ZXMsIGlubmVyKTtcbiAgICBpZiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwgfHwgKHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2LnRyaW0oKSA9PT0gJycpKSB7XG4gICAgICBtaXNzaW5nLmFkZChpbm5lcik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikgJiYgJ2Zyb20nIGluICh2IGFzIGFueSkpIHtcbiAgICAgIGNvbnN0IHIgPSB2IGFzIHsgZnJvbT86IHN0cmluZzsgdG8/OiBzdHJpbmcgfTtcbiAgICAgIGlmICghci5mcm9tICYmICFyLnRvKSB7XG4gICAgICAgIG1pc3NpbmcuYWRkKGlubmVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi5taXNzaW5nXTtcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgZGF0YSBzb3VyY2UgdGhlIHJlc3VsdCBncmlkIHNob3VsZCBydW46XG4gKiAxLiB0aGUgb25lIHJlZmVyZW5jZWQgYnkgYGdyaWQuZGF0YVNvdXJjZUlkYFxuICogMi4gb3RoZXJ3aXNlIHRoZSBmaXJzdCBkZWNsYXJlZCBkYXRhIHNvdXJjZVxuICogMy4gb3RoZXJ3aXNlIGEgcHJvY2VkdXJlL3RhYmxlIGJvdW5kIHRvIGEgY29tcG9uZW50IChsZWdhY3kgcmVwb3J0cylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFeGVjdXRpb25EYXRhU291cmNlKGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IFJlcG9ydERhdGFTb3VyY2VEZWZpbml0aW9uIHwgbnVsbCB7XG4gIGNvbnN0IHNvdXJjZXMgPSBkZWYuZGF0YVNvdXJjZXMgPz8gW107XG4gIGNvbnN0IGJ5SWQgPSBzb3VyY2VzLmZpbmQoKGQpID0+IGQuaWQgPT09IGRlZi5ncmlkPy5kYXRhU291cmNlSWQpO1xuICBpZiAoYnlJZCkgcmV0dXJuIGJ5SWQ7XG4gIGlmIChzb3VyY2VzLmxlbmd0aCA+IDApIHJldHVybiBzb3VyY2VzWzBdO1xuXG4gIGNvbnN0IGNvbXAgPSBkZWYuY29tcG9uZW50cy5maW5kKChjKSA9PiBjLmRhdGFTb3VyY2U/LmVudGl0eU5hbWUpO1xuICBjb25zdCBjZHMgPSBjb21wPy5kYXRhU291cmNlO1xuICBpZiAoY2RzPy5lbnRpdHlOYW1lKSB7XG4gICAgY29uc3QgaXNUYWJsZSA9IGNkcy5zb3VyY2VUeXBlID09PSAndGFibGUnO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogYHNwLSR7Y2RzLmVudGl0eU5hbWV9YCxcbiAgICAgIG5hbWU6IGNkcy5lbnRpdHlOYW1lLFxuICAgICAgZW5kcG9pbnQ6IGNkcy5lbnRpdHlOYW1lLFxuICAgICAgc2NoZW1hOiBjZHMuc2NoZW1hIHx8ICdkYm8nLFxuICAgICAgdHlwZTogaXNUYWJsZSA/ICd0YWJsZScgOiAnc3RvcmVkX3Byb2NlZHVyZScsXG4gICAgICBtZXRob2Q6IGlzVGFibGUgPyAnR0VUJyA6ICdTVE9SRURfUFJPQ0VEVVJFJyxcbiAgICAgIHBhcmFtZXRlck1hcHBpbmdzOiBjZHMucGFyYW1ldGVyTWFwcGluZ3MsXG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIFN0cmlwcyBTUUwgU2VydmVyIEh1bmdhcmlhbiBwcmVmaXhlczogYEBjaHJGcm9tRGF0ZWAgLT4gYGZyb21EYXRlYC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpZWxkS2V5KHBhcmFtTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBwYXJhbU5hbWVcbiAgICAucmVwbGFjZSgvXkArLywgJycpXG4gICAgLnJlcGxhY2UoL14oY2hyfGludHx2Y2hyfG5jaHJ8ZHR8c3RyfG51bXxiaXR8ZGVjfGZsdCkoPz1bQS1aX10pLywgJycpO1xuICBjb25zdCBjbGVhbiA9IHN0cmlwcGVkLnJlcGxhY2UoL1teYS16QS1aMC05XSsoLik/L2csIChfbSwgYzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiAoYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnKSk7XG4gIHJldHVybiBjbGVhbiA/IGNsZWFuLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgY2xlYW4uc2xpY2UoMSkgOiBwYXJhbU5hbWU7XG59XG4iXX0=
@@ -0,0 +1,82 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
3
+ import { of, throwError } from 'rxjs';
4
+ import { catchError, map } from 'rxjs/operators';
5
+ import { ReportDataSourceAdapter } from '../contracts/data-source.contract';
6
+ import { REPORTING_CONFIG } from '../../core/tokens/reporting-config.token';
7
+ import { ReportSessionContextService } from '../../core/services/report-session-context.service';
8
+ import { extractRowArray } from '../../core/utils/data-normalization.util';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Built-in HTTP adapter for executing report data sources against the reporting backend.
12
+ * Automatically injects active multi-tenant session headers (X-Company-Id, X-Branch-Id)
13
+ * and includes rich development fallback data when the backend is unreachable.
14
+ */
15
+ export class HttpReportDataSourceAdapter extends ReportDataSourceAdapter {
16
+ http = inject(HttpClient, { optional: true });
17
+ config = inject(REPORTING_CONFIG, { optional: true });
18
+ sessionService = inject(ReportSessionContextService, { optional: true });
19
+ execute(dataSource, parameters) {
20
+ const baseUrl = this.config?.apiBaseUrl;
21
+ const session = this.sessionService?.sessionContext() ?? {};
22
+ if (baseUrl && this.http) {
23
+ let headers = new HttpHeaders();
24
+ if (session['companyId'] !== undefined && session['companyId'] !== null) {
25
+ headers = headers.set('X-Company-Id', String(session['companyId']));
26
+ }
27
+ if (session['branchId'] !== undefined && session['branchId'] !== null) {
28
+ headers = headers.set('X-Branch-Id', String(session['branchId']));
29
+ }
30
+ const payload = {
31
+ dataSource,
32
+ parameters,
33
+ sessionContext: session,
34
+ };
35
+ return this.http.post(`${baseUrl}/execute`, payload, { headers }).pipe(map((response) => extractRowArray(response)), catchError((err) => {
36
+ const msg = err?.error?.message || err?.message || 'Report execution failed';
37
+ return throwError(() => new Error(Array.isArray(msg) ? msg.join(', ') : msg));
38
+ }));
39
+ }
40
+ return of(this.getMockExecutionData(parameters));
41
+ }
42
+ getMockExecutionData(parameters) {
43
+ const rawData = [
44
+ { invoiceNo: 'INV-2024-001', date: '2024-01-05', customer: 'Acme Corp', branch: 'New York', amount: 12500, status: 'Paid', customerId: 101, branchId: 1 },
45
+ { invoiceNo: 'INV-2024-002', date: '2024-01-12', customer: 'Globex Inc', branch: 'London', amount: 8400, status: 'Paid', customerId: 102, branchId: 2 },
46
+ { invoiceNo: 'INV-2024-003', date: '2024-01-18', customer: 'Initech Software', branch: 'New York', amount: 3200, status: 'Pending', customerId: 103, branchId: 1 },
47
+ { invoiceNo: 'INV-2024-004', date: '2024-01-25', customer: 'Umbrella Corp', branch: 'Singapore', amount: 21000, status: 'Paid', customerId: 104, branchId: 3 },
48
+ { invoiceNo: 'INV-2024-005', date: '2024-02-02', customer: 'Wayne Enterprises', branch: 'London', amount: 15600, status: 'Pending', customerId: 105, branchId: 2 },
49
+ { invoiceNo: 'INV-2024-006', date: '2024-02-08', customer: 'Stark Industries', branch: 'New York', amount: 45000, status: 'Paid', customerId: 106, branchId: 1 },
50
+ { invoiceNo: 'INV-2024-007', date: '2024-02-14', customer: 'Acme Corp', branch: 'New York', amount: 6750, status: 'Pending', customerId: 101, branchId: 1 },
51
+ { invoiceNo: 'INV-2024-008', date: '2024-02-20', customer: 'Globex Inc', branch: 'London', amount: 11200, status: 'Paid', customerId: 102, branchId: 2 },
52
+ { invoiceNo: 'INV-2024-009', date: '2024-02-24', customer: 'Initech Software', branch: 'New York', amount: 4800, status: 'Overdue', customerId: 103, branchId: 1 },
53
+ { invoiceNo: 'INV-2024-010', date: '2024-02-28', customer: 'Wayne Enterprises', branch: 'London', amount: 9800, status: 'Paid', customerId: 105, branchId: 2 },
54
+ ];
55
+ let result = [...rawData];
56
+ if (parameters['customerId']) {
57
+ const cid = Number(parameters['customerId']);
58
+ result = result.filter((row) => row.customerId === cid);
59
+ }
60
+ if (parameters['status']) {
61
+ const st = String(parameters['status']).toLowerCase();
62
+ result = result.filter((row) => row.status.toLowerCase().includes(st) || st.includes(row.status.toLowerCase()));
63
+ }
64
+ if (parameters['fromDate']) {
65
+ const from = String(parameters['fromDate']);
66
+ result = result.filter((row) => row.date >= from);
67
+ }
68
+ if (parameters['toDate']) {
69
+ const to = String(parameters['toDate']);
70
+ result = result.filter((row) => row.date <= to);
71
+ }
72
+ return result;
73
+ }
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportDataSourceAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
75
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportDataSourceAdapter });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportDataSourceAdapter, decorators: [{
78
+ type: Injectable
79
+ }] });
80
+ /** Convenience alias */
81
+ export const HttpDataSourceAdapter = HttpReportDataSourceAdapter;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhc291cmNlLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9odHRwLWRhdGFzb3VyY2UuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFNUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQUUzRTs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHVCQUF1QjtJQUNyRCxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RCxjQUFjLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUYsT0FBTyxDQUNMLFVBQXNDLEVBQ3RDLFVBQW1DO1FBRW5DLE1BQU0sT0FBTyxH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QUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQXpFVSwyQkFBMkI7NEdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7QUE2RVgsd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4uL2NvbnRyYWN0cy9kYXRhLXNvdXJjZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1kYXRhc291cmNlLm1vZGVsJztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IEV4ZWN1dGVSZXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vY29udHJhY3RzL2FwaS1kdG9zJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG4vKipcbiAqIEJ1aWx0LWluIEhUVFAgYWRhcHRlciBmb3IgZXhlY3V0aW5nIHJlcG9ydCBkYXRhIHNvdXJjZXMgYWdhaW5zdCB0aGUgcmVwb3J0aW5nIGJhY2tlbmQuXG4gKiBBdXRvbWF0aWNhbGx5IGluamVjdHMgYWN0aXZlIG11bHRpLXRlbmFudCBzZXNzaW9uIGhlYWRlcnMgKFgtQ29tcGFueS1JZCwgWC1CcmFuY2gtSWQpXG4gKiBhbmQgaW5jbHVkZXMgcmljaCBkZXZlbG9wbWVudCBmYWxsYmFjayBkYXRhIHdoZW4gdGhlIGJhY2tlbmQgaXMgdW5yZWFjaGFibGUuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBleGVjdXRlKFxuICAgIGRhdGFTb3VyY2U6IFJlcG9ydERhdGFTb3VyY2VEZWZpbml0aW9uLFxuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IE9ic2VydmFibGU8dW5rbm93bltdPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25TZXJ2aWNlPy5zZXNzaW9uQ29udGV4dCgpID8/IHt9O1xuXG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgICAgaWYgKHNlc3Npb25bJ2NvbXBhbnlJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IG51bGwpIHtcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdYLUNvbXBhbnktSWQnLCBTdHJpbmcoc2Vzc2lvblsnY29tcGFueUlkJ10pKTtcbiAgICAgIH1cbiAgICAgIGlmIChzZXNzaW9uWydicmFuY2hJZCddICE9PSB1bmRlZmluZWQgJiYgc2Vzc2lvblsnYnJhbmNoSWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQnJhbmNoLUlkJywgU3RyaW5nKHNlc3Npb25bJ2JyYW5jaElkJ10pKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF5bG9hZDogRXhlY3V0ZVJlcG9ydFJlcXVlc3QgPSB7XG4gICAgICAgIGRhdGFTb3VyY2UsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIHNlc3Npb25Db250ZXh0OiBzZXNzaW9uLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHVua25vd24+KGAke2Jhc2VVcmx9L2V4ZWN1dGVgLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSkucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gZXh0cmFjdFJvd0FycmF5KHJlc3BvbnNlKSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyPy5tZXNzYWdlIHx8ICdSZXBvcnQgZXhlY3V0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBvZih0aGlzLmdldE1vY2tFeGVjdXRpb25EYXRhKHBhcmFtZXRlcnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9ja0V4ZWN1dGlvbkRhdGEocGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB1bmtub3duW10ge1xuICAgIGNvbnN0IHJhd0RhdGEgPSBbXG4gICAgICB7IGludm9pY2VObzogJ0lOVi0yMDI0LTAwMScsIGRhdGU6ICcyMDI0LTAxLTA1JywgY3VzdG9tZXI6ICdBY21lIENvcnAnLCBicmFuY2g6ICdOZXcgWW9yaycsIGFtb3VudDogMTI1MDAsIHN0YXR1czogJ1BhaWQnLCBjdXN0b21lcklkOiAxMDEsIGJyYW5jaElkOiAxIH0sXG4gICAgICB7IGludm9pY2VObzogJ0lOVi0yMDI0LTAwMicsIGRhdGU6ICcyMDI0LTAxLTEyJywgY3VzdG9tZXI6ICdHbG9iZXggSW5jJywgYnJhbmNoOiAnTG9uZG9uJywgYW1vdW50OiA4NDAwLCBzdGF0dXM6ICdQYWlkJywgY3VzdG9tZXJJZDogMTAyLCBicmFuY2hJZDogMiB9LFxuICAgICAgeyBpbnZvaWNlTm86ICdJTlYtMjAyNC0wMDMnLCBkYXRlOiAnMjAyNC0wMS0xOCcsIGN1c3RvbWVyOiAnSW5pdGVjaCBTb2Z0d2FyZScsIGJyYW5jaDogJ05ldyBZb3JrJywgYW1vdW50OiAzMjAwLCBzdGF0dXM6ICdQZW5kaW5nJywgY3VzdG9tZXJJZDogMTAzLCBicmFuY2hJZDogMSB9LFxuICAgICAgeyBpbnZvaWNlTm86ICdJTlYtMjAyNC0wMDQnLCBkYXRlOiAnMjAyNC0wMS0yNScsIGN1c3RvbWVyOiAnVW1icmVsbGEgQ29ycCcsIGJyYW5jaDogJ1NpbmdhcG9yZScsIGFtb3VudDogMjEwMDAsIHN0YXR1czogJ1BhaWQnLCBjdXN0b21lcklkOiAxMDQsIGJyYW5jaElkOiAzIH0sXG4gICAgICB7IGludm9pY2VObzogJ0lOVi0yMDI0LTAwNScsIGRhdGU6ICcyMDI0LTAyLTAyJywgY3VzdG9tZXI6ICdXYXluZSBFbnRlcnByaXNlcycsIGJyYW5jaDogJ0xvbmRvbicsIGFtb3VudDogMTU2MDAsIHN0YXR1czogJ1BlbmRpbmcnLCBjdXN0b21lcklkOiAxMDUsIGJyYW5jaElkOiAyIH0sXG4gICAgICB7IGludm9pY2VObzogJ0lOVi0yMDI0LTAwNicsIGRhdGU6ICcyMDI0LTAyLTA4JywgY3VzdG9tZXI6ICdTdGFyayBJbmR1c3RyaWVzJywgYnJhbmNoOiAnTmV3IFlvcmsnLCBhbW91bnQ6IDQ1MDAwLCBzdGF0dXM6ICdQYWlkJywgY3VzdG9tZXJJZDogMTA2LCBicmFuY2hJZDogMSB9LFxuICAgICAgeyBpbnZvaWNlTm86ICdJTlYtMjAyNC0wMDcnLCBkYXRlOiAnMjAyNC0wMi0xNCcsIGN1c3RvbWVyOiAnQWNtZSBDb3JwJywgYnJhbmNoOiAnTmV3IFlvcmsnLCBhbW91bnQ6IDY3NTAsIHN0YXR1czogJ1BlbmRpbmcnLCBjdXN0b21lcklkOiAxMDEsIGJyYW5jaElkOiAxIH0sXG4gICAgICB7IGludm9pY2VObzogJ0lOVi0yMDI0LTAwOCcsIGRhdGU6ICcyMDI0LTAyLTIwJywgY3VzdG9tZXI6ICdHbG9iZXggSW5jJywgYnJhbmNoOiAnTG9uZG9uJywgYW1vdW50OiAxMTIwMCwgc3RhdHVzOiAnUGFpZCcsIGN1c3RvbWVySWQ6IDEwMiwgYnJhbmNoSWQ6IDIgfSxcbiAgICAgIHsgaW52b2ljZU5vOiAnSU5WLTIwMjQtMDA5JywgZGF0ZTogJzIwMjQtMDItMjQnLCBjdXN0b21lcjogJ0luaXRlY2ggU29mdHdhcmUnLCBicmFuY2g6ICdOZXcgWW9yaycsIGFtb3VudDogNDgwMCwgc3RhdHVzOiAnT3ZlcmR1ZScsIGN1c3RvbWVySWQ6IDEwMywgYnJhbmNoSWQ6IDEgfSxcbiAgICAgIHsgaW52b2ljZU5vOiAnSU5WLTIwMjQtMDEwJywgZGF0ZTogJzIwMjQtMDItMjgnLCBjdXN0b21lcjogJ1dheW5lIEVudGVycHJpc2VzJywgYnJhbmNoOiAnTG9uZG9uJywgYW1vdW50OiA5ODAwLCBzdGF0dXM6ICdQYWlkJywgY3VzdG9tZXJJZDogMTA1LCBicmFuY2hJZDogMiB9LFxuICAgIF07XG5cbiAgICBsZXQgcmVzdWx0ID0gWy4uLnJhd0RhdGFdO1xuXG4gICAgaWYgKHBhcmFtZXRlcnNbJ2N1c3RvbWVySWQnXSkge1xuICAgICAgY29uc3QgY2lkID0gTnVtYmVyKHBhcmFtZXRlcnNbJ2N1c3RvbWVySWQnXSk7XG4gICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKChyb3cpID0+IHJvdy5jdXN0b21lcklkID09PSBjaWQpO1xuICAgIH1cbiAgICBpZiAocGFyYW1ldGVyc1snc3RhdHVzJ10pIHtcbiAgICAgIGNvbnN0IHN0ID0gU3RyaW5nKHBhcmFtZXRlcnNbJ3N0YXR1cyddKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcigocm93KSA9PiByb3cuc3RhdHVzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc3QpIHx8IHN0LmluY2x1ZGVzKHJvdy5zdGF0dXMudG9Mb3dlckNhc2UoKSkpO1xuICAgIH1cbiAgICBpZiAocGFyYW1ldGVyc1snZnJvbURhdGUnXSkge1xuICAgICAgY29uc3QgZnJvbSA9IFN0cmluZyhwYXJhbWV0ZXJzWydmcm9tRGF0ZSddKTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKHJvdykgPT4gcm93LmRhdGUgPj0gZnJvbSk7XG4gICAgfVxuICAgIGlmIChwYXJhbWV0ZXJzWyd0b0RhdGUnXSkge1xuICAgICAgY29uc3QgdG8gPSBTdHJpbmcocGFyYW1ldGVyc1sndG9EYXRlJ10pO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcigocm93KSA9PiByb3cuZGF0ZSA8PSB0byk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwRGF0YVNvdXJjZUFkYXB0ZXIgPSBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXI7XG4iXX0=
@@ -1,9 +1,11 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { of } from 'rxjs';
4
- import { catchError, tap } from 'rxjs/operators';
2
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
3
+ import { of, throwError } from 'rxjs';
4
+ import { catchError, map, tap } from 'rxjs/operators';
5
5
  import { ReportLookupAdapter, } from '../contracts/lookup.contract';
6
6
  import { REPORTING_CONFIG } from '../../core/tokens/reporting-config.token';
7
+ import { ReportSessionContextService } from '../../core/services/report-session-context.service';
8
+ import { extractRowArray } from '../../core/utils/data-normalization.util';
7
9
  import * as i0 from "@angular/core";
8
10
  /**
9
11
  * Built-in HTTP adapter for fetching dropdown options from backend database tables and SPs.
@@ -12,6 +14,7 @@ import * as i0 from "@angular/core";
12
14
  export class HttpReportLookupAdapter extends ReportLookupAdapter {
13
15
  http = inject(HttpClient, { optional: true });
14
16
  config = inject(REPORTING_CONFIG, { optional: true });
17
+ sessionService = inject(ReportSessionContextService, { optional: true });
15
18
  cache = new Map();
16
19
  mockDataStore = {
17
20
  Customers: [
@@ -61,11 +64,31 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
61
64
  }
62
65
  const baseUrl = this.config?.apiBaseUrl;
63
66
  if (baseUrl && this.http) {
64
- return this.http.post(`${baseUrl}/lookup`, request).pipe(tap((items) => this.setCache(cacheKey, items)), catchError((err) => {
65
- console.warn('[HttpLookupAdapter] Remote lookup failed, falling back to mock:', err);
66
- const fallback = this.resolveMockOptions(request);
67
- this.setCache(cacheKey, fallback);
68
- return of(fallback);
67
+ const session = this.sessionService?.sessionContext() ?? {};
68
+ let headers = new HttpHeaders();
69
+ if (session['companyId'] !== undefined && session['companyId'] !== null) {
70
+ headers = headers.set('X-Company-Id', String(session['companyId']));
71
+ }
72
+ if (session['branchId'] !== undefined && session['branchId'] !== null) {
73
+ headers = headers.set('X-Branch-Id', String(session['branchId']));
74
+ }
75
+ return this.http.post(`${baseUrl}/lookup`, request, { headers }).pipe(map((response) => {
76
+ const rawItems = extractRowArray(response);
77
+ return rawItems.map((r) => {
78
+ if (r && typeof r === 'object' && 'value' in r) {
79
+ return r;
80
+ }
81
+ const val = r?.[request.valueField] ?? r?.id ?? r?.code ?? String(r ?? '');
82
+ const lbl = r?.[request.displayField] ?? r?.name ?? r?.title ?? String(val);
83
+ return { value: val, label: lbl, raw: r };
84
+ });
85
+ }), tap((items) => {
86
+ // Never cache empty results: parameters may simply not have been filled yet.
87
+ if (items.length > 0)
88
+ this.setCache(cacheKey, items);
89
+ }), catchError((err) => {
90
+ const msg = err?.error?.message || err?.message || 'Lookup request failed';
91
+ return throwError(() => new Error(Array.isArray(msg) ? msg.join(', ') : msg));
69
92
  }));
70
93
  }
71
94
  const fallback = this.resolveMockOptions(request);
@@ -104,4 +127,6 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
104
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportLookupAdapter, decorators: [{
105
128
  type: Injectable
106
129
  }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1sb29rdXAuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2h0dHAtbG9va3VwLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBTyxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBR0wsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBTzVFOzs7R0FHRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFDN0MsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEQsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0lBRXRDLGFBQWEsR0FBc0Q7UUFDbEYsU0FBUyxFQUFFO1lBQ1QsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDbEYsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEs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QzlCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEYsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLFdBQVcsS0FBSyxJQUFJLElBQUksV0FBVyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDOUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUN4RyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxLQUFLLEVBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBcUIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0UsS0FBSyxFQUFHLENBQUMsQ0FBQyxRQUFRLENBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkUsR0FBRyxFQUFFLENBQUM7U0FDUCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7d0dBeEdVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9va3VwT3B0aW9uSXRlbSxcbiAgTG9va3VwUXVlcnlSZXF1ZXN0LFxuICBSZXBvcnRMb29rdXBBZGFwdGVyLFxufSBmcm9tICcuLi9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcblxuaW50ZXJmYWNlIENhY2hlRW50cnkge1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgZGF0YTogTG9va3VwT3B0aW9uSXRlbVtdO1xufVxuXG4vKipcbiAqIEJ1aWx0LWluIEhUVFAgYWRhcHRlciBmb3IgZmV0Y2hpbmcgZHJvcGRvd24gb3B0aW9ucyBmcm9tIGJhY2tlbmQgZGF0YWJhc2UgdGFibGVzIGFuZCBTUHMuXG4gKiBJbmNsdWRlcyBpbi1tZW1vcnkgY2FjaGluZyB3aXRoIFRUTCBhbmQgcmljaCBmYWxsYmFjayBtb2NrIGRhdGEgZm9yIHRlc3RpbmcuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0TG9va3VwQWRhcHRlciBleHRlbmRzIFJlcG9ydExvb2t1cEFkYXB0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoUkVQT1JUSU5HX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrRGF0YVN0b3JlOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+ID0ge1xuICAgIEN1c3RvbWVyczogW1xuICAgICAgeyBjdXN0b21lcklkOiAxMDEsIGN1c3RvbWVyTmFtZTogJ0FjbWUgQ29ycG9yYXRpb24nLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTAyLCBjdXN0b21lck5hbWU6ICdHbG9iZXggSW5kdXN0cmllcycsIGJyYW5jaElkOiAyLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDMsIGN1c3RvbWVyTmFtZTogJ0luaXRlY2ggU29mdHdhcmUnLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTA0LCBjdXN0b21lck5hbWU6ICdVbWJyZWxsYSBDb3Jwb3JhdGlvbicsIGJyYW5jaElkOiAzLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDUsIGN1c3RvbWVyTmFtZTogJ1dheW5lIEVudGVycHJpc2VzJywgYnJhbmNoSWQ6IDIsIGlzQWN0aXZlOiB0cnVlIH0sXG4gICAgICB7IGN1c3RvbWVySWQ6IDEwNiwgY3VzdG9tZXJOYW1lOiAnU3RhcmsgSW5kdXN0cmllcycsIGJyYW5jaElkOiAxLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgIF0sXG4gICAgQnJhbmNoZXM6IFtcbiAgICAgIHsgYnJhbmNoSWQ6IDEsIGJyYW5jaE5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRIChOZXcgWW9yayknLCByZWdpb246ICdOb3J0aCBBbWVyaWNhJyB9LFxuICAgICAgeyBicmFuY2hJZDogMiwgYnJhbmNoTmFtZTogJ0VNRUEgRGl2aXNpb24gKExvbmRvbiknLCByZWdpb246ICdFdXJvcGUnIH0sXG4gICAgICB7IGJyYW5jaElkOiAzLCBicmFuY2hOYW1lOiAnQVBBQyBIdWIgKFNpbmdhcG9yZSknLCByZWdpb246ICdBc2lhIFBhY2lmaWMnIH0sXG4gICAgICB7IGJyYW5jaElkOiA0LCBicmFuY2hOYW1lOiAnTEFUQU0gT2ZmaWNlIChTw6NvIFBhdWxvKScsIHJlZ2lvbjogJ0xhdGluIEFtZXJpY2EnIH0sXG4gICAgXSxcbiAgICBQcm9kdWN0czogW1xuICAgICAgeyBwcm9kdWN0SWQ6IDEsIHByb2R1Y3ROYW1lOiAnRW50ZXJwcmlzZSBFUlAgU3VpdGUnLCBjYXRlZ29yeTogJ1NvZnR3YXJlJywgdW5pdFByaWNlOiAyNDAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMiwgcHJvZHVjdE5hbWU6ICdDbG91ZCBBbmFseXRpY3MgUHJvJywgY2F0ZWdvcnk6ICdTYWFTJywgdW5pdFByaWNlOiAxMjAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMywgcHJvZHVjdE5hbWU6ICdTZWN1cml0eSBTaGllbGQgRW5kcG9pbnQnLCBjYXRlZ29yeTogJ1NlY3VyaXR5JywgdW5pdFByaWNlOiA4NTAgfSxcbiAgICAgIHsgcHJvZHVjdElkOiA0LCBwcm9kdWN0TmFtZTogJ0RlZGljYXRlZCBBUEkgR2F0ZXdheScsIGNhdGVnb3J5OiAnSW5mcmFzdHJ1Y3R1cmUnLCB1bml0UHJpY2U6IDMxMDAgfSxcbiAgICBdLFxuICAgIFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7IGNvZGU6ICdCQU5LX1RSQU5TRkVSJywgdGl0bGU6ICdEaXJlY3QgQmFuayBXaXJlJyB9LFxuICAgICAgeyBjb2RlOiAnQ1JFRElUX0NBUkQnLCB0aXRsZTogJ0NvcnBvcmF0ZSBDcmVkaXQgQ2FyZCcgfSxcbiAgICAgIHsgY29kZTogJ1BBWVBBTCcsIHRpdGxlOiAnUGF5UGFsIENvcnBvcmF0ZScgfSxcbiAgICAgIHsgY29kZTogJ05FVF8zMCcsIHRpdGxlOiAnTmV0IDMwIEludm9pY2luZycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRDdXN0b21lckxpc3Q6IFtcbiAgICAgIHsgaWQ6IDEwMSwgbmFtZTogJ0FjbWUgQ29ycG9yYXRpb24gKFNQKScsIGJyYW5jaElkOiAxLCBicmFuY2g6ICdOQScgfSxcbiAgICAgIHsgaWQ6IDEwMiwgbmFtZTogJ0dsb2JleCBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMiwgYnJhbmNoOiAnRU1FQScgfSxcbiAgICAgIHsgaWQ6IDEwNSwgbmFtZTogJ1dheW5lIEVudGVycHJpc2VzIChTUCknLCBicmFuY2hJZDogMSwgYnJhbmNoOiAnTkEnIH0sXG4gICAgICB7IGlkOiAxMDYsIG5hbWU6ICdTdGFyayBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMywgYnJhbmNoOiAnQVBBQycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRCcmFuY2hMb29rdXA6IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRJyB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogJ0VNRUEgRGl2aXNpb24nIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiAnQVBBQyBIdWInIH0sXG4gICAgXSxcbiAgfTtcblxuICBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TG9va3VwT3B0aW9uSXRlbVtdPihgJHtiYXNlVXJsfS9sb29rdXBgLCByZXF1ZXN0KS5waXBlKFxuICAgICAgICB0YXAoKGl0ZW1zKSA9PiB0aGlzLnNldENhY2hlKGNhY2hlS2V5LCBpdGVtcykpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tIdHRwTG9va3VwQWRhcHRlcl0gUmVtb3RlIGxvb2t1cCBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byBtb2NrOicsIGVycik7XG4gICAgICAgICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLnJlc29sdmVNb2NrT3B0aW9ucyhyZXF1ZXN0KTtcbiAgICAgICAgICB0aGlzLnNldENhY2hlKGNhY2hlS2V5LCBmYWxsYmFjayk7XG4gICAgICAgICAgcmV0dXJuIG9mKGZhbGxiYWNrKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLnJlc29sdmVNb2NrT3B0aW9ucyhyZXF1ZXN0KTtcbiAgICB0aGlzLnNldENhY2hlKGNhY2hlS2V5LCBmYWxsYmFjayk7XG4gICAgcmV0dXJuIG9mKGZhbGxiYWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2FjaGUoa2V5OiBzdHJpbmcsIGRhdGE6IExvb2t1cE9wdGlvbkl0ZW1bXSwgdHRsU2Vjb25kcyA9IDMwMCk6IHZvaWQge1xuICAgIHRoaXMuY2FjaGUuc2V0KGtleSwge1xuICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgdHRsU2Vjb25kcyAqIDEwMDAsXG4gICAgICBkYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhY2hlS2V5KHJlcTogTG9va3VwUXVlcnlSZXF1ZXN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7cmVxLnNvdXJjZVR5cGV9OiR7cmVxLmVudGl0eU5hbWV9OiR7cmVxLnZhbHVlRmllbGR9OiR7cmVxLmRpc3BsYXlGaWVsZH06JHtKU09OLnN0cmluZ2lmeShyZXEuZmlsdGVyID8/IHt9KX06JHtKU09OLnN0cmluZ2lmeShyZXEucGFyYW1ldGVycyA/PyB7fSl9YDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU1vY2tPcHRpb25zKHJlcTogTG9va3VwUXVlcnlSZXF1ZXN0KTogTG9va3VwT3B0aW9uSXRlbVtdIHtcbiAgICBjb25zdCBlbnRpdHkgPSByZXEuZW50aXR5TmFtZSB8fCAnJztcbiAgICBjb25zdCByZWNvcmRzID0gdGhpcy5tb2NrRGF0YVN0b3JlW2VudGl0eV0gPz8gW107XG4gICAgY29uc3QgdmFsS2V5ID0gcmVxLnZhbHVlRmllbGQ7XG4gICAgY29uc3QgbGFiZWxLZXkgPSByZXEuZGlzcGxheUZpZWxkO1xuXG4gICAgbGV0IGZpbHRlcmVkUmVjb3JkcyA9IHJlY29yZHM7XG4gICAgY29uc3QgYnJhbmNoUGFyYW0gPSByZXEucGFyYW1ldGVycz8uWydAQnJhbmNoSWQnXSA/PyByZXEucGFyYW1ldGVycz8uWydicmFuY2hJZCddO1xuICAgIGlmIChicmFuY2hQYXJhbSAhPT0gdW5kZWZpbmVkICYmIGJyYW5jaFBhcmFtICE9PSBudWxsICYmIGJyYW5jaFBhcmFtICE9PSAnJykge1xuICAgICAgY29uc3QgbWF0Y2hOdW0gPSBOdW1iZXIoYnJhbmNoUGFyYW0pO1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gcmVjb3Jkcy5maWx0ZXIoXG4gICAgICAgIChyKSA9PiByWydicmFuY2hJZCddID09PSB1bmRlZmluZWQgfHwgclsnYnJhbmNoSWQnXSA9PT0gbWF0Y2hOdW0gfHwgclsnYnJhbmNoJ10gPT09IFN0cmluZyhicmFuY2hQYXJhbSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkUmVjb3Jkcy5tYXAoKHIpID0+ICh7XG4gICAgICB2YWx1ZTogKHJbdmFsS2V5XSBhcyBzdHJpbmcgfCBudW1iZXIpID8/IFN0cmluZyhyWydpZCddID8/IHJbJ2NvZGUnXSA/PyAnJyksXG4gICAgICBsYWJlbDogKHJbbGFiZWxLZXldIGFzIHN0cmluZykgPz8gU3RyaW5nKHJbJ25hbWUnXSA/PyByWyd0aXRsZSddID8/ICcnKSxcbiAgICAgIHJhdzogcixcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
130
+ /** Convenience alias */
131
+ export const HttpLookupAdapter = HttpReportLookupAdapter;
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1sb29rdXAuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2h0dHAtbG9va3VwLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBR0wsbUJBQW1CLEdBQ3BCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQU8zRTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBQzdDLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELGNBQWMsR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUV6RSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7SUFFdEMsYUFBYSxH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QUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUN4RyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxLQUFLLEVBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBcUIsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0UsS0FBSyxFQUFHLENBQUMsQ0FBQyxRQUFRLENBQVksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkUsR0FBRyxFQUFFLENBQUM7U0FDUCxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7d0dBOUhVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVOztBQWtJWCx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9va3VwT3B0aW9uSXRlbSxcbiAgTG9va3VwUXVlcnlSZXF1ZXN0LFxuICBSZXBvcnRMb29rdXBBZGFwdGVyLFxufSBmcm9tICcuLi9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeSB7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBkYXRhOiBMb29rdXBPcHRpb25JdGVtW107XG59XG5cbi8qKlxuICogQnVpbHQtaW4gSFRUUCBhZGFwdGVyIGZvciBmZXRjaGluZyBkcm9wZG93biBvcHRpb25zIGZyb20gYmFja2VuZCBkYXRhYmFzZSB0YWJsZXMgYW5kIFNQcy5cbiAqIEluY2x1ZGVzIGluLW1lbW9yeSBjYWNoaW5nIHdpdGggVFRMIGFuZCByaWNoIGZhbGxiYWNrIG1vY2sgZGF0YSBmb3IgdGVzdGluZy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyIGV4dGVuZHMgUmVwb3J0TG9va3VwQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrRGF0YVN0b3JlOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+ID0ge1xuICAgIEN1c3RvbWVyczogW1xuICAgICAgeyBjdXN0b21lcklkOiAxMDEsIGN1c3RvbWVyTmFtZTogJ0FjbWUgQ29ycG9yYXRpb24nLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTAyLCBjdXN0b21lck5hbWU6ICdHbG9iZXggSW5kdXN0cmllcycsIGJyYW5jaElkOiAyLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDMsIGN1c3RvbWVyTmFtZTogJ0luaXRlY2ggU29mdHdhcmUnLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTA0LCBjdXN0b21lck5hbWU6ICdVbWJyZWxsYSBDb3Jwb3JhdGlvbicsIGJyYW5jaElkOiAzLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDUsIGN1c3RvbWVyTmFtZTogJ1dheW5lIEVudGVycHJpc2VzJywgYnJhbmNoSWQ6IDIsIGlzQWN0aXZlOiB0cnVlIH0sXG4gICAgICB7IGN1c3RvbWVySWQ6IDEwNiwgY3VzdG9tZXJOYW1lOiAnU3RhcmsgSW5kdXN0cmllcycsIGJyYW5jaElkOiAxLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgIF0sXG4gICAgQnJhbmNoZXM6IFtcbiAgICAgIHsgYnJhbmNoSWQ6IDEsIGJyYW5jaE5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRIChOZXcgWW9yayknLCByZWdpb246ICdOb3J0aCBBbWVyaWNhJyB9LFxuICAgICAgeyBicmFuY2hJZDogMiwgYnJhbmNoTmFtZTogJ0VNRUEgRGl2aXNpb24gKExvbmRvbiknLCByZWdpb246ICdFdXJvcGUnIH0sXG4gICAgICB7IGJyYW5jaElkOiAzLCBicmFuY2hOYW1lOiAnQVBBQyBIdWIgKFNpbmdhcG9yZSknLCByZWdpb246ICdBc2lhIFBhY2lmaWMnIH0sXG4gICAgICB7IGJyYW5jaElkOiA0LCBicmFuY2hOYW1lOiAnTEFUQU0gT2ZmaWNlIChTw6NvIFBhdWxvKScsIHJlZ2lvbjogJ0xhdGluIEFtZXJpY2EnIH0sXG4gICAgXSxcbiAgICBQcm9kdWN0czogW1xuICAgICAgeyBwcm9kdWN0SWQ6IDEsIHByb2R1Y3ROYW1lOiAnRW50ZXJwcmlzZSBFUlAgU3VpdGUnLCBjYXRlZ29yeTogJ1NvZnR3YXJlJywgdW5pdFByaWNlOiAyNDAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMiwgcHJvZHVjdE5hbWU6ICdDbG91ZCBBbmFseXRpY3MgUHJvJywgY2F0ZWdvcnk6ICdTYWFTJywgdW5pdFByaWNlOiAxMjAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMywgcHJvZHVjdE5hbWU6ICdTZWN1cml0eSBTaGllbGQgRW5kcG9pbnQnLCBjYXRlZ29yeTogJ1NlY3VyaXR5JywgdW5pdFByaWNlOiA4NTAgfSxcbiAgICAgIHsgcHJvZHVjdElkOiA0LCBwcm9kdWN0TmFtZTogJ0RlZGljYXRlZCBBUEkgR2F0ZXdheScsIGNhdGVnb3J5OiAnSW5mcmFzdHJ1Y3R1cmUnLCB1bml0UHJpY2U6IDMxMDAgfSxcbiAgICBdLFxuICAgIFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7IGNvZGU6ICdCQU5LX1RSQU5TRkVSJywgdGl0bGU6ICdEaXJlY3QgQmFuayBXaXJlJyB9LFxuICAgICAgeyBjb2RlOiAnQ1JFRElUX0NBUkQnLCB0aXRsZTogJ0NvcnBvcmF0ZSBDcmVkaXQgQ2FyZCcgfSxcbiAgICAgIHsgY29kZTogJ1BBWVBBTCcsIHRpdGxlOiAnUGF5UGFsIENvcnBvcmF0ZScgfSxcbiAgICAgIHsgY29kZTogJ05FVF8zMCcsIHRpdGxlOiAnTmV0IDMwIEludm9pY2luZycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRDdXN0b21lckxpc3Q6IFtcbiAgICAgIHsgaWQ6IDEwMSwgbmFtZTogJ0FjbWUgQ29ycG9yYXRpb24gKFNQKScsIGJyYW5jaElkOiAxLCBicmFuY2g6ICdOQScgfSxcbiAgICAgIHsgaWQ6IDEwMiwgbmFtZTogJ0dsb2JleCBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMiwgYnJhbmNoOiAnRU1FQScgfSxcbiAgICAgIHsgaWQ6IDEwNSwgbmFtZTogJ1dheW5lIEVudGVycHJpc2VzIChTUCknLCBicmFuY2hJZDogMSwgYnJhbmNoOiAnTkEnIH0sXG4gICAgICB7IGlkOiAxMDYsIG5hbWU6ICdTdGFyayBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMywgYnJhbmNoOiAnQVBBQycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRCcmFuY2hMb29rdXA6IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRJyB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogJ0VNRUEgRGl2aXNpb24nIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiAnQVBBQyBIdWInIH0sXG4gICAgXSxcbiAgfTtcblxuICBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dW5rbm93bj4oYCR7YmFzZVVybH0vbG9va3VwYCwgcmVxdWVzdCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGV4dHJhY3RSb3dBcnJheShyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJhd0l0ZW1zLm1hcCgocjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAociAmJiB0eXBlb2YgciA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiByKSB7XG4gICAgICAgICAgICAgIHJldHVybiByIGFzIExvb2t1cE9wdGlvbkl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByPy5bcmVxdWVzdC52YWx1ZUZpZWxkXSA/PyByPy5pZCA/PyByPy5jb2RlID8/IFN0cmluZyhyID8/ICcnKTtcbiAgICAgICAgICAgIGNvbnN0IGxibCA9IHI/LltyZXF1ZXN0LmRpc3BsYXlGaWVsZF0gPz8gcj8ubmFtZSA/PyByPy50aXRsZSA/PyBTdHJpbmcodmFsKTtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiB2YWwsIGxhYmVsOiBsYmwsIHJhdzogciB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChpdGVtcykgPT4ge1xuICAgICAgICAgIC8vIE5ldmVyIGNhY2hlIGVtcHR5IHJlc3VsdHM6IHBhcmFtZXRlcnMgbWF5IHNpbXBseSBub3QgaGF2ZSBiZWVuIGZpbGxlZCB5ZXQuXG4gICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGl0ZW1zKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyPy5tZXNzYWdlIHx8ICdMb29rdXAgcmVxdWVzdCBmYWlsZWQnO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihBcnJheS5pc0FycmF5KG1zZykgPyBtc2cuam9pbignLCAnKSA6IG1zZykpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBmYWxsYmFjayA9IHRoaXMucmVzb2x2ZU1vY2tPcHRpb25zKHJlcXVlc3QpO1xuICAgIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGZhbGxiYWNrKTtcbiAgICByZXR1cm4gb2YoZmFsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWNoZShrZXk6IHN0cmluZywgZGF0YTogTG9va3VwT3B0aW9uSXRlbVtdLCB0dGxTZWNvbmRzID0gMzAwKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCB7XG4gICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxTZWNvbmRzICogMTAwMCxcbiAgICAgIGRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FjaGVLZXkocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyZXEuc291cmNlVHlwZX06JHtyZXEuZW50aXR5TmFtZX06JHtyZXEudmFsdWVGaWVsZH06JHtyZXEuZGlzcGxheUZpZWxkfToke0pTT04uc3RyaW5naWZ5KHJlcS5maWx0ZXIgPz8ge30pfToke0pTT04uc3RyaW5naWZ5KHJlcS5wYXJhbWV0ZXJzID8/IHt9KX1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlTW9ja09wdGlvbnMocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBMb29rdXBPcHRpb25JdGVtW10ge1xuICAgIGNvbnN0IGVudGl0eSA9IHJlcS5lbnRpdHlOYW1lIHx8ICcnO1xuICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLm1vY2tEYXRhU3RvcmVbZW50aXR5XSA/PyBbXTtcbiAgICBjb25zdCB2YWxLZXkgPSByZXEudmFsdWVGaWVsZDtcbiAgICBjb25zdCBsYWJlbEtleSA9IHJlcS5kaXNwbGF5RmllbGQ7XG5cbiAgICBsZXQgZmlsdGVyZWRSZWNvcmRzID0gcmVjb3JkcztcbiAgICBjb25zdCBicmFuY2hQYXJhbSA9IHJlcS5wYXJhbWV0ZXJzPy5bJ0BCcmFuY2hJZCddID8/IHJlcS5wYXJhbWV0ZXJzPy5bJ2JyYW5jaElkJ107XG4gICAgaWYgKGJyYW5jaFBhcmFtICE9PSB1bmRlZmluZWQgJiYgYnJhbmNoUGFyYW0gIT09IG51bGwgJiYgYnJhbmNoUGFyYW0gIT09ICcnKSB7XG4gICAgICBjb25zdCBtYXRjaE51bSA9IE51bWJlcihicmFuY2hQYXJhbSk7XG4gICAgICBmaWx0ZXJlZFJlY29yZHMgPSByZWNvcmRzLmZpbHRlcihcbiAgICAgICAgKHIpID0+IHJbJ2JyYW5jaElkJ10gPT09IHVuZGVmaW5lZCB8fCByWydicmFuY2hJZCddID09PSBtYXRjaE51bSB8fCByWydicmFuY2gnXSA9PT0gU3RyaW5nKGJyYW5jaFBhcmFtKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzLm1hcCgocikgPT4gKHtcbiAgICAgIHZhbHVlOiAoclt2YWxLZXldIGFzIHN0cmluZyB8IG51bWJlcikgPz8gU3RyaW5nKHJbJ2lkJ10gPz8gclsnY29kZSddID8/ICcnKSxcbiAgICAgIGxhYmVsOiAocltsYWJlbEtleV0gYXMgc3RyaW5nKSA/PyBTdHJpbmcoclsnbmFtZSddID8/IHJbJ3RpdGxlJ10gPz8gJycpLFxuICAgICAgcmF3OiByLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwTG9va3VwQWRhcHRlciA9IEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyO1xuIl19
@@ -0,0 +1,38 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { MasterDataProvider, } from '../contracts/master-data.provider';
4
+ import { ReportLookupAdapter } from '../contracts/lookup.contract';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Built-in HTTP adapter for legacy master data queries.
8
+ * Integrates directly with the reporting backend lookup service.
9
+ */
10
+ export class HttpMasterDataAdapter extends MasterDataProvider {
11
+ lookupAdapter = inject(ReportLookupAdapter);
12
+ getMasterData(masterName, options) {
13
+ return this.lookupAdapter
14
+ .fetchOptions({
15
+ sourceType: 'table',
16
+ entityName: masterName,
17
+ valueField: 'id',
18
+ displayField: 'name',
19
+ filter: options?.filter,
20
+ parameters: {
21
+ searchText: options?.searchText,
22
+ limit: options?.limit,
23
+ ...(options?.filter || {}),
24
+ },
25
+ })
26
+ .pipe(map((items) => items.map((item) => ({
27
+ value: item.value,
28
+ label: item.label,
29
+ ...(item.raw || {}),
30
+ }))));
31
+ }
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpMasterDataAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
33
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpMasterDataAdapter });
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpMasterDataAdapter, decorators: [{
36
+ type: Injectable
37
+ }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tYXN0ZXJkYXRhLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9odHRwLW1hc3RlcmRhdGEuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUdMLGtCQUFrQixHQUNuQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUVuRTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsa0JBQWtCO0lBQzFDLGFBQWEsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUU3RCxhQUFhLENBQ1gsVUFBa0IsRUFDbEIsT0FBMkI7UUFFM0IsT0FBTyxJQUFJLENBQUMsYUFBYTthQUN0QixZQUFZLENBQUM7WUFDWixVQUFVLEVBQUUsT0FBTztZQUNuQixVQUFVLEVBQUUsVUFBVTtZQUN0QixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsTUFBTTtZQUNwQixNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU07WUFDdkIsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVTtnQkFDL0IsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLO2dCQUNyQixHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7YUFDM0I7U0FDRixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztTQUNwQixDQUFDLENBQUMsQ0FDSixDQUNGLENBQUM7SUFDTixDQUFDO3dHQTdCVSxxQkFBcUI7NEdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTWFzdGVyRGF0YUl0ZW0sXG4gIE1hc3RlckRhdGFPcHRpb25zLFxuICBNYXN0ZXJEYXRhUHJvdmlkZXIsXG59IGZyb20gJy4uL2NvbnRyYWN0cy9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5pbXBvcnQgeyBSZXBvcnRMb29rdXBBZGFwdGVyIH0gZnJvbSAnLi4vY29udHJhY3RzL2xvb2t1cC5jb250cmFjdCc7XG5cbi8qKlxuICogQnVpbHQtaW4gSFRUUCBhZGFwdGVyIGZvciBsZWdhY3kgbWFzdGVyIGRhdGEgcXVlcmllcy5cbiAqIEludGVncmF0ZXMgZGlyZWN0bHkgd2l0aCB0aGUgcmVwb3J0aW5nIGJhY2tlbmQgbG9va3VwIHNlcnZpY2UuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwTWFzdGVyRGF0YUFkYXB0ZXIgZXh0ZW5kcyBNYXN0ZXJEYXRhUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvb2t1cEFkYXB0ZXIgPSBpbmplY3QoUmVwb3J0TG9va3VwQWRhcHRlcik7XG5cbiAgZ2V0TWFzdGVyRGF0YShcbiAgICBtYXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE1hc3RlckRhdGFPcHRpb25zXG4gICk6IE9ic2VydmFibGU8TWFzdGVyRGF0YUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLmxvb2t1cEFkYXB0ZXJcbiAgICAgIC5mZXRjaE9wdGlvbnMoe1xuICAgICAgICBzb3VyY2VUeXBlOiAndGFibGUnLFxuICAgICAgICBlbnRpdHlOYW1lOiBtYXN0ZXJOYW1lLFxuICAgICAgICB2YWx1ZUZpZWxkOiAnaWQnLFxuICAgICAgICBkaXNwbGF5RmllbGQ6ICduYW1lJyxcbiAgICAgICAgZmlsdGVyOiBvcHRpb25zPy5maWx0ZXIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBzZWFyY2hUZXh0OiBvcHRpb25zPy5zZWFyY2hUZXh0LFxuICAgICAgICAgIGxpbWl0OiBvcHRpb25zPy5saW1pdCxcbiAgICAgICAgICAuLi4ob3B0aW9ucz8uZmlsdGVyIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChpdGVtcykgPT5cbiAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgLi4uKGl0ZW0ucmF3IHx8IHt9KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxufVxuIl19