@getodk/xforms-engine 0.3.0 → 0.4.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 (266) hide show
  1. package/dist/client/BaseNode.d.ts +1 -2
  2. package/dist/client/EngineConfig.d.ts +0 -1
  3. package/dist/client/GroupNode.d.ts +2 -3
  4. package/dist/client/ModelValueNode.d.ts +1 -2
  5. package/dist/client/NodeAppearances.d.ts +1 -2
  6. package/dist/client/NoteNode.d.ts +2 -3
  7. package/dist/client/RootNode.d.ts +2 -3
  8. package/dist/client/SelectNode.d.ts +2 -3
  9. package/dist/client/StringNode.d.ts +2 -3
  10. package/dist/client/SubtreeNode.d.ts +1 -2
  11. package/dist/client/TextRange.d.ts +3 -4
  12. package/dist/client/TriggerNode.d.ts +25 -0
  13. package/dist/client/constants.d.ts +0 -1
  14. package/dist/client/hierarchy.d.ts +7 -3
  15. package/dist/client/index.d.ts +0 -1
  16. package/dist/client/node-types.d.ts +2 -1
  17. package/dist/client/repeat/BaseRepeatRangeNode.d.ts +1 -2
  18. package/dist/client/repeat/RepeatInstanceNode.d.ts +2 -3
  19. package/dist/client/repeat/RepeatRangeControlledNode.d.ts +1 -2
  20. package/dist/client/repeat/RepeatRangeUncontrolledNode.d.ts +1 -2
  21. package/dist/client/unsupported/RangeNode.d.ts +9 -0
  22. package/dist/client/unsupported/RankNode.d.ts +9 -0
  23. package/dist/client/unsupported/UnsupportedControlNode.d.ts +32 -0
  24. package/dist/client/unsupported/UploadNode.d.ts +9 -0
  25. package/dist/client/validation.d.ts +0 -1
  26. package/dist/index.d.ts +6 -3
  27. package/dist/index.js +39029 -37441
  28. package/dist/index.js.map +1 -1
  29. package/dist/instance/Group.d.ts +0 -1
  30. package/dist/instance/ModelValue.d.ts +1 -2
  31. package/dist/instance/Note.d.ts +1 -2
  32. package/dist/instance/Root.d.ts +3 -4
  33. package/dist/instance/SelectField.d.ts +3 -4
  34. package/dist/instance/StringField.d.ts +2 -3
  35. package/dist/instance/Subtree.d.ts +0 -1
  36. package/dist/instance/TriggerControl.d.ts +40 -0
  37. package/dist/instance/abstract/DescendantNode.d.ts +4 -5
  38. package/dist/instance/abstract/InstanceNode.d.ts +1 -2
  39. package/dist/instance/abstract/UnsupportedControl.d.ts +46 -0
  40. package/dist/instance/children.d.ts +0 -1
  41. package/dist/instance/hierarchy.d.ts +9 -5
  42. package/dist/instance/index.d.ts +0 -1
  43. package/dist/instance/internal-api/EvaluationContext.d.ts +0 -1
  44. package/dist/instance/internal-api/InstanceConfig.d.ts +0 -1
  45. package/dist/instance/internal-api/SubscribableDependency.d.ts +0 -1
  46. package/dist/instance/internal-api/TranslationContext.d.ts +0 -1
  47. package/dist/instance/internal-api/ValidationContext.d.ts +11 -4
  48. package/dist/instance/internal-api/ValueContext.d.ts +3 -4
  49. package/dist/instance/repeat/BaseRepeatRange.d.ts +1 -2
  50. package/dist/instance/repeat/RepeatInstance.d.ts +0 -1
  51. package/dist/instance/repeat/RepeatRangeControlled.d.ts +1 -2
  52. package/dist/instance/repeat/RepeatRangeUncontrolled.d.ts +1 -2
  53. package/dist/instance/resource.d.ts +0 -1
  54. package/dist/instance/text/TextChunk.d.ts +0 -1
  55. package/dist/instance/text/TextRange.d.ts +0 -1
  56. package/dist/instance/unsupported/RangeControl.d.ts +4 -0
  57. package/dist/instance/unsupported/RankControl.d.ts +4 -0
  58. package/dist/instance/unsupported/UploadControl.d.ts +4 -0
  59. package/dist/lib/TokenListParser.d.ts +3 -3
  60. package/dist/lib/dom/query.d.ts +1 -2
  61. package/dist/lib/reactivity/createChildrenState.d.ts +0 -1
  62. package/dist/lib/reactivity/createComputedExpression.d.ts +1 -2
  63. package/dist/lib/reactivity/createNoteReadonlyThunk.d.ts +2 -3
  64. package/dist/lib/reactivity/createSelectItems.d.ts +0 -1
  65. package/dist/lib/reactivity/createValueState.d.ts +0 -1
  66. package/dist/lib/reactivity/materializeCurrentStateChildren.d.ts +0 -1
  67. package/dist/lib/reactivity/node-state/createClientState.d.ts +0 -1
  68. package/dist/lib/reactivity/node-state/createCurrentState.d.ts +0 -1
  69. package/dist/lib/reactivity/node-state/createEngineState.d.ts +0 -1
  70. package/dist/lib/reactivity/node-state/createSharedNodeState.d.ts +0 -1
  71. package/dist/lib/reactivity/node-state/createSpecifiedPropertyDescriptor.d.ts +0 -1
  72. package/dist/lib/reactivity/node-state/createSpecifiedState.d.ts +0 -1
  73. package/dist/lib/reactivity/node-state/representations.d.ts +0 -1
  74. package/dist/lib/reactivity/scope.d.ts +0 -1
  75. package/dist/lib/reactivity/text/createFieldHint.d.ts +1 -2
  76. package/dist/lib/reactivity/text/createNodeLabel.d.ts +1 -2
  77. package/dist/lib/reactivity/text/createNoteText.d.ts +1 -2
  78. package/dist/lib/reactivity/text/createTextRange.d.ts +0 -1
  79. package/dist/lib/reactivity/types.d.ts +0 -1
  80. package/dist/lib/reactivity/validation/createAggregatedViolations.d.ts +0 -1
  81. package/dist/lib/reactivity/validation/createValidation.d.ts +0 -1
  82. package/dist/{XFormDOM.d.ts → parse/XFormDOM.d.ts} +1 -2
  83. package/dist/{XFormDataType.d.ts → parse/XFormDataType.d.ts} +2 -4
  84. package/dist/{XFormDefinition.d.ts → parse/XFormDefinition.d.ts} +2 -3
  85. package/dist/{body → parse/body}/BodyDefinition.d.ts +15 -10
  86. package/dist/{body → parse/body}/BodyElementDefinition.d.ts +7 -7
  87. package/dist/{body → parse/body}/RepeatElementDefinition.d.ts +3 -4
  88. package/dist/{body → parse/body}/UnsupportedBodyElementDefinition.d.ts +0 -1
  89. package/dist/{body → parse/body}/appearance/inputAppearanceParser.d.ts +1 -2
  90. package/dist/{body → parse/body}/appearance/selectAppearanceParser.d.ts +1 -2
  91. package/dist/{body → parse/body}/appearance/structureElementAppearanceParser.d.ts +1 -2
  92. package/dist/parse/body/appearance/unknownAppearanceParser.d.ts +3 -0
  93. package/dist/{body → parse/body}/control/ControlDefinition.d.ts +3 -4
  94. package/dist/{body → parse/body}/control/InputDefinition.d.ts +1 -2
  95. package/dist/parse/body/control/RangeControlDefinition.d.ts +11 -0
  96. package/dist/parse/body/control/RankControlDefinition.d.ts +11 -0
  97. package/dist/parse/body/control/TriggerControlDefinition.d.ts +11 -0
  98. package/dist/parse/body/control/UploadControlDefinition.d.ts +11 -0
  99. package/dist/{body → parse/body}/control/select/ItemDefinition.d.ts +2 -3
  100. package/dist/{body → parse/body}/control/select/ItemsetDefinition.d.ts +4 -5
  101. package/dist/{body → parse/body}/control/select/ItemsetNodesetContext.d.ts +2 -3
  102. package/dist/{body → parse/body}/control/select/SelectDefinition.d.ts +3 -12
  103. package/dist/{body → parse/body}/group/BaseGroupDefinition.d.ts +3 -5
  104. package/dist/{body → parse/body}/group/LogicalGroupDefinition.d.ts +0 -1
  105. package/dist/{body → parse/body}/group/PresentationGroupDefinition.d.ts +1 -2
  106. package/dist/{body → parse/body}/group/StructuralGroupDefinition.d.ts +0 -1
  107. package/dist/{model/BindComputation.d.ts → parse/expression/BindComputationExpression.d.ts} +5 -6
  108. package/dist/{body/control/select → parse/expression}/ItemsetNodesetExpression.d.ts +2 -3
  109. package/dist/{body/control/select → parse/expression}/ItemsetValueExpression.d.ts +2 -3
  110. package/dist/parse/expression/RepeatCountControlExpression.d.ts +2 -3
  111. package/dist/parse/expression/TextLiteralExpression.d.ts +9 -0
  112. package/dist/parse/expression/TextOutputExpression.d.ts +7 -0
  113. package/dist/parse/expression/TextReferenceExpression.d.ts +7 -0
  114. package/dist/parse/expression/TextTranslationExpression.d.ts +8 -0
  115. package/dist/{expression → parse/expression/abstract}/DependencyContext.d.ts +0 -1
  116. package/dist/{expression → parse/expression/abstract}/DependentExpression.d.ts +2 -3
  117. package/dist/parse/expression/abstract/TextChunkExpression.d.ts +17 -0
  118. package/dist/parse/model/BindDefinition.d.ts +39 -0
  119. package/dist/{model → parse/model}/DescendentNodeDefinition.d.ts +0 -1
  120. package/dist/{model → parse/model}/LeafNodeDefinition.d.ts +1 -2
  121. package/dist/{model → parse/model}/ModelBindMap.d.ts +0 -1
  122. package/dist/{model → parse/model}/ModelDefinition.d.ts +1 -2
  123. package/dist/{model → parse/model}/NodeDefinition.d.ts +0 -1
  124. package/dist/parse/{NoteNodeDefinition.d.ts → model/NoteNodeDefinition.d.ts} +8 -9
  125. package/dist/{model → parse/model}/RepeatInstanceDefinition.d.ts +1 -2
  126. package/dist/{model → parse/model}/RepeatRangeDefinition.d.ts +2 -3
  127. package/dist/{model → parse/model}/RepeatTemplateDefinition.d.ts +2 -3
  128. package/dist/{model → parse/model}/RootDefinition.d.ts +2 -3
  129. package/dist/{model → parse/model}/SubtreeDefinition.d.ts +1 -2
  130. package/dist/parse/text/HintDefinition.d.ts +2 -3
  131. package/dist/parse/text/ItemLabelDefinition.d.ts +2 -3
  132. package/dist/parse/text/ItemsetLabelDefinition.d.ts +3 -4
  133. package/dist/parse/text/LabelDefinition.d.ts +5 -6
  134. package/dist/parse/text/MessageDefinition.d.ts +4 -5
  135. package/dist/parse/text/abstract/TextElementDefinition.d.ts +8 -9
  136. package/dist/parse/text/abstract/TextRangeDefinition.d.ts +5 -6
  137. package/dist/parse/xpath/path-resolution.d.ts +0 -1
  138. package/dist/parse/xpath/predicate-analysis.d.ts +0 -1
  139. package/dist/parse/xpath/reference-parsing.d.ts +0 -1
  140. package/dist/parse/xpath/semantic-analysis.d.ts +0 -1
  141. package/dist/parse/xpath/syntax-traversal.d.ts +0 -1
  142. package/dist/solid.js +6849 -5247
  143. package/dist/solid.js.map +1 -1
  144. package/package.json +11 -11
  145. package/src/client/BaseNode.ts +1 -1
  146. package/src/client/GroupNode.ts +2 -2
  147. package/src/client/ModelValueNode.ts +1 -1
  148. package/src/client/NodeAppearances.ts +1 -1
  149. package/src/client/NoteNode.ts +2 -2
  150. package/src/client/RootNode.ts +2 -2
  151. package/src/client/SelectNode.ts +2 -2
  152. package/src/client/StringNode.ts +2 -2
  153. package/src/client/SubtreeNode.ts +1 -1
  154. package/src/client/TextRange.ts +4 -5
  155. package/src/client/TriggerNode.ts +29 -0
  156. package/src/client/hierarchy.ts +13 -1
  157. package/src/client/node-types.ts +9 -1
  158. package/src/client/repeat/BaseRepeatRangeNode.ts +1 -1
  159. package/src/client/repeat/RepeatInstanceNode.ts +2 -2
  160. package/src/client/repeat/RepeatRangeControlledNode.ts +1 -1
  161. package/src/client/repeat/RepeatRangeUncontrolledNode.ts +1 -1
  162. package/src/client/unsupported/RangeNode.ts +14 -0
  163. package/src/client/unsupported/RankNode.ts +14 -0
  164. package/src/client/unsupported/UnsupportedControlNode.ts +40 -0
  165. package/src/client/unsupported/UploadNode.ts +14 -0
  166. package/src/index.ts +6 -1
  167. package/src/instance/ModelValue.ts +2 -2
  168. package/src/instance/Note.ts +2 -2
  169. package/src/instance/Root.ts +7 -3
  170. package/src/instance/SelectField.ts +6 -6
  171. package/src/instance/StringField.ts +3 -3
  172. package/src/instance/TriggerControl.ts +134 -0
  173. package/src/instance/abstract/DescendantNode.ts +4 -4
  174. package/src/instance/abstract/InstanceNode.ts +9 -1
  175. package/src/instance/abstract/UnsupportedControl.ts +151 -0
  176. package/src/instance/children.ts +75 -5
  177. package/src/instance/hierarchy.ts +22 -4
  178. package/src/instance/index.ts +1 -1
  179. package/src/instance/internal-api/EvaluationContext.ts +1 -1
  180. package/src/instance/internal-api/ValidationContext.ts +12 -3
  181. package/src/instance/internal-api/ValueContext.ts +3 -3
  182. package/src/instance/repeat/BaseRepeatRange.ts +1 -1
  183. package/src/instance/repeat/RepeatRangeControlled.ts +1 -1
  184. package/src/instance/repeat/RepeatRangeUncontrolled.ts +1 -1
  185. package/src/instance/unsupported/RangeControl.ts +5 -0
  186. package/src/instance/unsupported/RankControl.ts +5 -0
  187. package/src/instance/unsupported/UploadControl.ts +5 -0
  188. package/src/lib/TokenListParser.ts +11 -7
  189. package/src/lib/dom/query.ts +1 -1
  190. package/src/lib/reactivity/createComputedExpression.ts +3 -3
  191. package/src/lib/reactivity/createNoteReadonlyThunk.ts +2 -2
  192. package/src/lib/reactivity/createSelectItems.ts +3 -3
  193. package/src/lib/reactivity/createValueState.ts +3 -3
  194. package/src/lib/reactivity/node-state/createSpecifiedState.ts +1 -1
  195. package/src/lib/reactivity/text/createFieldHint.ts +1 -1
  196. package/src/lib/reactivity/text/createNodeLabel.ts +1 -1
  197. package/src/lib/reactivity/text/createNoteText.ts +1 -1
  198. package/src/lib/reactivity/text/createTextRange.ts +4 -4
  199. package/src/lib/reactivity/validation/createAggregatedViolations.ts +8 -3
  200. package/src/lib/reactivity/validation/createValidation.ts +1 -1
  201. package/src/{XFormDataType.ts → parse/XFormDataType.ts} +1 -3
  202. package/src/{XFormDefinition.ts → parse/XFormDefinition.ts} +2 -2
  203. package/src/{body → parse/body}/BodyDefinition.ts +44 -27
  204. package/src/{body → parse/body}/BodyElementDefinition.ts +12 -6
  205. package/src/{body → parse/body}/RepeatElementDefinition.ts +7 -5
  206. package/src/{body → parse/body}/appearance/inputAppearanceParser.ts +1 -1
  207. package/src/{body → parse/body}/appearance/selectAppearanceParser.ts +1 -1
  208. package/src/{body → parse/body}/appearance/structureElementAppearanceParser.ts +1 -1
  209. package/src/parse/body/appearance/unknownAppearanceParser.ts +5 -0
  210. package/src/{body → parse/body}/control/ControlDefinition.ts +4 -4
  211. package/src/parse/body/control/RangeControlDefinition.ts +26 -0
  212. package/src/parse/body/control/RankControlDefinition.ts +27 -0
  213. package/src/parse/body/control/TriggerControlDefinition.ts +26 -0
  214. package/src/parse/body/control/UploadControlDefinition.ts +26 -0
  215. package/src/{body → parse/body}/control/select/ItemDefinition.ts +2 -2
  216. package/src/{body → parse/body}/control/select/ItemsetDefinition.ts +5 -5
  217. package/src/{body → parse/body}/control/select/ItemsetNodesetContext.ts +2 -2
  218. package/src/{body → parse/body}/control/select/SelectDefinition.ts +3 -11
  219. package/src/{body → parse/body}/group/BaseGroupDefinition.ts +11 -22
  220. package/src/{body → parse/body}/group/PresentationGroupDefinition.ts +1 -1
  221. package/src/{model/BindComputation.ts → parse/expression/BindComputationExpression.ts} +8 -8
  222. package/src/{body/control/select → parse/expression}/ItemsetNodesetExpression.ts +2 -2
  223. package/src/{body/control/select → parse/expression}/ItemsetValueExpression.ts +2 -2
  224. package/src/parse/expression/RepeatCountControlExpression.ts +2 -2
  225. package/src/parse/expression/TextLiteralExpression.ts +19 -0
  226. package/src/parse/{text/OutputChunkDefinition.ts → expression/TextOutputExpression.ts} +4 -4
  227. package/src/parse/{text/ReferenceChunkDefinition.ts → expression/TextReferenceExpression.ts} +4 -4
  228. package/src/parse/{text/TranslationChunkDefinition.ts → expression/TextTranslationExpression.ts} +4 -4
  229. package/src/{expression → parse/expression/abstract}/DependentExpression.ts +4 -4
  230. package/src/parse/expression/abstract/TextChunkExpression.ts +38 -0
  231. package/src/{model → parse/model}/BindDefinition.ts +23 -22
  232. package/src/parse/{NoteNodeDefinition.ts → model/NoteNodeDefinition.ts} +9 -9
  233. package/src/{model → parse/model}/RepeatRangeDefinition.ts +1 -1
  234. package/src/{model → parse/model}/RootDefinition.ts +2 -2
  235. package/src/parse/text/HintDefinition.ts +2 -2
  236. package/src/parse/text/ItemLabelDefinition.ts +2 -2
  237. package/src/parse/text/ItemsetLabelDefinition.ts +7 -7
  238. package/src/parse/text/LabelDefinition.ts +5 -5
  239. package/src/parse/text/MessageDefinition.ts +7 -7
  240. package/src/parse/text/abstract/TextElementDefinition.ts +14 -14
  241. package/src/parse/text/abstract/TextRangeDefinition.ts +5 -5
  242. package/dist/model/BindDefinition.d.ts +0 -34
  243. package/dist/parse/text/OutputChunkDefinition.d.ts +0 -8
  244. package/dist/parse/text/ReferenceChunkDefinition.d.ts +0 -8
  245. package/dist/parse/text/StaticTextChunkDefinition.d.ts +0 -10
  246. package/dist/parse/text/TranslationChunkDefinition.d.ts +0 -9
  247. package/dist/parse/text/abstract/TextChunkDefinition.d.ts +0 -18
  248. package/src/parse/TODO.md +0 -3
  249. package/src/parse/text/StaticTextChunkDefinition.ts +0 -19
  250. package/src/parse/text/abstract/TextChunkDefinition.ts +0 -38
  251. package/dist/{model → parse/model}/BindElement.d.ts +0 -0
  252. package/src/{XFormDOM.ts → parse/XFormDOM.ts} +0 -0
  253. package/src/{body → parse/body}/UnsupportedBodyElementDefinition.ts +0 -0
  254. package/src/{body → parse/body}/control/InputDefinition.ts +1 -1
  255. /package/src/{body → parse/body}/group/LogicalGroupDefinition.ts +0 -0
  256. /package/src/{body → parse/body}/group/StructuralGroupDefinition.ts +0 -0
  257. /package/src/{expression → parse/expression/abstract}/DependencyContext.ts +0 -0
  258. /package/src/{model → parse/model}/BindElement.ts +0 -0
  259. /package/src/{model → parse/model}/DescendentNodeDefinition.ts +0 -0
  260. /package/src/{model → parse/model}/LeafNodeDefinition.ts +0 -0
  261. /package/src/{model → parse/model}/ModelBindMap.ts +0 -0
  262. /package/src/{model → parse/model}/ModelDefinition.ts +0 -0
  263. /package/src/{model → parse/model}/NodeDefinition.ts +0 -0
  264. /package/src/{model → parse/model}/RepeatInstanceDefinition.ts +0 -0
  265. /package/src/{model → parse/model}/RepeatTemplateDefinition.ts +0 -0
  266. /package/src/{model → parse/model}/SubtreeDefinition.ts +0 -0
@@ -1,7 +1,6 @@
1
1
  import { XFormsXPathEvaluator } from '@getodk/xpath';
2
- import { ConstantExpression, ConstantTruthyExpression } from '../parse/xpath/semantic-analysis.ts';
2
+ import { ConstantExpression, ConstantTruthyExpression } from '../../xpath/semantic-analysis.ts';
3
3
  import { DependencyContext } from './DependencyContext.ts';
4
-
5
4
  declare const evaluatorMethodsByResultType: {
6
5
  readonly boolean: "evaluateBoolean";
7
6
  readonly nodes: "evaluateNodes";
@@ -31,7 +30,7 @@ export interface ConstantDependentExpression<Type extends DependentExpressionRes
31
30
  export interface ConstantTruthyDependentExpression extends ConstantDependentExpression<'boolean'> {
32
31
  readonly expression: ConstantTruthyExpression;
33
32
  }
34
- export declare class DependentExpression<Type extends DependentExpressionResultType> {
33
+ export declare abstract class DependentExpression<Type extends DependentExpressionResultType> {
35
34
  readonly resultType: Type;
36
35
  readonly expression: string;
37
36
  readonly dependencyReferences: ReadonlySet<string>;
@@ -0,0 +1,17 @@
1
+ import { TextChunkSource } from '../../../client/TextRange.ts';
2
+ import { AnyTextRangeDefinition } from '../../text/abstract/TextRangeDefinition.ts';
3
+ import { TextLiteralExpression } from '../TextLiteralExpression.ts';
4
+ import { TextOutputExpression } from '../TextOutputExpression.ts';
5
+ import { TextReferenceExpression } from '../TextReferenceExpression.ts';
6
+ import { TextTranslationExpression } from '../TextTranslationExpression.ts';
7
+ import { DependentExpression } from './DependentExpression.ts';
8
+ interface TextChunkExpressionOptions {
9
+ readonly isTranslated?: true;
10
+ }
11
+ export declare abstract class TextChunkExpression<Source extends TextChunkSource> extends DependentExpression<'string'> {
12
+ abstract readonly source: Source;
13
+ readonly stringValue?: string;
14
+ constructor(context: AnyTextRangeDefinition, expression: string, options?: TextChunkExpressionOptions);
15
+ }
16
+ export type AnyTextChunkExpression = TextLiteralExpression | TextOutputExpression | TextReferenceExpression | TextTranslationExpression;
17
+ export {};
@@ -0,0 +1,39 @@
1
+ import { DependencyContext } from '../expression/abstract/DependencyContext.ts';
2
+ import { BindComputationExpression } from '../expression/BindComputationExpression.ts';
3
+ import { MessageDefinition } from '../text/MessageDefinition.ts';
4
+ import { XFormDataType } from '../XFormDataType.ts';
5
+ import { XFormDefinition } from '../XFormDefinition.ts';
6
+ import { BindElement } from './BindElement.ts';
7
+ import { ModelDefinition } from './ModelDefinition.ts';
8
+ export declare class BindDefinition extends DependencyContext {
9
+ readonly form: XFormDefinition;
10
+ protected readonly model: ModelDefinition;
11
+ readonly nodeset: string;
12
+ readonly bindElement: BindElement;
13
+ readonly bindType: string | null;
14
+ readonly dataType: XFormDataType;
15
+ readonly parentNodeset: string | null;
16
+ readonly calculate: BindComputationExpression<'calculate'> | null;
17
+ readonly readonly: BindComputationExpression<'readonly'>;
18
+ readonly relevant: BindComputationExpression<'relevant'>;
19
+ readonly required: BindComputationExpression<'required'>;
20
+ /**
21
+ * Diverges from
22
+ * {@link https://github.com/getodk/javarosa/blob/059321160e6f8dbb3e81d9add61d68dd35b13cc8/dag.md | JavaRosa's},
23
+ * which excludes `constraint` expressions. We compute `constraint`
24
+ * dependencies like the other <bind> computation expressions, but explicitly
25
+ * ignore self-references (this is currently handled by
26
+ * {@link BindComputationExpression}, via its {@link DependentExpression}
27
+ * super class).
28
+ */
29
+ readonly constraint: BindComputationExpression<'constraint'>;
30
+ readonly constraintMsg: MessageDefinition<'constraintMsg'> | null;
31
+ readonly requiredMsg: MessageDefinition<'requiredMsg'> | null;
32
+ readonly saveIncomplete: BindComputationExpression<'saveIncomplete'>;
33
+ protected _parentBind: BindDefinition | null | undefined;
34
+ get parentBind(): BindDefinition | null;
35
+ get reference(): string;
36
+ get parentReference(): string | null;
37
+ constructor(form: XFormDefinition, model: ModelDefinition, nodeset: string, bindElement: BindElement);
38
+ toJSON(): Omit<this, "reference" | "form" | "isTranslated" | "parentReference" | "toJSON" | "dependencyExpressions" | "registerDependentExpression" | "model" | "bindElement" | "parentBind">;
39
+ }
@@ -2,7 +2,6 @@ import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
3
  import { ModelNode, NodeChildren, NodeDefaultValue, NodeDefinition, NodeDefinitionType, NodeInstances, NodeParent } from './NodeDefinition.ts';
4
4
  import { RootDefinition } from './RootDefinition.ts';
5
-
6
5
  export type DescendentNodeType = Exclude<NodeDefinitionType, 'root'>;
7
6
  type DescendentNodeBodyElement = AnyBodyElementDefinition;
8
7
  export declare abstract class DescendentNodeDefinition<Type extends DescendentNodeType, BodyElement extends DescendentNodeBodyElement | null = DescendentNodeBodyElement | null> implements NodeDefinition<Type> {
@@ -2,7 +2,6 @@ import { AnyBodyElementDefinition, ControlElementDefinition } from '../body/Body
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
4
  import { NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
5
-
6
5
  export declare class LeafNodeDefinition extends DescendentNodeDefinition<'leaf-node', ControlElementDefinition | null> implements NodeDefinition<'leaf-node'> {
7
6
  readonly node: Element;
8
7
  readonly type = "leaf-node";
@@ -11,5 +10,5 @@ export declare class LeafNodeDefinition extends DescendentNodeDefinition<'leaf-n
11
10
  readonly instances: null;
12
11
  readonly defaultValue: string;
13
12
  constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, node: Element);
14
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
13
+ toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
15
14
  }
@@ -2,7 +2,6 @@ import { XFormDefinition } from '../XFormDefinition.ts';
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
3
  import { BindNodeset } from './BindElement.ts';
4
4
  import { ModelDefinition } from './ModelDefinition.ts';
5
-
6
5
  type TopologicalSortIndex = number;
7
6
  export type SortedNodesetIndexes = ReadonlyMap<BindNodeset, TopologicalSortIndex>;
8
7
  export declare class ModelBindMap extends Map<BindNodeset, BindDefinition> {
@@ -1,11 +1,10 @@
1
1
  import { XFormDefinition } from '../XFormDefinition.ts';
2
2
  import { ModelBindMap } from './ModelBindMap.ts';
3
3
  import { RootDefinition } from './RootDefinition.ts';
4
-
5
4
  export declare class ModelDefinition {
6
5
  readonly form: XFormDefinition;
7
6
  readonly binds: ModelBindMap;
8
7
  readonly root: RootDefinition;
9
8
  constructor(form: XFormDefinition);
10
- toJSON(): Omit<this, "toJSON" | "form">;
9
+ toJSON(): Omit<this, "form" | "toJSON">;
11
10
  }
@@ -7,7 +7,6 @@ import { AnyRepeatRangeDefinition } from './RepeatRangeDefinition.ts';
7
7
  import { RepeatTemplateDefinition } from './RepeatTemplateDefinition.ts';
8
8
  import { RootDefinition } from './RootDefinition.ts';
9
9
  import { SubtreeDefinition } from './SubtreeDefinition.ts';
10
-
11
10
  /**
12
11
  * Corresponds to the model/entry DOM root node, i.e.:
13
12
  *
@@ -1,14 +1,13 @@
1
1
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
2
  import { InputDefinition } from '../body/control/InputDefinition.ts';
3
- import { ConstantTruthyDependentExpression } from '../expression/DependentExpression.ts';
4
- import { BindComputation } from '../model/BindComputation.ts';
5
- import { BindDefinition } from '../model/BindDefinition.ts';
6
- import { LeafNodeDefinition } from '../model/LeafNodeDefinition.ts';
7
- import { ParentNodeDefinition } from '../model/NodeDefinition.ts';
8
- import { HintDefinition } from './text/HintDefinition.ts';
9
- import { LabelDefinition } from './text/LabelDefinition.ts';
10
-
11
- export type NoteReadonlyDefinition = BindComputation<'readonly'> & ConstantTruthyDependentExpression;
3
+ import { BindComputationExpression } from '../expression/BindComputationExpression.ts';
4
+ import { ConstantTruthyDependentExpression } from '../expression/abstract/DependentExpression.ts';
5
+ import { HintDefinition } from '../text/HintDefinition.ts';
6
+ import { LabelDefinition } from '../text/LabelDefinition.ts';
7
+ import { BindDefinition } from './BindDefinition.ts';
8
+ import { LeafNodeDefinition } from './LeafNodeDefinition.ts';
9
+ import { ParentNodeDefinition } from './NodeDefinition.ts';
10
+ export type NoteReadonlyDefinition = BindComputationExpression<'readonly'> & ConstantTruthyDependentExpression;
12
11
  export interface NoteBindDefinition extends BindDefinition {
13
12
  readonly readonly: NoteReadonlyDefinition;
14
13
  }
@@ -2,7 +2,6 @@ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
2
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
3
3
  import { ChildNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
4
4
  import { AnyRepeatRangeDefinition } from './RepeatRangeDefinition.ts';
5
-
6
5
  export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'repeat-instance', RepeatElementDefinition> implements NodeDefinition<'repeat-instance'> {
7
6
  readonly node: Element;
8
7
  readonly type = "repeat-instance";
@@ -11,5 +10,5 @@ export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'
11
10
  readonly instances: null;
12
11
  readonly defaultValue: null;
13
12
  constructor(range: AnyRepeatRangeDefinition, node: Element);
14
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
13
+ toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
15
14
  }
@@ -1,11 +1,10 @@
1
1
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
- import { RepeatCountControlExpression } from '../parse/expression/RepeatCountControlExpression.ts';
2
+ import { RepeatCountControlExpression } from '../expression/RepeatCountControlExpression.ts';
3
3
  import { BindDefinition } from './BindDefinition.ts';
4
4
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
5
5
  import { NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
6
6
  import { RepeatInstanceDefinition } from './RepeatInstanceDefinition.ts';
7
7
  import { RepeatTemplateDefinition } from './RepeatTemplateDefinition.ts';
8
-
9
8
  export interface ControlledRepeatRangeDefinition extends RepeatRangeDefinition {
10
9
  readonly count: RepeatCountControlExpression;
11
10
  }
@@ -26,5 +25,5 @@ export declare class RepeatRangeDefinition extends DescendentNodeDefinition<'rep
26
25
  private constructor();
27
26
  isControlled(): this is ControlledRepeatRangeDefinition;
28
27
  isUncontrolled(): this is UncontrolledRepeatRangeDefinition;
29
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement" | "isControlled" | "isUncontrolled">;
28
+ toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement" | "isControlled" | "isUncontrolled">;
30
29
  }
@@ -1,9 +1,8 @@
1
- import { JAVAROSA_NAMESPACE_URI } from '../../../common/src/constants/xmlns.ts';
1
+ import { JAVAROSA_NAMESPACE_URI } from '../../../../common/src/constants/xmlns.ts';
2
2
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
3
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
4
  import { ChildNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
5
5
  import { RepeatRangeDefinition } from './RepeatRangeDefinition.ts';
6
-
7
6
  interface ExplicitRepeatTemplateElement extends Element {
8
7
  getAttributeNS(namespaceURI: typeof JAVAROSA_NAMESPACE_URI, name: 'template'): string;
9
8
  getAttributeNS(namespaceURI: string | null, name: string): string | null;
@@ -24,6 +23,6 @@ export declare class RepeatTemplateDefinition extends DescendentNodeDefinition<'
24
23
  readonly instances: null;
25
24
  readonly defaultValue: null;
26
25
  protected constructor(range: RepeatRangeDefinition, templateNode: ExplicitRepeatTemplateElement);
27
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
26
+ toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
28
27
  }
29
28
  export {};
@@ -1,9 +1,8 @@
1
- import { XFormDefinition } from '../XFormDefinition.ts';
2
1
  import { BodyClassList } from '../body/BodyDefinition.ts';
2
+ import { XFormDefinition } from '../XFormDefinition.ts';
3
3
  import { BindDefinition } from './BindDefinition.ts';
4
4
  import { ModelDefinition } from './ModelDefinition.ts';
5
5
  import { ChildNodeDefinition, NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
6
-
7
6
  export declare class RootDefinition implements NodeDefinition<'root'> {
8
7
  protected readonly form: XFormDefinition;
9
8
  protected readonly model: ModelDefinition;
@@ -23,5 +22,5 @@ export declare class RootDefinition implements NodeDefinition<'root'> {
23
22
  readonly dependencyExpressions: ReadonlySet<string>;
24
23
  constructor(form: XFormDefinition, model: ModelDefinition, classes: BodyClassList);
25
24
  buildSubtree(parent: ParentNodeDefinition): readonly ChildNodeDefinition[];
26
- toJSON(): Omit<this, "model" | "toJSON" | "form" | "bind" | "root" | "bodyElement" | "buildSubtree">;
25
+ toJSON(): Omit<this, "form" | "toJSON" | "bind" | "model" | "root" | "bodyElement" | "buildSubtree">;
27
26
  }
@@ -2,7 +2,6 @@ import { AnyBodyElementDefinition, AnyGroupElementDefinition } from '../body/Bod
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
3
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
4
  import { ChildNodeDefinition, NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
5
-
6
5
  export declare class SubtreeDefinition extends DescendentNodeDefinition<'subtree', AnyGroupElementDefinition | null> implements NodeDefinition<'subtree'> {
7
6
  readonly node: Element;
8
7
  readonly type = "subtree";
@@ -11,5 +10,5 @@ export declare class SubtreeDefinition extends DescendentNodeDefinition<'subtree
11
10
  readonly instances: null;
12
11
  readonly defaultValue: null;
13
12
  constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, node: Element);
14
- toJSON(): Omit<this, "toJSON" | "parent" | "bind" | "root" | "bodyElement">;
13
+ toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
15
14
  }
@@ -1,7 +1,6 @@
1
- import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { AnyControlDefinition } from '../../body/control/ControlDefinition.ts';
1
+ import { XFormDefinition } from '../../parse/XFormDefinition.ts';
2
+ import { AnyControlDefinition } from '../body/control/ControlDefinition.ts';
3
3
  import { TextElementDefinition } from './abstract/TextElementDefinition.ts';
4
-
5
4
  export declare class HintDefinition extends TextElementDefinition<'hint'> {
6
5
  static forElement(form: XFormDefinition, owner: AnyControlDefinition): HintDefinition | null;
7
6
  readonly role = "hint";
@@ -1,7 +1,6 @@
1
- import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { ItemDefinition } from '../../body/control/select/ItemDefinition.ts';
1
+ import { XFormDefinition } from '../../parse/XFormDefinition.ts';
2
+ import { ItemDefinition } from '../body/control/select/ItemDefinition.ts';
3
3
  import { TextElementDefinition } from './abstract/TextElementDefinition.ts';
4
-
5
4
  export declare class ItemLabelDefinition extends TextElementDefinition<'item-label'> {
6
5
  static from(form: XFormDefinition, owner: ItemDefinition): ItemLabelDefinition | null;
7
6
  readonly role = "item-label";
@@ -1,9 +1,8 @@
1
- import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { ItemDefinition } from '../../body/control/select/ItemDefinition.ts';
3
- import { ItemsetDefinition } from '../../body/control/select/ItemsetDefinition.ts';
1
+ import { XFormDefinition } from '../../parse/XFormDefinition.ts';
2
+ import { ItemDefinition } from '../body/control/select/ItemDefinition.ts';
3
+ import { ItemsetDefinition } from '../body/control/select/ItemsetDefinition.ts';
4
4
  import { RefAttributeChunk } from './abstract/TextElementDefinition.ts';
5
5
  import { TextRangeDefinition } from './abstract/TextRangeDefinition.ts';
6
-
7
6
  export type ItemLabelOwner = ItemDefinition | ItemsetDefinition;
8
7
  export declare class ItemsetLabelDefinition extends TextRangeDefinition<'item-label'> {
9
8
  static from(form: XFormDefinition, owner: ItemsetDefinition): ItemsetLabelDefinition | null;
@@ -1,10 +1,9 @@
1
- import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { AnyGroupElementDefinition } from '../../body/BodyDefinition.ts';
3
- import { RepeatElementDefinition } from '../../body/RepeatElementDefinition.ts';
4
- import { AnyControlDefinition } from '../../body/control/ControlDefinition.ts';
5
- import { BaseGroupDefinition } from '../../body/group/BaseGroupDefinition.ts';
1
+ import { XFormDefinition } from '../../parse/XFormDefinition.ts';
2
+ import { AnyGroupElementDefinition } from '../../parse/body/BodyDefinition.ts';
3
+ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
4
+ import { AnyControlDefinition } from '../body/control/ControlDefinition.ts';
5
+ import { BaseGroupDefinition } from '../body/group/BaseGroupDefinition.ts';
6
6
  import { TextElementDefinition } from './abstract/TextElementDefinition.ts';
7
-
8
7
  export type LabelOwner = AnyControlDefinition | AnyGroupElementDefinition | RepeatElementDefinition;
9
8
  export declare class LabelDefinition extends TextElementDefinition<'label'> {
10
9
  static forControl(form: XFormDefinition, control: AnyControlDefinition): LabelDefinition | null;
@@ -1,10 +1,9 @@
1
- import { BindDefinition } from '../../model/BindDefinition.ts';
2
- import { StaticTextChunkDefinition } from './StaticTextChunkDefinition.ts';
3
- import { TranslationChunkDefinition } from './TranslationChunkDefinition.ts';
1
+ import { TextLiteralExpression } from '../expression/TextLiteralExpression.ts';
2
+ import { TextTranslationExpression } from '../expression/TextTranslationExpression.ts';
3
+ import { BindDefinition } from '../model/BindDefinition.ts';
4
4
  import { TextBindAttributeLocalName, TextSourceNode, TextRangeDefinition } from './abstract/TextRangeDefinition.ts';
5
-
6
5
  export type MessageSourceNode = TextSourceNode<TextBindAttributeLocalName>;
7
- type MessageChunk = StaticTextChunkDefinition | TranslationChunkDefinition;
6
+ type MessageChunk = TextLiteralExpression | TextTranslationExpression;
8
7
  export declare class MessageDefinition<Type extends TextBindAttributeLocalName> extends TextRangeDefinition<Type> {
9
8
  readonly role: Type;
10
9
  static from<Type extends TextBindAttributeLocalName>(bind: BindDefinition, type: Type): MessageDefinition<Type> | null;
@@ -1,18 +1,17 @@
1
- import { XFormDefinition } from '../../../XFormDefinition.ts';
2
- import { ItemDefinition } from '../../../body/control/select/ItemDefinition.ts';
3
1
  import { ElementTextRole } from '../../../client/TextRange.ts';
2
+ import { XFormDefinition } from '../../../parse/XFormDefinition.ts';
3
+ import { ItemDefinition } from '../../body/control/select/ItemDefinition.ts';
4
+ import { TextLiteralExpression } from '../../expression/TextLiteralExpression.ts';
5
+ import { TextOutputExpression } from '../../expression/TextOutputExpression.ts';
6
+ import { TextReferenceExpression } from '../../expression/TextReferenceExpression.ts';
7
+ import { TextTranslationExpression } from '../../expression/TextTranslationExpression.ts';
4
8
  import { HintDefinition } from '../HintDefinition.ts';
5
9
  import { ItemLabelDefinition } from '../ItemLabelDefinition.ts';
6
10
  import { ItemsetLabelDefinition } from '../ItemsetLabelDefinition.ts';
7
11
  import { LabelDefinition, LabelOwner } from '../LabelDefinition.ts';
8
- import { OutputChunkDefinition } from '../OutputChunkDefinition.ts';
9
- import { ReferenceChunkDefinition } from '../ReferenceChunkDefinition.ts';
10
- import { StaticTextChunkDefinition } from '../StaticTextChunkDefinition.ts';
11
- import { TranslationChunkDefinition } from '../TranslationChunkDefinition.ts';
12
12
  import { TextSourceNode, TextRangeDefinition } from './TextRangeDefinition.ts';
13
-
14
- export type RefAttributeChunk = ReferenceChunkDefinition | TranslationChunkDefinition;
15
- type TextElementChildChunk = OutputChunkDefinition | StaticTextChunkDefinition;
13
+ export type RefAttributeChunk = TextReferenceExpression | TextTranslationExpression;
14
+ type TextElementChildChunk = TextOutputExpression | TextLiteralExpression;
16
15
  type TextElementChunks = readonly [RefAttributeChunk] | readonly TextElementChildChunk[];
17
16
  type TextElementOwner = ItemDefinition | LabelOwner;
18
17
  export declare abstract class TextElementDefinition<Role extends ElementTextRole> extends TextRangeDefinition<Role> {
@@ -1,12 +1,11 @@
1
1
  import { LocalNamedElement } from '../../../../../common/types/dom.ts';
2
- import { XFormDefinition } from '../../../XFormDefinition.ts';
3
2
  import { TextRole } from '../../../client/TextRange.ts';
4
- import { DependencyContext } from '../../../expression/DependencyContext.ts';
5
- import { AnyDependentExpression } from '../../../expression/DependentExpression.ts';
3
+ import { XFormDefinition } from '../../../parse/XFormDefinition.ts';
4
+ import { DependencyContext } from '../../expression/abstract/DependencyContext.ts';
5
+ import { AnyDependentExpression } from '../../expression/abstract/DependentExpression.ts';
6
+ import { AnyTextChunkExpression } from '../../expression/abstract/TextChunkExpression.ts';
6
7
  import { AnyMessageDefinition } from '../MessageDefinition.ts';
7
- import { AnyTextChunkDefinition } from './TextChunkDefinition.ts';
8
8
  import { AnyTextElementDefinition } from './TextElementDefinition.ts';
9
-
10
9
  export type TextBindAttributeLocalName = 'constraintMsg' | 'requiredMsg';
11
10
  export type TextBodyElementLocalName = 'hint' | 'label';
12
11
  interface TextSourceNodes {
@@ -24,7 +23,7 @@ export declare abstract class TextRangeDefinition<Role extends TextRole> extends
24
23
  abstract readonly role: Role;
25
24
  readonly parentReference: string | null;
26
25
  readonly reference: string | null;
27
- abstract readonly chunks: readonly AnyTextChunkDefinition[];
26
+ abstract readonly chunks: readonly AnyTextChunkExpression[];
28
27
  get isTranslated(): boolean;
29
28
  set isTranslated(value: true);
30
29
  protected constructor(form: XFormDefinition, ownerContext: DependencyContext, sourceNode: TextSourceNode<Role>);
@@ -1,6 +1,5 @@
1
1
  import { AbsoluteRootLocationPathNode, FilterExprNode, RelativeStepSyntaxLiteralNode, StepNode } from '@getodk/xpath/static/grammar/SyntaxNode.js';
2
2
  import { PathExpressionNode } from './semantic-analysis.ts';
3
-
4
3
  type AbsolutePathHead =
5
4
  /** / - as first character in LocationPath */
6
5
  AbsoluteRootLocationPathNode
@@ -1,6 +1,5 @@
1
1
  import { PathNodeList } from './path-resolution.ts';
2
2
  import { PathExpressionNode } from './semantic-analysis.ts';
3
-
4
3
  /**
5
4
  * Represents a pair of:
6
5
  *
@@ -1,5 +1,4 @@
1
1
  import { PartiallyKnownString } from '../../../../common/types/string/PartiallyKnownString.ts';
2
-
3
2
  interface ReferenceParsingContext {
4
3
  readonly reference: string | null;
5
4
  readonly parent?: ReferenceParsingContext | null;
@@ -1,5 +1,4 @@
1
1
  import { AbsoluteLocationPathNode, AnySyntaxNode, FilterPathExprNode, RelativeLocationPathNode } from '@getodk/xpath/static/grammar/SyntaxNode.js';
2
-
3
2
  type LocalNameLiteral<LocalName extends string> = LocalName | `${string}:${LocalName}`;
4
3
  type LocalNamedFunctionCallLiteral<LocalName extends string> = `${LocalNameLiteral<LocalName>}(${string})`;
5
4
  export type TranslationExpression = LocalNamedFunctionCallLiteral<'itext'>;
@@ -1,7 +1,6 @@
1
1
  import { Identity } from '../../../../common/types/helpers.js';
2
2
  import { AnySyntaxNode, XPathNode } from '@getodk/xpath/static/grammar/SyntaxNode.js';
3
3
  import { AnySyntaxType } from '@getodk/xpath/static/grammar/type-names.js';
4
-
5
4
  export type TypedSyntaxNode<Type extends AnySyntaxType> = Extract<AnySyntaxNode, {
6
5
  readonly type: Type;
7
6
  }>;