@getodk/xforms-engine 0.6.0 → 0.8.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 (332) hide show
  1. package/dist/client/BaseNode.d.ts +4 -4
  2. package/dist/client/BaseValueNode.d.ts +7 -3
  3. package/dist/client/RootNode.d.ts +20 -16
  4. package/dist/client/UploadNode.d.ts +53 -0
  5. package/dist/client/attachments/InstanceAttachmentMeta.d.ts +8 -0
  6. package/dist/client/attachments/InstanceAttachmentsConfig.d.ts +8 -0
  7. package/dist/client/constants.d.ts +11 -12
  8. package/dist/client/form/CreateFormInstance.d.ts +14 -0
  9. package/dist/client/form/EditFormInstance.d.ts +62 -0
  10. package/dist/client/form/FormInstance.d.ts +104 -0
  11. package/dist/client/form/FormInstanceConfig.d.ts +19 -0
  12. package/dist/client/form/FormResource.d.ts +1 -0
  13. package/dist/client/form/LoadForm.d.ts +79 -0
  14. package/dist/client/form/LoadFormResult.d.ts +67 -0
  15. package/dist/client/form/RestoreFormInstance.d.ts +8 -0
  16. package/dist/client/hierarchy.d.ts +4 -5
  17. package/dist/client/index.d.ts +40 -11
  18. package/dist/client/node-types.d.ts +2 -3
  19. package/dist/client/repeat/BaseRepeatRangeNode.d.ts +3 -4
  20. package/dist/client/repeat/RepeatInstanceNode.d.ts +4 -5
  21. package/dist/client/repeat/RepeatRangeControlledNode.d.ts +2 -2
  22. package/dist/client/repeat/RepeatRangeUncontrolledNode.d.ts +2 -2
  23. package/dist/client/resources.d.ts +1 -1
  24. package/dist/client/serialization/InstanceData.d.ts +14 -0
  25. package/dist/client/serialization/InstanceFile.d.ts +6 -0
  26. package/dist/client/serialization/InstancePayload.d.ts +93 -0
  27. package/dist/client/serialization/InstancePayloadOptions.d.ts +24 -0
  28. package/dist/client/serialization/InstanceState.d.ts +12 -0
  29. package/dist/client/submission/{SubmissionDefinition.d.ts → SubmissionMeta.d.ts} +1 -1
  30. package/dist/entrypoints/FormInstance.d.ts +20 -0
  31. package/dist/entrypoints/FormResult/BaseFormResult.d.ts +22 -0
  32. package/dist/entrypoints/FormResult/BaseInstantiableFormResult.d.ts +25 -0
  33. package/dist/entrypoints/FormResult/FormFailureResult.d.ts +17 -0
  34. package/dist/entrypoints/FormResult/FormSuccessResult.d.ts +15 -0
  35. package/dist/entrypoints/FormResult/FormWarningResult.d.ts +15 -0
  36. package/dist/entrypoints/createInstance.d.ts +9 -0
  37. package/dist/entrypoints/editInstance.d.ts +9 -0
  38. package/dist/entrypoints/index.d.ts +4 -0
  39. package/dist/entrypoints/loadForm.d.ts +4 -0
  40. package/dist/entrypoints/restoreInstance.d.ts +9 -0
  41. package/dist/error/LoadFormFailureError.d.ts +9 -0
  42. package/dist/error/MalformedInstanceDataError.d.ts +3 -0
  43. package/dist/error/TemplatedNodeAttributeSerializationError.d.ts +22 -0
  44. package/dist/error/UploadValueTypeError.d.ts +8 -0
  45. package/dist/index.d.ts +2 -33
  46. package/dist/index.js +8280 -6779
  47. package/dist/index.js.map +1 -1
  48. package/dist/instance/Group.d.ts +6 -5
  49. package/dist/instance/InputControl.d.ts +5 -4
  50. package/dist/instance/ModelValue.d.ts +5 -4
  51. package/dist/instance/Note.d.ts +4 -3
  52. package/dist/instance/PrimaryInstance.d.ts +34 -8
  53. package/dist/instance/RangeControl.d.ts +5 -4
  54. package/dist/instance/RankControl.d.ts +6 -5
  55. package/dist/instance/Root.d.ts +7 -9
  56. package/dist/instance/SelectControl.d.ts +4 -3
  57. package/dist/instance/Subtree.d.ts +6 -5
  58. package/dist/instance/TriggerControl.d.ts +4 -3
  59. package/dist/instance/UploadControl.d.ts +58 -0
  60. package/dist/instance/abstract/DescendantNode.d.ts +10 -1
  61. package/dist/instance/abstract/InstanceNode.d.ts +7 -4
  62. package/dist/instance/abstract/ValueNode.d.ts +7 -5
  63. package/dist/instance/attachments/InstanceAttachment.d.ts +42 -0
  64. package/dist/instance/attachments/InstanceAttachmentsState.d.ts +9 -0
  65. package/dist/instance/children/DescendantNodeInitOptions.d.ts +32 -0
  66. package/dist/instance/{children.d.ts → children/buildChildren.d.ts} +1 -1
  67. package/dist/instance/children/childrenInitOptions.d.ts +9 -0
  68. package/dist/instance/children/normalizeChildInitOptions.d.ts +2 -0
  69. package/dist/instance/hierarchy.d.ts +6 -7
  70. package/dist/instance/input/InitialInstanceState.d.ts +13 -0
  71. package/dist/instance/input/InstanceAttachmentMap.d.ts +19 -0
  72. package/dist/instance/internal-api/InstanceAttachmentContext.d.ts +19 -0
  73. package/dist/instance/internal-api/InstanceConfig.d.ts +4 -9
  74. package/dist/instance/internal-api/InstanceValueContext.d.ts +8 -1
  75. package/dist/instance/internal-api/serialization/ClientReactiveSerializableInstance.d.ts +16 -0
  76. package/dist/instance/internal-api/serialization/ClientReactiveSerializableLeafNode.d.ts +32 -0
  77. package/dist/instance/internal-api/serialization/ClientReactiveSerializableParentNode.d.ts +18 -0
  78. package/dist/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.d.ts +13 -0
  79. package/dist/instance/internal-api/serialization/ClientReactiveSerializableValueNode.d.ts +21 -0
  80. package/dist/instance/repeat/BaseRepeatRange.d.ts +10 -8
  81. package/dist/instance/repeat/RepeatInstance.d.ts +10 -7
  82. package/dist/instance/repeat/RepeatRangeControlled.d.ts +27 -3
  83. package/dist/instance/repeat/RepeatRangeUncontrolled.d.ts +4 -3
  84. package/dist/instance/resource.d.ts +5 -1
  85. package/dist/integration/xpath/EngineXPathEvaluator.d.ts +2 -2
  86. package/dist/integration/xpath/adapter/kind.d.ts +4 -10
  87. package/dist/integration/xpath/static-dom/StaticAttribute.d.ts +4 -5
  88. package/dist/integration/xpath/static-dom/StaticDocument.d.ts +13 -10
  89. package/dist/integration/xpath/static-dom/StaticElement.d.ts +21 -22
  90. package/dist/integration/xpath/static-dom/StaticNode.d.ts +1 -1
  91. package/dist/integration/xpath/static-dom/StaticParentNode.d.ts +13 -0
  92. package/dist/integration/xpath/static-dom/staticNodeName.d.ts +3 -0
  93. package/dist/lib/client-reactivity/instance-state/createNodeRangeInstanceState.d.ts +4 -0
  94. package/dist/lib/client-reactivity/instance-state/createParentNodeInstanceState.d.ts +4 -0
  95. package/dist/lib/client-reactivity/instance-state/createPrimaryInstanceState.d.ts +3 -0
  96. package/dist/lib/client-reactivity/instance-state/createRootInstanceState.d.ts +3 -0
  97. package/dist/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.d.ts +6 -0
  98. package/dist/lib/client-reactivity/instance-state/createValueNodeInstanceState.d.ts +3 -0
  99. package/dist/lib/client-reactivity/instance-state/prepareInstancePayload.d.ts +8 -0
  100. package/dist/lib/names/UnprefixedXFormsName.d.ts +4 -0
  101. package/dist/lib/reactivity/createInstanceAttachment.d.ts +8 -0
  102. package/dist/lib/reactivity/createInstanceValueState.d.ts +2 -27
  103. package/dist/lib/resource-helpers.d.ts +2 -0
  104. package/dist/parse/XFormDOM.d.ts +1 -1
  105. package/dist/parse/body/BodyDefinition.d.ts +2 -1
  106. package/dist/parse/body/control/UploadControlDefinition.d.ts +2 -0
  107. package/dist/parse/model/BindDefinition.d.ts +1 -1
  108. package/dist/parse/model/BindTypeDefinition.d.ts +2 -7
  109. package/dist/parse/model/ItextTranslationsDefinition.d.ts +18 -0
  110. package/dist/parse/model/LeafNodeDefinition.d.ts +4 -5
  111. package/dist/parse/model/ModelBindMap.d.ts +1 -1
  112. package/dist/parse/model/ModelDefinition.d.ts +9 -2
  113. package/dist/parse/model/NodeDefinition.d.ts +18 -30
  114. package/dist/parse/model/NoteNodeDefinition.d.ts +3 -2
  115. package/dist/parse/model/RangeNodeDefinition.d.ts +2 -1
  116. package/dist/parse/model/RepeatDefinition.d.ts +62 -0
  117. package/dist/parse/model/RootAttributeDefinition.d.ts +1 -4
  118. package/dist/parse/model/RootAttributeMap.d.ts +2 -1
  119. package/dist/parse/model/RootDefinition.d.ts +7 -8
  120. package/dist/parse/model/SecondaryInstance/SecondaryInstancesDefinition.d.ts +15 -2
  121. package/dist/parse/model/SecondaryInstance/assertSecondaryInstanceDefinition.d.ts +5 -0
  122. package/dist/parse/model/SecondaryInstance/defineSecondaryInstance.d.ts +5 -0
  123. package/dist/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.d.ts +1 -7
  124. package/dist/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.d.ts +1 -1
  125. package/dist/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.d.ts +1 -1
  126. package/dist/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.d.ts +1 -1
  127. package/dist/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.d.ts +1 -1
  128. package/dist/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.d.ts +1 -1
  129. package/dist/parse/model/{FormSubmissionDefinition.d.ts → SubmissionDefinition.d.ts} +2 -2
  130. package/dist/parse/model/SubtreeDefinition.d.ts +4 -5
  131. package/dist/parse/model/nodeDefinitionMap.d.ts +5 -0
  132. package/dist/parse/shared/parseInstanceXML.d.ts +21 -0
  133. package/dist/parse/shared/parseStaticDocumentFromDOMSubtree.d.ts +4 -21
  134. package/dist/solid.js +8251 -6751
  135. package/dist/solid.js.map +1 -1
  136. package/package.json +15 -14
  137. package/src/client/BaseNode.ts +4 -4
  138. package/src/client/BaseValueNode.ts +7 -3
  139. package/src/client/RootNode.ts +32 -19
  140. package/src/client/UploadNode.ts +78 -0
  141. package/src/client/attachments/InstanceAttachmentMeta.ts +10 -0
  142. package/src/client/attachments/InstanceAttachmentsConfig.ts +13 -0
  143. package/src/client/constants.ts +12 -14
  144. package/src/client/form/CreateFormInstance.ts +19 -0
  145. package/src/client/form/EditFormInstance.ts +93 -0
  146. package/src/client/form/FormInstance.ts +114 -0
  147. package/src/client/form/FormInstanceConfig.ts +21 -0
  148. package/src/client/form/FormResource.ts +1 -0
  149. package/src/client/form/LoadForm.ts +92 -0
  150. package/src/client/form/LoadFormResult.ts +103 -0
  151. package/src/client/form/RestoreFormInstance.ts +14 -0
  152. package/src/client/hierarchy.ts +5 -8
  153. package/src/client/index.ts +49 -29
  154. package/src/client/node-types.ts +3 -8
  155. package/src/client/repeat/BaseRepeatRangeNode.ts +3 -4
  156. package/src/client/repeat/RepeatInstanceNode.ts +4 -8
  157. package/src/client/repeat/RepeatRangeControlledNode.ts +2 -2
  158. package/src/client/repeat/RepeatRangeUncontrolledNode.ts +2 -2
  159. package/src/client/resources.ts +2 -2
  160. package/src/client/serialization/InstanceData.ts +24 -0
  161. package/src/client/serialization/InstanceFile.ts +9 -0
  162. package/src/client/serialization/InstancePayload.ts +126 -0
  163. package/src/client/serialization/InstancePayloadOptions.ts +29 -0
  164. package/src/client/serialization/InstanceState.ts +14 -0
  165. package/src/client/submission/{SubmissionDefinition.ts → SubmissionMeta.ts} +1 -1
  166. package/src/entrypoints/FormInstance.ts +56 -0
  167. package/src/entrypoints/FormResult/BaseFormResult.ts +40 -0
  168. package/src/entrypoints/FormResult/BaseInstantiableFormResult.ts +109 -0
  169. package/src/entrypoints/FormResult/FormFailureResult.ts +44 -0
  170. package/src/entrypoints/FormResult/FormSuccessResult.ts +25 -0
  171. package/src/entrypoints/FormResult/FormWarningResult.ts +25 -0
  172. package/src/entrypoints/createInstance.ts +23 -0
  173. package/src/entrypoints/editInstance.ts +24 -0
  174. package/src/entrypoints/index.ts +4 -0
  175. package/src/entrypoints/loadForm.ts +154 -0
  176. package/src/entrypoints/restoreInstance.ts +27 -0
  177. package/src/error/LoadFormFailureError.ts +114 -0
  178. package/src/error/MalformedInstanceDataError.ts +3 -0
  179. package/src/error/TemplatedNodeAttributeSerializationError.ts +24 -0
  180. package/src/error/UploadValueTypeError.ts +13 -0
  181. package/src/index.ts +2 -46
  182. package/src/instance/Group.ts +16 -15
  183. package/src/instance/InputControl.ts +17 -11
  184. package/src/instance/ModelValue.ts +17 -11
  185. package/src/instance/Note.ts +10 -9
  186. package/src/instance/PrimaryInstance.ts +68 -31
  187. package/src/instance/RangeControl.ts +17 -11
  188. package/src/instance/RankControl.ts +28 -19
  189. package/src/instance/Root.ts +20 -31
  190. package/src/instance/SelectControl.ts +21 -12
  191. package/src/instance/Subtree.ts +16 -15
  192. package/src/instance/TriggerControl.ts +21 -12
  193. package/src/instance/UploadControl.ts +184 -0
  194. package/src/instance/abstract/DescendantNode.ts +12 -2
  195. package/src/instance/abstract/InstanceNode.ts +9 -5
  196. package/src/instance/abstract/ValueNode.ts +11 -13
  197. package/src/instance/attachments/InstanceAttachment.ts +69 -0
  198. package/src/instance/attachments/InstanceAttachmentsState.ts +18 -0
  199. package/src/instance/children/DescendantNodeInitOptions.ts +35 -0
  200. package/src/instance/{children.ts → children/buildChildren.ts} +57 -53
  201. package/src/instance/children/childrenInitOptions.ts +117 -0
  202. package/src/instance/children/normalizeChildInitOptions.ts +332 -0
  203. package/src/instance/hierarchy.ts +6 -9
  204. package/src/instance/input/InitialInstanceState.ts +108 -0
  205. package/src/instance/input/InstanceAttachmentMap.ts +154 -0
  206. package/src/instance/internal-api/InstanceAttachmentContext.ts +20 -0
  207. package/src/instance/internal-api/InstanceConfig.ts +6 -10
  208. package/src/instance/internal-api/InstanceValueContext.ts +9 -1
  209. package/src/instance/internal-api/serialization/ClientReactiveSerializableInstance.ts +22 -0
  210. package/src/instance/internal-api/serialization/ClientReactiveSerializableLeafNode.ts +43 -0
  211. package/src/instance/internal-api/serialization/ClientReactiveSerializableParentNode.ts +26 -0
  212. package/src/instance/internal-api/serialization/ClientReactiveSerializableTemplatedNode.ts +24 -0
  213. package/src/instance/internal-api/serialization/ClientReactiveSerializableValueNode.ts +28 -0
  214. package/src/instance/repeat/BaseRepeatRange.ts +19 -24
  215. package/src/instance/repeat/RepeatInstance.ts +26 -19
  216. package/src/instance/repeat/RepeatRangeControlled.ts +90 -17
  217. package/src/instance/repeat/RepeatRangeUncontrolled.ts +10 -9
  218. package/src/instance/resource.ts +14 -1
  219. package/src/integration/xpath/EngineXPathEvaluator.ts +2 -2
  220. package/src/integration/xpath/adapter/kind.ts +1 -28
  221. package/src/integration/xpath/adapter/traversal.ts +2 -2
  222. package/src/integration/xpath/static-dom/StaticAttribute.ts +6 -5
  223. package/src/integration/xpath/static-dom/StaticDocument.ts +17 -16
  224. package/src/integration/xpath/static-dom/StaticElement.ts +196 -50
  225. package/src/integration/xpath/static-dom/StaticNode.ts +1 -1
  226. package/src/integration/xpath/static-dom/StaticParentNode.ts +22 -0
  227. package/src/integration/xpath/static-dom/staticNodeName.ts +20 -0
  228. package/src/lib/client-reactivity/instance-state/createNodeRangeInstanceState.ts +17 -0
  229. package/src/lib/client-reactivity/instance-state/createParentNodeInstanceState.ts +22 -0
  230. package/src/lib/client-reactivity/instance-state/createPrimaryInstanceState.ts +12 -0
  231. package/src/lib/client-reactivity/{submission/createRootSubmissionState.ts → instance-state/createRootInstanceState.ts} +4 -4
  232. package/src/lib/client-reactivity/instance-state/createTemplatedNodeInstanceState.ts +31 -0
  233. package/src/lib/client-reactivity/instance-state/createValueNodeInstanceState.ts +21 -0
  234. package/src/lib/client-reactivity/instance-state/prepareInstancePayload.ts +237 -0
  235. package/src/lib/names/UnprefixedXFormsName.ts +12 -0
  236. package/src/lib/reactivity/createInstanceAttachment.ts +212 -0
  237. package/src/lib/reactivity/createInstanceValueState.ts +27 -51
  238. package/src/lib/resource-helpers.ts +33 -0
  239. package/src/parse/XFormDOM.ts +1 -3
  240. package/src/parse/body/BodyDefinition.ts +4 -0
  241. package/src/parse/body/control/UploadControlDefinition.ts +42 -0
  242. package/src/parse/model/BindDefinition.ts +1 -1
  243. package/src/parse/model/BindTypeDefinition.ts +68 -26
  244. package/src/parse/model/ItextTranslationsDefinition.ts +79 -0
  245. package/src/parse/model/LeafNodeDefinition.ts +3 -5
  246. package/src/parse/model/ModelBindMap.ts +0 -5
  247. package/src/parse/model/ModelDefinition.ts +36 -3
  248. package/src/parse/model/NodeDefinition.ts +19 -45
  249. package/src/parse/model/NoteNodeDefinition.ts +4 -3
  250. package/src/parse/model/RangeNodeDefinition.ts +3 -2
  251. package/src/parse/model/RepeatDefinition.ts +382 -0
  252. package/src/parse/model/RootAttributeDefinition.ts +6 -7
  253. package/src/parse/model/RootAttributeMap.ts +15 -10
  254. package/src/parse/model/RootDefinition.ts +17 -19
  255. package/src/parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts +23 -2
  256. package/src/parse/model/SecondaryInstance/assertSecondaryInstanceDefinition.ts +14 -0
  257. package/src/parse/model/SecondaryInstance/defineSecondaryInstance.ts +32 -0
  258. package/src/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.ts +3 -24
  259. package/src/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.ts +33 -86
  260. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.ts +1 -30
  261. package/src/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.ts +64 -137
  262. package/src/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.ts +9 -7
  263. package/src/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.ts +1 -1
  264. package/src/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.ts +7 -7
  265. package/src/parse/model/{FormSubmissionDefinition.ts → SubmissionDefinition.ts} +2 -2
  266. package/src/parse/model/SubtreeDefinition.ts +4 -5
  267. package/src/parse/model/nodeDefinitionMap.ts +34 -0
  268. package/src/parse/shared/parseInstanceXML.ts +79 -0
  269. package/src/parse/shared/parseStaticDocumentFromDOMSubtree.ts +45 -130
  270. package/dist/client/EngineConfig.d.ts +0 -79
  271. package/dist/client/submission/SubmissionData.d.ts +0 -7
  272. package/dist/client/submission/SubmissionInstanceFile.d.ts +0 -6
  273. package/dist/client/submission/SubmissionOptions.d.ts +0 -23
  274. package/dist/client/submission/SubmissionResult.d.ts +0 -91
  275. package/dist/client/submission/SubmissionState.d.ts +0 -12
  276. package/dist/client/unsupported/UnsupportedControlNode.d.ts +0 -30
  277. package/dist/client/unsupported/UploadNode.d.ts +0 -9
  278. package/dist/instance/abstract/UnsupportedControl.d.ts +0 -54
  279. package/dist/instance/index.d.ts +0 -8
  280. package/dist/instance/internal-api/ValueContext.d.ts +0 -23
  281. package/dist/instance/internal-api/submission/ClientReactiveSubmittableInstance.d.ts +0 -14
  282. package/dist/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.d.ts +0 -32
  283. package/dist/instance/internal-api/submission/ClientReactiveSubmittableParentNode.d.ts +0 -19
  284. package/dist/instance/internal-api/submission/ClientReactiveSubmittableValueNode.d.ts +0 -18
  285. package/dist/instance/unsupported/UploadControl.d.ts +0 -6
  286. package/dist/lib/client-reactivity/submission/createInstanceSubmissionState.d.ts +0 -3
  287. package/dist/lib/client-reactivity/submission/createLeafNodeSubmissionState.d.ts +0 -3
  288. package/dist/lib/client-reactivity/submission/createNodeRangeSubmissionState.d.ts +0 -4
  289. package/dist/lib/client-reactivity/submission/createParentNodeSubmissionState.d.ts +0 -4
  290. package/dist/lib/client-reactivity/submission/createRootSubmissionState.d.ts +0 -3
  291. package/dist/lib/client-reactivity/submission/createValueNodeSubmissionState.d.ts +0 -3
  292. package/dist/lib/client-reactivity/submission/prepareSubmission.d.ts +0 -8
  293. package/dist/lib/reactivity/createValueState.d.ts +0 -40
  294. package/dist/parse/model/ItextTranslation/ItextTranslationDefinition.d.ts +0 -4
  295. package/dist/parse/model/ItextTranslation/ItextTranslationRootDefinition.d.ts +0 -9
  296. package/dist/parse/model/ItextTranslation/ItextTranslationsDefinition.d.ts +0 -8
  297. package/dist/parse/model/RepeatInstanceDefinition.d.ts +0 -17
  298. package/dist/parse/model/RepeatRangeDefinition.d.ts +0 -32
  299. package/dist/parse/model/RepeatTemplateDefinition.d.ts +0 -31
  300. package/dist/parse/model/SecondaryInstance/SecondaryInstanceDefinition.d.ts +0 -4
  301. package/dist/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.d.ts +0 -7
  302. package/src/client/EngineConfig.ts +0 -84
  303. package/src/client/submission/SubmissionData.ts +0 -12
  304. package/src/client/submission/SubmissionInstanceFile.ts +0 -9
  305. package/src/client/submission/SubmissionOptions.ts +0 -28
  306. package/src/client/submission/SubmissionResult.ts +0 -124
  307. package/src/client/submission/SubmissionState.ts +0 -14
  308. package/src/client/unsupported/UnsupportedControlNode.ts +0 -36
  309. package/src/client/unsupported/UploadNode.ts +0 -14
  310. package/src/instance/abstract/UnsupportedControl.ts +0 -175
  311. package/src/instance/index.ts +0 -55
  312. package/src/instance/internal-api/ValueContext.ts +0 -28
  313. package/src/instance/internal-api/submission/ClientReactiveSubmittableInstance.ts +0 -20
  314. package/src/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.ts +0 -43
  315. package/src/instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts +0 -26
  316. package/src/instance/internal-api/submission/ClientReactiveSubmittableValueNode.ts +0 -24
  317. package/src/instance/unsupported/UploadControl.ts +0 -9
  318. package/src/lib/client-reactivity/submission/createInstanceSubmissionState.ts +0 -12
  319. package/src/lib/client-reactivity/submission/createLeafNodeSubmissionState.ts +0 -20
  320. package/src/lib/client-reactivity/submission/createNodeRangeSubmissionState.ts +0 -17
  321. package/src/lib/client-reactivity/submission/createParentNodeSubmissionState.ts +0 -22
  322. package/src/lib/client-reactivity/submission/createValueNodeSubmissionState.ts +0 -21
  323. package/src/lib/client-reactivity/submission/prepareSubmission.ts +0 -172
  324. package/src/lib/reactivity/createValueState.ts +0 -200
  325. package/src/parse/model/ItextTranslation/ItextTranslationDefinition.ts +0 -4
  326. package/src/parse/model/ItextTranslation/ItextTranslationRootDefinition.ts +0 -42
  327. package/src/parse/model/ItextTranslation/ItextTranslationsDefinition.ts +0 -31
  328. package/src/parse/model/RepeatInstanceDefinition.ts +0 -38
  329. package/src/parse/model/RepeatRangeDefinition.ts +0 -98
  330. package/src/parse/model/RepeatTemplateDefinition.ts +0 -149
  331. package/src/parse/model/SecondaryInstance/SecondaryInstanceDefinition.ts +0 -4
  332. package/src/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.ts +0 -12
@@ -0,0 +1,79 @@
1
+ import { ErrorProductionDesignPendingError } from '../../error/ErrorProductionDesignPendingError.ts';
2
+ import type { StaticDocument } from '../../integration/xpath/static-dom/StaticDocument.ts';
3
+ import type { StaticNode } from '../../integration/xpath/static-dom/StaticNode.ts';
4
+ import type { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
5
+ import { escapeXMLText } from '../../lib/xml-serialization.ts';
6
+ import type { ModelDefinition } from '../model/ModelDefinition.ts';
7
+ import type { RootDefinition } from '../model/RootDefinition.ts';
8
+ import { parseStaticDocumentFromDOMSubtree } from './parseStaticDocumentFromDOMSubtree.ts';
9
+
10
+ type WrappedInstanceXML = `<wrapped${string}</wrapped>`;
11
+
12
+ const wrapInstanceXML = (model: ModelDefinition, instanceXML: string): WrappedInstanceXML => {
13
+ const defaultNamespace = model.root.namespaceDeclarations.get(null);
14
+ const defaultNamespaceURI = defaultNamespace?.declaredURI?.href;
15
+
16
+ if (defaultNamespaceURI == null) {
17
+ return `<wrapped>${instanceXML}</wrapped>`;
18
+ }
19
+
20
+ return /* xml */ `<wrapped xmlns="${escapeXMLText(defaultNamespaceURI, true)}">
21
+ ${instanceXML}
22
+ </wrapped>`;
23
+ };
24
+
25
+ type AssertSoleChildElement = (element?: Element | null) => asserts element is Element;
26
+
27
+ const assertSoleChildElement: AssertSoleChildElement = (element) => {
28
+ if (element == null) {
29
+ throw new ErrorProductionDesignPendingError('Expected a child element');
30
+ }
31
+
32
+ const { parentNode } = element;
33
+
34
+ if (parentNode == null) {
35
+ throw new ErrorProductionDesignPendingError('Expected element to be a child of a parent node');
36
+ }
37
+
38
+ if (element !== parentNode.firstElementChild || element !== parentNode.lastElementChild) {
39
+ throw new ErrorProductionDesignPendingError(
40
+ "Expected child element to be parent node's only element child."
41
+ );
42
+ }
43
+ };
44
+
45
+ const getWrappedInstanceRootElement = (xml: WrappedInstanceXML): Element => {
46
+ const domParser = new DOMParser();
47
+ const doc = domParser.parseFromString(xml, 'text/xml');
48
+ const { documentElement } = doc;
49
+ const [root] = documentElement.children;
50
+
51
+ assertSoleChildElement(root);
52
+
53
+ return root;
54
+ };
55
+
56
+ /**
57
+ * Parses incoming instance XML input into a {@link StaticDocument}, preserving
58
+ * the form definition's default namespace URI (when the instance XML does not
59
+ * explicitly declare a default namespace).
60
+ *
61
+ * @todo This is a hack! A proper solution will involve extending namespace
62
+ * resolution (i.e. probably {@link NamespaceDeclarationMap}) from
63
+ * {@link RootDefinition} on down throughout the instance's {@link StaticNode}
64
+ * tree. The same will probably be the case for parsing (XML) external secondary
65
+ * instances as well, so at that point we can also stop using this specialized
66
+ * name!
67
+ *
68
+ * @todo Aside from this being a hack, it's not very robust because it makes
69
+ * assumptions which are _likely but definitely not guaranteed_!
70
+ *
71
+ * - Instance XML (probably) doeesn't declare a default namespace
72
+ * - Instance XML **definitely** declares non-default namespaces
73
+ */
74
+ export const parseInstanceXML = (model: ModelDefinition, instanceXML: string): StaticDocument => {
75
+ const wrappedXML = wrapInstanceXML(model, instanceXML);
76
+ const root = getWrappedInstanceRootElement(wrappedXML);
77
+
78
+ return parseStaticDocumentFromDOMSubtree(root);
79
+ };
@@ -1,149 +1,64 @@
1
- import { UnreachableError } from '@getodk/common/lib/error/UnreachableError.ts';
2
- import type { AnyConstructor } from '@getodk/common/types/helpers.js';
3
- import { StaticAttribute } from '../../integration/xpath/static-dom/StaticAttribute.ts';
1
+ import type { StaticAttributeOptions } from '../../integration/xpath/static-dom/StaticAttribute.ts';
2
+ import { StaticDocument } from '../../integration/xpath/static-dom/StaticDocument.ts';
4
3
  import type {
5
- StaticDocument,
6
- StaticDocumentRootFactory,
7
- } from '../../integration/xpath/static-dom/StaticDocument.ts';
8
- import type {
9
- StaticElementAttributesFactory,
10
- StaticElementChildNodesFactory,
4
+ StaticElementChildOption,
11
5
  StaticElementOptions,
12
6
  } from '../../integration/xpath/static-dom/StaticElement.ts';
13
- import { StaticElement } from '../../integration/xpath/static-dom/StaticElement.ts';
14
- import type { StaticParentNode } from '../../integration/xpath/static-dom/StaticNode.ts';
15
- import { StaticText } from '../../integration/xpath/static-dom/StaticText.ts';
16
-
17
- type ConcreteConstructor<T extends AnyConstructor> = Pick<T, keyof T>;
18
-
19
- // prettier-ignore
20
- export type ConcreteStaticDocumentConstructor<
21
- T extends StaticDocument<Root>,
22
- Root extends StaticElement,
23
- > =
24
- & ConcreteConstructor<typeof StaticDocument<Root>>
25
- & (new (rootFactory: StaticDocumentRootFactory<T, Root>) => T);
26
-
27
- const domElementAttributesFactory = (domElement: Element): StaticElementAttributesFactory => {
28
- const attributes = Array.from(domElement.attributes);
7
+ import type { QualifiedNameSource } from '../../lib/names/QualifiedName.ts';
29
8
 
30
- return (element) => {
31
- return attributes.map((attr) => {
32
- return new StaticAttribute(element, attr);
33
- });
9
+ const parseNodeName = (domNode: Attr | Element): QualifiedNameSource => {
10
+ return {
11
+ namespaceURI: domNode.namespaceURI,
12
+ prefix: domNode.prefix,
13
+ localName: domNode.localName,
34
14
  };
35
15
  };
36
16
 
37
- const { ELEMENT_NODE, CDATA_SECTION_NODE, TEXT_NODE } = Node;
38
-
39
- interface StaticChildElementSource {
40
- readonly domType: typeof ELEMENT_NODE;
41
- readonly domNode: Element;
42
- }
43
-
44
- interface StaticChildTextSource {
45
- readonly domType: typeof CDATA_SECTION_NODE | typeof TEXT_NODE;
46
- readonly domNode: CharacterData;
47
- }
48
-
49
- // prettier-ignore
50
- type StaticChildNodeSource =
51
- | StaticChildElementSource
52
- | StaticChildTextSource;
53
-
54
- export const toStaticChildNodeSource = (childNode: ChildNode): StaticChildNodeSource | null => {
55
- const domType = childNode.nodeType;
56
-
57
- switch (domType) {
58
- case ELEMENT_NODE:
59
- return {
60
- domType,
61
- domNode: childNode as Element,
62
- };
63
-
64
- case TEXT_NODE:
65
- return {
66
- domType,
67
- domNode: childNode as Text,
68
- };
69
-
70
- case CDATA_SECTION_NODE:
71
- return {
72
- domType,
73
- domNode: childNode as CDATASection,
74
- };
75
-
76
- default:
77
- return null;
78
- }
79
- };
80
-
81
- const toStaticChildNodeSources = (childNode: ChildNode): StaticChildNodeSource | readonly [] => {
82
- return toStaticChildNodeSource(childNode) ?? [];
17
+ const parseStaticElementAttributes = (domElement: Element): readonly StaticAttributeOptions[] => {
18
+ return Array.from(domElement.attributes).map((attr) => ({
19
+ name: attr,
20
+ value: attr.value,
21
+ }));
83
22
  };
84
23
 
85
- const domElementChildNodesFactory = (domElement: Element): StaticElementChildNodesFactory => {
86
- const childNodeSources = Array.from(domElement.childNodes).flatMap(toStaticChildNodeSources);
24
+ const { ELEMENT_NODE, CDATA_SECTION_NODE, TEXT_NODE } = Node;
87
25
 
88
- return (parent) => {
89
- return childNodeSources.map((domSource) => {
90
- switch (domSource.domType) {
91
- case ELEMENT_NODE:
92
- return parseStaticElementFromDOMElement(parent, StaticElement, domSource.domNode);
26
+ const parseStaticElementChildren = (domElement: Element): readonly StaticElementChildOption[] => {
27
+ return Array.from(domElement.childNodes).flatMap((child) => {
28
+ switch (child.nodeType) {
29
+ case ELEMENT_NODE:
30
+ return parseStaticElementOptions(child as Element);
93
31
 
94
- case TEXT_NODE:
95
- case CDATA_SECTION_NODE:
96
- return new StaticText(parent, domSource.domNode.data);
32
+ case TEXT_NODE:
33
+ case CDATA_SECTION_NODE:
34
+ return (child as CharacterData).data;
97
35
 
98
- default:
99
- throw new UnreachableError(domSource);
100
- }
101
- });
102
- };
36
+ default:
37
+ return [];
38
+ }
39
+ });
103
40
  };
104
41
 
105
- // prettier-ignore
106
- export type StaticElementConstructor<
107
- T extends StaticElement<Parent>,
108
- Parent extends StaticParentNode = StaticParentNode
109
- > =
110
- & ConcreteConstructor<typeof StaticElement>
111
- & {
112
- readonly prototype: T;
113
-
114
- new (
115
- parent: Parent,
116
- attributesFactory: StaticElementAttributesFactory,
117
- childNodesFactory: StaticElementChildNodesFactory,
118
- options: StaticElementOptions
119
- ): T;
42
+ const parseStaticElementOptions = (domElement: Element): StaticElementOptions => {
43
+ return {
44
+ name: parseNodeName(domElement),
45
+ attributes: parseStaticElementAttributes(domElement),
46
+ children: parseStaticElementChildren(domElement),
120
47
  };
121
-
122
- const parseStaticElementFromDOMElement = <
123
- T extends StaticElement<Parent>,
124
- Parent extends StaticParentNode = StaticParentNode,
125
- >(
126
- parent: Parent,
127
- ElementConstructor: StaticElementConstructor<T, Parent>,
128
- domElement: Element
129
- ): T => {
130
- const attributesFactory = domElementAttributesFactory(domElement);
131
- const childNodesFactory = domElementChildNodesFactory(domElement);
132
-
133
- return new ElementConstructor(parent, attributesFactory, childNodesFactory, domElement);
134
48
  };
135
49
 
136
- export const parseStaticDocumentFromDOMSubtree = <
137
- T extends StaticDocument<Root>,
138
- Root extends StaticElement<T>,
139
- >(
140
- DocumentConstructor: ConcreteStaticDocumentConstructor<T, Root>,
141
- DocumentRootConstructor: StaticElementConstructor<Root, T>,
142
- subtreeRootElement: Element
143
- ): T => {
144
- const rootFactory: StaticDocumentRootFactory<T, Root> = (parent) => {
145
- return parseStaticElementFromDOMElement(parent, DocumentRootConstructor, subtreeRootElement);
146
- };
50
+ interface ParseStaticDocumentFromDOMSubtreeOptions {
51
+ readonly nodesetPrefix?: string;
52
+ }
53
+
54
+ export const parseStaticDocumentFromDOMSubtree = (
55
+ subtreeRootElement: Element,
56
+ options: ParseStaticDocumentFromDOMSubtreeOptions = {}
57
+ ): StaticDocument => {
58
+ const documentRoot = parseStaticElementOptions(subtreeRootElement);
147
59
 
148
- return new DocumentConstructor(rootFactory);
60
+ return new StaticDocument({
61
+ ...options,
62
+ documentRoot,
63
+ });
149
64
  };
@@ -1,79 +0,0 @@
1
- import { MissingResourceBehavior } from './constants.ts';
2
- import { OpaqueReactiveObjectFactory } from './OpaqueReactiveObjectFactory.ts';
3
- import { FetchFormAttachment, FetchResource } from './resources.ts';
4
- /**
5
- * Options provided by a client to specify certain aspects of engine runtime
6
- * behavior. These options will generally be intended to facilitate cooperation
7
- * where there is mixed responsibility between a client and the engine, or where
8
- * the engine may provide sensible defaults which a client could be expected to
9
- * override or augment.
10
- */
11
- export interface EngineConfig {
12
- /**
13
- * A client may specify a generic function for constructing stateful objects.
14
- * The only hard requirement of this function is that it accepts an **object**
15
- * and returns an object of the same shape. The engine will use this function
16
- * to initialize client-facing state, and will mutate properties of the object
17
- * when their corresponding state is changed.
18
- *
19
- * A client may use this function to provide its own implementation of
20
- * reactivity with semantics like those described above. The mechanism of
21
- * reactivity, if any, is at the discretion of the client. It is expected
22
- * that clients providing this function will use a reactive subscribe-on-read
23
- * mechanism to handle state updates conveyed by the engine.
24
- */
25
- readonly stateFactory?: OpaqueReactiveObjectFactory;
26
- /**
27
- *
28
- * A client may specify an arbitrary {@link fetch}-like function for retrieving an XML XForm form
29
- * definition.
30
- *
31
- * Notes:
32
- *
33
- * - This configuration will only be consuled for calls to
34
- * {@link initializeForm} with a URL referencing an XML XForm definition. It
35
- * will be ignored for calls passing an XML XForm form definition directly.
36
- *
37
- * - For calls to {@link initializeForm} with a URL, if this configuration is
38
- * not specified it will default to the global {@link fetch} function (if
39
- * one is defined).
40
- */
41
- readonly fetchFormDefinition?: FetchResource;
42
- /**
43
- * A client may specify an arbitrary {@link fetch}-like function to retrieve a
44
- * form's attachments, i.e. any `jr:` URL referenced by the form (as specified
45
- * by {@link https://getodk.github.io/xforms-spec/ | ODK XForms}).
46
- *
47
- * Notes:
48
- *
49
- * - This configuration will be consulted for all supported form attachments,
50
- * as a part of {@link initializeForm | form initialization}.
51
- *
52
- * - If this configuration is not specified it will default to the global
53
- * {@link fetch} function (if one is defined).
54
- *
55
- * This default behavior will typically result in failure to load form
56
- * attachments—and in most cases this will also cause
57
- * {@link initializeForm | form initialization} to fail overall—with the
58
- * following exceptions:
59
- *
60
- * - **CLIENT-SPECIFIC:** Usage in coordination with a client-implemented
61
- * {@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API | Serivce Worker},
62
- * which can intercept network requests **generally**. Clients already using
63
- * a Service Worker may opt for the convenience of handling network requests
64
- * for `jr:` URLs along with any other network interception logic. Client
65
- * implementors should be warned, however, that such `jr:` URLs are not
66
- * namespaced or otherwise scoped to a particular form; such a client would
67
- * therefore inherently need to coordinate state between the Service Worker
68
- * and the main thread (or whatever other realm calls
69
- * {@link initializeForm}).
70
- */
71
- readonly fetchFormAttachment?: FetchFormAttachment;
72
- /**
73
- * @see {@link MissingResourceBehavior}
74
- * @see {@link MissingResourceBehaviorDefault}
75
- *
76
- * @default MissingResourceBehaviorDefault
77
- */
78
- readonly missingResourceBehavior?: MissingResourceBehavior;
79
- }
@@ -1,7 +0,0 @@
1
- import { SubmissionInstanceFile, SubmissionInstanceFileName } from './SubmissionInstanceFile.ts';
2
- export interface SubmissionData extends FormData {
3
- get(name: SubmissionInstanceFileName): SubmissionInstanceFile;
4
- get(name: string): FormDataEntryValue | null;
5
- has(name: SubmissionInstanceFileName): true;
6
- has(name: string): boolean;
7
- }
@@ -1,6 +0,0 @@
1
- import { SubmissionInstanceFileName, SubmissionInstanceFileType } from '../constants.ts';
2
- export type { SubmissionInstanceFileName, SubmissionInstanceFileType };
3
- export interface SubmissionInstanceFile extends File {
4
- readonly name: SubmissionInstanceFileName;
5
- readonly type: SubmissionInstanceFileType;
6
- }
@@ -1,23 +0,0 @@
1
- export type SubmissionChunkedType = 'chunked' | 'monolithic';
2
- interface BaseSubmissionOptions<ChunkedType extends SubmissionChunkedType> {
3
- readonly chunked?: ChunkedType | undefined;
4
- /**
5
- * As described in the
6
- * {@link https://docs.getodk.org/openrosa-form-submission/#extended-transmission-considerations | OpenRosa Form Submission API},
7
- * clients may obtain this value from an OpenRosa server's
8
- * `X-OpenRosa-Accept-Content-Length` header.
9
- */
10
- readonly maxSize?: number;
11
- }
12
- interface ChunkedSubmissionOptions extends BaseSubmissionOptions<'chunked'> {
13
- readonly maxSize: number;
14
- }
15
- interface MonolithicSubmissionOptions extends BaseSubmissionOptions<'monolithic'> {
16
- readonly chunked?: 'monolithic' | undefined;
17
- readonly maxSize?: never;
18
- }
19
- export type SubmissionOptions<ChunkedType extends SubmissionChunkedType = 'monolithic'> = {
20
- chunked: ChunkedSubmissionOptions;
21
- monolithic: MonolithicSubmissionOptions;
22
- }[ChunkedType];
23
- export {};
@@ -1,91 +0,0 @@
1
- import { DescendantNodeViolationReference } from '../validation.ts';
2
- import { SubmissionData } from './SubmissionData.ts';
3
- import { SubmissionDefinition } from './SubmissionDefinition.ts';
4
- import { SubmissionChunkedType } from './SubmissionOptions.ts';
5
- export type SubmissionResultStatus = 'pending' | 'max-size-exceeded' | 'ready';
6
- type SubmissionResultData<ChunkedType extends SubmissionChunkedType> = {
7
- chunked: readonly [SubmissionData, ...SubmissionData[]];
8
- monolithic: SubmissionData;
9
- }[ChunkedType];
10
- /**
11
- * Provides detail about an individual submission attachment {@link File}s which
12
- * exceeds the client-specified {@link maxSize} for a
13
- * {@link SubmissionResult<'chunked'> | chunked submission result}. Clients may
14
- * use this value to provide guidance to users.
15
- *
16
- * @todo We may want to consider (a) making {@link maxSize} a configuration the
17
- * client can provide when initializing a form instance, rather than only on
18
- * submission; and then (b) treating a maximum size violation as another kind of
19
- * node-level violation. This would go beyond the kinds of validation specified
20
- * by ODK XForms, but it would make a lot of _conceptual sense_.
21
- *
22
- * It would almost certainly be helpful to alert users to violations as the
23
- * occur, rather than only at submission time (where they have likely already
24
- * moved on). This is something clients can do without engine support, but it
25
- * would likely promote good usability patterns if the engine makes it an
26
- * obvious and uniform option at the main engine/client entrypoint.
27
- *
28
- * @todo If we consider the above, we'd want to reframe _this interface_ to
29
- * match the shape of other {@link AnyViolation | violations} (adding it as a
30
- * member of that union). We'd also likely eliminate
31
- * {@link MaxSizeExceededResult} in the process, since
32
- * {@link PendingSubmissionResult} would then cover the case.
33
- */
34
- interface MaxSizeViolation {
35
- /**
36
- * Specifies the index of
37
- * {@link SubmissionResultData<'chunked'> | chunked submission data} where a
38
- * submission attachment {@link File} exceeds the client-specified
39
- * {@link maxSize}.
40
- */
41
- readonly dataIndex: number;
42
- /**
43
- * Specifies the name of the file which exceeds the client-specified
44
- * {@link maxSize}. This name can also be used as a key to access the
45
- * violating {@link File}/submission attachment, in the {@link SubmissionData}
46
- * at the specified {@link dataIndex}.
47
- */
48
- readonly fileName: string;
49
- /**
50
- * Reflects the client-specified maximum size for each chunk of a
51
- * {@link SubmissionResult<'chunked'> | chunked submission result}.
52
- */
53
- readonly maxSize: number;
54
- /**
55
- * Details the actual size of the violating {@link File}/submission
56
- * attachment. Along with {@link maxSize}. Clients may use the delta between
57
- * this value and {@link maxSize} to provide detailed guidance to users.
58
- */
59
- readonly actualSize: number;
60
- }
61
- type SubmissionResultViolation = DescendantNodeViolationReference | MaxSizeViolation;
62
- interface BaseSubmissionResult<ChunkedType extends SubmissionChunkedType> {
63
- readonly status: SubmissionResultStatus;
64
- readonly definition: SubmissionDefinition;
65
- get violations(): readonly SubmissionResultViolation[] | null;
66
- /**
67
- * Submission data may be chunked according to the
68
- * {@link SubmissionOptions.maxSize | maxSize submission option}
69
- */
70
- readonly data: SubmissionResultData<ChunkedType>;
71
- }
72
- interface PendingSubmissionResult<ChunkedType extends SubmissionChunkedType> extends BaseSubmissionResult<ChunkedType> {
73
- readonly status: 'pending';
74
- get violations(): readonly DescendantNodeViolationReference[];
75
- }
76
- interface MaxSizeExceededResult extends BaseSubmissionResult<'chunked'> {
77
- readonly status: 'max-size-exceeded';
78
- get violations(): readonly MaxSizeViolation[];
79
- }
80
- interface ReadySubmissionResult<ChunkedType extends SubmissionChunkedType> extends BaseSubmissionResult<ChunkedType> {
81
- readonly status: 'ready';
82
- get violations(): null;
83
- }
84
- type CommonSubmissionResult<ChunkedType extends SubmissionChunkedType> = PendingSubmissionResult<ChunkedType> | ReadySubmissionResult<ChunkedType>;
85
- export type ChunkedSubmissionResult = CommonSubmissionResult<'chunked'> | MaxSizeExceededResult;
86
- export type MonolithicSubmissionResult = CommonSubmissionResult<'monolithic'>;
87
- export type SubmissionResult<ChunkedType extends SubmissionChunkedType> = {
88
- chunked: ChunkedSubmissionResult;
89
- monolithic: MonolithicSubmissionResult;
90
- }[ChunkedType];
91
- export {};
@@ -1,12 +0,0 @@
1
- export interface SubmissionState {
2
- /**
3
- * Represents the serialized XML state of a given node, as it will be prepared
4
- * for submission. The value produced in {@link RootNode.submissionState} is
5
- * the same serialization which will be produced for the complete submission.
6
- *
7
- * @todo Note that this particular aspect of the design doesn't yet address
8
- * production of unique file names. As such, this may change as we introduce
9
- * affected data types (and their supporting nodes).
10
- */
11
- get submissionXML(): string;
12
- }
@@ -1,30 +0,0 @@
1
- import { UnknownAppearanceDefinition } from '../../parse/body/appearance/unknownAppearanceParser.ts';
2
- import { UploadControlDefinition } from '../../parse/body/control/UploadControlDefinition.ts';
3
- import { LeafNodeDefinition } from '../../parse/model/LeafNodeDefinition.ts';
4
- import { BaseNode, BaseNodeState } from '../BaseNode.ts';
5
- import { RootNode } from '../RootNode.ts';
6
- import { GeneralParentNode } from '../hierarchy.ts';
7
- import { UnsupportedControlNodeType } from '../node-types.ts';
8
- import { LeafNodeValidationState } from '../validation.ts';
9
- export interface UnsupportedControlNodeState extends BaseNodeState {
10
- get children(): null;
11
- get valueOptions(): unknown;
12
- get value(): unknown;
13
- }
14
- export type UnsupportedControlElementDefinition = UploadControlDefinition;
15
- export interface UnsupportedControlDefinition extends LeafNodeDefinition {
16
- readonly bodyElement: UnsupportedControlElementDefinition;
17
- }
18
- /**
19
- * Stub node, for form controls pending further engine support.
20
- */
21
- export interface UnsupportedControlNode extends BaseNode {
22
- readonly nodeType: UnsupportedControlNodeType;
23
- readonly appearances: UnknownAppearanceDefinition;
24
- readonly definition: UnsupportedControlDefinition;
25
- readonly root: RootNode;
26
- readonly parent: GeneralParentNode;
27
- readonly currentState: UnsupportedControlNodeState;
28
- readonly validationState: LeafNodeValidationState;
29
- setValue?(value: never): never;
30
- }
@@ -1,9 +0,0 @@
1
- import { UploadControlDefinition } from '../../parse/body/control/UploadControlDefinition.ts';
2
- import { UnsupportedControlDefinition, UnsupportedControlNode } from './UnsupportedControlNode.ts';
3
- export interface UploadNodeDefinition extends UnsupportedControlDefinition {
4
- readonly bodyElement: UploadControlDefinition;
5
- }
6
- export interface UploadNode extends UnsupportedControlNode {
7
- readonly nodeType: 'upload';
8
- readonly definition: UploadNodeDefinition;
9
- }
@@ -1,54 +0,0 @@
1
- import { XPathNodeKindKey } from '@getodk/xpath';
2
- import { Accessor } from 'solid-js';
3
- import { UnsupportedControlNodeType } from '../../client/node-types.ts';
4
- import { SubmissionState } from '../../client/submission/SubmissionState.ts';
5
- import { TextRange } from '../../client/TextRange.ts';
6
- import { UnsupportedControlDefinition, UnsupportedControlElementDefinition, UnsupportedControlNode } from '../../client/unsupported/UnsupportedControlNode.ts';
7
- import { AnyViolation, LeafNodeValidationState } from '../../client/validation.ts';
8
- import { XFormsXPathElement } from '../../integration/xpath/adapter/XFormsXPathNode.ts';
9
- import { CurrentState } from '../../lib/reactivity/node-state/createCurrentState.ts';
10
- import { EngineState } from '../../lib/reactivity/node-state/createEngineState.ts';
11
- import { SharedNodeState } from '../../lib/reactivity/node-state/createSharedNodeState.ts';
12
- import { SimpleAtomicState } from '../../lib/reactivity/types.ts';
13
- import { UnknownAppearanceDefinition } from '../../parse/body/appearance/unknownAppearanceParser.ts';
14
- import { AnyUnsupportedControl, GeneralParentNode } from '../hierarchy.ts';
15
- import { EvaluationContext } from '../internal-api/EvaluationContext.ts';
16
- import { ClientReactiveSubmittableLeafNode } from '../internal-api/submission/ClientReactiveSubmittableLeafNode.ts';
17
- import { ValidationContext } from '../internal-api/ValidationContext.ts';
18
- import { ValueContext } from '../internal-api/ValueContext.ts';
19
- import { DescendantNode, DescendantNodeStateSpec } from './DescendantNode.ts';
20
- type TypedUnsupportedControlElementDefinition<Type extends UnsupportedControlNodeType> = Extract<UnsupportedControlElementDefinition, {
21
- readonly type: Type;
22
- }>;
23
- interface TypedUnsupportedControlDefinition<Type extends UnsupportedControlNodeType> extends UnsupportedControlDefinition {
24
- readonly bodyElement: TypedUnsupportedControlElementDefinition<Type>;
25
- }
26
- interface UnsupportedControlStateSpec extends DescendantNodeStateSpec<unknown> {
27
- readonly label: Accessor<TextRange<'label'> | null>;
28
- readonly hint: Accessor<TextRange<'hint'> | null>;
29
- readonly children: null;
30
- readonly value: SimpleAtomicState<unknown>;
31
- readonly valueOptions: never;
32
- }
33
- export declare abstract class UnsupportedControl<Type extends UnsupportedControlNodeType> extends DescendantNode<TypedUnsupportedControlDefinition<Type>, UnsupportedControlStateSpec, GeneralParentNode, null> implements UnsupportedControlNode, XFormsXPathElement, EvaluationContext, ValidationContext, ValueContext<unknown>, ClientReactiveSubmittableLeafNode<unknown> {
34
- private readonly validation;
35
- protected readonly state: SharedNodeState<UnsupportedControlStateSpec>;
36
- readonly [XPathNodeKindKey] = "element";
37
- protected readonly engineState: EngineState<UnsupportedControlStateSpec>;
38
- abstract readonly nodeType: Type;
39
- readonly appearances: UnknownAppearanceDefinition;
40
- readonly nodeOptions: null;
41
- readonly currentState: CurrentState<UnsupportedControlStateSpec>;
42
- get validationState(): LeafNodeValidationState;
43
- readonly submissionState: SubmissionState;
44
- abstract readonly contextNode: AnyUnsupportedControl & this;
45
- readonly encodeValue: (instanceValue: unknown) => string;
46
- readonly decodeValue: (instanceValue: unknown) => unknown;
47
- constructor(parent: GeneralParentNode, definition: TypedUnsupportedControlDefinition<Type>);
48
- getXPathValue(): string;
49
- getViolation(): AnyViolation | null;
50
- isBlank(): boolean;
51
- getChildren(): readonly [];
52
- setValue(_: never): never;
53
- }
54
- export {};
@@ -1,8 +0,0 @@
1
- import { RootNode } from '../client/RootNode.ts';
2
- import { InitializeFormOptions as BaseInitializeFormOptions, FormResource } from '../client/index.ts';
3
- import { InstanceConfig } from './internal-api/InstanceConfig.ts';
4
- interface InitializeFormOptions extends BaseInitializeFormOptions {
5
- readonly config: Partial<InstanceConfig>;
6
- }
7
- export declare const initializeForm: (input: FormResource, options?: Partial<InitializeFormOptions>) => Promise<RootNode>;
8
- export {};
@@ -1,23 +0,0 @@
1
- import { EngineXPathNode } from '../../integration/xpath/adapter/kind.ts';
2
- import { ReactiveScope } from '../../lib/reactivity/scope.ts';
3
- import { BindComputationExpression } from '../../parse/expression/BindComputationExpression.ts';
4
- import { EvaluationContext } from './EvaluationContext.ts';
5
- export type InstanceValue = string;
6
- interface ValueContextDefinitionBind {
7
- readonly calculate: BindComputationExpression<'calculate'> | null;
8
- readonly readonly: BindComputationExpression<'readonly'>;
9
- }
10
- export interface ValueContextDefinition {
11
- readonly bind: ValueContextDefinitionBind;
12
- readonly defaultValue: InstanceValue;
13
- }
14
- export interface ValueContext<RuntimeValue> extends EvaluationContext {
15
- readonly scope: ReactiveScope;
16
- readonly definition: ValueContextDefinition;
17
- readonly contextNode: EngineXPathNode & this;
18
- isReadonly(): boolean;
19
- isRelevant(): boolean;
20
- readonly encodeValue: (this: unknown, runtimeValue: RuntimeValue) => InstanceValue;
21
- readonly decodeValue: (this: unknown, instanceValue: InstanceValue) => RuntimeValue;
22
- }
23
- export {};
@@ -1,14 +0,0 @@
1
- import { SubmissionDefinition } from '../../../client/submission/SubmissionDefinition.ts';
2
- import { AncestorNodeValidationState } from '../../../client/validation.ts';
3
- import { Root } from '../../Root.ts';
4
- import { ClientReactiveSubmittableParentNode, ClientReactiveSubmittableParentNodeDefinition } from './ClientReactiveSubmittableParentNode.ts';
5
- interface ClientReactiveSubmittableInstanceDefinition extends ClientReactiveSubmittableParentNodeDefinition {
6
- readonly submission: SubmissionDefinition;
7
- }
8
- export interface ClientReactiveSubmittableInstance extends ClientReactiveSubmittableParentNode<Root> {
9
- readonly definition: ClientReactiveSubmittableInstanceDefinition;
10
- readonly root: Root;
11
- readonly parent: null;
12
- readonly validationState: AncestorNodeValidationState;
13
- }
14
- export {};