@metaobjectsdev/metadata 1.0.13 → 1.1.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 (233) hide show
  1. package/README.md +2 -0
  2. package/dist/attr-schema-validate.d.ts.map +1 -1
  3. package/dist/attr-schema-validate.js +9 -12
  4. package/dist/attr-schema-validate.js.map +1 -1
  5. package/dist/constants.d.ts +1 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +1 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/core/attr/meta-attr-filter.d.ts.map +1 -1
  10. package/dist/core/attr/meta-attr-filter.js +8 -2
  11. package/dist/core/attr/meta-attr-filter.js.map +1 -1
  12. package/dist/core/attr/meta-attr.d.ts +14 -0
  13. package/dist/core/attr/meta-attr.d.ts.map +1 -1
  14. package/dist/core/attr/meta-attr.js +23 -1
  15. package/dist/core/attr/meta-attr.js.map +1 -1
  16. package/dist/core/field/shared-enum.d.ts +21 -0
  17. package/dist/core/field/shared-enum.d.ts.map +1 -0
  18. package/dist/core/field/shared-enum.js +49 -0
  19. package/dist/core/field/shared-enum.js.map +1 -0
  20. package/dist/core/identity/meta-identity.d.ts +1 -1
  21. package/dist/core/identity/meta-identity.d.ts.map +1 -1
  22. package/dist/core/identity/meta-identity.js +8 -13
  23. package/dist/core/identity/meta-identity.js.map +1 -1
  24. package/dist/core/index.d.ts +2 -0
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/index.js +3 -0
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/core/object/object-constants.d.ts +14 -1
  29. package/dist/core/object/object-constants.d.ts.map +1 -1
  30. package/dist/core/object/object-constants.js +18 -0
  31. package/dist/core/object/object-constants.js.map +1 -1
  32. package/dist/core/object/object-definition.embedded.d.ts.map +1 -1
  33. package/dist/core/object/object-definition.embedded.js +80 -0
  34. package/dist/core/object/object-definition.embedded.js.map +1 -1
  35. package/dist/core/relationship/derive-m2m-fields.d.ts +1 -1
  36. package/dist/core/relationship/derive-m2m-fields.d.ts.map +1 -1
  37. package/dist/core/relationship/derive-m2m-fields.js +15 -44
  38. package/dist/core/relationship/derive-m2m-fields.js.map +1 -1
  39. package/dist/core/relationship/find-reference.d.ts.map +1 -1
  40. package/dist/core/relationship/find-reference.js +4 -2
  41. package/dist/core/relationship/find-reference.js.map +1 -1
  42. package/dist/core/relationship/resolve-relationship-reference.d.ts +6 -5
  43. package/dist/core/relationship/resolve-relationship-reference.d.ts.map +1 -1
  44. package/dist/core/relationship/resolve-relationship-reference.js +9 -7
  45. package/dist/core/relationship/resolve-relationship-reference.js.map +1 -1
  46. package/dist/core/reporting/meta-dimension.d.ts +13 -0
  47. package/dist/core/reporting/meta-dimension.d.ts.map +1 -0
  48. package/dist/core/reporting/meta-dimension.js +30 -0
  49. package/dist/core/reporting/meta-dimension.js.map +1 -0
  50. package/dist/core/reporting/meta-measure.d.ts +24 -0
  51. package/dist/core/reporting/meta-measure.d.ts.map +1 -0
  52. package/dist/core/reporting/meta-measure.js +54 -0
  53. package/dist/core/reporting/meta-measure.js.map +1 -0
  54. package/dist/core/reporting/meta-segment.d.ts +6 -0
  55. package/dist/core/reporting/meta-segment.d.ts.map +1 -0
  56. package/dist/core/reporting/meta-segment.js +13 -0
  57. package/dist/core/reporting/meta-segment.js.map +1 -0
  58. package/dist/core/reporting/report-accessors.d.ts +27 -0
  59. package/dist/core/reporting/report-accessors.d.ts.map +1 -0
  60. package/dist/core/reporting/report-accessors.js +56 -0
  61. package/dist/core/reporting/report-accessors.js.map +1 -0
  62. package/dist/core/reporting/report-describe.d.ts +59 -0
  63. package/dist/core/reporting/report-describe.d.ts.map +1 -0
  64. package/dist/core/reporting/report-describe.js +182 -0
  65. package/dist/core/reporting/report-describe.js.map +1 -0
  66. package/dist/core/reporting/report-read-model.d.ts +34 -0
  67. package/dist/core/reporting/report-read-model.d.ts.map +1 -0
  68. package/dist/core/reporting/report-read-model.js +165 -0
  69. package/dist/core/reporting/report-read-model.js.map +1 -0
  70. package/dist/core/reporting/report-shape.d.ts +103 -0
  71. package/dist/core/reporting/report-shape.d.ts.map +1 -0
  72. package/dist/core/reporting/report-shape.js +398 -0
  73. package/dist/core/reporting/report-shape.js.map +1 -0
  74. package/dist/core/reporting/reporting-constants.d.ts +65 -0
  75. package/dist/core/reporting/reporting-constants.d.ts.map +1 -0
  76. package/dist/core/reporting/reporting-constants.js +84 -0
  77. package/dist/core/reporting/reporting-constants.js.map +1 -0
  78. package/dist/core/reporting/reporting-definition.embedded.d.ts +3 -0
  79. package/dist/core/reporting/reporting-definition.embedded.d.ts.map +1 -0
  80. package/dist/core/reporting/reporting-definition.embedded.js +185 -0
  81. package/dist/core/reporting/reporting-definition.embedded.js.map +1 -0
  82. package/dist/core/requirement/resolve-claim.d.ts +8 -0
  83. package/dist/core/requirement/resolve-claim.d.ts.map +1 -1
  84. package/dist/core/requirement/resolve-claim.js +21 -0
  85. package/dist/core/requirement/resolve-claim.js.map +1 -1
  86. package/dist/core/yaml-desugar.d.ts.map +1 -1
  87. package/dist/core/yaml-desugar.js +12 -82
  88. package/dist/core/yaml-desugar.js.map +1 -1
  89. package/dist/core-types.d.ts.map +1 -1
  90. package/dist/core-types.js +28 -1
  91. package/dist/core-types.js.map +1 -1
  92. package/dist/docs-ref.d.ts +19 -0
  93. package/dist/docs-ref.d.ts.map +1 -0
  94. package/dist/docs-ref.js +37 -0
  95. package/dist/docs-ref.js.map +1 -0
  96. package/dist/errors.d.ts +1 -1
  97. package/dist/errors.d.ts.map +1 -1
  98. package/dist/errors.js +17 -6
  99. package/dist/errors.js.map +1 -1
  100. package/dist/fmt.d.ts.map +1 -1
  101. package/dist/fmt.js +3 -1
  102. package/dist/fmt.js.map +1 -1
  103. package/dist/index.d.ts +15 -4
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +18 -4
  106. package/dist/index.js.map +1 -1
  107. package/dist/loader/declared-duplicate-fields.d.ts +19 -0
  108. package/dist/loader/declared-duplicate-fields.d.ts.map +1 -0
  109. package/dist/loader/declared-duplicate-fields.js +97 -0
  110. package/dist/loader/declared-duplicate-fields.js.map +1 -0
  111. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  112. package/dist/loader/meta-data-loader.js +18 -1
  113. package/dist/loader/meta-data-loader.js.map +1 -1
  114. package/dist/loader/reporting-validation.d.ts +11 -0
  115. package/dist/loader/reporting-validation.d.ts.map +1 -0
  116. package/dist/loader/reporting-validation.js +883 -0
  117. package/dist/loader/reporting-validation.js.map +1 -0
  118. package/dist/loader/resolve-references.d.ts +8 -0
  119. package/dist/loader/resolve-references.d.ts.map +1 -0
  120. package/dist/loader/resolve-references.js +132 -0
  121. package/dist/loader/resolve-references.js.map +1 -0
  122. package/dist/loader/validation-passes.d.ts.map +1 -1
  123. package/dist/loader/validation-passes.js +14 -9
  124. package/dist/loader/validation-passes.js.map +1 -1
  125. package/dist/loader/validation-registry.d.ts.map +1 -1
  126. package/dist/loader/validation-registry.js +33 -10
  127. package/dist/loader/validation-registry.js.map +1 -1
  128. package/dist/metamodel-docs/index.js +3 -3
  129. package/dist/metamodel-docs/index.js.map +1 -1
  130. package/dist/metamodel-docs/render.js +4 -4
  131. package/dist/metamodel-docs/render.js.map +1 -1
  132. package/dist/naming-refs.d.ts +102 -50
  133. package/dist/naming-refs.d.ts.map +1 -1
  134. package/dist/naming-refs.js +223 -97
  135. package/dist/naming-refs.js.map +1 -1
  136. package/dist/naming.d.ts +42 -7
  137. package/dist/naming.d.ts.map +1 -1
  138. package/dist/naming.js +43 -5
  139. package/dist/naming.js.map +1 -1
  140. package/dist/object-serializer.d.ts.map +1 -1
  141. package/dist/object-serializer.js +6 -9
  142. package/dist/object-serializer.js.map +1 -1
  143. package/dist/parser-core.d.ts.map +1 -1
  144. package/dist/parser-core.js +18 -48
  145. package/dist/parser-core.js.map +1 -1
  146. package/dist/persistence/db/db-definition.embedded.js +2 -2
  147. package/dist/persistence/db/db-definition.embedded.js.map +1 -1
  148. package/dist/persistence/source/meta-source.d.ts +5 -3
  149. package/dist/persistence/source/meta-source.d.ts.map +1 -1
  150. package/dist/persistence/source/meta-source.js +8 -6
  151. package/dist/persistence/source/meta-source.js.map +1 -1
  152. package/dist/registry-manifest-exclusions.js +2 -2
  153. package/dist/registry-manifest-exclusions.js.map +1 -1
  154. package/dist/registry-manifest.d.ts +1 -1
  155. package/dist/registry-manifest.js +1 -1
  156. package/dist/release-docs.d.ts +11 -0
  157. package/dist/release-docs.d.ts.map +1 -0
  158. package/dist/release-docs.js +48 -0
  159. package/dist/release-docs.js.map +1 -0
  160. package/dist/serializer-json.d.ts +15 -1
  161. package/dist/serializer-json.d.ts.map +1 -1
  162. package/dist/serializer-json.js +55 -17
  163. package/dist/serializer-json.js.map +1 -1
  164. package/dist/shared/base-types.d.ts +7 -1
  165. package/dist/shared/base-types.d.ts.map +1 -1
  166. package/dist/shared/base-types.js +9 -0
  167. package/dist/shared/base-types.js.map +1 -1
  168. package/dist/shared/meta-data.d.ts +10 -0
  169. package/dist/shared/meta-data.d.ts.map +1 -1
  170. package/dist/shared/meta-data.js +22 -1
  171. package/dist/shared/meta-data.js.map +1 -1
  172. package/dist/shared/meta-root.d.ts +13 -1
  173. package/dist/shared/meta-root.d.ts.map +1 -1
  174. package/dist/shared/meta-root.js +19 -1
  175. package/dist/shared/meta-root.js.map +1 -1
  176. package/dist/super-resolve.d.ts +4 -1
  177. package/dist/super-resolve.d.ts.map +1 -1
  178. package/dist/super-resolve.js +44 -65
  179. package/dist/super-resolve.js.map +1 -1
  180. package/dist/vocabulary-catalog.js +2 -2
  181. package/dist/vocabulary-catalog.js.map +1 -1
  182. package/package.json +6 -1
  183. package/src/attr-schema-validate.ts +9 -13
  184. package/src/constants.ts +1 -0
  185. package/src/core/attr/meta-attr-filter.ts +8 -1
  186. package/src/core/attr/meta-attr.ts +24 -1
  187. package/src/core/field/shared-enum.ts +53 -0
  188. package/src/core/identity/meta-identity.ts +9 -12
  189. package/src/core/index.ts +5 -0
  190. package/src/core/object/object-constants.ts +19 -0
  191. package/src/core/object/object-definition.embedded.ts +80 -0
  192. package/src/core/relationship/derive-m2m-fields.ts +15 -48
  193. package/src/core/relationship/find-reference.ts +4 -2
  194. package/src/core/relationship/resolve-relationship-reference.ts +11 -9
  195. package/src/core/reporting/meta-dimension.ts +41 -0
  196. package/src/core/reporting/meta-measure.ts +75 -0
  197. package/src/core/reporting/meta-segment.ts +14 -0
  198. package/src/core/reporting/report-accessors.ts +73 -0
  199. package/src/core/reporting/report-describe.ts +206 -0
  200. package/src/core/reporting/report-read-model.ts +177 -0
  201. package/src/core/reporting/report-shape.ts +493 -0
  202. package/src/core/reporting/reporting-constants.ts +104 -0
  203. package/src/core/reporting/reporting-definition.embedded.ts +192 -0
  204. package/src/core/requirement/resolve-claim.ts +20 -0
  205. package/src/core/yaml-desugar.ts +9 -89
  206. package/src/core-types.ts +41 -0
  207. package/src/docs-ref.ts +41 -0
  208. package/src/errors.ts +17 -6
  209. package/src/fmt.ts +3 -1
  210. package/src/index.ts +72 -4
  211. package/src/loader/declared-duplicate-fields.ts +114 -0
  212. package/src/loader/meta-data-loader.ts +25 -1
  213. package/src/loader/reporting-validation.ts +1137 -0
  214. package/src/loader/resolve-references.ts +144 -0
  215. package/src/loader/validation-passes.ts +13 -9
  216. package/src/loader/validation-registry.ts +37 -9
  217. package/src/metamodel-docs/index.ts +3 -3
  218. package/src/metamodel-docs/render.ts +4 -4
  219. package/src/naming-refs.ts +237 -94
  220. package/src/naming.ts +75 -11
  221. package/src/object-serializer.ts +7 -9
  222. package/src/parser-core.ts +19 -56
  223. package/src/persistence/db/db-definition.embedded.ts +2 -2
  224. package/src/persistence/source/meta-source.ts +8 -6
  225. package/src/registry-manifest-exclusions.ts +2 -2
  226. package/src/registry-manifest.ts +1 -1
  227. package/src/release-docs.ts +48 -0
  228. package/src/serializer-json.ts +79 -12
  229. package/src/shared/base-types.ts +9 -0
  230. package/src/shared/meta-data.ts +22 -1
  231. package/src/shared/meta-root.ts +20 -1
  232. package/src/super-resolve.ts +49 -63
  233. package/src/vocabulary-catalog.ts +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-shape.d.ts","sourceRoot":"","sources":["../../../src/core/reporting/report-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,398 @@
1
+ // Table B of docs/superpowers/plans/2026-10-03-fr-044-plan-2-report-view-lowering.md:
2
+ // a report's derived fields. The single definition; every port has a rule-for-rule copy,
3
+ // gated by fixtures/persistence-conformance/report-shapes.json. `required` follows Table C
4
+ // of docs/superpowers/plans/2026-10-09-fr-044-zero-rows-and-measure-defaults.md, which
5
+ // amends Table B for a report with `@spine` and a measure with `@default`.
6
+ import { isMetaObject } from "../../shared/node-guards.js";
7
+ import { refTarget, resolveObjectRef } from "../../naming-refs.js";
8
+ import { CHILD_REF_SEPARATOR, PACKAGE_SEPARATOR } from "../../shared/structural.js";
9
+ import { FIELD_SUBTYPE_BOOLEAN, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_DATE, FIELD_SUBTYPE_DECIMAL, FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT, FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG, FIELD_SUBTYPE_TIMESTAMP, } from "../field/field-constants.js";
10
+ import { TYPE_IDENTITY, TYPE_RELATIONSHIP } from "../../shared/base-types.js";
11
+ import { IDENTITY_REFERENCE_ATTR_REFERENCES, IDENTITY_SUBTYPE_REFERENCE } from "../identity/identity-constants.js";
12
+ import { RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_ATTR_SOURCE_REF_FIELD } from "../relationship/relationship-constants.js";
13
+ import { resolveRelationshipReference } from "../relationship/resolve-relationship-reference.js";
14
+ import { MetaDimension } from "./meta-dimension.js";
15
+ import { MetaMeasure } from "./meta-measure.js";
16
+ import { identityEffectiveFields } from "../identity/validate-identity-passthrough.js";
17
+ import { reportDerivedFieldName, reportDimensionItems, reportFrom, reportMeasureItemName, reportMeasureItemOwner, reportMeasureNames, reportSpine, } from "./report-accessors.js";
18
+ import { AGG_ALL, AGG_ANY } from "../../persistence/origin/origin-constants.js";
19
+ import { AGG_AVG, AGG_COUNT, AGG_SUM, GRAIN_HOUR, TIME_GRAINS, TYPE_DIMENSION, TYPE_MEASURE, } from "./reporting-constants.js";
20
+ const SUM_LONG = new Set([FIELD_SUBTYPE_INT, FIELD_SUBTYPE_LONG]);
21
+ const FLOATING = new Set([FIELD_SUBTYPE_DOUBLE, FIELD_SUBTYPE_FLOAT]);
22
+ /** Effective package of a node, taken from its resolution key ("<pkg>::<Name>"). */
23
+ function packageOfKey(key) {
24
+ const i = key.lastIndexOf(PACKAGE_SEPARATOR);
25
+ return i >= 0 ? key.slice(0, i) : "";
26
+ }
27
+ /** True when `candidate` is `entity` or an entity it extends (the super chain). */
28
+ function isSelfOrAncestor(candidate, entity) {
29
+ const visited = new Set();
30
+ for (let n = entity; n !== undefined && !visited.has(n); n = n.superData) {
31
+ if (n === candidate)
32
+ return true;
33
+ visited.add(n);
34
+ }
35
+ return false;
36
+ }
37
+ /**
38
+ * The entity that DECLARES a dimension, measure or segment reached through `from`: the
39
+ * member's parent, which is `from` itself or an entity `from` extends. A bare entity name
40
+ * inside the member (`@of`, `@via`) resolves in THIS entity's package, exactly as the
41
+ * loader's `validateReporting` resolves it (`pkgOf(ctx.declaring)`), never in `from`'s
42
+ * package or the report's.
43
+ */
44
+ export function reportingMemberOwner(member, from) {
45
+ return member.parent ?? from;
46
+ }
47
+ /**
48
+ * Resolve a dimension's or measure's `Entity.field` reference to the field node. The ONE
49
+ * rule, the same as the loader's (`validateReporting` D1 / M1):
50
+ *
51
+ * 1. The entity half resolves relative to the package of `declaring`, the entity that
52
+ * declares the member ({@link reportingMemberOwner}).
53
+ * 2. With `host` (a measure, or a dimension without `@via`: the reference is about the
54
+ * `@from` entity's own rows) the named entity must be `host` or an entity it extends,
55
+ * and the field is read from `host`, so a field `host` redeclares wins.
56
+ * 3. Without `host` the field is read from the named entity. A dimension with `@via` passes
57
+ * the entity its `@via` reaches as both `declaring` and `host`
58
+ * ({@link resolveDimensionOf}).
59
+ *
60
+ * Undefined when any step fails.
61
+ */
62
+ export function resolveReportingFieldRef(ref, declaring, root, host) {
63
+ return resolveReportingFieldRefNamed(ref, declaring, root, host)?.field;
64
+ }
65
+ /**
66
+ * A dimension's `@of` field, read as the loader's rule D1 reads it. Without `@via` it is
67
+ * {@link resolveReportingFieldRef} with `from` as the host. With `@via` the host is the
68
+ * entity the `@via` reaches, and a bare entity name in `@of` resolves in THAT entity's
69
+ * package: the path already fixes the entity, so `Realm.name` after a hop onto
70
+ * `world::Realm` names `world::Realm`. The field is read from the reached entity, so a field
71
+ * it redeclares wins. Undefined when the `@via` or the `@of` does not resolve.
72
+ */
73
+ export function resolveDimensionOf(dim, from, root) {
74
+ const of = dim.of() ?? "";
75
+ const via = dim.via();
76
+ if (via === undefined)
77
+ return resolveReportingFieldRefNamed(of, reportingMemberOwner(dim, from), root, from);
78
+ const terminal = reportingViaTerminal(via, reportingMemberOwner(dim, from), from, root);
79
+ if (terminal === undefined)
80
+ return undefined;
81
+ return resolveReportingFieldRefNamed(of, terminal, root, terminal);
82
+ }
83
+ /**
84
+ * The entity at the end of a `@via` walked from `from` (hops as {@link reportingViaHops}
85
+ * reads them, each target as {@link resolveViaHop} resolves it). Undefined when any hop does
86
+ * not resolve.
87
+ */
88
+ function reportingViaTerminal(via, declaring, from, root) {
89
+ const hops = reportingViaHops(via, declaring, from, root);
90
+ if (hops === undefined)
91
+ return undefined;
92
+ let current = from;
93
+ for (const hop of hops) {
94
+ const target = resolveViaHop(current, hop)?.target;
95
+ if (target === undefined)
96
+ return undefined;
97
+ current = target;
98
+ }
99
+ return current;
100
+ }
101
+ /**
102
+ * {@link resolveReportingFieldRef}, also returning `named`: the entity the reference's
103
+ * entity half names (which, with `host`, may be an ancestor of the entity `field` is read
104
+ * from). Table C reads `named`'s primary identity.
105
+ */
106
+ function resolveReportingFieldRefNamed(ref, declaring, root, host) {
107
+ // `Entity.field`; a package qualifier uses `::`, so the member separator is the LAST dot.
108
+ const dot = ref.lastIndexOf(CHILD_REF_SEPARATOR);
109
+ if (dot <= 0)
110
+ return undefined;
111
+ const named = resolveObjectRef(root, ref.slice(0, dot), packageOfKey(declaring.resolutionKey())).node;
112
+ if (!isMetaObject(named))
113
+ return undefined;
114
+ if (host !== undefined && !isSelfOrAncestor(named, host))
115
+ return undefined;
116
+ // ADR-0039: resolving, so a field inherited through extends is found.
117
+ const field = (host ?? named).fields().find((f) => f.name === ref.slice(dot + 1));
118
+ return field === undefined ? undefined : { named, field };
119
+ }
120
+ /**
121
+ * The hop names of a dimension's `@via` (`Owner.hop[.hop...]`), read as the loader reads it
122
+ * (`validateReporting` rule D2): `Owner` resolves in the package of `declaring`
123
+ * ({@link reportingMemberOwner}) and must be `from` or an entity `from` extends. The walk
124
+ * itself then starts AT `from`, whichever of the two `Owner` named. Undefined when the
125
+ * reference has no owner, no hop, or an owner that is not `from` or an ancestor of it.
126
+ */
127
+ export function reportingViaHops(via, declaring, from, root) {
128
+ // The owner ends at the first `.` after the last `::` (a package qualifier has no `.`).
129
+ const lastSep = via.lastIndexOf(PACKAGE_SEPARATOR);
130
+ const segStart = lastSep === -1 ? 0 : lastSep + PACKAGE_SEPARATOR.length;
131
+ const dot = via.indexOf(CHILD_REF_SEPARATOR, segStart);
132
+ if (dot <= segStart)
133
+ return undefined;
134
+ const hops = via.slice(dot + CHILD_REF_SEPARATOR.length).split(CHILD_REF_SEPARATOR);
135
+ if (hops.some((h) => h === ""))
136
+ return undefined;
137
+ const owner = resolveObjectRef(root, via.slice(0, dot), packageOfKey(declaring.resolutionKey())).node;
138
+ if (owner === undefined || !isSelfOrAncestor(owner, from))
139
+ return undefined;
140
+ return hops;
141
+ }
142
+ function unresolved(reportName, what) {
143
+ return new Error(`report '${reportName}': ${what} does not resolve.`);
144
+ }
145
+ /**
146
+ * The hop names of a report's `@spine` (`Owner.hop[.hop...]`), read as
147
+ * {@link reportingViaHops} reads a `@via`, the owner resolving in `from`'s package (loader
148
+ * rule R8): Owner must be `from` or an entity it extends, so a bare name means `from`'s
149
+ * package even when the report lives in another one. Undefined when the report declares no `@spine`. Throws a plain Error
150
+ * naming the report when a declared `@spine` does not resolve (a report that passed
151
+ * `validateReporting` always resolves): reading it as "no spine" would claim a column
152
+ * non-null that a spine row with no facts leaves null.
153
+ */
154
+ export function reportSpineHops(report, from, root) {
155
+ const spine = reportSpine(report);
156
+ if (spine === undefined)
157
+ return undefined;
158
+ const hops = reportingViaHops(spine, from, from, root);
159
+ if (hops === undefined)
160
+ throw unresolved(report.name, `@spine '${spine}'`);
161
+ return hops;
162
+ }
163
+ /**
164
+ * One hop of a `@via`/`@spine` path, as the loader's rule R8 walks it: the `relationship.*`
165
+ * (read through its `@objectRef`) or `identity.reference` (through its `@references`) of
166
+ * `current` named `hopName`, with its target resolved in the package of the node that declares
167
+ * the hop's reference attribute (ADR-0059 R3). Returns
168
+ * `target: undefined` for an unresolvable hop or a ref attr that is not a string / does not
169
+ * reach a metadata object.
170
+ * ADR-0039: resolving children(), so a hop inherited through extends is found.
171
+ */
172
+ function resolveViaHop(current, hopName) {
173
+ const rel = current.children().find((c) => c.type === TYPE_RELATIONSHIP && c.name === hopName);
174
+ const refNode = rel !== undefined
175
+ ? undefined
176
+ : current.children().find((c) => c.type === TYPE_IDENTITY && c.subType === IDENTITY_SUBTYPE_REFERENCE && c.name === hopName);
177
+ const hop = rel ?? refNode;
178
+ if (hop === undefined)
179
+ return undefined;
180
+ const isReference = rel === undefined;
181
+ const node = refTarget(hop, isReference ? IDENTITY_REFERENCE_ATTR_REFERENCES : RELATIONSHIP_ATTR_OBJECT_REF);
182
+ return { hop, isReference, target: isMetaObject(node) ? node : undefined };
183
+ }
184
+ /**
185
+ * The spine entity: the object at the end of a report's `@spine`, whose rows are the
186
+ * report's rows. Walked hop by hop from `from` as the loader's rule R8 walks it via
187
+ * {@link resolveViaHop}; an unresolved hop throws, as {@link reportSpineHops} does (a report
188
+ * that passed `validateReporting` always resolves). Undefined when the report declares no
189
+ * `@spine`.
190
+ */
191
+ export function reportSpineEntity(report, from, root) {
192
+ const hops = reportSpineHops(report, from, root);
193
+ if (hops === undefined)
194
+ return undefined;
195
+ let current = from;
196
+ for (const hop of hops) {
197
+ const target = resolveViaHop(current, hop)?.target;
198
+ if (target === undefined)
199
+ throw unresolved(report.name, `@spine '${reportSpine(report) ?? ""}' hop '${hop}'`);
200
+ current = target;
201
+ }
202
+ return current;
203
+ }
204
+ /** True when `field` is one of the `@fields` of `entity`'s `identity.primary`. */
205
+ function isPrimaryKeyField(entity, field) {
206
+ // ADR-0039: resolving — an identity.primary (and its @fields) inherited from an
207
+ // abstract base counts.
208
+ const pk = entity.primaryIdentity();
209
+ return pk !== undefined && (identityEffectiveFields(pk) ?? []).includes(field.name);
210
+ }
211
+ function declaredMember(from, type, name, cls) {
212
+ // ADR-0039: resolving children(), so a member declared on an abstract base is found.
213
+ return from.children().find((c) => c.type === type && c.name === name && c instanceof cls);
214
+ }
215
+ function isTimeGrain(grain) {
216
+ return grain !== undefined && TIME_GRAINS.includes(grain);
217
+ }
218
+ /**
219
+ * True when every hop of `hops`, walked from `from`, is a belongs-to hop over a required
220
+ * foreign key: the hops the view joins INNER, so every row of the report has a match. This
221
+ * is the join-type rule of the view lowering (codegen-ts `walkViaPath`, #209): the reference
222
+ * is held by the entity the hop leaves, its first FK field is required, and every earlier hop
223
+ * is INNER too. `@enforce: false` does not change it. A hop that does not resolve, an
224
+ * ambiguous reference or a has-many hop is not INNER.
225
+ */
226
+ function viaJoinsInner(hops, from, root) {
227
+ let current = from;
228
+ for (const hopName of hops) {
229
+ const resolved = resolveViaHop(current, hopName);
230
+ if (resolved === undefined || resolved.target === undefined)
231
+ return false;
232
+ const { hop, isReference, target } = resolved;
233
+ // The reference the hop crosses, as the lowering resolves it. A has-many hop, whose FK
234
+ // sits on the child, matches none of the current entity's own references.
235
+ let reference;
236
+ if (isReference) {
237
+ reference = hop;
238
+ }
239
+ else {
240
+ const sourceRefField = hop.attr(RELATIONSHIP_ATTR_SOURCE_REF_FIELD);
241
+ reference = resolveRelationshipReference(current, hopName, target, typeof sourceRefField === "string" ? sourceRefField : undefined);
242
+ }
243
+ if (reference === undefined)
244
+ return false;
245
+ const fkName = reference.fields[0];
246
+ const fk = fkName === undefined ? undefined : current.findField(fkName);
247
+ if (fk === undefined || !fk.isRequired)
248
+ return false;
249
+ current = target;
250
+ }
251
+ return true;
252
+ }
253
+ /**
254
+ * Table C (`required` of a dimension). Without `@spine`: only a dimension over an `@of` field
255
+ * that is effectively required (`@required`, or a `validator.required` child), and, when it has a `@via`, only when every hop is a
256
+ * required belongs-to reference, the hops the view joins INNER ({@link viaJoinsInner}). With `@spine`: only a dimension
257
+ * whose `@via` hops equal the spine's (a column of the spine entity itself, whose rows are
258
+ * the report's rows) over an `@of` field that is `@required` or a primary-key column of the
259
+ * entity `@of` names. A dimension beyond the spine is reached by a LEFT OUTER join.
260
+ */
261
+ function dimensionRequired(dim, named, of, from, root, spine, reportName) {
262
+ const via = dim.via();
263
+ if (spine === undefined) {
264
+ if (via === undefined)
265
+ return of.isRequired;
266
+ if (!of.isRequired)
267
+ return false;
268
+ const hops = reportingViaHops(via, reportingMemberOwner(dim, from), from, root);
269
+ if (hops === undefined)
270
+ throw unresolved(reportName, `dimension '${dim.name}' @via '${via}'`);
271
+ return viaJoinsInner(hops, from, root);
272
+ }
273
+ if (via === undefined)
274
+ return false; // a column of @from: null in a spine row with no facts
275
+ const hops = reportingViaHops(via, reportingMemberOwner(dim, from), from, root);
276
+ if (hops === undefined)
277
+ throw unresolved(reportName, `dimension '${dim.name}' @via '${via}'`);
278
+ const onSpine = hops.length === spine.length && hops.every((h, i) => h === spine[i]);
279
+ return onSpine && (of.isRequired || isPrimaryKeyField(named, of));
280
+ }
281
+ function dimensionField(item, from, root, reportName, spine) {
282
+ const dim = declaredMember(from, TYPE_DIMENSION, item.name, MetaDimension);
283
+ if (dim === undefined)
284
+ throw unresolved(reportName, `dimension '${item.name}' on '${from.name}'`);
285
+ const via = dim.via();
286
+ // A @via that does not walk is the @via's error, not the @of's (the @of resolves at its end).
287
+ if (via !== undefined && reportingViaTerminal(via, reportingMemberOwner(dim, from), from, root) === undefined) {
288
+ throw unresolved(reportName, `dimension '${dim.name}' @via '${via}'`);
289
+ }
290
+ const ref = resolveDimensionOf(dim, from, root);
291
+ if (ref === undefined)
292
+ throw unresolved(reportName, `dimension '${item.name}' @of`);
293
+ const of = ref.field;
294
+ const name = reportDerivedFieldName(item);
295
+ const required = dimensionRequired(dim, ref.named, of, from, root, spine, reportName);
296
+ if (dim.isTime()) {
297
+ // Loader rule R2 guarantees a grain from the closed set; a tree built in code does not.
298
+ const grain = item.grain;
299
+ if (!isTimeGrain(grain))
300
+ throw unresolved(reportName, `time dimension '${item.name}' grain '${grain ?? ""}'`);
301
+ if (grain === GRAIN_HOUR) {
302
+ return { name, role: "dimension", subType: FIELD_SUBTYPE_TIMESTAMP, required, typeSource: of, dimension: dim, grain };
303
+ }
304
+ return { name, role: "dimension", subType: FIELD_SUBTYPE_DATE, required, dimension: dim, grain };
305
+ }
306
+ return { name, role: "dimension", subType: of.subType, required, typeSource: of, dimension: dim };
307
+ }
308
+ /**
309
+ * One `@measures` item, bare (`total`) or dotted (`Sale.total`, loader rule R3). The measure
310
+ * is named by the item's last segment and looked up on `from`; a qualifier resolves in the
311
+ * REPORT's package and must be `from` or an entity `from` extends.
312
+ */
313
+ function measureField(item, report, from, root) {
314
+ const reportName = report.name;
315
+ const name = reportMeasureItemName(item);
316
+ const qualifier = reportMeasureItemOwner(item);
317
+ if (qualifier !== undefined) {
318
+ const owner = resolveObjectRef(root, qualifier, packageOfKey(report.resolutionKey())).node;
319
+ if (owner === undefined || !isSelfOrAncestor(owner, from)) {
320
+ throw unresolved(reportName, `measure '${item}' on '${from.name}'`);
321
+ }
322
+ }
323
+ const m = declaredMember(from, TYPE_MEASURE, name, MetaMeasure);
324
+ if (m === undefined)
325
+ throw unresolved(reportName, `measure '${item}' on '${from.name}'`);
326
+ const derived = deriveMeasure(m, from, root);
327
+ if (derived === undefined)
328
+ throw unresolved(reportName, `measure '${name}' @of`);
329
+ // Table C: a count is never null; any other measure is not null when it has a @default.
330
+ const required = (!m.isRatio() && m.agg() === AGG_COUNT) || m.defaultValue() !== undefined;
331
+ const { subType, typeSource } = derived;
332
+ // The key set (no `typeSource` key when there is none) and its order are as before.
333
+ return typeSource === undefined
334
+ ? { name, role: "measure", subType, required, measure: m }
335
+ : { name, role: "measure", subType, required, typeSource, measure: m };
336
+ }
337
+ /** Table B for one measure. Undefined when its `@of` does not resolve. */
338
+ function deriveMeasure(m, from, root) {
339
+ if (m.isRatio())
340
+ return { subType: FIELD_SUBTYPE_DECIMAL };
341
+ const agg = m.agg();
342
+ if (agg === AGG_COUNT)
343
+ return { subType: FIELD_SUBTYPE_LONG };
344
+ // any / all are boolean whatever the source (the loader's M4 refuses a non-boolean @of).
345
+ if (agg === AGG_ANY || agg === AGG_ALL)
346
+ return { subType: FIELD_SUBTYPE_BOOLEAN };
347
+ const of = resolveReportingFieldRef(m.ofColumns()[0] ?? "", reportingMemberOwner(m, from), root, from);
348
+ if (of === undefined)
349
+ return undefined;
350
+ const src = of.subType;
351
+ if (agg === AGG_SUM) {
352
+ if (src === FIELD_SUBTYPE_CURRENCY)
353
+ return { subType: FIELD_SUBTYPE_CURRENCY, typeSource: of };
354
+ return {
355
+ subType: SUM_LONG.has(src) ? FIELD_SUBTYPE_LONG : FLOATING.has(src) ? FIELD_SUBTYPE_DOUBLE : FIELD_SUBTYPE_DECIMAL,
356
+ };
357
+ }
358
+ if (agg === AGG_AVG)
359
+ return { subType: FLOATING.has(src) ? FIELD_SUBTYPE_DOUBLE : FIELD_SUBTYPE_DECIMAL };
360
+ // min / max keep the source field's type.
361
+ return { subType: src, typeSource: of };
362
+ }
363
+ /**
364
+ * Table B's subtype for one measure of `from`, whether or not a report lists it (a
365
+ * ratio's operands are measures a report need not list). The same rule `reportShape`
366
+ * applies to a listed measure. Undefined when its `@of` does not resolve, which the
367
+ * loader (rule M6) reads before the model is known to be valid.
368
+ */
369
+ export function measureResultSubType(measure, from, root) {
370
+ return deriveMeasure(measure, from, root)?.subType;
371
+ }
372
+ /**
373
+ * {@link measureResultSubType} for a model that passed `validateReporting`. Throws a plain
374
+ * Error naming the measure when its `@of` does not resolve (a valid measure always resolves).
375
+ */
376
+ export function measureDerivedSubType(measure, from, root) {
377
+ const subType = measureResultSubType(measure, from, root);
378
+ if (subType === undefined)
379
+ throw new Error(`measure '${measure.name}' on '${from.name}': @of does not resolve.`);
380
+ return subType;
381
+ }
382
+ /** Table B, with Table C's `required`. Throws a plain Error naming the report when a
383
+ * reference does not resolve (a report that passed `validateReporting` always resolves). */
384
+ export function reportShape(report, root) {
385
+ const fromName = reportFrom(report);
386
+ if (fromName === undefined)
387
+ throw unresolved(report.name, "@from");
388
+ const from = resolveObjectRef(root, fromName, packageOfKey(report.resolutionKey())).node;
389
+ if (!isMetaObject(from))
390
+ throw unresolved(report.name, `@from '${fromName}'`);
391
+ const spine = reportSpineHops(report, from, root);
392
+ const fields = [
393
+ ...reportDimensionItems(report).map((item) => dimensionField(item, from, root, report.name, spine)),
394
+ ...reportMeasureNames(report).map((item) => measureField(item, report, from, root)),
395
+ ];
396
+ return { report, from, fields };
397
+ }
398
+ //# sourceMappingURL=report-shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-shape.js","sourceRoot":"","sources":["../../../src/core/reporting/report-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { TYPE_DIMENSION, TYPE_MEASURE, TYPE_SEGMENT } from "../../shared/base-types.js";
2
+ export { TYPE_DIMENSION, TYPE_MEASURE, TYPE_SEGMENT };
3
+ /** Groups by a column value as-is (no grain, no truncation). */
4
+ export declare const DIMENSION_SUBTYPE_ATTRIBUTE = "attribute";
5
+ /** Groups by a date/timestamp column truncated to a grain. */
6
+ export declare const DIMENSION_SUBTYPE_TIME = "time";
7
+ export declare const DIMENSION_SUBTYPES: readonly ["attribute", "time"];
8
+ export type DimensionSubType = (typeof DIMENSION_SUBTYPES)[number];
9
+ /** One aggregate over the declaring entity's own rows. */
10
+ export declare const MEASURE_SUBTYPE_AGGREGATE = "aggregate";
11
+ /** A quotient of two `measure.aggregate` siblings, `numerator / NULLIF(denominator, 0)`.
12
+ * `measure.derived` is deliberately NOT registered: it waits for FR-037 R5. */
13
+ export declare const MEASURE_SUBTYPE_RATIO = "ratio";
14
+ export declare const MEASURE_SUBTYPES: readonly ["aggregate", "ratio"];
15
+ export type MeasureSubType = (typeof MEASURE_SUBTYPES)[number];
16
+ /** A named, reusable row filter. The only concrete segment subtype: every `*.base`
17
+ * in the registry is an abstract anchor, so authors write `segment.filter`. */
18
+ export declare const SEGMENT_SUBTYPE_FILTER = "filter";
19
+ export declare const SEGMENT_SUBTYPES: readonly ["filter"];
20
+ export type SegmentSubType = (typeof SEGMENT_SUBTYPES)[number];
21
+ /** Dotted `Entity.field` reference(s) naming the grouped / aggregated column(s). */
22
+ export declare const REPORTING_ATTR_OF = "of";
23
+ /** Optional dotted to-one relationship path from the owning entity to the `@of` entity. */
24
+ export declare const REPORTING_ATTR_VIA = "via";
25
+ /** The grains a `dimension.time` supports. */
26
+ export declare const REPORTING_ATTR_GRAINS = "grains";
27
+ /** The aggregate function of a `measure.aggregate`. */
28
+ export declare const REPORTING_ATTR_AGG = "agg";
29
+ /** Count distinct values (legal only with `@agg: count`). */
30
+ export declare const REPORTING_ATTR_DISTINCT = "distinct";
31
+ /** Row scope (an attr.filter) on a `measure.aggregate` or `segment.filter`. */
32
+ export declare const REPORTING_ATTR_FILTER = "filter";
33
+ /** Name of a segment declared on the same entity. */
34
+ export declare const REPORTING_ATTR_SEGMENT = "segment";
35
+ /** `measure.ratio` operand names. */
36
+ export declare const REPORTING_ATTR_NUMERATOR = "numerator";
37
+ export declare const REPORTING_ATTR_DENOMINATOR = "denominator";
38
+ /** Integer a measure reads when it would otherwise be null (`measure.aggregate` / `measure.ratio`). */
39
+ export declare const REPORTING_ATTR_DEFAULT = "default";
40
+ /** Weeks start on Monday (ISO-8601) in every lowering. */
41
+ export declare const GRAIN_HOUR = "hour";
42
+ export declare const GRAIN_DAY = "day";
43
+ export declare const GRAIN_WEEK = "week";
44
+ export declare const GRAIN_MONTH = "month";
45
+ export declare const GRAIN_QUARTER = "quarter";
46
+ export declare const GRAIN_YEAR = "year";
47
+ export declare const TIME_GRAINS: readonly ["hour", "day", "week", "month", "quarter", "year"];
48
+ export type TimeGrain = (typeof TIME_GRAINS)[number];
49
+ export declare const AGG_COUNT = "count";
50
+ export declare const AGG_SUM = "sum";
51
+ export declare const AGG_AVG = "avg";
52
+ export declare const AGG_MIN = "min";
53
+ export declare const AGG_MAX = "max";
54
+ export declare const MEASURE_AGGS: readonly ["count", "sum", "avg", "min", "max", "any", "all"];
55
+ export type MeasureAgg = (typeof MEASURE_AGGS)[number];
56
+ /** Separator in an `object.report` `@dimensions` item: `name` or `name:grain`. */
57
+ export declare const REPORT_DIMENSION_GRAIN_SEPARATOR = ":";
58
+ /** The single key of a relative-date filter value: `{ now: "<ISO-8601 duration>" }`
59
+ * means "the current time plus that duration", evaluated when the view is queried.
60
+ * Legal only in the `@filter` of a `segment`, `measure.aggregate` or `object.report`. */
61
+ export declare const FILTER_RELATIVE_NOW = "now";
62
+ /** A signed ISO-8601 duration (`-P7D`, `P1Y2M`, `-PT12H`). The lookaheads refuse the
63
+ * degenerate `P` and `PT` forms (a designator with no component). */
64
+ export declare const ISO_DURATION_RE: RegExp;
65
+ //# sourceMappingURL=reporting-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting-constants.d.ts","sourceRoot":"","sources":["../../../src/core/reporting/reporting-constants.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAMtD,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,cAAc,CAAC;AACvD,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,SAAS,CAAC;AAC7C,eAAO,MAAM,kBAAkB,gCAAiE,CAAC;AACjG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,cAAc,CAAC;AACrD;gFACgF;AAChF,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,gBAAgB,iCAA8D,CAAC;AAC5F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D;gFACgF;AAChF,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,gBAAgB,qBAAoC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM/D,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,6DAA6D;AAC7D,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAChD,qCAAqC;AACrC,eAAO,MAAM,wBAAwB,cAAc,CAAC;AACpD,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AACxD,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAOhD,0DAA0D;AAC1D,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,SAAS,QAAQ,CAAC;AAC/B,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,WAAW,UAAU,CAAC;AACnC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,WAAW,8DAAuF,CAAC;AAChH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,OAAO,QAAQ,CAAC;AAG7B,eAAO,MAAM,YAAY,8DAA6E,CAAC;AACvG,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,kFAAkF;AAClF,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAMpD;;0FAE0F;AAC1F,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;sEACsE;AACtE,eAAO,MAAM,eAAe,QACgD,CAAC"}
@@ -0,0 +1,84 @@
1
+ // Reporting concern constants (FR-044) — type names, subtypes, attr keys and
2
+ // the closed sets the registry enforces through `allowedValues`.
3
+ //
4
+ // `dimension`, `measure` and `segment` are children of `object.entity` only
5
+ // (never root-level), and `object.report` (see object-constants.ts) references
6
+ // them by name. The type-name constants live in shared/base-types.ts beside
7
+ // every other base type and are re-exported here so a reporting consumer has
8
+ // one import site.
9
+ import { AGG_ALL, AGG_ANY } from "../../persistence/origin/origin-constants.js";
10
+ import { TYPE_DIMENSION, TYPE_MEASURE, TYPE_SEGMENT } from "../../shared/base-types.js";
11
+ export { TYPE_DIMENSION, TYPE_MEASURE, TYPE_SEGMENT };
12
+ // ---------------------------------------------------------------------------
13
+ // Subtypes
14
+ // ---------------------------------------------------------------------------
15
+ /** Groups by a column value as-is (no grain, no truncation). */
16
+ export const DIMENSION_SUBTYPE_ATTRIBUTE = "attribute";
17
+ /** Groups by a date/timestamp column truncated to a grain. */
18
+ export const DIMENSION_SUBTYPE_TIME = "time";
19
+ export const DIMENSION_SUBTYPES = [DIMENSION_SUBTYPE_ATTRIBUTE, DIMENSION_SUBTYPE_TIME];
20
+ /** One aggregate over the declaring entity's own rows. */
21
+ export const MEASURE_SUBTYPE_AGGREGATE = "aggregate";
22
+ /** A quotient of two `measure.aggregate` siblings, `numerator / NULLIF(denominator, 0)`.
23
+ * `measure.derived` is deliberately NOT registered: it waits for FR-037 R5. */
24
+ export const MEASURE_SUBTYPE_RATIO = "ratio";
25
+ export const MEASURE_SUBTYPES = [MEASURE_SUBTYPE_AGGREGATE, MEASURE_SUBTYPE_RATIO];
26
+ /** A named, reusable row filter. The only concrete segment subtype: every `*.base`
27
+ * in the registry is an abstract anchor, so authors write `segment.filter`. */
28
+ export const SEGMENT_SUBTYPE_FILTER = "filter";
29
+ export const SEGMENT_SUBTYPES = [SEGMENT_SUBTYPE_FILTER];
30
+ // ---------------------------------------------------------------------------
31
+ // Attrs (on dimension / measure / segment nodes)
32
+ // ---------------------------------------------------------------------------
33
+ /** Dotted `Entity.field` reference(s) naming the grouped / aggregated column(s). */
34
+ export const REPORTING_ATTR_OF = "of";
35
+ /** Optional dotted to-one relationship path from the owning entity to the `@of` entity. */
36
+ export const REPORTING_ATTR_VIA = "via";
37
+ /** The grains a `dimension.time` supports. */
38
+ export const REPORTING_ATTR_GRAINS = "grains";
39
+ /** The aggregate function of a `measure.aggregate`. */
40
+ export const REPORTING_ATTR_AGG = "agg";
41
+ /** Count distinct values (legal only with `@agg: count`). */
42
+ export const REPORTING_ATTR_DISTINCT = "distinct";
43
+ /** Row scope (an attr.filter) on a `measure.aggregate` or `segment.filter`. */
44
+ export const REPORTING_ATTR_FILTER = "filter";
45
+ /** Name of a segment declared on the same entity. */
46
+ export const REPORTING_ATTR_SEGMENT = "segment";
47
+ /** `measure.ratio` operand names. */
48
+ export const REPORTING_ATTR_NUMERATOR = "numerator";
49
+ export const REPORTING_ATTR_DENOMINATOR = "denominator";
50
+ /** Integer a measure reads when it would otherwise be null (`measure.aggregate` / `measure.ratio`). */
51
+ export const REPORTING_ATTR_DEFAULT = "default";
52
+ // ---------------------------------------------------------------------------
53
+ // Closed sets — mirrored by `allowedValues` in spec/metamodel/reporting.json.
54
+ // Order is part of the contract (it is the order the registry manifest records).
55
+ // ---------------------------------------------------------------------------
56
+ /** Weeks start on Monday (ISO-8601) in every lowering. */
57
+ export const GRAIN_HOUR = "hour";
58
+ export const GRAIN_DAY = "day";
59
+ export const GRAIN_WEEK = "week";
60
+ export const GRAIN_MONTH = "month";
61
+ export const GRAIN_QUARTER = "quarter";
62
+ export const GRAIN_YEAR = "year";
63
+ export const TIME_GRAINS = [GRAIN_HOUR, GRAIN_DAY, GRAIN_WEEK, GRAIN_MONTH, GRAIN_QUARTER, GRAIN_YEAR];
64
+ export const AGG_COUNT = "count";
65
+ export const AGG_SUM = "sum";
66
+ export const AGG_AVG = "avg";
67
+ export const AGG_MIN = "min";
68
+ export const AGG_MAX = "max";
69
+ // `any` / `all`: boolean OR / AND over a `field.boolean` (Postgres `bool_or` / `bool_and`); the
70
+ // measure is boolean. The names, and their constants, are `origin.aggregate`'s own.
71
+ export const MEASURE_AGGS = [AGG_COUNT, AGG_SUM, AGG_AVG, AGG_MIN, AGG_MAX, AGG_ANY, AGG_ALL];
72
+ /** Separator in an `object.report` `@dimensions` item: `name` or `name:grain`. */
73
+ export const REPORT_DIMENSION_GRAIN_SEPARATOR = ":";
74
+ // ---------------------------------------------------------------------------
75
+ // Relative-date filter values (spec §4 R4; rules F1/F2)
76
+ // ---------------------------------------------------------------------------
77
+ /** The single key of a relative-date filter value: `{ now: "<ISO-8601 duration>" }`
78
+ * means "the current time plus that duration", evaluated when the view is queried.
79
+ * Legal only in the `@filter` of a `segment`, `measure.aggregate` or `object.report`. */
80
+ export const FILTER_RELATIVE_NOW = "now";
81
+ /** A signed ISO-8601 duration (`-P7D`, `P1Y2M`, `-PT12H`). The lookaheads refuse the
82
+ * degenerate `P` and `PT` forms (a designator with no component). */
83
+ export const ISO_DURATION_RE = /^[+-]?P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?$/;
84
+ //# sourceMappingURL=reporting-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting-constants.js","sourceRoot":"","sources":["../../../src/core/reporting/reporting-constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ProviderDefinition } from "../../provider-data.js";
2
+ export declare const REPORTING_DEFINITION: ProviderDefinition;
3
+ //# sourceMappingURL=reporting-definition.embedded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporting-definition.embedded.d.ts","sourceRoot":"","sources":["../../../src/core/reporting/reporting-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,oBAAoB,EAAE,kBAuLlC,CAAC"}