@getodk/xforms-engine 0.4.0 → 0.6.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 (392) hide show
  1. package/README.md +1 -1
  2. package/dist/client/BaseNode.d.ts +18 -3
  3. package/dist/client/BaseValueNode.d.ts +32 -0
  4. package/dist/client/EngineConfig.d.ts +49 -48
  5. package/dist/client/GroupNode.d.ts +1 -0
  6. package/dist/client/InputNode.d.ts +82 -0
  7. package/dist/client/ModelValueNode.d.ts +13 -7
  8. package/dist/client/NoteNode.d.ts +26 -9
  9. package/dist/client/RangeNode.d.ts +36 -0
  10. package/dist/client/RankNode.d.ts +46 -0
  11. package/dist/client/RootNode.d.ts +37 -7
  12. package/dist/client/SelectNode.d.ts +47 -25
  13. package/dist/client/SubtreeNode.d.ts +1 -0
  14. package/dist/client/TriggerNode.d.ts +10 -6
  15. package/dist/client/ValueType.d.ts +3 -0
  16. package/dist/client/constants.d.ts +50 -0
  17. package/dist/client/hierarchy.d.ts +8 -8
  18. package/dist/client/identity.d.ts +14 -0
  19. package/dist/client/node-types.d.ts +3 -2
  20. package/dist/client/resources.d.ts +93 -0
  21. package/dist/client/submission/SubmissionData.d.ts +7 -0
  22. package/dist/client/submission/SubmissionDefinition.d.ts +14 -0
  23. package/dist/client/submission/SubmissionInstanceFile.d.ts +6 -0
  24. package/dist/client/submission/SubmissionOptions.d.ts +23 -0
  25. package/dist/client/submission/SubmissionResult.d.ts +91 -0
  26. package/dist/client/submission/SubmissionState.d.ts +12 -0
  27. package/dist/client/unsupported/UnsupportedControlNode.d.ts +1 -3
  28. package/dist/client/validation.d.ts +2 -2
  29. package/dist/error/ErrorProductionDesignPendingError.d.ts +7 -0
  30. package/dist/error/RankMissingValueError.d.ts +3 -0
  31. package/dist/error/RankValueTypeError.d.ts +6 -0
  32. package/dist/error/SelectValueTypeError.d.ts +15 -0
  33. package/dist/error/ValueTypeInvariantError.d.ts +17 -0
  34. package/dist/error/XFormsSpecViolationError.d.ts +2 -0
  35. package/dist/error/XPathFunctionalityError.d.ts +14 -0
  36. package/dist/error/XPathFunctionalityNotSupportedError.d.ts +7 -0
  37. package/dist/error/XPathFunctionalityPendingError.d.ts +7 -0
  38. package/dist/index.d.ts +12 -4
  39. package/dist/index.js +17864 -14655
  40. package/dist/index.js.map +1 -1
  41. package/dist/instance/Group.d.ts +10 -4
  42. package/dist/instance/InputControl.d.ts +38 -0
  43. package/dist/instance/ModelValue.d.ts +17 -25
  44. package/dist/instance/Note.d.ts +16 -21
  45. package/dist/instance/PrimaryInstance.d.ts +85 -0
  46. package/dist/instance/RangeControl.d.ts +34 -0
  47. package/dist/instance/RankControl.d.ts +40 -0
  48. package/dist/instance/Root.d.ts +30 -25
  49. package/dist/instance/SelectControl.d.ts +66 -0
  50. package/dist/instance/Subtree.d.ts +11 -5
  51. package/dist/instance/TriggerControl.d.ts +13 -19
  52. package/dist/instance/abstract/DescendantNode.d.ts +32 -25
  53. package/dist/instance/abstract/InstanceNode.d.ts +52 -30
  54. package/dist/instance/abstract/UnsupportedControl.d.ts +11 -3
  55. package/dist/instance/abstract/ValueNode.d.ts +47 -0
  56. package/dist/instance/hierarchy.d.ts +13 -12
  57. package/dist/instance/identity.d.ts +2 -7
  58. package/dist/instance/internal-api/EvaluationContext.d.ts +53 -12
  59. package/dist/instance/internal-api/InstanceConfig.d.ts +8 -2
  60. package/dist/instance/internal-api/InstanceValueContext.d.ts +22 -0
  61. package/dist/instance/internal-api/PrimaryInstanceDocument.d.ts +36 -0
  62. package/dist/instance/internal-api/TranslationContext.d.ts +3 -2
  63. package/dist/instance/internal-api/ValidationContext.d.ts +3 -4
  64. package/dist/instance/internal-api/ValueContext.d.ts +2 -1
  65. package/dist/instance/internal-api/submission/ClientReactiveSubmittableInstance.d.ts +14 -0
  66. package/dist/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.d.ts +32 -0
  67. package/dist/instance/internal-api/submission/ClientReactiveSubmittableParentNode.d.ts +19 -0
  68. package/dist/instance/internal-api/submission/ClientReactiveSubmittableValueNode.d.ts +18 -0
  69. package/dist/instance/repeat/BaseRepeatRange.d.ts +40 -83
  70. package/dist/instance/repeat/RepeatInstance.d.ts +12 -29
  71. package/dist/instance/repeat/RepeatRangeControlled.d.ts +2 -2
  72. package/dist/instance/repeat/RepeatRangeUncontrolled.d.ts +2 -2
  73. package/dist/instance/resource.d.ts +1 -1
  74. package/dist/instance/text/TextRange.d.ts +1 -1
  75. package/dist/instance/unsupported/UploadControl.d.ts +3 -1
  76. package/dist/integration/xpath/EngineXPathEvaluator.d.ts +14 -0
  77. package/dist/integration/xpath/adapter/XFormsXPathNode.d.ts +71 -0
  78. package/dist/integration/xpath/adapter/engineDOMAdapter.d.ts +5 -0
  79. package/dist/integration/xpath/adapter/kind.d.ts +32 -0
  80. package/dist/integration/xpath/adapter/names.d.ts +6 -0
  81. package/dist/integration/xpath/adapter/traversal.d.ts +26 -0
  82. package/dist/integration/xpath/adapter/values.d.ts +2 -0
  83. package/dist/integration/xpath/static-dom/StaticAttribute.d.ts +26 -0
  84. package/dist/integration/xpath/static-dom/StaticDocument.d.ts +15 -0
  85. package/dist/integration/xpath/static-dom/StaticElement.d.ts +48 -0
  86. package/dist/integration/xpath/static-dom/StaticNode.d.ts +33 -0
  87. package/dist/integration/xpath/static-dom/StaticText.d.ts +16 -0
  88. package/dist/lib/client-reactivity/submission/createInstanceSubmissionState.d.ts +3 -0
  89. package/dist/lib/client-reactivity/submission/createLeafNodeSubmissionState.d.ts +3 -0
  90. package/dist/lib/client-reactivity/submission/createNodeRangeSubmissionState.d.ts +4 -0
  91. package/dist/lib/client-reactivity/submission/createParentNodeSubmissionState.d.ts +4 -0
  92. package/dist/lib/client-reactivity/submission/createRootSubmissionState.d.ts +3 -0
  93. package/dist/lib/client-reactivity/submission/createValueNodeSubmissionState.d.ts +3 -0
  94. package/dist/lib/client-reactivity/submission/prepareSubmission.d.ts +8 -0
  95. package/dist/lib/codecs/DecimalValueCodec.d.ts +6 -0
  96. package/dist/lib/codecs/Geopoint/Geopoint.d.ts +48 -0
  97. package/dist/lib/codecs/Geopoint/GeopointValueCodec.d.ts +5 -0
  98. package/dist/lib/codecs/IntValueCodec.d.ts +6 -0
  99. package/dist/lib/codecs/NoteCodec.d.ts +8 -0
  100. package/dist/lib/codecs/RangeCodec.d.ts +8 -0
  101. package/dist/lib/codecs/StringValueCodec.d.ts +4 -0
  102. package/dist/lib/codecs/TriggerCodec.d.ts +7 -0
  103. package/dist/lib/codecs/ValueArrayCodec.d.ts +11 -0
  104. package/dist/lib/codecs/ValueCodec.d.ts +30 -0
  105. package/dist/lib/codecs/ValueTypePlaceholderCodec.d.ts +12 -0
  106. package/dist/lib/codecs/getNoteCodec.d.ts +3 -0
  107. package/dist/lib/codecs/getSelectCodec.d.ts +5 -0
  108. package/dist/lib/codecs/getSharedValueCodec.d.ts +48 -0
  109. package/dist/lib/codecs/items/BaseItemCodec.d.ts +9 -0
  110. package/dist/lib/codecs/items/MultipleValueItemCodec.d.ts +14 -0
  111. package/dist/lib/codecs/items/SingleValueItemCodec.d.ts +24 -0
  112. package/dist/lib/dom/query.d.ts +4 -2
  113. package/dist/lib/names/NamespaceDeclaration.d.ts +45 -0
  114. package/dist/lib/names/NamespaceDeclarationMap.d.ts +137 -0
  115. package/dist/lib/names/NamespaceURL.d.ts +30 -0
  116. package/dist/lib/names/QualifiedName.d.ts +113 -0
  117. package/dist/lib/number-parsers.d.ts +2 -0
  118. package/dist/lib/reactivity/createChildrenState.d.ts +7 -5
  119. package/dist/lib/reactivity/createComputedExpression.d.ts +18 -5
  120. package/dist/lib/reactivity/createInstanceValueState.d.ts +40 -0
  121. package/dist/lib/reactivity/createItemCollection.d.ts +21 -0
  122. package/dist/lib/reactivity/createNoteReadonlyThunk.d.ts +2 -2
  123. package/dist/lib/reactivity/createTranslationState.d.ts +19 -0
  124. package/dist/lib/reactivity/createValueState.d.ts +6 -10
  125. package/dist/lib/reactivity/materializeCurrentStateChildren.d.ts +4 -4
  126. package/dist/lib/xml-serialization.d.ts +50 -0
  127. package/dist/parse/XFormDOM.d.ts +18 -7
  128. package/dist/parse/XFormDefinition.d.ts +1 -2
  129. package/dist/parse/attachments/FormAttachmentResource.d.ts +27 -0
  130. package/dist/parse/body/BodyDefinition.d.ts +4 -4
  131. package/dist/parse/body/RepeatElementDefinition.d.ts +1 -1
  132. package/dist/parse/body/appearance/inputAppearanceParser.d.ts +1 -1
  133. package/dist/parse/body/appearance/rangeAppearanceParser.d.ts +3 -0
  134. package/dist/parse/body/control/{InputDefinition.d.ts → InputControlDefinition.d.ts} +4 -1
  135. package/dist/parse/body/control/ItemDefinition.d.ts +14 -0
  136. package/dist/parse/body/control/ItemsetDefinition.d.ts +18 -0
  137. package/dist/parse/body/control/RangeControlDefinition.d.ts +31 -2
  138. package/dist/parse/body/control/RankControlDefinition.d.ts +7 -3
  139. package/dist/parse/body/control/{select/SelectDefinition.d.ts → SelectControlDefinition.d.ts} +9 -9
  140. package/dist/parse/expression/ItemsetNodesetExpression.d.ts +1 -1
  141. package/dist/parse/expression/ItemsetValueExpression.d.ts +1 -1
  142. package/dist/parse/expression/abstract/DependencyContext.d.ts +0 -5
  143. package/dist/parse/expression/abstract/DependentExpression.d.ts +2 -3
  144. package/dist/parse/model/BindDefinition.d.ts +6 -5
  145. package/dist/parse/model/BindPreloadDefinition.d.ts +42 -0
  146. package/dist/parse/model/BindTypeDefinition.d.ts +20 -0
  147. package/dist/parse/model/DescendentNodeDefinition.d.ts +4 -14
  148. package/dist/parse/model/FormSubmissionDefinition.d.ts +8 -0
  149. package/dist/parse/model/ItextTranslation/ItextTranslationDefinition.d.ts +4 -0
  150. package/dist/parse/model/ItextTranslation/ItextTranslationRootDefinition.d.ts +9 -0
  151. package/dist/parse/model/ItextTranslation/ItextTranslationsDefinition.d.ts +8 -0
  152. package/dist/parse/model/LeafNodeDefinition.d.ts +9 -4
  153. package/dist/parse/model/ModelBindMap.d.ts +1 -1
  154. package/dist/parse/model/ModelDefinition.d.ts +2 -0
  155. package/dist/parse/model/NodeDefinition.d.ts +16 -20
  156. package/dist/parse/model/NoteNodeDefinition.d.ts +9 -8
  157. package/dist/parse/model/RangeNodeDefinition.d.ts +41 -0
  158. package/dist/parse/model/RepeatInstanceDefinition.d.ts +7 -4
  159. package/dist/parse/model/RepeatRangeDefinition.d.ts +7 -4
  160. package/dist/parse/model/RepeatTemplateDefinition.d.ts +7 -4
  161. package/dist/parse/model/RootAttributeDefinition.d.ts +24 -0
  162. package/dist/parse/model/RootAttributeMap.d.ts +23 -0
  163. package/dist/parse/model/RootDefinition.d.ts +12 -9
  164. package/dist/parse/model/SecondaryInstance/SecondaryInstanceDefinition.d.ts +4 -0
  165. package/dist/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.d.ts +7 -0
  166. package/dist/parse/model/SecondaryInstance/SecondaryInstancesDefinition.d.ts +13 -0
  167. package/dist/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.d.ts +14 -0
  168. package/dist/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.d.ts +22 -0
  169. package/dist/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.d.ts +23 -0
  170. package/dist/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceSource.d.ts +9 -0
  171. package/dist/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.d.ts +5 -0
  172. package/dist/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.d.ts +7 -0
  173. package/dist/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.d.ts +13 -0
  174. package/dist/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.d.ts +12 -0
  175. package/dist/parse/model/SubtreeDefinition.d.ts +7 -4
  176. package/dist/parse/shared/parseStaticDocumentFromDOMSubtree.d.ts +23 -0
  177. package/dist/parse/text/ItemLabelDefinition.d.ts +1 -1
  178. package/dist/parse/text/ItemsetLabelDefinition.d.ts +2 -2
  179. package/dist/parse/text/abstract/TextElementDefinition.d.ts +1 -1
  180. package/dist/parse/text/abstract/TextRangeDefinition.d.ts +0 -2
  181. package/dist/parse/xpath/semantic-analysis.d.ts +6 -3
  182. package/dist/solid.js +15437 -12246
  183. package/dist/solid.js.map +1 -1
  184. package/package.json +18 -13
  185. package/src/client/BaseNode.ts +21 -6
  186. package/src/client/BaseValueNode.ts +35 -0
  187. package/src/client/EngineConfig.ts +52 -51
  188. package/src/client/GroupNode.ts +1 -0
  189. package/src/client/InputNode.ts +113 -0
  190. package/src/client/ModelValueNode.ts +31 -7
  191. package/src/client/NoteNode.ts +45 -9
  192. package/src/client/RangeNode.ts +51 -0
  193. package/src/client/RankNode.ts +54 -0
  194. package/src/client/RootNode.ts +43 -7
  195. package/src/client/SelectNode.ts +53 -26
  196. package/src/client/SubtreeNode.ts +1 -0
  197. package/src/client/TriggerNode.ts +12 -6
  198. package/src/client/ValueType.ts +4 -0
  199. package/src/client/constants.ts +67 -0
  200. package/src/client/hierarchy.ts +12 -13
  201. package/src/client/identity.ts +16 -0
  202. package/src/client/node-types.ts +13 -7
  203. package/src/client/resources.ts +118 -0
  204. package/src/client/submission/SubmissionData.ts +12 -0
  205. package/src/client/submission/SubmissionDefinition.ts +16 -0
  206. package/src/client/submission/SubmissionInstanceFile.ts +9 -0
  207. package/src/client/submission/SubmissionOptions.ts +28 -0
  208. package/src/client/submission/SubmissionResult.ts +124 -0
  209. package/src/client/submission/SubmissionState.ts +14 -0
  210. package/src/client/unsupported/UnsupportedControlNode.ts +2 -6
  211. package/src/client/validation.ts +2 -2
  212. package/src/error/ErrorProductionDesignPendingError.ts +6 -0
  213. package/src/error/RankMissingValueError.ts +5 -0
  214. package/src/error/RankValueTypeError.ts +13 -0
  215. package/src/error/SelectValueTypeError.ts +22 -0
  216. package/src/error/ValueTypeInvariantError.ts +22 -0
  217. package/src/error/XFormsSpecViolationError.ts +1 -0
  218. package/src/error/XPathFunctionalityError.ts +26 -0
  219. package/src/error/XPathFunctionalityNotSupportedError.ts +18 -0
  220. package/src/error/XPathFunctionalityPendingError.ts +18 -0
  221. package/src/index.ts +12 -13
  222. package/src/instance/Group.ts +18 -5
  223. package/src/instance/InputControl.ts +159 -0
  224. package/src/instance/ModelValue.ts +48 -53
  225. package/src/instance/Note.ts +40 -49
  226. package/src/instance/PrimaryInstance.ts +245 -0
  227. package/src/instance/RangeControl.ts +113 -0
  228. package/src/instance/RankControl.ts +199 -0
  229. package/src/instance/Root.ts +63 -134
  230. package/src/instance/SelectControl.ts +219 -0
  231. package/src/instance/Subtree.ts +20 -7
  232. package/src/instance/TriggerControl.ts +44 -66
  233. package/src/instance/abstract/DescendantNode.ts +91 -51
  234. package/src/instance/abstract/InstanceNode.ts +113 -107
  235. package/src/instance/abstract/UnsupportedControl.ts +29 -5
  236. package/src/instance/abstract/ValueNode.ts +128 -0
  237. package/src/instance/children.ts +80 -40
  238. package/src/instance/hierarchy.ts +39 -30
  239. package/src/instance/identity.ts +3 -9
  240. package/src/instance/index.ts +25 -7
  241. package/src/instance/internal-api/EvaluationContext.ts +60 -13
  242. package/src/instance/internal-api/InstanceConfig.ts +9 -2
  243. package/src/instance/internal-api/InstanceValueContext.ts +26 -0
  244. package/src/instance/internal-api/PrimaryInstanceDocument.ts +53 -0
  245. package/src/instance/internal-api/TranslationContext.ts +3 -2
  246. package/src/instance/internal-api/ValidationContext.ts +3 -4
  247. package/src/instance/internal-api/ValueContext.ts +2 -1
  248. package/src/instance/internal-api/submission/ClientReactiveSubmittableInstance.ts +20 -0
  249. package/src/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.ts +43 -0
  250. package/src/instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts +26 -0
  251. package/src/instance/internal-api/submission/ClientReactiveSubmittableValueNode.ts +24 -0
  252. package/src/instance/repeat/BaseRepeatRange.ts +52 -131
  253. package/src/instance/repeat/RepeatInstance.ts +21 -46
  254. package/src/instance/repeat/RepeatRangeControlled.ts +5 -5
  255. package/src/instance/repeat/RepeatRangeUncontrolled.ts +2 -4
  256. package/src/instance/resource.ts +5 -2
  257. package/src/instance/text/TextChunk.ts +1 -1
  258. package/src/instance/unsupported/UploadControl.ts +5 -1
  259. package/src/integration/xpath/EngineXPathEvaluator.ts +22 -0
  260. package/src/integration/xpath/adapter/XFormsXPathNode.ts +126 -0
  261. package/src/integration/xpath/adapter/engineDOMAdapter.ts +57 -0
  262. package/src/integration/xpath/adapter/kind.ts +114 -0
  263. package/src/integration/xpath/adapter/names.ts +148 -0
  264. package/src/integration/xpath/adapter/traversal.ts +229 -0
  265. package/src/integration/xpath/adapter/values.ts +5 -0
  266. package/src/integration/xpath/static-dom/StaticAttribute.ts +41 -0
  267. package/src/integration/xpath/static-dom/StaticDocument.ts +36 -0
  268. package/src/integration/xpath/static-dom/StaticElement.ts +119 -0
  269. package/src/integration/xpath/static-dom/StaticNode.ts +68 -0
  270. package/src/integration/xpath/static-dom/StaticText.ts +28 -0
  271. package/src/lib/client-reactivity/README.md +0 -0
  272. package/src/lib/client-reactivity/submission/createInstanceSubmissionState.ts +12 -0
  273. package/src/lib/client-reactivity/submission/createLeafNodeSubmissionState.ts +20 -0
  274. package/src/lib/client-reactivity/submission/createNodeRangeSubmissionState.ts +17 -0
  275. package/src/lib/client-reactivity/submission/createParentNodeSubmissionState.ts +22 -0
  276. package/src/lib/client-reactivity/submission/createRootSubmissionState.ts +19 -0
  277. package/src/lib/client-reactivity/submission/createValueNodeSubmissionState.ts +21 -0
  278. package/src/lib/client-reactivity/submission/prepareSubmission.ts +172 -0
  279. package/src/lib/codecs/DecimalValueCodec.ts +46 -0
  280. package/src/lib/codecs/Geopoint/Geopoint.ts +150 -0
  281. package/src/lib/codecs/Geopoint/GeopointValueCodec.ts +20 -0
  282. package/src/lib/codecs/IntValueCodec.ts +100 -0
  283. package/src/lib/codecs/NoteCodec.ts +32 -0
  284. package/src/lib/codecs/RangeCodec.ts +65 -0
  285. package/src/lib/codecs/StringValueCodec.ts +11 -0
  286. package/src/lib/codecs/TriggerCodec.ts +64 -0
  287. package/src/lib/codecs/ValueArrayCodec.ts +42 -0
  288. package/src/lib/codecs/ValueCodec.ts +106 -0
  289. package/src/lib/codecs/ValueTypePlaceholderCodec.ts +19 -0
  290. package/src/lib/codecs/getNoteCodec.ts +27 -0
  291. package/src/lib/codecs/getSelectCodec.ts +27 -0
  292. package/src/lib/codecs/getSharedValueCodec.ts +79 -0
  293. package/src/lib/codecs/items/BaseItemCodec.ts +20 -0
  294. package/src/lib/codecs/items/MultipleValueItemCodec.ts +28 -0
  295. package/src/lib/codecs/items/SingleValueItemCodec.ts +67 -0
  296. package/src/lib/dom/query.ts +8 -2
  297. package/src/lib/names/NamespaceDeclaration.ts +106 -0
  298. package/src/lib/names/NamespaceDeclarationMap.ts +228 -0
  299. package/src/lib/names/NamespaceURL.ts +44 -0
  300. package/src/lib/names/QualifiedName.ts +170 -0
  301. package/src/lib/number-parsers.ts +25 -0
  302. package/src/lib/reactivity/createChildrenState.ts +8 -6
  303. package/src/lib/reactivity/createComputedExpression.ts +57 -34
  304. package/src/lib/reactivity/createInstanceValueState.ts +216 -0
  305. package/src/lib/reactivity/createItemCollection.ts +173 -0
  306. package/src/lib/reactivity/createNoteReadonlyThunk.ts +12 -7
  307. package/src/lib/reactivity/createTranslationState.ts +61 -0
  308. package/src/lib/reactivity/createValueState.ts +62 -120
  309. package/src/lib/reactivity/materializeCurrentStateChildren.ts +7 -7
  310. package/src/lib/reactivity/text/createTextRange.ts +4 -3
  311. package/src/lib/reactivity/validation/createAggregatedViolations.ts +1 -1
  312. package/src/lib/reactivity/validation/createValidation.ts +2 -3
  313. package/src/lib/xml-serialization.ts +163 -0
  314. package/src/parse/XFormDOM.ts +231 -76
  315. package/src/parse/XFormDefinition.ts +2 -10
  316. package/src/parse/attachments/FormAttachmentResource.ts +40 -0
  317. package/src/parse/body/BodyDefinition.ts +7 -7
  318. package/src/parse/body/appearance/inputAppearanceParser.ts +1 -1
  319. package/src/parse/body/appearance/rangeAppearanceParser.ts +11 -0
  320. package/src/parse/body/control/InputControlDefinition.ts +29 -0
  321. package/src/parse/body/control/{select/ItemDefinition.ts → ItemDefinition.ts} +8 -6
  322. package/src/parse/body/control/{select/ItemsetDefinition.ts → ItemsetDefinition.ts} +11 -9
  323. package/src/parse/body/control/RangeControlDefinition.ts +91 -6
  324. package/src/parse/body/control/RankControlDefinition.ts +25 -7
  325. package/src/parse/body/control/{select/SelectDefinition.ts → SelectControlDefinition.ts} +9 -9
  326. package/src/parse/expression/ItemsetNodesetExpression.ts +1 -1
  327. package/src/parse/expression/ItemsetValueExpression.ts +1 -1
  328. package/src/parse/expression/abstract/DependencyContext.ts +0 -26
  329. package/src/parse/expression/abstract/DependentExpression.ts +2 -13
  330. package/src/parse/model/BindDefinition.ts +9 -8
  331. package/src/parse/model/BindPreloadDefinition.ts +100 -0
  332. package/src/parse/model/BindTypeDefinition.ts +175 -0
  333. package/src/parse/model/DescendentNodeDefinition.ts +7 -31
  334. package/src/parse/model/FormSubmissionDefinition.ts +44 -0
  335. package/src/parse/model/ItextTranslation/ItextTranslationDefinition.ts +4 -0
  336. package/src/parse/model/ItextTranslation/ItextTranslationRootDefinition.ts +42 -0
  337. package/src/parse/model/ItextTranslation/ItextTranslationsDefinition.ts +31 -0
  338. package/src/parse/model/LeafNodeDefinition.ts +15 -5
  339. package/src/parse/model/ModelBindMap.ts +6 -8
  340. package/src/parse/model/ModelDefinition.ts +6 -1
  341. package/src/parse/model/NodeDefinition.ts +24 -48
  342. package/src/parse/model/NoteNodeDefinition.ts +11 -10
  343. package/src/parse/model/RangeNodeDefinition.ts +118 -0
  344. package/src/parse/model/RepeatInstanceDefinition.ts +11 -7
  345. package/src/parse/model/RepeatRangeDefinition.ts +11 -7
  346. package/src/parse/model/RepeatTemplateDefinition.ts +11 -7
  347. package/src/parse/model/RootAttributeDefinition.ts +45 -0
  348. package/src/parse/model/RootAttributeMap.ts +44 -0
  349. package/src/parse/model/RootDefinition.ts +31 -29
  350. package/src/parse/model/SecondaryInstance/SecondaryInstanceDefinition.ts +4 -0
  351. package/src/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.ts +12 -0
  352. package/src/parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts +102 -0
  353. package/src/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.ts +40 -0
  354. package/src/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.ts +288 -0
  355. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.ts +222 -0
  356. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceSource.ts +22 -0
  357. package/src/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.ts +415 -0
  358. package/src/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.ts +19 -0
  359. package/src/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.ts +29 -0
  360. package/src/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.ts +32 -0
  361. package/src/parse/model/SubtreeDefinition.ts +12 -12
  362. package/src/parse/shared/parseStaticDocumentFromDOMSubtree.ts +149 -0
  363. package/src/parse/text/ItemLabelDefinition.ts +1 -1
  364. package/src/parse/text/ItemsetLabelDefinition.ts +2 -2
  365. package/src/parse/text/abstract/TextElementDefinition.ts +1 -1
  366. package/src/parse/text/abstract/TextRangeDefinition.ts +0 -6
  367. package/src/parse/xpath/semantic-analysis.ts +33 -3
  368. package/dist/client/StringNode.d.ts +0 -46
  369. package/dist/client/unsupported/RangeNode.d.ts +0 -9
  370. package/dist/client/unsupported/RankNode.d.ts +0 -9
  371. package/dist/instance/SelectField.d.ts +0 -50
  372. package/dist/instance/StringField.d.ts +0 -44
  373. package/dist/instance/internal-api/SubscribableDependency.d.ts +0 -59
  374. package/dist/instance/unsupported/RangeControl.d.ts +0 -4
  375. package/dist/instance/unsupported/RankControl.d.ts +0 -4
  376. package/dist/lib/reactivity/createSelectItems.d.ts +0 -16
  377. package/dist/parse/XFormDataType.d.ts +0 -25
  378. package/dist/parse/body/control/select/ItemDefinition.d.ts +0 -13
  379. package/dist/parse/body/control/select/ItemsetDefinition.d.ts +0 -17
  380. package/dist/parse/body/control/select/ItemsetNodesetContext.d.ts +0 -11
  381. package/src/client/StringNode.ts +0 -52
  382. package/src/client/unsupported/RangeNode.ts +0 -14
  383. package/src/client/unsupported/RankNode.ts +0 -14
  384. package/src/instance/SelectField.ts +0 -226
  385. package/src/instance/StringField.ts +0 -120
  386. package/src/instance/internal-api/SubscribableDependency.ts +0 -61
  387. package/src/instance/unsupported/RangeControl.ts +0 -5
  388. package/src/instance/unsupported/RankControl.ts +0 -5
  389. package/src/lib/reactivity/createSelectItems.ts +0 -168
  390. package/src/parse/XFormDataType.ts +0 -62
  391. package/src/parse/body/control/InputDefinition.ts +0 -22
  392. package/src/parse/body/control/select/ItemsetNodesetContext.ts +0 -26
@@ -1,11 +1,15 @@
1
1
  import { XFormDefinition } from '../../XFormDefinition.ts';
2
- import { UnknownAppearanceDefinition } from '../appearance/unknownAppearanceParser.ts';
3
2
  import { BodyElementParentContext } from '../BodyDefinition.ts';
4
3
  import { ControlDefinition } from './ControlDefinition.ts';
4
+ import { ItemsetDefinition } from './ItemsetDefinition.ts';
5
+ import { ItemDefinition } from './ItemDefinition.ts';
6
+ import { UnknownAppearanceDefinition } from '../appearance/unknownAppearanceParser.ts';
5
7
  export declare class RankControlDefinition extends ControlDefinition<'rank'> {
6
- static isCompatible(localName: string, element: Element): boolean;
8
+ static isCompatible(localName: string): boolean;
7
9
  readonly type = "rank";
8
10
  readonly appearances: UnknownAppearanceDefinition;
11
+ readonly itemset: ItemsetDefinition | null;
12
+ readonly items: readonly ItemDefinition[];
9
13
  constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
10
- toJSON(): object;
14
+ toJSON(): {};
11
15
  }
@@ -1,18 +1,18 @@
1
- import { CollectionValues } from '../../../../../../common/types/collections/CollectionValues.ts';
2
- import { LocalNamedElement } from '../../../../../../common/types/dom.ts';
3
- import { XFormDefinition } from '../../../XFormDefinition.ts';
4
- import { SelectAppearanceDefinition } from '../../appearance/selectAppearanceParser.ts';
5
- import { AnyBodyElementDefinition, BodyElementParentContext } from '../../BodyDefinition.ts';
6
- import { ControlDefinition } from '../ControlDefinition.ts';
1
+ import { CollectionValues } from '../../../../../common/types/collections/CollectionValues.ts';
2
+ import { LocalNamedElement } from '../../../../../common/types/dom.ts';
3
+ import { XFormDefinition } from '../../XFormDefinition.ts';
4
+ import { SelectAppearanceDefinition } from '../appearance/selectAppearanceParser.ts';
5
+ import { AnyBodyElementDefinition, BodyElementParentContext } from '../BodyDefinition.ts';
6
+ import { ControlDefinition } from './ControlDefinition.ts';
7
7
  import { ItemDefinition } from './ItemDefinition.ts';
8
8
  import { ItemsetDefinition } from './ItemsetDefinition.ts';
9
9
  declare const selectLocalNames: Set<"select" | "select1">;
10
10
  export type SelectType = CollectionValues<typeof selectLocalNames>;
11
11
  export interface SelectElement extends LocalNamedElement<SelectType> {
12
12
  }
13
- export declare class SelectDefinition<Type extends SelectType> extends ControlDefinition<Type> {
13
+ export declare class SelectControlDefinition<Type extends SelectType> extends ControlDefinition<Type> {
14
14
  static isCompatible(localName: string, element: Element): boolean;
15
- static isSelect(element: AnyBodyElementDefinition): element is AnySelectDefinition;
15
+ static isSelect(element: AnyBodyElementDefinition): element is AnySelectControlDefinition;
16
16
  readonly type: Type;
17
17
  readonly element: SelectElement;
18
18
  readonly appearances: SelectAppearanceDefinition;
@@ -21,5 +21,5 @@ export declare class SelectDefinition<Type extends SelectType> extends ControlDe
21
21
  constructor(form: XFormDefinition, parent: BodyElementParentContext, element: Element);
22
22
  toJSON(): {};
23
23
  }
24
- export type AnySelectDefinition = SelectDefinition<SelectType>;
24
+ export type AnySelectControlDefinition = SelectControlDefinition<SelectType>;
25
25
  export {};
@@ -1,4 +1,4 @@
1
- import { ItemsetDefinition } from '../body/control/select/ItemsetDefinition.ts';
1
+ import { ItemsetDefinition } from '../body/control/ItemsetDefinition.ts';
2
2
  import { DependentExpression } from './abstract/DependentExpression.ts';
3
3
  export declare class ItemsetNodesetExpression extends DependentExpression<'nodes'> {
4
4
  constructor(itemset: ItemsetDefinition, nodesetExpression: string);
@@ -1,4 +1,4 @@
1
- import { ItemsetDefinition } from '../body/control/select/ItemsetDefinition.ts';
1
+ import { ItemsetDefinition } from '../body/control/ItemsetDefinition.ts';
2
2
  import { DependentExpression } from './abstract/DependentExpression.ts';
3
3
  export declare class ItemsetValueExpression extends DependentExpression<'string'> {
4
4
  readonly itemset: ItemsetDefinition;
@@ -1,12 +1,7 @@
1
- import { AnyDependentExpression } from './DependentExpression.ts';
2
1
  export declare abstract class DependencyContext {
3
2
  abstract get parentReference(): string | null;
4
3
  abstract get reference(): string | null;
5
- protected readonly dependentExpressions: Set<AnyDependentExpression>;
6
- protected dependencyExpressionsCache: ReadonlySet<string> | null;
7
- get dependencyExpressions(): ReadonlySet<string>;
8
4
  get isTranslated(): boolean;
9
5
  set isTranslated(value: true);
10
6
  protected _isTranslated: boolean;
11
- registerDependentExpression(expression: AnyDependentExpression): void;
12
7
  }
@@ -1,4 +1,4 @@
1
- import { XFormsXPathEvaluator } from '@getodk/xpath';
1
+ import { EngineXPathEvaluator } from '../../../integration/xpath/EngineXPathEvaluator.ts';
2
2
  import { ConstantExpression, ConstantTruthyExpression } from '../../xpath/semantic-analysis.ts';
3
3
  import { DependencyContext } from './DependencyContext.ts';
4
4
  declare const evaluatorMethodsByResultType: {
@@ -10,7 +10,7 @@ declare const evaluatorMethodsByResultType: {
10
10
  type EvaluatorMethodsByResultType = typeof evaluatorMethodsByResultType;
11
11
  export type DependentExpressionResultType = keyof EvaluatorMethodsByResultType;
12
12
  export type DependentExpressionEvaluatorMethod<Type extends DependentExpressionResultType> = EvaluatorMethodsByResultType[Type];
13
- export type DependentExpressionResult<Type extends DependentExpressionResultType> = ReturnType<XFormsXPathEvaluator[DependentExpressionEvaluatorMethod<Type>]>;
13
+ export type DependentExpressionResult<Type extends DependentExpressionResultType> = ReturnType<EngineXPathEvaluator[DependentExpressionEvaluatorMethod<Type>]>;
14
14
  interface SemanticDependencyOptions {
15
15
  /**
16
16
  * @default false
@@ -33,7 +33,6 @@ export interface ConstantTruthyDependentExpression extends ConstantDependentExpr
33
33
  export declare abstract class DependentExpression<Type extends DependentExpressionResultType> {
34
34
  readonly resultType: Type;
35
35
  readonly expression: string;
36
- readonly dependencyReferences: ReadonlySet<string>;
37
36
  readonly isTranslated: boolean;
38
37
  readonly evaluatorMethod: DependentExpressionEvaluatorMethod<Type>;
39
38
  readonly constantExpression: ConstantExpression | null;
@@ -1,18 +1,19 @@
1
1
  import { DependencyContext } from '../expression/abstract/DependencyContext.ts';
2
2
  import { BindComputationExpression } from '../expression/BindComputationExpression.ts';
3
3
  import { MessageDefinition } from '../text/MessageDefinition.ts';
4
- import { XFormDataType } from '../XFormDataType.ts';
5
4
  import { XFormDefinition } from '../XFormDefinition.ts';
6
5
  import { BindElement } from './BindElement.ts';
6
+ import { AnyBindPreloadDefinition } from './BindPreloadDefinition.ts';
7
+ import { BindType, BindTypeDefinition } from './BindTypeDefinition.ts';
7
8
  import { ModelDefinition } from './ModelDefinition.ts';
8
- export declare class BindDefinition extends DependencyContext {
9
+ export declare class BindDefinition<T extends BindType = BindType> extends DependencyContext {
9
10
  readonly form: XFormDefinition;
10
11
  protected readonly model: ModelDefinition;
11
12
  readonly nodeset: string;
12
13
  readonly bindElement: BindElement;
13
- readonly bindType: string | null;
14
- readonly dataType: XFormDataType;
14
+ readonly type: BindTypeDefinition<T>;
15
15
  readonly parentNodeset: string | null;
16
+ readonly preload: AnyBindPreloadDefinition | null;
16
17
  readonly calculate: BindComputationExpression<'calculate'> | null;
17
18
  readonly readonly: BindComputationExpression<'readonly'>;
18
19
  readonly relevant: BindComputationExpression<'relevant'>;
@@ -35,5 +36,5 @@ export declare class BindDefinition extends DependencyContext {
35
36
  get reference(): string;
36
37
  get parentReference(): string | null;
37
38
  constructor(form: XFormDefinition, model: ModelDefinition, nodeset: string, bindElement: BindElement);
38
- toJSON(): Omit<this, "reference" | "form" | "isTranslated" | "parentReference" | "toJSON" | "dependencyExpressions" | "registerDependentExpression" | "model" | "bindElement" | "parentBind">;
39
+ toJSON(): Omit<this, "form" | "model" | "toJSON" | "reference" | "isTranslated" | "parentReference" | "bindElement" | "parentBind">;
39
40
  }
@@ -0,0 +1,42 @@
1
+ import { PartiallyKnownString } from '../../../../common/types/string/PartiallyKnownString.ts';
2
+ import { BindElement } from './BindElement.ts';
3
+ type PartiallyKnownPreloadParameter<Known extends string> = PartiallyKnownString<NonNullable<Known>> | Extract<Known, null>;
4
+ interface PreloadParametersByType {
5
+ readonly uid: string | null;
6
+ readonly date: PartiallyKnownPreloadParameter<'today'>;
7
+ readonly timestamp: PartiallyKnownPreloadParameter<'end' | 'start'>;
8
+ readonly property: PartiallyKnownPreloadParameter<'deviceid' | 'email' | 'phonenumber' | 'username'>;
9
+ }
10
+ type PreloadType = PartiallyKnownString<keyof PreloadParametersByType>;
11
+ type PreloadParameter<Type extends PreloadType> = Type extends keyof PreloadParametersByType ? PreloadParametersByType[Type] : string | null;
12
+ interface PreloadInput<Type extends PreloadType> {
13
+ readonly type: Type;
14
+ readonly parameter: PreloadParameter<Type>;
15
+ }
16
+ /**
17
+ * Parsed representation of
18
+ * {@link https://getodk.github.io/xforms-spec/#preload-attributes | Preload Attributes}.
19
+ * If specified on a
20
+ * {@link https://getodk.github.io/xforms-spec/#bindings | binding}, this will
21
+ * be parsed to define:
22
+ *
23
+ * - {@link type}, a `jr:preload`
24
+ * - {@link parameter}, an associated `jr:preloadParams` value
25
+ *
26
+ * @todo It would probably make sense for the _definition_ to also convey:
27
+ *
28
+ * 1. Which {@link https://getodk.github.io/xforms-spec/#events | event} the
29
+ * preload is semantically associated with (noting that the spec may be a tad
30
+ * overzealous about this association).
31
+ *
32
+ * 2. The constant XPath expression (or other computation?) expressed by the
33
+ * combined {@link type} and {@link parameter}.
34
+ */
35
+ export declare class BindPreloadDefinition<Type extends PreloadType> implements PreloadInput<Type> {
36
+ static from(bindElement: BindElement): AnyBindPreloadDefinition | null;
37
+ readonly type: Type;
38
+ readonly parameter: PreloadParameter<Type>;
39
+ private constructor();
40
+ }
41
+ export type AnyBindPreloadDefinition = BindPreloadDefinition<'uid'> | BindPreloadDefinition<'timestamp'> | BindPreloadDefinition<'property'> | BindPreloadDefinition<string>;
42
+ export {};
@@ -0,0 +1,20 @@
1
+ import { BindElement } from './BindElement.ts';
2
+ /**
3
+ * As specified by {@link https://getodk.github.io/xforms-spec/#bind-attributes}
4
+ */
5
+ export declare const DEFAULT_BIND_TYPE = "string";
6
+ export type DefaultBindType = typeof DEFAULT_BIND_TYPE;
7
+ /**
8
+ * As specified by {@link https://getodk.github.io/xforms-spec/#data-types}
9
+ */
10
+ declare const BIND_TYPES: readonly ["string", "int", "boolean", "decimal", "date", "time", "dateTime", "geopoint", "geotrace", "geoshape", "binary", "barcode", "intent"];
11
+ type BindTypes = typeof BIND_TYPES;
12
+ export type BindType = BindTypes[number];
13
+ export declare class BindTypeDefinition<T extends BindType = BindType> {
14
+ readonly source: string | null;
15
+ readonly resolved: T;
16
+ static from<T extends BindType>(bindElement: BindElement): BindTypeDefinition<T>;
17
+ private constructor();
18
+ private constructor();
19
+ }
20
+ export {};
@@ -1,24 +1,14 @@
1
1
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
2
  import { BindDefinition } from './BindDefinition.ts';
3
- import { ModelNode, NodeChildren, NodeDefaultValue, NodeDefinition, NodeDefinitionType, NodeInstances, NodeParent } from './NodeDefinition.ts';
3
+ import { NodeDefinitionType, ParentNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
4
4
  import { RootDefinition } from './RootDefinition.ts';
5
5
  export type DescendentNodeType = Exclude<NodeDefinitionType, 'root'>;
6
6
  type DescendentNodeBodyElement = AnyBodyElementDefinition;
7
- export declare abstract class DescendentNodeDefinition<Type extends DescendentNodeType, BodyElement extends DescendentNodeBodyElement | null = DescendentNodeBodyElement | null> implements NodeDefinition<Type> {
8
- readonly parent: NodeParent<Type>;
9
- readonly bind: BindDefinition;
7
+ export declare abstract class DescendentNodeDefinition<Type extends DescendentNodeType, BodyElement extends DescendentNodeBodyElement | null = DescendentNodeBodyElement | null> extends NodeDefinition<Type> {
8
+ readonly parent: ParentNodeDefinition;
10
9
  readonly bodyElement: BodyElement;
11
- abstract readonly type: Type;
12
- abstract readonly children: NodeChildren<Type>;
13
- abstract readonly instances: NodeInstances<Type>;
14
- abstract readonly defaultValue: NodeDefaultValue<Type>;
15
- abstract readonly node: ModelNode<Type>;
16
- abstract readonly nodeName: string;
17
10
  readonly root: RootDefinition;
18
- readonly nodeset: string;
19
- readonly dependencyExpressions: ReadonlySet<string>;
20
11
  readonly isTranslated: boolean;
21
- constructor(parent: NodeParent<Type>, bind: BindDefinition, bodyElement: BodyElement);
12
+ constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: BodyElement);
22
13
  }
23
- export type AnyDescendantNodeDefinition = DescendentNodeDefinition<any, any>;
24
14
  export {};
@@ -0,0 +1,8 @@
1
+ import { SubmissionDefinition } from '../../client/submission/SubmissionDefinition.ts';
2
+ import { XFormDOM } from '../XFormDOM.ts';
3
+ export declare class FormSubmissionDefinition implements SubmissionDefinition {
4
+ readonly submissionAction: URL | null;
5
+ readonly submissionMethod = "post";
6
+ readonly encryptionKey: string | null;
7
+ constructor(xformDOM: XFormDOM);
8
+ }
@@ -0,0 +1,4 @@
1
+ import { StaticDocument } from '../../../integration/xpath/static-dom/StaticDocument.ts';
2
+ import { ItextTranslationRootDefinition } from './ItextTranslationRootDefinition.ts';
3
+ export declare class ItextTranslationDefinition extends StaticDocument<ItextTranslationRootDefinition> {
4
+ }
@@ -0,0 +1,9 @@
1
+ import { XFormsItextTranslationElement, XFORMS_KNOWN_ATTRIBUTE, XFORMS_LOCAL_NAME } from '@getodk/xpath';
2
+ import { StaticElement } from '../../../integration/xpath/static-dom/StaticElement.ts';
3
+ import { ItextTranslationDefinition } from './ItextTranslationDefinition.ts';
4
+ export declare class ItextTranslationRootDefinition extends StaticElement<ItextTranslationDefinition> implements XFormsItextTranslationElement<ItextTranslationRootDefinition> {
5
+ readonly [XFORMS_LOCAL_NAME] = "translation";
6
+ readonly [XFORMS_KNOWN_ATTRIBUTE] = "lang";
7
+ getAttributeValue(localName: 'lang'): string;
8
+ getAttributeValue(localName: string): string | null;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { XFormsItextTranslationMap } from '@getodk/xpath';
2
+ import { EngineXPathNode } from '../../../integration/xpath/adapter/kind.ts';
3
+ import { XFormDOM } from '../../XFormDOM.ts';
4
+ import { ItextTranslationRootDefinition } from './ItextTranslationRootDefinition.ts';
5
+ export declare class ItextTranslationsDefinition extends Map<string, ItextTranslationRootDefinition> implements XFormsItextTranslationMap<EngineXPathNode> {
6
+ static from(xformDOM: XFormDOM): ItextTranslationsDefinition;
7
+ private constructor();
8
+ }
@@ -1,14 +1,19 @@
1
+ import { ValueType } from '../../client/ValueType.ts';
2
+ import { NamespaceDeclarationMap, NamedSubtreeDefinition } from '../../lib/names/NamespaceDeclarationMap.ts';
3
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
1
4
  import { AnyBodyElementDefinition, ControlElementDefinition } from '../body/BodyDefinition.ts';
2
5
  import { BindDefinition } from './BindDefinition.ts';
3
6
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
- import { NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
5
- export declare class LeafNodeDefinition extends DescendentNodeDefinition<'leaf-node', ControlElementDefinition | null> implements NodeDefinition<'leaf-node'> {
7
+ import { ParentNodeDefinition } from './NodeDefinition.ts';
8
+ export declare class LeafNodeDefinition<V extends ValueType = ValueType> extends DescendentNodeDefinition<'leaf-node', ControlElementDefinition | null> implements NamedSubtreeDefinition {
6
9
  readonly node: Element;
7
10
  readonly type = "leaf-node";
8
- readonly nodeName: string;
11
+ readonly valueType: V;
12
+ readonly namespaceDeclarations: NamespaceDeclarationMap;
13
+ readonly qualifiedName: QualifiedName;
9
14
  readonly children: null;
10
15
  readonly instances: null;
11
16
  readonly defaultValue: string;
12
17
  constructor(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, node: Element);
13
- toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
18
+ toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement">;
14
19
  }
@@ -10,6 +10,6 @@ export declare class ModelBindMap extends Map<BindNodeset, BindDefinition> {
10
10
  static fromModel(model: ModelDefinition): ModelBindMap;
11
11
  protected constructor(form: XFormDefinition, model: ModelDefinition);
12
12
  getOrCreateBindDefinition(nodeset: string): BindDefinition;
13
- toJSON(): [string, BindDefinition][];
13
+ toJSON(): [string, BindDefinition<"string" | "boolean" | "time" | "barcode" | "binary" | "date" | "dateTime" | "decimal" | "geopoint" | "geoshape" | "geotrace" | "int" | "intent">][];
14
14
  }
15
15
  export {};
@@ -1,10 +1,12 @@
1
1
  import { XFormDefinition } from '../XFormDefinition.ts';
2
+ import { ItextTranslationsDefinition } from './ItextTranslation/ItextTranslationsDefinition.ts';
2
3
  import { ModelBindMap } from './ModelBindMap.ts';
3
4
  import { RootDefinition } from './RootDefinition.ts';
4
5
  export declare class ModelDefinition {
5
6
  readonly form: XFormDefinition;
6
7
  readonly binds: ModelBindMap;
7
8
  readonly root: RootDefinition;
9
+ readonly itextTranslations: ItextTranslationsDefinition;
8
10
  constructor(form: XFormDefinition);
9
11
  toJSON(): Omit<this, "form" | "toJSON">;
10
12
  }
@@ -1,3 +1,5 @@
1
+ import { NamedSubtreeDefinition, NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
2
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
1
3
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
4
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
3
5
  import { BindDefinition } from './BindDefinition.ts';
@@ -48,27 +50,21 @@ export type NodeDefinitionType = RootNodeType | RepeatRangeType | RepeatTemplate
48
50
  export type ParentNodeDefinition = RootDefinition | RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition;
49
51
  export type ChildNodeDefinition = AnyRepeatRangeDefinition | LeafNodeDefinition | SubtreeDefinition;
50
52
  export type ChildNodeInstanceDefinition = RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition | LeafNodeDefinition;
51
- export type NodeChildren<Type extends NodeDefinitionType> = Type extends ParentNodeDefinition['type'] ? readonly ChildNodeDefinition[] : null;
52
- export type NodeInstances<Type extends NodeDefinitionType> = Type extends 'repeat-range' ? readonly RepeatInstanceDefinition[] : null;
53
- export type NodeParent<Type extends NodeDefinitionType> = Type extends ChildNodeDefinition['type'] | ChildNodeInstanceDefinition['type'] ? ParentNodeDefinition : null;
54
- export type ModelNode<Type extends NodeDefinitionType> = Type extends 'repeat-range' ? null : Element;
55
- export type NodeDefaultValue<Type extends NodeDefinitionType> = Type extends 'leaf-node' ? string : null;
56
- export interface NodeDefinition<Type extends NodeDefinitionType> {
57
- readonly type: Type;
53
+ export declare abstract class NodeDefinition<Type extends NodeDefinitionType> implements NamedSubtreeDefinition {
58
54
  readonly bind: BindDefinition;
55
+ abstract readonly type: Type;
56
+ abstract readonly namespaceDeclarations: NamespaceDeclarationMap;
57
+ abstract readonly qualifiedName: QualifiedName;
58
+ abstract readonly bodyElement: AnyBodyElementDefinition | RepeatElementDefinition | null;
59
+ abstract readonly isTranslated: boolean;
60
+ abstract readonly root: RootDefinition;
61
+ abstract readonly parent: ParentNodeDefinition | null;
62
+ abstract readonly children: readonly ChildNodeDefinition[] | null;
63
+ abstract readonly instances: readonly RepeatInstanceDefinition[] | null;
64
+ abstract readonly defaultValue: string | null;
65
+ /** @todo leaf-node may be Attr */
66
+ abstract readonly node: Element | null;
59
67
  readonly nodeset: string;
60
- readonly nodeName: string;
61
- readonly bodyElement: AnyBodyElementDefinition | RepeatElementDefinition | null;
62
- readonly isTranslated: boolean;
63
- readonly dependencyExpressions: ReadonlySet<string>;
64
- readonly root: RootDefinition;
65
- readonly parent: NodeParent<Type>;
66
- readonly children: NodeChildren<Type>;
67
- readonly instances: NodeInstances<Type>;
68
- readonly node: ModelNode<Type>;
69
- readonly defaultValue: NodeDefaultValue<Type>;
68
+ constructor(bind: BindDefinition);
70
69
  }
71
70
  export type AnyNodeDefinition = RootDefinition | AnyRepeatRangeDefinition | RepeatTemplateDefinition | RepeatInstanceDefinition | SubtreeDefinition | LeafNodeDefinition;
72
- export type TypedNodeDefinition<Type> = Extract<AnyNodeDefinition, {
73
- readonly type: Type;
74
- }>;
@@ -1,5 +1,6 @@
1
+ import { ValueType } from '../../client/ValueType.ts';
1
2
  import { AnyBodyElementDefinition } from '../body/BodyDefinition.ts';
2
- import { InputDefinition } from '../body/control/InputDefinition.ts';
3
+ import { InputControlDefinition } from '../body/control/InputControlDefinition.ts';
3
4
  import { BindComputationExpression } from '../expression/BindComputationExpression.ts';
4
5
  import { ConstantTruthyDependentExpression } from '../expression/abstract/DependentExpression.ts';
5
6
  import { HintDefinition } from '../text/HintDefinition.ts';
@@ -8,23 +9,23 @@ import { BindDefinition } from './BindDefinition.ts';
8
9
  import { LeafNodeDefinition } from './LeafNodeDefinition.ts';
9
10
  import { ParentNodeDefinition } from './NodeDefinition.ts';
10
11
  export type NoteReadonlyDefinition = BindComputationExpression<'readonly'> & ConstantTruthyDependentExpression;
11
- export interface NoteBindDefinition extends BindDefinition {
12
+ export interface NoteBindDefinition<V extends ValueType> extends BindDefinition<V> {
12
13
  readonly readonly: NoteReadonlyDefinition;
13
14
  }
14
15
  export type NoteTextDefinition = LabelDefinition | HintDefinition;
15
16
  /**
16
17
  * @package This class is used internally, both in static types and at runtime,
17
18
  * to guard and guide the distinction between instance state nodes for 'note'
18
- * and 'string' node types. It is intentionally package-private! The less
19
+ * and 'input' node types. It is intentionally package-private! The less
19
20
  * specific {@link NoteNode.definition} type, if it has any client value at all,
20
21
  * should be more than sufficient. Clients are otherwise expected to use other
21
22
  * aspects of the node's interface (such as its {@link NoteNode.nodeType} and
22
23
  * distinct {@link NoteNode.currentState} types) to handle note-specific logic.
23
24
  */
24
- export declare class NoteNodeDefinition extends LeafNodeDefinition {
25
- readonly bind: NoteBindDefinition;
26
- readonly bodyElement: InputDefinition;
25
+ export declare class NoteNodeDefinition<V extends ValueType = ValueType> extends LeafNodeDefinition<V> {
26
+ readonly bind: NoteBindDefinition<V>;
27
+ readonly bodyElement: InputControlDefinition;
27
28
  readonly noteTextDefinition: NoteTextDefinition;
28
- static from(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: AnyBodyElementDefinition | null, node: Element): NoteNodeDefinition | null;
29
- constructor(parent: ParentNodeDefinition, bind: NoteBindDefinition, bodyElement: InputDefinition, noteTextDefinition: NoteTextDefinition, node: Element);
29
+ static from<V extends ValueType>(parent: ParentNodeDefinition, bind: BindDefinition<V>, bodyElement: AnyBodyElementDefinition | null, node: Element): NoteNodeDefinition<V> | null;
30
+ constructor(parent: ParentNodeDefinition, bind: NoteBindDefinition<V>, bodyElement: InputControlDefinition, noteTextDefinition: NoteTextDefinition, node: Element);
30
31
  }
@@ -0,0 +1,41 @@
1
+ import { ValueType } from '../../client/ValueType.ts';
2
+ import { RuntimeValue } from '../../lib/codecs/getSharedValueCodec.ts';
3
+ import { RangeControlBoundsDefinition, RangeControlDefinition } from '../body/control/RangeControlDefinition.ts';
4
+ import { BindDefinition } from './BindDefinition.ts';
5
+ import { LeafNodeDefinition } from './LeafNodeDefinition.ts';
6
+ import { ParentNodeDefinition } from './NodeDefinition.ts';
7
+ declare const RANGE_VALUE_TYPES: readonly ["decimal", "int"];
8
+ export type RangeValueType = (typeof RANGE_VALUE_TYPES)[number];
9
+ export interface RangeLeafNodeDefinition<V extends ValueType = ValueType> extends LeafNodeDefinition<V> {
10
+ readonly bodyElement: RangeControlDefinition;
11
+ }
12
+ declare class RangeNodeBoundsDefinition<V extends RangeValueType = RangeValueType> {
13
+ readonly min: NonNullable<RuntimeValue<V>>;
14
+ readonly max: NonNullable<RuntimeValue<V>>;
15
+ readonly step: NonNullable<RuntimeValue<V>>;
16
+ static from<V extends RangeValueType>(bounds: RangeControlBoundsDefinition, bind: BindDefinition<V>): RangeNodeBoundsDefinition<V>;
17
+ constructor(min: NonNullable<RuntimeValue<V>>, max: NonNullable<RuntimeValue<V>>, step: NonNullable<RuntimeValue<V>>);
18
+ }
19
+ /**
20
+ * @todo We should really consider making `LeafNodeDefinition` an abstract base
21
+ * class, and each node's definition an explicit concrete subclass of that. It
22
+ * would simplify a lot of things, reduce redundancy (and drift!) between
23
+ * various like `*Definition` types, and allow us to reason more clearly about
24
+ * what parse-product-input is used to construct each primary instance node.
25
+ * Furthermore, it would give us a great deal more flexibility to revisit some
26
+ * of the weaker parts of our current data model (e.g. splitting up selects).
27
+ *
28
+ * I explored this refactor as part of the prerequisite work to support range
29
+ * controls. I eventually backed out because it involved more churn than I felt
30
+ * comfortable with, but I do think we should keep an eye out for other
31
+ * opportunities to take on the churn.
32
+ */
33
+ export declare class RangeNodeDefinition<V extends RangeValueType = RangeValueType> extends LeafNodeDefinition<V> implements RangeLeafNodeDefinition<V> {
34
+ readonly bind: BindDefinition<V>;
35
+ readonly bodyElement: RangeControlDefinition;
36
+ static from<V extends ValueType>(parent: ParentNodeDefinition, bind: BindDefinition<V>, bodyElement: RangeControlDefinition, node: Element): RangeNodeDefinition<Extract<V, RangeValueType>>;
37
+ readonly bounds: RangeNodeBoundsDefinition<V>;
38
+ private constructor();
39
+ }
40
+ export type AnyRangeNodeDefinition = RangeNodeDefinition<'decimal'> | RangeNodeDefinition<'int'>;
41
+ export {};
@@ -1,14 +1,17 @@
1
+ import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
2
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
1
3
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
4
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
3
- import { ChildNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
5
+ import { ChildNodeDefinition } from './NodeDefinition.ts';
4
6
  import { AnyRepeatRangeDefinition } from './RepeatRangeDefinition.ts';
5
- export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'repeat-instance', RepeatElementDefinition> implements NodeDefinition<'repeat-instance'> {
7
+ export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'repeat-instance', RepeatElementDefinition> {
6
8
  readonly node: Element;
7
9
  readonly type = "repeat-instance";
8
- readonly nodeName: string;
10
+ readonly namespaceDeclarations: NamespaceDeclarationMap;
11
+ readonly qualifiedName: QualifiedName;
9
12
  readonly children: readonly ChildNodeDefinition[];
10
13
  readonly instances: null;
11
14
  readonly defaultValue: null;
12
15
  constructor(range: AnyRepeatRangeDefinition, node: Element);
13
- toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
16
+ toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement">;
14
17
  }
@@ -1,8 +1,10 @@
1
+ import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
2
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
1
3
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
2
4
  import { RepeatCountControlExpression } from '../expression/RepeatCountControlExpression.ts';
3
5
  import { BindDefinition } from './BindDefinition.ts';
4
6
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
5
- import { NodeDefinition, ParentNodeDefinition } from './NodeDefinition.ts';
7
+ import { ParentNodeDefinition } from './NodeDefinition.ts';
6
8
  import { RepeatInstanceDefinition } from './RepeatInstanceDefinition.ts';
7
9
  import { RepeatTemplateDefinition } from './RepeatTemplateDefinition.ts';
8
10
  export interface ControlledRepeatRangeDefinition extends RepeatRangeDefinition {
@@ -12,7 +14,7 @@ export interface UncontrolledRepeatRangeDefinition extends RepeatRangeDefinition
12
14
  readonly count: null;
13
15
  }
14
16
  export type AnyRepeatRangeDefinition = ControlledRepeatRangeDefinition | UncontrolledRepeatRangeDefinition;
15
- export declare class RepeatRangeDefinition extends DescendentNodeDefinition<'repeat-range', RepeatElementDefinition> implements NodeDefinition<'repeat-range'> {
17
+ export declare class RepeatRangeDefinition extends DescendentNodeDefinition<'repeat-range', RepeatElementDefinition> {
16
18
  static from(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: RepeatElementDefinition, modelNodes: readonly [Element, ...Element[]]): AnyRepeatRangeDefinition;
17
19
  readonly type = "repeat-range";
18
20
  readonly template: RepeatTemplateDefinition;
@@ -20,10 +22,11 @@ export declare class RepeatRangeDefinition extends DescendentNodeDefinition<'rep
20
22
  readonly instances: RepeatInstanceDefinition[];
21
23
  readonly count: RepeatCountControlExpression | null;
22
24
  readonly node: null;
23
- readonly nodeName: string;
25
+ readonly namespaceDeclarations: NamespaceDeclarationMap;
26
+ readonly qualifiedName: QualifiedName;
24
27
  readonly defaultValue: null;
25
28
  private constructor();
26
29
  isControlled(): this is ControlledRepeatRangeDefinition;
27
30
  isUncontrolled(): this is UncontrolledRepeatRangeDefinition;
28
- toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement" | "isControlled" | "isUncontrolled">;
31
+ toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement" | "isControlled" | "isUncontrolled">;
29
32
  }
@@ -1,7 +1,9 @@
1
1
  import { JAVAROSA_NAMESPACE_URI } from '../../../../common/src/constants/xmlns.ts';
2
+ import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
3
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
2
4
  import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
3
5
  import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
4
- import { ChildNodeDefinition, NodeDefinition } from './NodeDefinition.ts';
6
+ import { ChildNodeDefinition } from './NodeDefinition.ts';
5
7
  import { RepeatRangeDefinition } from './RepeatRangeDefinition.ts';
6
8
  interface ExplicitRepeatTemplateElement extends Element {
7
9
  getAttributeNS(namespaceURI: typeof JAVAROSA_NAMESPACE_URI, name: 'template'): string;
@@ -13,16 +15,17 @@ interface ParsedRepeatNodes {
13
15
  readonly template: RepeatTemplateDefinition;
14
16
  readonly instanceNodes: readonly Element[];
15
17
  }
16
- export declare class RepeatTemplateDefinition extends DescendentNodeDefinition<'repeat-template', RepeatElementDefinition> implements NodeDefinition<'repeat-template'> {
18
+ export declare class RepeatTemplateDefinition extends DescendentNodeDefinition<'repeat-template', RepeatElementDefinition> {
17
19
  protected readonly templateNode: ExplicitRepeatTemplateElement;
18
20
  static parseModelNodes(range: RepeatRangeDefinition, modelNodes: readonly [Element, ...Element[]]): ParsedRepeatNodes;
19
21
  readonly type = "repeat-template";
20
22
  readonly node: Element;
21
- readonly nodeName: string;
23
+ readonly namespaceDeclarations: NamespaceDeclarationMap;
24
+ readonly qualifiedName: QualifiedName;
22
25
  readonly children: readonly ChildNodeDefinition[];
23
26
  readonly instances: null;
24
27
  readonly defaultValue: null;
25
28
  protected constructor(range: RepeatRangeDefinition, templateNode: ExplicitRepeatTemplateElement);
26
- toJSON(): Omit<this, "parent" | "toJSON" | "bind" | "root" | "bodyElement">;
29
+ toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement">;
27
30
  }
28
31
  export {};
@@ -0,0 +1,24 @@
1
+ import { NamedNodeDefinition } from '../../lib/names/NamespaceDeclarationMap.ts';
2
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
3
+ import { RootDefinition } from './RootDefinition.ts';
4
+ interface RootAttributeSource {
5
+ readonly namespaceURI: string | null;
6
+ readonly nodeName: string;
7
+ readonly prefix: string | null;
8
+ readonly localName: string;
9
+ readonly value: string;
10
+ }
11
+ /**
12
+ * @todo This class is named and typed to emphasize its intentionally narrow
13
+ * usage and purpose. It **intentionally** avoids addressing the much broader
14
+ * set of concerns around modeling attributes in primary instance/submissions.
15
+ */
16
+ export declare class RootAttributeDefinition implements NamedNodeDefinition {
17
+ private readonly serializedXML;
18
+ readonly parent: RootDefinition;
19
+ readonly qualifiedName: QualifiedName;
20
+ readonly value: string;
21
+ constructor(root: RootDefinition, source: RootAttributeSource);
22
+ serializeAttributeXML(): string;
23
+ }
24
+ export {};
@@ -0,0 +1,23 @@
1
+ import { QualifiedName } from '../../lib/names/QualifiedName.ts';
2
+ import { RootAttributeDefinition } from './RootAttributeDefinition.ts';
3
+ import { RootDefinition } from './RootDefinition.ts';
4
+ /**
5
+ * @todo This can be trivially expanded to a narrowly general case when we
6
+ * prioritize work to
7
+ * {@link https://github.com/getodk/web-forms/issues/285 | support attributes}
8
+ * (as modeled form nodes on par with elements). It's been deferred here to
9
+ * avoid expanding scope of an already fairly large yak shave.
10
+ *
11
+ * @todo There's a **much more expansive** general case just waiting for a good
12
+ * opportuntity to prioritize it. E.g. a `NamedNodeMap<T>`, where T is any
13
+ * generalized concept of a named node. This expansive generalization would have
14
+ * a ton of value in a variety of known performance optimization
15
+ * targets/solutions (i.e. optimizing the most redundant, suboptimal, frequently
16
+ * performed aspects of any typical XPath expression in a typical XForm).
17
+ *
18
+ * @see {@link QualifiedName} for more detail.
19
+ */
20
+ export declare class RootAttributeMap extends Map<QualifiedName, RootAttributeDefinition> {
21
+ static from(root: RootDefinition, domRootSourceElement: Element): RootAttributeMap;
22
+ private constructor();
23
+ }