@getodk/xforms-engine 0.3.0 → 0.5.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 (429) hide show
  1. package/dist/client/BaseNode.d.ts +15 -5
  2. package/dist/client/BaseValueNode.d.ts +32 -0
  3. package/dist/client/EngineConfig.d.ts +49 -49
  4. package/dist/client/GroupNode.d.ts +2 -3
  5. package/dist/client/InputNode.d.ts +53 -0
  6. package/dist/client/ModelValueNode.d.ts +13 -9
  7. package/dist/client/NodeAppearances.d.ts +1 -2
  8. package/dist/client/NoteNode.d.ts +3 -4
  9. package/dist/client/RootNode.d.ts +36 -10
  10. package/dist/client/SelectNode.d.ts +4 -5
  11. package/dist/client/SubtreeNode.d.ts +1 -2
  12. package/dist/client/TextRange.d.ts +3 -4
  13. package/dist/client/TriggerNode.d.ts +25 -0
  14. package/dist/client/ValueType.d.ts +3 -0
  15. package/dist/client/constants.d.ts +50 -1
  16. package/dist/client/hierarchy.d.ts +9 -5
  17. package/dist/client/identity.d.ts +14 -0
  18. package/dist/client/index.d.ts +0 -1
  19. package/dist/client/node-types.d.ts +3 -1
  20. package/dist/client/repeat/BaseRepeatRangeNode.d.ts +1 -2
  21. package/dist/client/repeat/RepeatInstanceNode.d.ts +2 -3
  22. package/dist/client/repeat/RepeatRangeControlledNode.d.ts +1 -2
  23. package/dist/client/repeat/RepeatRangeUncontrolledNode.d.ts +1 -2
  24. package/dist/client/resources.d.ts +93 -0
  25. package/dist/client/submission/SubmissionData.d.ts +7 -0
  26. package/dist/client/submission/SubmissionDefinition.d.ts +14 -0
  27. package/dist/client/submission/SubmissionInstanceFile.d.ts +6 -0
  28. package/dist/client/submission/SubmissionOptions.d.ts +23 -0
  29. package/dist/client/submission/SubmissionResult.d.ts +91 -0
  30. package/dist/client/submission/SubmissionState.d.ts +12 -0
  31. package/dist/client/unsupported/RangeNode.d.ts +9 -0
  32. package/dist/client/unsupported/RankNode.d.ts +9 -0
  33. package/dist/client/unsupported/UnsupportedControlNode.d.ts +32 -0
  34. package/dist/client/unsupported/UploadNode.d.ts +9 -0
  35. package/dist/client/validation.d.ts +2 -3
  36. package/dist/error/ErrorProductionDesignPendingError.d.ts +7 -0
  37. package/dist/error/ValueTypeInvariantError.d.ts +17 -0
  38. package/dist/error/XPathFunctionalityError.d.ts +14 -0
  39. package/dist/error/XPathFunctionalityNotSupportedError.d.ts +7 -0
  40. package/dist/error/XPathFunctionalityPendingError.d.ts +7 -0
  41. package/dist/index.d.ts +16 -4
  42. package/dist/index.js +8559 -4700
  43. package/dist/index.js.map +1 -1
  44. package/dist/instance/Group.d.ts +9 -5
  45. package/dist/instance/InputControl.d.ts +36 -0
  46. package/dist/instance/ModelValue.d.ts +16 -27
  47. package/dist/instance/Note.d.ts +11 -5
  48. package/dist/instance/PrimaryInstance.d.ts +84 -0
  49. package/dist/instance/Root.d.ts +31 -28
  50. package/dist/instance/SelectField.d.ts +13 -6
  51. package/dist/instance/Subtree.d.ts +10 -6
  52. package/dist/instance/TriggerControl.d.ts +47 -0
  53. package/dist/instance/abstract/DescendantNode.d.ts +33 -26
  54. package/dist/instance/abstract/InstanceNode.d.ts +50 -31
  55. package/dist/instance/abstract/UnsupportedControl.d.ts +53 -0
  56. package/dist/instance/abstract/ValueNode.d.ts +48 -0
  57. package/dist/instance/children.d.ts +0 -1
  58. package/dist/instance/hierarchy.d.ts +13 -8
  59. package/dist/instance/identity.d.ts +2 -7
  60. package/dist/instance/index.d.ts +0 -1
  61. package/dist/instance/internal-api/EvaluationContext.d.ts +53 -13
  62. package/dist/instance/internal-api/InstanceConfig.d.ts +8 -3
  63. package/dist/instance/internal-api/InstanceValueContext.d.ts +20 -0
  64. package/dist/instance/internal-api/PrimaryInstanceDocument.d.ts +36 -0
  65. package/dist/instance/internal-api/TranslationContext.d.ts +3 -3
  66. package/dist/instance/internal-api/ValidationContext.d.ts +12 -6
  67. package/dist/instance/internal-api/ValueContext.d.ts +5 -5
  68. package/dist/instance/internal-api/submission/ClientReactiveSubmittableInstance.d.ts +14 -0
  69. package/dist/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.d.ts +31 -0
  70. package/dist/instance/internal-api/submission/ClientReactiveSubmittableParentNode.d.ts +18 -0
  71. package/dist/instance/internal-api/submission/ClientReactiveSubmittableValueNode.d.ts +17 -0
  72. package/dist/instance/repeat/BaseRepeatRange.d.ts +40 -85
  73. package/dist/instance/repeat/RepeatInstance.d.ts +11 -30
  74. package/dist/instance/repeat/RepeatRangeControlled.d.ts +3 -4
  75. package/dist/instance/repeat/RepeatRangeUncontrolled.d.ts +3 -4
  76. package/dist/instance/resource.d.ts +1 -2
  77. package/dist/instance/text/TextChunk.d.ts +0 -1
  78. package/dist/instance/text/TextRange.d.ts +1 -2
  79. package/dist/instance/unsupported/RangeControl.d.ts +6 -0
  80. package/dist/instance/unsupported/RankControl.d.ts +6 -0
  81. package/dist/instance/unsupported/UploadControl.d.ts +6 -0
  82. package/dist/integration/xpath/EngineXPathEvaluator.d.ts +14 -0
  83. package/dist/integration/xpath/adapter/XFormsXPathNode.d.ts +71 -0
  84. package/dist/integration/xpath/adapter/engineDOMAdapter.d.ts +5 -0
  85. package/dist/integration/xpath/adapter/kind.d.ts +32 -0
  86. package/dist/integration/xpath/adapter/names.d.ts +16 -0
  87. package/dist/integration/xpath/adapter/traversal.d.ts +25 -0
  88. package/dist/integration/xpath/adapter/values.d.ts +2 -0
  89. package/dist/integration/xpath/static-dom/StaticAttribute.d.ts +19 -0
  90. package/dist/integration/xpath/static-dom/StaticDocument.d.ts +16 -0
  91. package/dist/integration/xpath/static-dom/StaticElement.d.ts +40 -0
  92. package/dist/integration/xpath/static-dom/StaticNamedNode.d.ts +17 -0
  93. package/dist/integration/xpath/static-dom/StaticNode.d.ts +33 -0
  94. package/dist/integration/xpath/static-dom/StaticText.d.ts +16 -0
  95. package/dist/lib/TokenListParser.d.ts +3 -3
  96. package/dist/lib/client-reactivity/submission/createInstanceSubmissionState.d.ts +3 -0
  97. package/dist/lib/client-reactivity/submission/createLeafNodeSubmissionState.d.ts +3 -0
  98. package/dist/lib/client-reactivity/submission/createNodeRangeSubmissionState.d.ts +4 -0
  99. package/dist/lib/client-reactivity/submission/createParentNodeSubmissionState.d.ts +4 -0
  100. package/dist/lib/client-reactivity/submission/createValueNodeSubmissionState.d.ts +3 -0
  101. package/dist/lib/client-reactivity/submission/prepareSubmission.d.ts +8 -0
  102. package/dist/lib/codecs/DecimalValueCodec.d.ts +6 -0
  103. package/dist/lib/codecs/IntValueCodec.d.ts +6 -0
  104. package/dist/lib/codecs/StringValueCodec.d.ts +4 -0
  105. package/dist/lib/codecs/ValueCodec.d.ts +30 -0
  106. package/dist/lib/codecs/ValueTypePlaceholderCodec.d.ts +12 -0
  107. package/dist/lib/codecs/getSharedValueCodec.d.ts +47 -0
  108. package/dist/lib/dom/query.d.ts +4 -2
  109. package/dist/lib/reactivity/createChildrenState.d.ts +7 -6
  110. package/dist/lib/reactivity/createComputedExpression.d.ts +19 -7
  111. package/dist/lib/reactivity/createInstanceValueState.d.ts +40 -0
  112. package/dist/lib/reactivity/createNoteReadonlyThunk.d.ts +2 -3
  113. package/dist/lib/reactivity/createSelectItems.d.ts +0 -1
  114. package/dist/lib/reactivity/createTranslationState.d.ts +19 -0
  115. package/dist/lib/reactivity/createValueState.d.ts +6 -11
  116. package/dist/lib/reactivity/materializeCurrentStateChildren.d.ts +4 -5
  117. package/dist/lib/reactivity/node-state/createClientState.d.ts +0 -1
  118. package/dist/lib/reactivity/node-state/createCurrentState.d.ts +0 -1
  119. package/dist/lib/reactivity/node-state/createEngineState.d.ts +0 -1
  120. package/dist/lib/reactivity/node-state/createSharedNodeState.d.ts +0 -1
  121. package/dist/lib/reactivity/node-state/createSpecifiedPropertyDescriptor.d.ts +0 -1
  122. package/dist/lib/reactivity/node-state/createSpecifiedState.d.ts +0 -1
  123. package/dist/lib/reactivity/node-state/representations.d.ts +0 -1
  124. package/dist/lib/reactivity/scope.d.ts +0 -1
  125. package/dist/lib/reactivity/text/createFieldHint.d.ts +1 -2
  126. package/dist/lib/reactivity/text/createNodeLabel.d.ts +1 -2
  127. package/dist/lib/reactivity/text/createNoteText.d.ts +1 -2
  128. package/dist/lib/reactivity/text/createTextRange.d.ts +0 -1
  129. package/dist/lib/reactivity/types.d.ts +0 -1
  130. package/dist/lib/reactivity/validation/createAggregatedViolations.d.ts +0 -1
  131. package/dist/lib/reactivity/validation/createValidation.d.ts +0 -1
  132. package/dist/lib/xml-serialization.d.ts +41 -0
  133. package/dist/parse/XFormDOM.d.ts +42 -0
  134. package/dist/{XFormDefinition.d.ts → parse/XFormDefinition.d.ts} +3 -5
  135. package/dist/parse/attachments/FormAttachmentResource.d.ts +27 -0
  136. package/dist/{body → parse/body}/BodyDefinition.d.ts +16 -11
  137. package/dist/{body → parse/body}/BodyElementDefinition.d.ts +7 -7
  138. package/dist/{body → parse/body}/RepeatElementDefinition.d.ts +3 -4
  139. package/dist/{body → parse/body}/UnsupportedBodyElementDefinition.d.ts +0 -1
  140. package/dist/parse/body/appearance/inputAppearanceParser.d.ts +3 -0
  141. package/dist/{body → parse/body}/appearance/selectAppearanceParser.d.ts +1 -2
  142. package/dist/{body → parse/body}/appearance/structureElementAppearanceParser.d.ts +1 -2
  143. package/dist/parse/body/appearance/unknownAppearanceParser.d.ts +3 -0
  144. package/dist/{body → parse/body}/control/ControlDefinition.d.ts +3 -4
  145. package/dist/{body/control/InputDefinition.d.ts → parse/body/control/InputControlDefinition.d.ts} +2 -3
  146. package/dist/parse/body/control/RangeControlDefinition.d.ts +11 -0
  147. package/dist/parse/body/control/RankControlDefinition.d.ts +11 -0
  148. package/dist/parse/body/control/TriggerControlDefinition.d.ts +11 -0
  149. package/dist/parse/body/control/UploadControlDefinition.d.ts +11 -0
  150. package/dist/{body → parse/body}/control/select/ItemDefinition.d.ts +2 -3
  151. package/dist/{body → parse/body}/control/select/ItemsetDefinition.d.ts +4 -5
  152. package/dist/{body → parse/body}/control/select/ItemsetNodesetContext.d.ts +1 -4
  153. package/dist/{body → parse/body}/control/select/SelectDefinition.d.ts +3 -12
  154. package/dist/{body → parse/body}/group/BaseGroupDefinition.d.ts +3 -5
  155. package/dist/{body → parse/body}/group/LogicalGroupDefinition.d.ts +0 -1
  156. package/dist/{body → parse/body}/group/PresentationGroupDefinition.d.ts +1 -2
  157. package/dist/{body → parse/body}/group/StructuralGroupDefinition.d.ts +0 -1
  158. package/dist/{model/BindComputation.d.ts → parse/expression/BindComputationExpression.d.ts} +5 -6
  159. package/dist/{body/control/select → parse/expression}/ItemsetNodesetExpression.d.ts +2 -3
  160. package/dist/{body/control/select → parse/expression}/ItemsetValueExpression.d.ts +2 -3
  161. package/dist/parse/expression/RepeatCountControlExpression.d.ts +2 -3
  162. package/dist/parse/expression/TextLiteralExpression.d.ts +9 -0
  163. package/dist/parse/expression/TextOutputExpression.d.ts +7 -0
  164. package/dist/parse/expression/TextReferenceExpression.d.ts +7 -0
  165. package/dist/parse/expression/TextTranslationExpression.d.ts +8 -0
  166. package/dist/parse/expression/abstract/DependencyContext.d.ts +7 -0
  167. package/dist/{expression → parse/expression/abstract}/DependentExpression.d.ts +4 -6
  168. package/dist/parse/expression/abstract/TextChunkExpression.d.ts +17 -0
  169. package/dist/parse/model/BindDefinition.d.ts +38 -0
  170. package/dist/parse/model/BindTypeDefinition.d.ts +20 -0
  171. package/dist/{model → parse/model}/DescendentNodeDefinition.d.ts +0 -2
  172. package/dist/parse/model/FormSubmissionDefinition.d.ts +8 -0
  173. package/dist/parse/model/ItextTranslation/ItextTranslationDefinition.d.ts +4 -0
  174. package/dist/parse/model/ItextTranslation/ItextTranslationRootDefinition.d.ts +8 -0
  175. package/dist/parse/model/ItextTranslation/ItextTranslationsDefinition.d.ts +8 -0
  176. package/dist/{model → parse/model}/LeafNodeDefinition.d.ts +4 -3
  177. package/dist/{model → parse/model}/ModelBindMap.d.ts +1 -2
  178. package/dist/{model → parse/model}/ModelDefinition.d.ts +3 -2
  179. package/dist/{model → parse/model}/NodeDefinition.d.ts +0 -2
  180. package/dist/parse/{NoteNodeDefinition.d.ts → model/NoteNodeDefinition.d.ts} +12 -13
  181. package/dist/{model → parse/model}/RepeatInstanceDefinition.d.ts +1 -2
  182. package/dist/{model → parse/model}/RepeatRangeDefinition.d.ts +2 -3
  183. package/dist/{model → parse/model}/RepeatTemplateDefinition.d.ts +2 -3
  184. package/dist/{model → parse/model}/RootDefinition.d.ts +5 -5
  185. package/dist/parse/model/SecondaryInstance/SecondaryInstanceDefinition.d.ts +4 -0
  186. package/dist/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.d.ts +7 -0
  187. package/dist/parse/model/SecondaryInstance/SecondaryInstancesDefinition.d.ts +13 -0
  188. package/dist/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.d.ts +14 -0
  189. package/dist/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.d.ts +22 -0
  190. package/dist/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.d.ts +23 -0
  191. package/dist/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceSource.d.ts +9 -0
  192. package/dist/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.d.ts +5 -0
  193. package/dist/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.d.ts +7 -0
  194. package/dist/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.d.ts +13 -0
  195. package/dist/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.d.ts +12 -0
  196. package/dist/{model → parse/model}/SubtreeDefinition.d.ts +1 -2
  197. package/dist/parse/shared/parseStaticDocumentFromDOMSubtree.d.ts +24 -0
  198. package/dist/parse/text/HintDefinition.d.ts +2 -3
  199. package/dist/parse/text/ItemLabelDefinition.d.ts +2 -3
  200. package/dist/parse/text/ItemsetLabelDefinition.d.ts +3 -4
  201. package/dist/parse/text/LabelDefinition.d.ts +5 -6
  202. package/dist/parse/text/MessageDefinition.d.ts +4 -5
  203. package/dist/parse/text/abstract/TextElementDefinition.d.ts +8 -9
  204. package/dist/parse/text/abstract/TextRangeDefinition.d.ts +4 -7
  205. package/dist/parse/xpath/path-resolution.d.ts +0 -1
  206. package/dist/parse/xpath/predicate-analysis.d.ts +0 -1
  207. package/dist/parse/xpath/reference-parsing.d.ts +0 -1
  208. package/dist/parse/xpath/semantic-analysis.d.ts +5 -1
  209. package/dist/parse/xpath/syntax-traversal.d.ts +0 -1
  210. package/dist/solid.js +8398 -4543
  211. package/dist/solid.js.map +1 -1
  212. package/package.json +14 -12
  213. package/src/client/BaseNode.ts +17 -7
  214. package/src/client/BaseValueNode.ts +35 -0
  215. package/src/client/EngineConfig.ts +52 -51
  216. package/src/client/GroupNode.ts +2 -2
  217. package/src/client/InputNode.ts +77 -0
  218. package/src/client/ModelValueNode.ts +31 -8
  219. package/src/client/NodeAppearances.ts +1 -1
  220. package/src/client/NoteNode.ts +3 -3
  221. package/src/client/RootNode.ts +39 -9
  222. package/src/client/SelectNode.ts +5 -5
  223. package/src/client/SubtreeNode.ts +1 -1
  224. package/src/client/TextRange.ts +4 -5
  225. package/src/client/TriggerNode.ts +29 -0
  226. package/src/client/ValueType.ts +4 -0
  227. package/src/client/constants.ts +67 -0
  228. package/src/client/hierarchy.ts +16 -4
  229. package/src/client/identity.ts +16 -0
  230. package/src/client/node-types.ts +19 -5
  231. package/src/client/repeat/BaseRepeatRangeNode.ts +1 -1
  232. package/src/client/repeat/RepeatInstanceNode.ts +2 -2
  233. package/src/client/repeat/RepeatRangeControlledNode.ts +1 -1
  234. package/src/client/repeat/RepeatRangeUncontrolledNode.ts +1 -1
  235. package/src/client/resources.ts +118 -0
  236. package/src/client/submission/SubmissionData.ts +12 -0
  237. package/src/client/submission/SubmissionDefinition.ts +16 -0
  238. package/src/client/submission/SubmissionInstanceFile.ts +9 -0
  239. package/src/client/submission/SubmissionOptions.ts +28 -0
  240. package/src/client/submission/SubmissionResult.ts +124 -0
  241. package/src/client/submission/SubmissionState.ts +14 -0
  242. package/src/client/unsupported/RangeNode.ts +14 -0
  243. package/src/client/unsupported/RankNode.ts +14 -0
  244. package/src/client/unsupported/UnsupportedControlNode.ts +40 -0
  245. package/src/client/unsupported/UploadNode.ts +14 -0
  246. package/src/client/validation.ts +2 -2
  247. package/src/error/ErrorProductionDesignPendingError.ts +6 -0
  248. package/src/error/ValueTypeInvariantError.ts +22 -0
  249. package/src/error/XPathFunctionalityError.ts +26 -0
  250. package/src/error/XPathFunctionalityNotSupportedError.ts +18 -0
  251. package/src/error/XPathFunctionalityPendingError.ts +18 -0
  252. package/src/index.ts +16 -2
  253. package/src/instance/Group.ts +17 -5
  254. package/src/instance/InputControl.ts +119 -0
  255. package/src/instance/ModelValue.ts +47 -54
  256. package/src/instance/Note.ts +26 -10
  257. package/src/instance/PrimaryInstance.ts +244 -0
  258. package/src/instance/Root.ts +64 -132
  259. package/src/instance/SelectField.ts +62 -25
  260. package/src/instance/Subtree.ts +19 -7
  261. package/src/instance/{StringField.ts → TriggerControl.ts} +61 -30
  262. package/src/instance/abstract/DescendantNode.ts +92 -47
  263. package/src/instance/abstract/InstanceNode.ts +104 -98
  264. package/src/instance/abstract/UnsupportedControl.ts +174 -0
  265. package/src/instance/abstract/ValueNode.ts +127 -0
  266. package/src/instance/children.ts +83 -14
  267. package/src/instance/hierarchy.ts +36 -14
  268. package/src/instance/identity.ts +3 -9
  269. package/src/instance/index.ts +26 -8
  270. package/src/instance/internal-api/EvaluationContext.ts +61 -14
  271. package/src/instance/internal-api/InstanceConfig.ts +9 -2
  272. package/src/instance/internal-api/InstanceValueContext.ts +24 -0
  273. package/src/instance/internal-api/PrimaryInstanceDocument.ts +53 -0
  274. package/src/instance/internal-api/TranslationContext.ts +3 -2
  275. package/src/instance/internal-api/ValidationContext.ts +13 -5
  276. package/src/instance/internal-api/ValueContext.ts +5 -4
  277. package/src/instance/internal-api/submission/ClientReactiveSubmittableInstance.ts +20 -0
  278. package/src/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.ts +42 -0
  279. package/src/instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts +25 -0
  280. package/src/instance/internal-api/submission/ClientReactiveSubmittableValueNode.ts +23 -0
  281. package/src/instance/repeat/BaseRepeatRange.ts +51 -132
  282. package/src/instance/repeat/RepeatInstance.ts +20 -46
  283. package/src/instance/repeat/RepeatRangeControlled.ts +6 -6
  284. package/src/instance/repeat/RepeatRangeUncontrolled.ts +3 -5
  285. package/src/instance/resource.ts +1 -1
  286. package/src/instance/text/TextChunk.ts +1 -1
  287. package/src/instance/unsupported/RangeControl.ts +9 -0
  288. package/src/instance/unsupported/RankControl.ts +9 -0
  289. package/src/instance/unsupported/UploadControl.ts +9 -0
  290. package/src/integration/xpath/EngineXPathEvaluator.ts +22 -0
  291. package/src/integration/xpath/adapter/XFormsXPathNode.ts +126 -0
  292. package/src/integration/xpath/adapter/engineDOMAdapter.ts +57 -0
  293. package/src/integration/xpath/adapter/kind.ts +114 -0
  294. package/src/integration/xpath/adapter/names.ts +99 -0
  295. package/src/integration/xpath/adapter/traversal.ts +228 -0
  296. package/src/integration/xpath/adapter/values.ts +5 -0
  297. package/src/integration/xpath/static-dom/StaticAttribute.ts +33 -0
  298. package/src/integration/xpath/static-dom/StaticDocument.ts +38 -0
  299. package/src/integration/xpath/static-dom/StaticElement.ts +106 -0
  300. package/src/integration/xpath/static-dom/StaticNamedNode.ts +45 -0
  301. package/src/integration/xpath/static-dom/StaticNode.ts +68 -0
  302. package/src/integration/xpath/static-dom/StaticText.ts +28 -0
  303. package/src/lib/TokenListParser.ts +11 -7
  304. package/src/lib/client-reactivity/README.md +0 -0
  305. package/src/lib/client-reactivity/submission/createInstanceSubmissionState.ts +12 -0
  306. package/src/lib/client-reactivity/submission/createLeafNodeSubmissionState.ts +20 -0
  307. package/src/lib/client-reactivity/submission/createNodeRangeSubmissionState.ts +17 -0
  308. package/src/lib/client-reactivity/submission/createParentNodeSubmissionState.ts +22 -0
  309. package/src/lib/client-reactivity/submission/createValueNodeSubmissionState.ts +21 -0
  310. package/src/lib/client-reactivity/submission/prepareSubmission.ts +172 -0
  311. package/src/lib/codecs/DecimalValueCodec.ts +46 -0
  312. package/src/lib/codecs/IntValueCodec.ts +100 -0
  313. package/src/lib/codecs/StringValueCodec.ts +11 -0
  314. package/src/lib/codecs/ValueCodec.ts +106 -0
  315. package/src/lib/codecs/ValueTypePlaceholderCodec.ts +19 -0
  316. package/src/lib/codecs/getSharedValueCodec.ts +77 -0
  317. package/src/lib/dom/query.ts +8 -1
  318. package/src/lib/reactivity/createChildrenState.ts +8 -6
  319. package/src/lib/reactivity/createComputedExpression.ts +59 -36
  320. package/src/lib/reactivity/createInstanceValueState.ts +166 -0
  321. package/src/lib/reactivity/createNoteReadonlyThunk.ts +12 -7
  322. package/src/lib/reactivity/createSelectItems.ts +23 -23
  323. package/src/lib/reactivity/createTranslationState.ts +61 -0
  324. package/src/lib/reactivity/createValueState.ts +64 -122
  325. package/src/lib/reactivity/materializeCurrentStateChildren.ts +7 -7
  326. package/src/lib/reactivity/node-state/createSpecifiedState.ts +1 -1
  327. package/src/lib/reactivity/text/createFieldHint.ts +1 -1
  328. package/src/lib/reactivity/text/createNodeLabel.ts +1 -1
  329. package/src/lib/reactivity/text/createNoteText.ts +1 -1
  330. package/src/lib/reactivity/text/createTextRange.ts +8 -7
  331. package/src/lib/reactivity/validation/createAggregatedViolations.ts +9 -4
  332. package/src/lib/reactivity/validation/createValidation.ts +2 -3
  333. package/src/lib/xml-serialization.ts +96 -0
  334. package/src/{XFormDOM.ts → parse/XFormDOM.ts} +110 -75
  335. package/src/{XFormDefinition.ts → parse/XFormDefinition.ts} +3 -8
  336. package/src/parse/attachments/FormAttachmentResource.ts +40 -0
  337. package/src/{body → parse/body}/BodyDefinition.ts +46 -29
  338. package/src/{body → parse/body}/BodyElementDefinition.ts +12 -6
  339. package/src/{body → parse/body}/RepeatElementDefinition.ts +7 -5
  340. package/src/{body → parse/body}/appearance/inputAppearanceParser.ts +2 -2
  341. package/src/{body → parse/body}/appearance/selectAppearanceParser.ts +1 -1
  342. package/src/{body → parse/body}/appearance/structureElementAppearanceParser.ts +1 -1
  343. package/src/parse/body/appearance/unknownAppearanceParser.ts +5 -0
  344. package/src/{body → parse/body}/control/ControlDefinition.ts +4 -4
  345. package/src/{body/control/InputDefinition.ts → parse/body/control/InputControlDefinition.ts} +3 -5
  346. package/src/parse/body/control/RangeControlDefinition.ts +26 -0
  347. package/src/parse/body/control/RankControlDefinition.ts +27 -0
  348. package/src/parse/body/control/TriggerControlDefinition.ts +26 -0
  349. package/src/parse/body/control/UploadControlDefinition.ts +26 -0
  350. package/src/{body → parse/body}/control/select/ItemDefinition.ts +2 -2
  351. package/src/{body → parse/body}/control/select/ItemsetDefinition.ts +5 -5
  352. package/src/{body → parse/body}/control/select/ItemsetNodesetContext.ts +1 -6
  353. package/src/{body → parse/body}/control/select/SelectDefinition.ts +3 -11
  354. package/src/{body → parse/body}/group/BaseGroupDefinition.ts +11 -22
  355. package/src/{body → parse/body}/group/PresentationGroupDefinition.ts +1 -1
  356. package/src/{model/BindComputation.ts → parse/expression/BindComputationExpression.ts} +8 -8
  357. package/src/{body/control/select → parse/expression}/ItemsetNodesetExpression.ts +2 -2
  358. package/src/{body/control/select → parse/expression}/ItemsetValueExpression.ts +2 -2
  359. package/src/parse/expression/RepeatCountControlExpression.ts +2 -2
  360. package/src/parse/expression/TextLiteralExpression.ts +19 -0
  361. package/src/parse/{text/OutputChunkDefinition.ts → expression/TextOutputExpression.ts} +4 -4
  362. package/src/parse/{text/ReferenceChunkDefinition.ts → expression/TextReferenceExpression.ts} +4 -4
  363. package/src/parse/{text/TranslationChunkDefinition.ts → expression/TextTranslationExpression.ts} +4 -4
  364. package/src/{expression → parse/expression/abstract}/DependencyContext.ts +0 -26
  365. package/src/{expression → parse/expression/abstract}/DependentExpression.ts +5 -16
  366. package/src/parse/expression/abstract/TextChunkExpression.ts +38 -0
  367. package/src/parse/model/BindDefinition.ts +104 -0
  368. package/src/parse/model/BindTypeDefinition.ts +175 -0
  369. package/src/{model → parse/model}/DescendentNodeDefinition.ts +0 -6
  370. package/src/parse/model/FormSubmissionDefinition.ts +44 -0
  371. package/src/parse/model/ItextTranslation/ItextTranslationDefinition.ts +4 -0
  372. package/src/parse/model/ItextTranslation/ItextTranslationRootDefinition.ts +41 -0
  373. package/src/parse/model/ItextTranslation/ItextTranslationsDefinition.ts +31 -0
  374. package/src/{model → parse/model}/LeafNodeDefinition.ts +4 -1
  375. package/src/{model → parse/model}/ModelBindMap.ts +6 -8
  376. package/src/parse/model/ModelDefinition.ts +24 -0
  377. package/src/{model → parse/model}/NodeDefinition.ts +0 -3
  378. package/src/parse/{NoteNodeDefinition.ts → model/NoteNodeDefinition.ts} +12 -12
  379. package/src/{model → parse/model}/RepeatRangeDefinition.ts +1 -1
  380. package/src/{model → parse/model}/RootDefinition.ts +4 -3
  381. package/src/parse/model/SecondaryInstance/SecondaryInstanceDefinition.ts +4 -0
  382. package/src/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.ts +12 -0
  383. package/src/parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts +102 -0
  384. package/src/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.ts +40 -0
  385. package/src/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.ts +288 -0
  386. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.ts +222 -0
  387. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceSource.ts +22 -0
  388. package/src/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.ts +414 -0
  389. package/src/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.ts +19 -0
  390. package/src/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.ts +29 -0
  391. package/src/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.ts +32 -0
  392. package/src/parse/shared/parseStaticDocumentFromDOMSubtree.ts +149 -0
  393. package/src/parse/text/HintDefinition.ts +2 -2
  394. package/src/parse/text/ItemLabelDefinition.ts +2 -2
  395. package/src/parse/text/ItemsetLabelDefinition.ts +7 -7
  396. package/src/parse/text/LabelDefinition.ts +5 -5
  397. package/src/parse/text/MessageDefinition.ts +7 -7
  398. package/src/parse/text/abstract/TextElementDefinition.ts +14 -14
  399. package/src/parse/text/abstract/TextRangeDefinition.ts +4 -10
  400. package/src/parse/xpath/semantic-analysis.ts +29 -0
  401. package/dist/XFormDOM.d.ts +0 -32
  402. package/dist/XFormDataType.d.ts +0 -27
  403. package/dist/body/appearance/inputAppearanceParser.d.ts +0 -4
  404. package/dist/client/StringNode.d.ts +0 -47
  405. package/dist/expression/DependencyContext.d.ts +0 -13
  406. package/dist/instance/StringField.d.ts +0 -45
  407. package/dist/instance/internal-api/SubscribableDependency.d.ts +0 -60
  408. package/dist/model/BindDefinition.d.ts +0 -34
  409. package/dist/parse/text/OutputChunkDefinition.d.ts +0 -8
  410. package/dist/parse/text/ReferenceChunkDefinition.d.ts +0 -8
  411. package/dist/parse/text/StaticTextChunkDefinition.d.ts +0 -10
  412. package/dist/parse/text/TranslationChunkDefinition.d.ts +0 -9
  413. package/dist/parse/text/abstract/TextChunkDefinition.d.ts +0 -18
  414. package/src/XFormDataType.ts +0 -64
  415. package/src/client/StringNode.ts +0 -52
  416. package/src/instance/internal-api/SubscribableDependency.ts +0 -61
  417. package/src/model/BindDefinition.ts +0 -106
  418. package/src/model/ModelDefinition.ts +0 -19
  419. package/src/parse/TODO.md +0 -3
  420. package/src/parse/text/StaticTextChunkDefinition.ts +0 -19
  421. package/src/parse/text/abstract/TextChunkDefinition.ts +0 -38
  422. /package/dist/{model → parse/model}/BindElement.d.ts +0 -0
  423. /package/src/{body → parse/body}/UnsupportedBodyElementDefinition.ts +0 -0
  424. /package/src/{body → parse/body}/group/LogicalGroupDefinition.ts +0 -0
  425. /package/src/{body → parse/body}/group/StructuralGroupDefinition.ts +0 -0
  426. /package/src/{model → parse/model}/BindElement.ts +0 -0
  427. /package/src/{model → parse/model}/RepeatInstanceDefinition.ts +0 -0
  428. /package/src/{model → parse/model}/RepeatTemplateDefinition.ts +0 -0
  429. /package/src/{model → parse/model}/SubtreeDefinition.ts +0 -0
@@ -0,0 +1,41 @@
1
+ declare const ESCAPED_XML_TEXT_BRAND: unique symbol;
2
+ export type EscapedXMLText = string & {
3
+ readonly [ESCAPED_XML_TEXT_BRAND]: true;
4
+ };
5
+ /**
6
+ * This is based on the `escapeHTML` implementation in
7
+ * {@link https://github.com/ryansolid/dom-expressions} (Solid's JSX transform).
8
+ *
9
+ * @see {@link https://github.com/ryansolid/dom-expressions/pull/27} for
10
+ * motivation to derive this implementation approach.
11
+ *
12
+ * The intent is that this can be updated easily if the base implementation
13
+ * changes. As such, some aspects of this implementation differ from some of our
14
+ * typical code style preferences.
15
+ *
16
+ * Notable changes from the base implementation:
17
+ *
18
+ * - Formatting: automated only.
19
+ * - Naming: the {@link text} parameter is named `html` in the base
20
+ * implementation. That would be confusing if preserved.
21
+ * - Types:
22
+ * - Parameter types are added (of course)
23
+ * - Return type is branded as {@link EscapedXMLText}, to allow downstream
24
+ * checks that escaping has been performed. Return statements are cast
25
+ * accordingly.
26
+ * - {@link text} attempts to minimize risk of double-escaping by excluding
27
+ * that same branded type.
28
+ * - The '>' character is also escaped, necessary for producing valid XML.
29
+ *
30
+ * As with the base implementation, we leave some characters unescaped:
31
+ *
32
+ * - " (double quote): except when {@link attr} is `true`.
33
+ *
34
+ * - ' (single quote): on the assumption that attributes are always serialized
35
+ * in double quotes. If we ever move this to `@getodk/common`, we'd want to
36
+ * reconsider this assumption.
37
+ */
38
+ export declare const escapeXMLText: <Text extends string>(text: Exclude<Text, EscapedXMLText>, attr?: boolean) => EscapedXMLText;
39
+ export declare const serializeParentElementXML: (nodeName: string, serializedChildren: readonly string[]) => string;
40
+ export declare const serializeLeafElementXML: (nodeName: string, xmlValue: EscapedXMLText) => string;
41
+ export {};
@@ -0,0 +1,42 @@
1
+ import { KnownAttributeLocalNamedElement } from '../../../common/types/dom.ts';
2
+ interface DOMBindElement extends KnownAttributeLocalNamedElement<'bind', 'nodeset'> {
3
+ }
4
+ export interface DOMItextTranslationElement extends KnownAttributeLocalNamedElement<'translation', 'lang'> {
5
+ }
6
+ export interface DOMSecondaryInstanceElement extends KnownAttributeLocalNamedElement<'instance', 'id'> {
7
+ }
8
+ interface XFormDOMOptions {
9
+ readonly isNormalized: boolean;
10
+ }
11
+ /**
12
+ * @todo **Everything** in this class should be cacheable. Maybe not worth it
13
+ * for small forms, but may make a pretty substantial difference for very large
14
+ * forms (in bytes) in sessions creating multiple instances of the same form.
15
+ */
16
+ export declare class XFormDOM {
17
+ protected readonly sourceXML: string;
18
+ static from(sourceXML: string): XFormDOM;
19
+ protected readonly normalizedXML: string;
20
+ readonly xformDocument: XMLDocument;
21
+ readonly html: Element;
22
+ readonly head: Element;
23
+ readonly title: Element;
24
+ readonly model: Element;
25
+ readonly binds: readonly DOMBindElement[];
26
+ readonly primaryInstance: Element;
27
+ readonly primaryInstanceRoot: Element;
28
+ readonly itextTranslationElements: readonly DOMItextTranslationElement[];
29
+ readonly secondaryInstanceElements: readonly DOMSecondaryInstanceElement[];
30
+ readonly body: Element;
31
+ protected constructor(sourceXML: string, options: XFormDOMOptions);
32
+ toJSON(): Omit<this, "head" | "html" | "title" | "toJSON" | "model" | "primaryInstanceRoot" | "primaryInstance" | "xformDocument"> & {
33
+ xformDocument: string;
34
+ html: string;
35
+ head: string;
36
+ title: string;
37
+ model: string;
38
+ primaryInstance: string;
39
+ primaryInstanceRoot: string;
40
+ };
41
+ }
42
+ export {};
@@ -1,9 +1,7 @@
1
- import { XFormDOM } from './XFormDOM.ts';
2
- import { BodyDefinition } from './body/BodyDefinition.ts';
1
+ import { BodyDefinition } from '../parse/body/BodyDefinition.ts';
3
2
  import { ModelDefinition } from './model/ModelDefinition.ts';
4
-
3
+ import { XFormDOM } from './XFormDOM.ts';
5
4
  export declare class XFormDefinition {
6
- readonly sourceXML: string;
7
5
  readonly xformDOM: XFormDOM;
8
6
  readonly xformDocument: XMLDocument;
9
7
  readonly id: string;
@@ -11,5 +9,5 @@ export declare class XFormDefinition {
11
9
  readonly rootReference: string;
12
10
  readonly body: BodyDefinition;
13
11
  readonly model: ModelDefinition;
14
- constructor(sourceXML: string);
12
+ constructor(xformDOM: XFormDOM);
15
13
  }
@@ -0,0 +1,27 @@
1
+ import { JRResourceURL } from '../../../../common/src/jr-resources/JRResourceURL.ts';
2
+ export type FormAttachmentDataType = 'media' | 'secondary-instance';
3
+ /**
4
+ * @todo This type anticipates work to support media form attachments, which
5
+ * will tend to be associated with binary data. The
6
+ * expectation is that:
7
+ *
8
+ * - {@link Blob} would be appropriate for representing data from attachment
9
+ * resources which are conventionally loaded to completion (where network
10
+ * conditions are favorable), such as images
11
+ *
12
+ * - {@link MediaSource} or {@link ReadableStream} may be more appropriate for
13
+ * representing data from resources which are conventionally streamed in a
14
+ * browser context (often regardless of network conditions), such as video and
15
+ * audio
16
+ */
17
+ export type FormAttachmentMediaData = Blob | MediaSource | ReadableStream<unknown>;
18
+ export type FormAttachmentSecondaryInstanceData = string;
19
+ type FormAttachmentData<DataType extends FormAttachmentDataType> = DataType extends 'media' ? FormAttachmentMediaData : FormAttachmentSecondaryInstanceData;
20
+ export declare abstract class FormAttachmentResource<DataType extends FormAttachmentDataType> {
21
+ readonly dataType: DataType;
22
+ readonly resourceURL: JRResourceURL;
23
+ readonly contentType: string;
24
+ readonly data: FormAttachmentData<DataType>;
25
+ protected constructor(dataType: DataType, resourceURL: JRResourceURL, contentType: string, data: FormAttachmentData<DataType>);
26
+ }
27
+ export {};
@@ -1,19 +1,23 @@
1
- import { XFormDefinition } from '../XFormDefinition.ts';
2
- import { DependencyContext } from '../expression/DependencyContext.ts';
3
- import { ParsedTokenList, TokenListParser } from '../lib/TokenListParser.ts';
4
- import { RepeatElementDefinition } from './RepeatElementDefinition.ts';
5
- import { UnsupportedBodyElementDefinition } from './UnsupportedBodyElementDefinition.ts';
6
- import { InputDefinition } from './control/InputDefinition.ts';
1
+ import { ParsedTokenList, TokenListParser } from '../../lib/TokenListParser.ts';
2
+ import { XFormDefinition } from '../../parse/XFormDefinition.ts';
3
+ import { DependencyContext } from '../expression/abstract/DependencyContext.ts';
4
+ import { InputControlDefinition } from './control/InputControlDefinition.ts';
5
+ import { RangeControlDefinition } from './control/RangeControlDefinition.ts';
6
+ import { RankControlDefinition } from './control/RankControlDefinition.ts';
7
7
  import { AnySelectDefinition } from './control/select/SelectDefinition.ts';
8
+ import { TriggerControlDefinition } from './control/TriggerControlDefinition.ts';
9
+ import { UploadControlDefinition } from './control/UploadControlDefinition.ts';
8
10
  import { LogicalGroupDefinition } from './group/LogicalGroupDefinition.ts';
9
11
  import { PresentationGroupDefinition } from './group/PresentationGroupDefinition.ts';
10
12
  import { StructuralGroupDefinition } from './group/StructuralGroupDefinition.ts';
11
-
13
+ import { RepeatElementDefinition } from './RepeatElementDefinition.ts';
14
+ import { UnsupportedBodyElementDefinition } from './UnsupportedBodyElementDefinition.ts';
12
15
  export interface BodyElementParentContext {
16
+ readonly body: BodyDefinition;
13
17
  readonly reference: string | null;
14
18
  readonly element: Element;
15
19
  }
16
- export type ControlElementDefinition = AnySelectDefinition | InputDefinition;
20
+ export type ControlElementDefinition = AnySelectDefinition | InputControlDefinition | RangeControlDefinition | RankControlDefinition | TriggerControlDefinition | UploadControlDefinition;
17
21
  type SupportedBodyElementDefinition = RepeatElementDefinition | LogicalGroupDefinition | PresentationGroupDefinition | StructuralGroupDefinition | ControlElementDefinition;
18
22
  export type AnyBodyElementDefinition = SupportedBodyElementDefinition | UnsupportedBodyElementDefinition;
19
23
  export type BodyElementDefinitionArray = readonly AnyBodyElementDefinition[];
@@ -38,9 +42,9 @@ declare class BodyElementMap extends Map<BodyElementReference, AnyBodyElementDef
38
42
  }
39
43
  declare const bodyClassParser: TokenListParser<"pages", "pages">;
40
44
  export type BodyClassList = ParsedTokenList<typeof bodyClassParser>;
41
- export declare class BodyDefinition extends DependencyContext {
45
+ export declare class BodyDefinition extends DependencyContext implements BodyElementParentContext {
42
46
  protected readonly form: XFormDefinition;
43
- static getChildElementDefinitions(form: XFormDefinition, parent: BodyElementParentContext, parentElement: Element, children?: readonly Element[]): readonly AnyBodyElementDefinition[];
47
+ readonly body: BodyDefinition;
44
48
  readonly element: Element;
45
49
  /**
46
50
  * @todo this class is already an oddity in that it's **like** an element
@@ -65,6 +69,7 @@ export declare class BodyDefinition extends DependencyContext {
65
69
  readonly reference: string;
66
70
  constructor(form: XFormDefinition);
67
71
  getBodyElement(reference: string): AnyBodyElementDefinition | null;
68
- toJSON(): Omit<this, "toJSON" | "form" | "isTranslated" | "registerDependentExpression" | "dependencyExpressions" | "getBodyElement">;
72
+ getChildElementDefinitions(form: XFormDefinition, parent: BodyElementParentContext, parentElement: Element, children?: readonly Element[]): readonly AnyBodyElementDefinition[];
73
+ toJSON(): Omit<this, "form" | "toJSON" | "isTranslated" | "getBodyElement" | "getChildElementDefinitions">;
69
74
  }
70
75
  export {};
@@ -1,21 +1,21 @@
1
+ import { DependencyContext } from '../expression/abstract/DependencyContext.ts';
2
+ import { HintDefinition } from '../text/HintDefinition.ts';
3
+ import { ItemLabelDefinition } from '../text/ItemLabelDefinition.ts';
4
+ import { LabelDefinition } from '../text/LabelDefinition.ts';
1
5
  import { XFormDefinition } from '../XFormDefinition.ts';
2
- import { DependencyContext } from '../expression/DependencyContext.ts';
3
- import { HintDefinition } from '../parse/text/HintDefinition.ts';
4
- import { ItemLabelDefinition } from '../parse/text/ItemLabelDefinition.ts';
5
- import { LabelDefinition } from '../parse/text/LabelDefinition.ts';
6
- import { BodyElementParentContext } from './BodyDefinition.ts';
7
-
6
+ import { BodyDefinition, BodyElementParentContext } from './BodyDefinition.ts';
8
7
  /**
9
8
  * These category names roughly correspond to each of the ODK XForms spec's
10
9
  * {@link https://getodk.github.io/xforms-spec/#body-elements | Body Elements}
11
10
  * tables.
12
11
  */
13
12
  type BodyElementCategory = 'control' | 'structure' | 'support' | 'UNSUPPORTED';
14
- export declare abstract class BodyElementDefinition<Type extends string> extends DependencyContext {
13
+ export declare abstract class BodyElementDefinition<Type extends string> extends DependencyContext implements BodyElementParentContext {
15
14
  protected readonly form: XFormDefinition;
16
15
  readonly parent: BodyElementParentContext;
17
16
  readonly element: Element;
18
17
  static isCompatible(localName: string, element: Element): boolean;
18
+ readonly body: BodyDefinition;
19
19
  abstract readonly category: BodyElementCategory;
20
20
  abstract readonly type: Type;
21
21
  readonly hint: HintDefinition | null;
@@ -1,9 +1,8 @@
1
1
  import { XFormDefinition } from '../XFormDefinition.ts';
2
- import { LabelDefinition } from '../parse/text/LabelDefinition.ts';
3
- import { BodyElementDefinitionArray, BodyElementParentContext } from './BodyDefinition.ts';
2
+ import { BodyElementDefinitionArray, BodyElementParentContext } from '../body/BodyDefinition.ts';
3
+ import { LabelDefinition } from '../text/LabelDefinition.ts';
4
4
  import { BodyElementDefinition } from './BodyElementDefinition.ts';
5
5
  import { StructureElementAppearanceDefinition } from './appearance/structureElementAppearanceParser.ts';
6
-
7
6
  export declare class RepeatElementDefinition extends BodyElementDefinition<'repeat'> {
8
7
  static isCompatible(localName: string): boolean;
9
8
  readonly category = "structure";
@@ -15,5 +14,5 @@ export declare class RepeatElementDefinition extends BodyElementDefinition<'repe
15
14
  readonly noAddRemoveExpression: string | null;
16
15
  readonly children: BodyElementDefinitionArray;
17
16
  constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
18
- toJSON(): Omit<this, "toJSON" | "form" | "parent" | "isTranslated" | "registerDependentExpression" | "dependencyExpressions">;
17
+ toJSON(): Omit<this, "parent" | "form" | "toJSON" | "isTranslated">;
19
18
  }
@@ -1,7 +1,6 @@
1
1
  import { XFormDefinition } from '../XFormDefinition.ts';
2
2
  import { BodyElementParentContext } from './BodyDefinition.ts';
3
3
  import { BodyElementDefinition } from './BodyElementDefinition.ts';
4
-
5
4
  export declare class UnsupportedBodyElementDefinition extends BodyElementDefinition<'UNSUPPORTED'> {
6
5
  static isCompatible(): boolean;
7
6
  readonly category = "UNSUPPORTED";
@@ -0,0 +1,3 @@
1
+ import { TokenListParser, ParsedTokenList } from '../../../lib/TokenListParser.ts';
2
+ export declare const inputAppearanceParser: TokenListParser<"multiline" | "numbers" | "url" | "thousands-sep" | "no-calendar" | "month-year" | "year" | "ethiopian" | "coptic" | "islamic" | "bikram-sambat" | "myanmar" | "persian" | "placement-map" | "maps" | "hidden-answer" | "annotate" | "draw" | "signature" | "new-front" | "new" | "front" | "printer" | "masked", "multiline" | "numbers" | "url" | "thousands-sep" | "no-calendar" | "month-year" | "year" | "ethiopian" | "coptic" | "islamic" | "bikram-sambat" | "myanmar" | "persian" | "placement-map" | "maps" | "hidden-answer" | "annotate" | "draw" | "signature" | "new-front" | "new" | "front" | "printer" | "masked">;
3
+ export type InputAppearanceDefinition = ParsedTokenList<typeof inputAppearanceParser>;
@@ -1,4 +1,3 @@
1
- import { TokenListParser, ParsedTokenList } from '../../lib/TokenListParser.ts';
2
-
1
+ import { TokenListParser, ParsedTokenList } from '../../../lib/TokenListParser.ts';
3
2
  export declare const selectAppearanceParser: TokenListParser<"map" | "label" | "compact" | "horizontal" | "horizontal-compact" | "list-nolabel" | "minimal" | "columns" | "columns-1" | "columns-2" | "columns-3" | "columns-4" | "columns-5" | "columns-pack" | "autocomplete" | "likert" | "quick" | "quickcompact", "autocomplete">;
4
3
  export type SelectAppearanceDefinition = ParsedTokenList<typeof selectAppearanceParser>;
@@ -1,4 +1,3 @@
1
- import { TokenListParser, ParsedTokenList } from '../../lib/TokenListParser.ts';
2
-
1
+ import { TokenListParser, ParsedTokenList } from '../../../lib/TokenListParser.ts';
3
2
  export declare const structureElementAppearanceParser: TokenListParser<"field-list" | "table-list", "field-list" | "table-list">;
4
3
  export type StructureElementAppearanceDefinition = ParsedTokenList<typeof structureElementAppearanceParser>;
@@ -0,0 +1,3 @@
1
+ import { TokenListParser, ParsedTokenList } from '../../../lib/TokenListParser.ts';
2
+ export declare const unknownAppearanceParser: TokenListParser<string, string>;
3
+ export type UnknownAppearanceDefinition = ParsedTokenList<typeof unknownAppearanceParser>;
@@ -1,10 +1,9 @@
1
+ import { ParsedTokenList } from '../../../lib/TokenListParser.ts';
2
+ import { HintDefinition } from '../../text/HintDefinition.ts';
3
+ import { LabelDefinition } from '../../text/LabelDefinition.ts';
1
4
  import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { ParsedTokenList } from '../../lib/TokenListParser.ts';
3
- import { HintDefinition } from '../../parse/text/HintDefinition.ts';
4
- import { LabelDefinition } from '../../parse/text/LabelDefinition.ts';
5
5
  import { BodyElementParentContext } from '../BodyDefinition.ts';
6
6
  import { BodyElementDefinition } from '../BodyElementDefinition.ts';
7
-
8
7
  type ControlType = 'input' | 'range' | 'rank' | 'select' | 'select1' | 'trigger' | 'upload';
9
8
  export declare abstract class ControlDefinition<Type extends ControlType> extends BodyElementDefinition<Type> {
10
9
  readonly category = "control";
@@ -1,9 +1,8 @@
1
1
  import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { BodyElementParentContext } from '../BodyDefinition.ts';
3
2
  import { InputAppearanceDefinition } from '../appearance/inputAppearanceParser.ts';
3
+ import { BodyElementParentContext } from '../BodyDefinition.ts';
4
4
  import { ControlDefinition } from './ControlDefinition.ts';
5
-
6
- export declare class InputDefinition extends ControlDefinition<'input'> {
5
+ export declare class InputControlDefinition extends ControlDefinition<'input'> {
7
6
  static isCompatible(localName: string): boolean;
8
7
  readonly type = "input";
9
8
  readonly appearances: InputAppearanceDefinition;
@@ -0,0 +1,11 @@
1
+ import { XFormDefinition } from '../../XFormDefinition.ts';
2
+ import { UnknownAppearanceDefinition } from '../appearance/unknownAppearanceParser.ts';
3
+ import { BodyElementParentContext } from '../BodyDefinition.ts';
4
+ import { ControlDefinition } from './ControlDefinition.ts';
5
+ export declare class RangeControlDefinition extends ControlDefinition<'range'> {
6
+ static isCompatible(localName: string): boolean;
7
+ readonly type = "range";
8
+ readonly appearances: UnknownAppearanceDefinition;
9
+ constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
10
+ toJSON(): object;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { XFormDefinition } from '../../XFormDefinition.ts';
2
+ import { UnknownAppearanceDefinition } from '../appearance/unknownAppearanceParser.ts';
3
+ import { BodyElementParentContext } from '../BodyDefinition.ts';
4
+ import { ControlDefinition } from './ControlDefinition.ts';
5
+ export declare class RankControlDefinition extends ControlDefinition<'rank'> {
6
+ static isCompatible(localName: string, element: Element): boolean;
7
+ readonly type = "rank";
8
+ readonly appearances: UnknownAppearanceDefinition;
9
+ constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
10
+ toJSON(): object;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { XFormDefinition } from '../../XFormDefinition.ts';
2
+ import { UnknownAppearanceDefinition } from '../appearance/unknownAppearanceParser.ts';
3
+ import { BodyElementParentContext } from '../BodyDefinition.ts';
4
+ import { ControlDefinition } from './ControlDefinition.ts';
5
+ export declare class TriggerControlDefinition extends ControlDefinition<'trigger'> {
6
+ static isCompatible(localName: string): boolean;
7
+ readonly type = "trigger";
8
+ readonly appearances: UnknownAppearanceDefinition;
9
+ constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
10
+ toJSON(): object;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { XFormDefinition } from '../../XFormDefinition.ts';
2
+ import { UnknownAppearanceDefinition } from '../appearance/unknownAppearanceParser.ts';
3
+ import { BodyElementParentContext } from '../BodyDefinition.ts';
4
+ import { ControlDefinition } from './ControlDefinition.ts';
5
+ export declare class UploadControlDefinition extends ControlDefinition<'upload'> {
6
+ static isCompatible(localName: string): boolean;
7
+ readonly type = "upload";
8
+ readonly appearances: UnknownAppearanceDefinition;
9
+ constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
10
+ toJSON(): object;
11
+ }
@@ -1,9 +1,8 @@
1
- import { ItemElement } from '../../../lib/dom/query.ts';
2
- import { ItemLabelDefinition } from '../../../parse/text/ItemLabelDefinition.ts';
1
+ import { ItemElement } from '../../../../lib/dom/query.ts';
2
+ import { ItemLabelDefinition } from '../../../text/ItemLabelDefinition.ts';
3
3
  import { XFormDefinition } from '../../../XFormDefinition.ts';
4
4
  import { BodyElementDefinition } from '../../BodyElementDefinition.ts';
5
5
  import { AnySelectDefinition } from './SelectDefinition.ts';
6
-
7
6
  export declare class ItemDefinition extends BodyElementDefinition<'item'> {
8
7
  readonly parent: AnySelectDefinition;
9
8
  readonly category = "support";
@@ -1,11 +1,10 @@
1
+ import { ItemsetElement } from '../../../../lib/dom/query.ts';
2
+ import { ItemsetNodesetExpression } from '../../../expression/ItemsetNodesetExpression.ts';
3
+ import { ItemsetValueExpression } from '../../../expression/ItemsetValueExpression.ts';
4
+ import { ItemsetLabelDefinition } from '../../../text/ItemsetLabelDefinition.ts';
1
5
  import { XFormDefinition } from '../../../XFormDefinition.ts';
2
- import { ItemsetElement } from '../../../lib/dom/query.ts';
3
- import { ItemsetLabelDefinition } from '../../../parse/text/ItemsetLabelDefinition.ts';
4
6
  import { BodyElementDefinition } from '../../BodyElementDefinition.ts';
5
- import { ItemsetNodesetExpression } from './ItemsetNodesetExpression.ts';
6
- import { ItemsetValueExpression } from './ItemsetValueExpression.ts';
7
7
  import { AnySelectDefinition } from './SelectDefinition.ts';
8
-
9
8
  export declare class ItemsetDefinition extends BodyElementDefinition<'itemset'> {
10
9
  readonly parent: AnySelectDefinition;
11
10
  readonly category = "support";
@@ -1,12 +1,9 @@
1
- import { DependencyContext } from '../../../expression/DependencyContext.ts';
2
- import { AnyDependentExpression } from '../../../expression/DependentExpression.ts';
1
+ import { DependencyContext } from '../../../expression/abstract/DependencyContext.ts';
3
2
  import { ItemsetDefinition } from './ItemsetDefinition.ts';
4
-
5
3
  export declare class ItemsetNodesetContext extends DependencyContext {
6
4
  protected readonly itemset: ItemsetDefinition;
7
5
  readonly parentReference: null;
8
6
  readonly reference: string;
9
7
  constructor(itemset: ItemsetDefinition, nodesetExpression: string);
10
8
  set isTranslated(value: true);
11
- registerDependentExpression(expression: AnyDependentExpression): void;
12
9
  }
@@ -1,20 +1,11 @@
1
- import { CollectionValues } from '../../../../../common/types/collections/CollectionValues.ts';
2
- import { LocalNamedElement } from '../../../../../common/types/dom.ts';
1
+ import { CollectionValues } from '../../../../../../common/types/collections/CollectionValues.ts';
2
+ import { LocalNamedElement } from '../../../../../../common/types/dom.ts';
3
3
  import { XFormDefinition } from '../../../XFormDefinition.ts';
4
- import { AnyBodyElementDefinition, BodyElementParentContext } from '../../BodyDefinition.ts';
5
4
  import { SelectAppearanceDefinition } from '../../appearance/selectAppearanceParser.ts';
5
+ import { AnyBodyElementDefinition, BodyElementParentContext } from '../../BodyDefinition.ts';
6
6
  import { ControlDefinition } from '../ControlDefinition.ts';
7
7
  import { ItemDefinition } from './ItemDefinition.ts';
8
8
  import { ItemsetDefinition } from './ItemsetDefinition.ts';
9
-
10
- /**
11
- * @todo We were previously a bit overzealous about introducing `<rank>` support
12
- * here. It'll likely still fit, but we should approach it with more intention.
13
- *
14
- * @todo `<trigger>` is *almost* reasonable to support here too. The main
15
- * hesitation is that its single, implicit "item" does not have a distinct
16
- * <label>, and presumably has different UX **and translation** considerations.
17
- */
18
9
  declare const selectLocalNames: Set<"select" | "select1">;
19
10
  export type SelectType = CollectionValues<typeof selectLocalNames>;
20
11
  export interface SelectElement extends LocalNamedElement<SelectType> {
@@ -1,9 +1,8 @@
1
+ import { LabelDefinition } from '../../text/LabelDefinition.ts';
1
2
  import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { LabelDefinition } from '../../parse/text/LabelDefinition.ts';
3
+ import { StructureElementAppearanceDefinition } from '../appearance/structureElementAppearanceParser.ts';
3
4
  import { BodyElementDefinitionArray, BodyElementParentContext } from '../BodyDefinition.ts';
4
5
  import { BodyElementDefinition } from '../BodyElementDefinition.ts';
5
- import { StructureElementAppearanceDefinition } from '../appearance/structureElementAppearanceParser.ts';
6
-
7
6
  /**
8
7
  * These type names are derived from **and expand upon** the language used in
9
8
  * the ODK XForms spec to describe various group usage. Whereas the spec
@@ -37,6 +36,5 @@ export declare abstract class BaseGroupDefinition<Type extends GroupType> extend
37
36
  readonly reference: string | null;
38
37
  readonly appearances: StructureElementAppearanceDefinition;
39
38
  readonly label: LabelDefinition | null;
40
- constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element, children?: BodyElementDefinitionArray);
41
- getChildren(element: Element): BodyElementDefinitionArray;
39
+ constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
42
40
  }
@@ -1,5 +1,4 @@
1
1
  import { BaseGroupDefinition } from './BaseGroupDefinition.ts';
2
-
3
2
  export declare class LogicalGroupDefinition extends BaseGroupDefinition<'logical-group'> {
4
3
  static isCompatible(localName: string, element: Element): boolean;
5
4
  readonly type = "logical-group";
@@ -1,8 +1,7 @@
1
+ import { LabelDefinition } from '../../text/LabelDefinition.ts';
1
2
  import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { LabelDefinition } from '../../parse/text/LabelDefinition.ts';
3
3
  import { BodyElementParentContext } from '../BodyDefinition.ts';
4
4
  import { BaseGroupDefinition } from './BaseGroupDefinition.ts';
5
-
6
5
  export declare class PresentationGroupDefinition extends BaseGroupDefinition<'presentation-group'> {
7
6
  static isCompatible(localName: string, element: Element): boolean;
8
7
  readonly type = "presentation-group";
@@ -1,5 +1,4 @@
1
1
  import { BaseGroupDefinition } from './BaseGroupDefinition.ts';
2
-
3
2
  export declare class StructuralGroupDefinition extends BaseGroupDefinition<'structural-group'> {
4
3
  static isCompatible(localName: string, element: Element): boolean;
5
4
  readonly type = "structural-group";
@@ -1,6 +1,5 @@
1
- import { DependentExpression } from '../expression/DependentExpression.ts';
2
- import { BindDefinition } from './BindDefinition.ts';
3
-
1
+ import { BindDefinition } from '../model/BindDefinition.ts';
2
+ import { DependentExpression } from './abstract/DependentExpression.ts';
4
3
  declare const defaultBindComputationExpressions: {
5
4
  readonly calculate: null;
6
5
  readonly constraint: "true()";
@@ -11,7 +10,7 @@ declare const defaultBindComputationExpressions: {
11
10
  };
12
11
  type DefaultBindComputationExpressions = typeof defaultBindComputationExpressions;
13
12
  export type BindComputationType = keyof DefaultBindComputationExpressions;
14
- type BindComputationFactoryResult<Type extends BindComputationType> = DefaultBindComputationExpressions[Type] extends null ? BindComputation<Type> | null : BindComputation<Type>;
13
+ type BindComputationFactoryResult<Type extends BindComputationType> = DefaultBindComputationExpressions[Type] extends null ? BindComputationExpression<Type> | null : BindComputationExpression<Type>;
15
14
  declare const bindComputationResultTypes: {
16
15
  readonly calculate: "string";
17
16
  readonly constraint: "boolean";
@@ -22,9 +21,9 @@ declare const bindComputationResultTypes: {
22
21
  };
23
22
  type BindComputationResultTypes = typeof bindComputationResultTypes;
24
23
  export type BindComputationResultType<Computation extends BindComputationType> = BindComputationResultTypes[Computation];
25
- export declare class BindComputation<Computation extends BindComputationType> extends DependentExpression<BindComputationResultType<Computation>> {
24
+ export declare class BindComputationExpression<Computation extends BindComputationType> extends DependentExpression<BindComputationResultType<Computation>> {
26
25
  readonly computation: Computation;
27
- static forExpression<Type extends BindComputationType>(bind: BindDefinition, computation: Type): BindComputationFactoryResult<Type>;
26
+ static forComputation<Type extends BindComputationType>(bind: BindDefinition, computation: Type): BindComputationFactoryResult<Type>;
28
27
  readonly isDefaultExpression: boolean;
29
28
  protected constructor(bind: BindDefinition, computation: Computation, expression: string | null);
30
29
  }
@@ -1,6 +1,5 @@
1
- import { DependentExpression } from '../../../expression/DependentExpression.ts';
2
- import { ItemsetDefinition } from './ItemsetDefinition.ts';
3
-
1
+ import { ItemsetDefinition } from '../body/control/select/ItemsetDefinition.ts';
2
+ import { DependentExpression } from './abstract/DependentExpression.ts';
4
3
  export declare class ItemsetNodesetExpression extends DependentExpression<'nodes'> {
5
4
  constructor(itemset: ItemsetDefinition, nodesetExpression: string);
6
5
  }
@@ -1,6 +1,5 @@
1
- import { DependentExpression } from '../../../expression/DependentExpression.ts';
2
- import { ItemsetDefinition } from './ItemsetDefinition.ts';
3
-
1
+ import { ItemsetDefinition } from '../body/control/select/ItemsetDefinition.ts';
2
+ import { DependentExpression } from './abstract/DependentExpression.ts';
4
3
  export declare class ItemsetValueExpression extends DependentExpression<'string'> {
5
4
  readonly itemset: ItemsetDefinition;
6
5
  constructor(itemset: ItemsetDefinition, expression: string);
@@ -1,6 +1,5 @@
1
- import { RepeatElementDefinition } from '../../body/RepeatElementDefinition.ts';
2
- import { DependentExpression } from '../../expression/DependentExpression.ts';
3
-
1
+ import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
+ import { DependentExpression } from './abstract/DependentExpression.ts';
4
3
  /**
5
4
  * Represents either of these
6
5
  * {@link https://getodk.github.io/xforms-spec/#body-attributes | body attributes}:
@@ -0,0 +1,9 @@
1
+ import { AnyTextRangeDefinition } from '../text/abstract/TextRangeDefinition.ts';
2
+ import { TextChunkExpression } from './abstract/TextChunkExpression.ts';
3
+ export type TextLiteralSourceNode = Attr | Text;
4
+ export declare class TextLiteralExpression extends TextChunkExpression<'literal'> {
5
+ readonly stringValue: string;
6
+ static from(context: AnyTextRangeDefinition, stringValue: string): TextLiteralExpression;
7
+ readonly source = "literal";
8
+ private constructor();
9
+ }
@@ -0,0 +1,7 @@
1
+ import { AnyTextRangeDefinition } from '../text/abstract/TextRangeDefinition.ts';
2
+ import { TextChunkExpression } from './abstract/TextChunkExpression.ts';
3
+ export declare class TextOutputExpression extends TextChunkExpression<'output'> {
4
+ static from(context: AnyTextRangeDefinition, element: Element): TextOutputExpression | null;
5
+ readonly source = "output";
6
+ private constructor();
7
+ }
@@ -0,0 +1,7 @@
1
+ import { AnyTextRangeDefinition } from '../text/abstract/TextRangeDefinition.ts';
2
+ import { TextChunkExpression } from './abstract/TextChunkExpression.ts';
3
+ export declare class TextReferenceExpression extends TextChunkExpression<'reference'> {
4
+ static from(context: AnyTextRangeDefinition, refExpression: string): TextReferenceExpression;
5
+ readonly source = "reference";
6
+ private constructor();
7
+ }
@@ -0,0 +1,8 @@
1
+ import { AnyTextRangeDefinition } from '../text/abstract/TextRangeDefinition.ts';
2
+ import { TextChunkExpression } from './abstract/TextChunkExpression.ts';
3
+ export declare class TextTranslationExpression extends TextChunkExpression<'translation'> {
4
+ static fromMessage(context: AnyTextRangeDefinition, maybeExpression: string): TextTranslationExpression | null;
5
+ static from(context: AnyTextRangeDefinition, maybeExpression: string): TextTranslationExpression | null;
6
+ readonly source = "translation";
7
+ private constructor();
8
+ }
@@ -0,0 +1,7 @@
1
+ export declare abstract class DependencyContext {
2
+ abstract get parentReference(): string | null;
3
+ abstract get reference(): string | null;
4
+ get isTranslated(): boolean;
5
+ set isTranslated(value: true);
6
+ protected _isTranslated: boolean;
7
+ }
@@ -1,7 +1,6 @@
1
- import { XFormsXPathEvaluator } from '@getodk/xpath';
2
- import { ConstantExpression, ConstantTruthyExpression } from '../parse/xpath/semantic-analysis.ts';
1
+ import { EngineXPathEvaluator } from '../../../integration/xpath/EngineXPathEvaluator.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";
@@ -11,7 +10,7 @@ declare const evaluatorMethodsByResultType: {
11
10
  type EvaluatorMethodsByResultType = typeof evaluatorMethodsByResultType;
12
11
  export type DependentExpressionResultType = keyof EvaluatorMethodsByResultType;
13
12
  export type DependentExpressionEvaluatorMethod<Type extends DependentExpressionResultType> = EvaluatorMethodsByResultType[Type];
14
- export type DependentExpressionResult<Type extends DependentExpressionResultType> = ReturnType<XFormsXPathEvaluator[DependentExpressionEvaluatorMethod<Type>]>;
13
+ export type DependentExpressionResult<Type extends DependentExpressionResultType> = ReturnType<EngineXPathEvaluator[DependentExpressionEvaluatorMethod<Type>]>;
15
14
  interface SemanticDependencyOptions {
16
15
  /**
17
16
  * @default false
@@ -31,10 +30,9 @@ 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
- readonly dependencyReferences: ReadonlySet<string>;
38
36
  readonly isTranslated: boolean;
39
37
  readonly evaluatorMethod: DependentExpressionEvaluatorMethod<Type>;
40
38
  readonly constantExpression: ConstantExpression | null;