@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
@@ -1,32 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { QualifiedName } from '../../../lib/names/QualifiedName.ts';
3
- import { EscapedXMLText } from '../../../lib/xml-serialization.ts';
4
- import { ClientReactiveSubmittableChildNode, ClientReactiveSubmittableParentNode } from './ClientReactiveSubmittableParentNode.ts';
5
- interface ClientReactiveSubmittableLeafNodeCurrentState<RuntimeValue> {
6
- get relevant(): boolean;
7
- get value(): RuntimeValue;
8
- }
9
- export type SerializedSubmissionValue = string;
10
- interface ClientReactiveSubmittableLeafNodeDefinition {
11
- readonly qualifiedName: QualifiedName;
12
- }
13
- export interface ClientReactiveSubmittableLeafNode<RuntimeValue> {
14
- readonly definition: ClientReactiveSubmittableLeafNodeDefinition;
15
- readonly parent: ClientReactiveSubmittableParentNode<ClientReactiveSubmittableChildNode>;
16
- readonly currentState: ClientReactiveSubmittableLeafNodeCurrentState<RuntimeValue>;
17
- /**
18
- * A client-reactive submittable leaf node is responsible for producing a
19
- * string representation of its value state, suitable for serialization for
20
- * submission. It **MUST NOT** perform any further submission-specific
21
- * serialization duties: in particular, the value **MUST NOT** be escaped for
22
- * XML. This responsibility is delegated up the stack, to avoid repeat
23
- * escaping.
24
- *
25
- * Note: excluding {@link EscapedXMLText} here does not have an effect on the
26
- * type system, it is a documentation-only hint, to help guard against future
27
- * double-escaping mistakes.
28
- */
29
- readonly encodeValue: (this: unknown, runtimeValue: RuntimeValue) => Exclude<string, EscapedXMLText>;
30
- readonly submissionState: SubmissionState;
31
- }
32
- export {};
@@ -1,19 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { QualifiedName } from '../../../lib/names/QualifiedName.ts';
3
- export interface ClientReactiveSubmittableChildNode {
4
- readonly submissionState: SubmissionState;
5
- }
6
- interface ClientReactiveSubmittableParentNodeCurrentState<Child extends ClientReactiveSubmittableChildNode> {
7
- get relevant(): boolean;
8
- get children(): readonly Child[];
9
- }
10
- export interface ClientReactiveSubmittableParentNodeDefinition {
11
- readonly qualifiedName: QualifiedName;
12
- }
13
- export interface ClientReactiveSubmittableParentNode<Child extends ClientReactiveSubmittableChildNode> {
14
- readonly definition: ClientReactiveSubmittableParentNodeDefinition;
15
- readonly parent: ClientReactiveSubmittableParentNode<ClientReactiveSubmittableChildNode> | null;
16
- readonly currentState: ClientReactiveSubmittableParentNodeCurrentState<Child>;
17
- readonly submissionState: SubmissionState;
18
- }
19
- export {};
@@ -1,18 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { QualifiedName } from '../../../lib/names/QualifiedName.ts';
3
- import { ClientReactiveSubmittableChildNode, ClientReactiveSubmittableParentNode } from './ClientReactiveSubmittableParentNode.ts';
4
- interface ClientReactiveSubmittableValueNodeCurrentState {
5
- get relevant(): boolean;
6
- get instanceValue(): string;
7
- }
8
- export type SerializedSubmissionValue = string;
9
- interface ClientReactiveSubmittableValueNodeDefinition {
10
- readonly qualifiedName: QualifiedName;
11
- }
12
- export interface ClientReactiveSubmittableValueNode {
13
- readonly definition: ClientReactiveSubmittableValueNodeDefinition;
14
- readonly parent: ClientReactiveSubmittableParentNode<ClientReactiveSubmittableChildNode>;
15
- readonly currentState: ClientReactiveSubmittableValueNodeCurrentState;
16
- readonly submissionState: SubmissionState;
17
- }
18
- export {};
@@ -1,6 +0,0 @@
1
- import { UnsupportedControl } from '../abstract/UnsupportedControl.ts';
2
- import { ValueContext } from '../internal-api/ValueContext.ts';
3
- export declare class UploadControl extends UnsupportedControl<'upload'> implements ValueContext<unknown> {
4
- readonly nodeType = "upload";
5
- readonly contextNode: this;
6
- }
@@ -1,3 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { ClientReactiveSubmittableInstance } from '../../../instance/internal-api/submission/ClientReactiveSubmittableInstance.ts';
3
- export declare const createInstanceSubmissionState: (node: ClientReactiveSubmittableInstance) => SubmissionState;
@@ -1,3 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { ClientReactiveSubmittableLeafNode } from '../../../instance/internal-api/submission/ClientReactiveSubmittableLeafNode.ts';
3
- export declare const createLeafNodeSubmissionState: <Value>(node: ClientReactiveSubmittableLeafNode<Value>) => SubmissionState;
@@ -1,4 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { ClientReactiveSubmittableParentNode } from '../../../instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts';
3
- import { RepeatInstance } from '../../../instance/repeat/RepeatInstance.ts';
4
- export declare const createNodeRangeSubmissionState: (node: ClientReactiveSubmittableParentNode<RepeatInstance>) => SubmissionState;
@@ -1,4 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { GeneralChildNode } from '../../../instance/hierarchy.ts';
3
- import { ClientReactiveSubmittableParentNode } from '../../../instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts';
4
- export declare const createParentNodeSubmissionState: (node: ClientReactiveSubmittableParentNode<GeneralChildNode>) => SubmissionState;
@@ -1,3 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { Root } from '../../../instance/Root.ts';
3
- export declare const createRootSubmissionState: (node: Root) => SubmissionState;
@@ -1,3 +0,0 @@
1
- import { SubmissionState } from '../../../client/submission/SubmissionState.ts';
2
- import { ClientReactiveSubmittableValueNode } from '../../../instance/internal-api/submission/ClientReactiveSubmittableValueNode.ts';
3
- export declare const createValueNodeSubmissionState: (node: ClientReactiveSubmittableValueNode) => SubmissionState;
@@ -1,8 +0,0 @@
1
- import { SubmissionChunkedType } from '../../../client/submission/SubmissionOptions.ts';
2
- import { SubmissionResult } from '../../../client/submission/SubmissionResult.ts';
3
- import { ClientReactiveSubmittableInstance } from '../../../instance/internal-api/submission/ClientReactiveSubmittableInstance.ts';
4
- export interface PrepeareSubmissionOptions<ChunkedType extends SubmissionChunkedType> {
5
- readonly chunked: ChunkedType;
6
- readonly maxSize: number;
7
- }
8
- export declare const prepareSubmission: <ChunkedType extends SubmissionChunkedType>(instanceRoot: ClientReactiveSubmittableInstance, options: PrepeareSubmissionOptions<ChunkedType>) => SubmissionResult<ChunkedType>;
@@ -1,40 +0,0 @@
1
- import { ValueContext } from '../../instance/internal-api/ValueContext.ts';
2
- import { SimpleAtomicState } from './types.ts';
3
- type InitialValueSource = 'FORM_DEFAULT' | 'PRIMARY_INSTANCE';
4
- export interface ValueStateOptions {
5
- /**
6
- * Specifies the source of a {@link createValueState} signal's initial
7
- * value state, where:
8
- *
9
- * - 'FORM_DEFAULT': Derives the initial state from the form's
10
- * definition of the node itself. This is the default option, appropriate
11
- * when initializing a form without additional primary instance data. In
12
- * other words, this value should not be used for edits.
13
- *
14
- * - 'PRIMARY_INSTANCE': Derives the initial state from the current text
15
- * content of the {@link ValueNode.contextNode}. This option
16
- * should be specified when initializing a form with existing primary
17
- * instance data, such as when editing a previous submission.
18
- *
19
- * @default 'FORM_DEFAULT'
20
- *
21
- * Specifies whether a {@link createV} signal's initial state
22
- * should be derived from the current text content of the
23
- * {@link ValueNode.contextNode | primary instance DOM state}.
24
- */
25
- readonly initialValueSource?: InitialValueSource;
26
- }
27
- type ValueState<RuntimeValue> = SimpleAtomicState<RuntimeValue>;
28
- /**
29
- * Provides a consistent interface for value nodes of any type which:
30
- *
31
- * - derives initial state from either an existing instance (e.g. for edits) or
32
- * the node's definition (e.g. initializing a new submission)
33
- * - decodes current primary instance state into the value node's runtime type
34
- * - encodes updated runtime values to store updated instance state
35
- * - initializes reactive computation of `calculate` bind expressions for those
36
- * nodes defined with one
37
- * - prevents downstream writes to nodes in a readonly state
38
- */
39
- export declare const createValueState: <RuntimeValue>(context: ValueContext<RuntimeValue>, options?: ValueStateOptions) => ValueState<RuntimeValue>;
40
- export {};
@@ -1,4 +0,0 @@
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
- }
@@ -1,9 +0,0 @@
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
- }
@@ -1,8 +0,0 @@
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,17 +0,0 @@
1
- import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
2
- import { QualifiedName } from '../../lib/names/QualifiedName.ts';
3
- import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
4
- import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
5
- import { ChildNodeDefinition } from './NodeDefinition.ts';
6
- import { AnyRepeatRangeDefinition } from './RepeatRangeDefinition.ts';
7
- export declare class RepeatInstanceDefinition extends DescendentNodeDefinition<'repeat-instance', RepeatElementDefinition> {
8
- readonly node: Element;
9
- readonly type = "repeat-instance";
10
- readonly namespaceDeclarations: NamespaceDeclarationMap;
11
- readonly qualifiedName: QualifiedName;
12
- readonly children: readonly ChildNodeDefinition[];
13
- readonly instances: null;
14
- readonly defaultValue: null;
15
- constructor(range: AnyRepeatRangeDefinition, node: Element);
16
- toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement">;
17
- }
@@ -1,32 +0,0 @@
1
- import { NamespaceDeclarationMap } from '../../lib/names/NamespaceDeclarationMap.ts';
2
- import { QualifiedName } from '../../lib/names/QualifiedName.ts';
3
- import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
4
- import { RepeatCountControlExpression } from '../expression/RepeatCountControlExpression.ts';
5
- import { BindDefinition } from './BindDefinition.ts';
6
- import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
7
- import { ParentNodeDefinition } from './NodeDefinition.ts';
8
- import { RepeatInstanceDefinition } from './RepeatInstanceDefinition.ts';
9
- import { RepeatTemplateDefinition } from './RepeatTemplateDefinition.ts';
10
- export interface ControlledRepeatRangeDefinition extends RepeatRangeDefinition {
11
- readonly count: RepeatCountControlExpression;
12
- }
13
- export interface UncontrolledRepeatRangeDefinition extends RepeatRangeDefinition {
14
- readonly count: null;
15
- }
16
- export type AnyRepeatRangeDefinition = ControlledRepeatRangeDefinition | UncontrolledRepeatRangeDefinition;
17
- export declare class RepeatRangeDefinition extends DescendentNodeDefinition<'repeat-range', RepeatElementDefinition> {
18
- static from(parent: ParentNodeDefinition, bind: BindDefinition, bodyElement: RepeatElementDefinition, modelNodes: readonly [Element, ...Element[]]): AnyRepeatRangeDefinition;
19
- readonly type = "repeat-range";
20
- readonly template: RepeatTemplateDefinition;
21
- readonly children: null;
22
- readonly instances: RepeatInstanceDefinition[];
23
- readonly count: RepeatCountControlExpression | null;
24
- readonly node: null;
25
- readonly namespaceDeclarations: NamespaceDeclarationMap;
26
- readonly qualifiedName: QualifiedName;
27
- readonly defaultValue: null;
28
- private constructor();
29
- isControlled(): this is ControlledRepeatRangeDefinition;
30
- isUncontrolled(): this is UncontrolledRepeatRangeDefinition;
31
- toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement" | "isControlled" | "isUncontrolled">;
32
- }
@@ -1,31 +0,0 @@
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';
4
- import { RepeatElementDefinition } from '../body/RepeatElementDefinition.ts';
5
- import { DescendentNodeDefinition } from './DescendentNodeDefinition.ts';
6
- import { ChildNodeDefinition } from './NodeDefinition.ts';
7
- import { RepeatRangeDefinition } from './RepeatRangeDefinition.ts';
8
- interface ExplicitRepeatTemplateElement extends Element {
9
- getAttributeNS(namespaceURI: typeof JAVAROSA_NAMESPACE_URI, name: 'template'): string;
10
- getAttributeNS(namespaceURI: string | null, name: string): string | null;
11
- hasAttributeNS(namespaceURI: typeof JAVAROSA_NAMESPACE_URI, name: 'template'): true;
12
- (namespaceURI: string | null, name: string): boolean;
13
- }
14
- interface ParsedRepeatNodes {
15
- readonly template: RepeatTemplateDefinition;
16
- readonly instanceNodes: readonly Element[];
17
- }
18
- export declare class RepeatTemplateDefinition extends DescendentNodeDefinition<'repeat-template', RepeatElementDefinition> {
19
- protected readonly templateNode: ExplicitRepeatTemplateElement;
20
- static parseModelNodes(range: RepeatRangeDefinition, modelNodes: readonly [Element, ...Element[]]): ParsedRepeatNodes;
21
- readonly type = "repeat-template";
22
- readonly node: Element;
23
- readonly namespaceDeclarations: NamespaceDeclarationMap;
24
- readonly qualifiedName: QualifiedName;
25
- readonly children: readonly ChildNodeDefinition[];
26
- readonly instances: null;
27
- readonly defaultValue: null;
28
- protected constructor(range: RepeatRangeDefinition, templateNode: ExplicitRepeatTemplateElement);
29
- toJSON(): Omit<this, "parent" | "bind" | "toJSON" | "root" | "bodyElement">;
30
- }
31
- export {};
@@ -1,4 +0,0 @@
1
- import { StaticDocument } from '../../../integration/xpath/static-dom/StaticDocument.ts';
2
- import { SecondaryInstanceRootDefinition } from './SecondaryInstanceRootDefinition.ts';
3
- export declare class SecondaryInstanceDefinition extends StaticDocument<SecondaryInstanceRootDefinition> {
4
- }
@@ -1,7 +0,0 @@
1
- import { XFormsSecondaryInstanceElement, XFORMS_KNOWN_ATTRIBUTE, XFORMS_LOCAL_NAME } from '@getodk/xpath';
2
- import { StaticElement } from '../../../integration/xpath/static-dom/StaticElement.ts';
3
- import { SecondaryInstanceDefinition } from './SecondaryInstanceDefinition.ts';
4
- export declare class SecondaryInstanceRootDefinition extends StaticElement<SecondaryInstanceDefinition> implements XFormsSecondaryInstanceElement<StaticElement> {
5
- readonly [XFORMS_LOCAL_NAME] = "instance";
6
- readonly [XFORMS_KNOWN_ATTRIBUTE] = "id";
7
- }
@@ -1,84 +0,0 @@
1
- import type { initializeForm } from '../instance/index.ts';
2
- import type { MissingResourceBehavior, MissingResourceBehaviorDefault } from './constants.ts';
3
- import type { OpaqueReactiveObjectFactory } from './OpaqueReactiveObjectFactory.ts';
4
- import type { FetchFormAttachment, FetchResource } from './resources.ts';
5
-
6
- /**
7
- * Options provided by a client to specify certain aspects of engine runtime
8
- * behavior. These options will generally be intended to facilitate cooperation
9
- * where there is mixed responsibility between a client and the engine, or where
10
- * the engine may provide sensible defaults which a client could be expected to
11
- * override or augment.
12
- */
13
- export interface EngineConfig {
14
- /**
15
- * A client may specify a generic function for constructing stateful objects.
16
- * The only hard requirement of this function is that it accepts an **object**
17
- * and returns an object of the same shape. The engine will use this function
18
- * to initialize client-facing state, and will mutate properties of the object
19
- * when their corresponding state is changed.
20
- *
21
- * A client may use this function to provide its own implementation of
22
- * reactivity with semantics like those described above. The mechanism of
23
- * reactivity, if any, is at the discretion of the client. It is expected
24
- * that clients providing this function will use a reactive subscribe-on-read
25
- * mechanism to handle state updates conveyed by the engine.
26
- */
27
- readonly stateFactory?: OpaqueReactiveObjectFactory;
28
-
29
- /**
30
- *
31
- * A client may specify an arbitrary {@link fetch}-like function for retrieving an XML XForm form
32
- * definition.
33
- *
34
- * Notes:
35
- *
36
- * - This configuration will only be consuled for calls to
37
- * {@link initializeForm} with a URL referencing an XML XForm definition. It
38
- * will be ignored for calls passing an XML XForm form definition directly.
39
- *
40
- * - For calls to {@link initializeForm} with a URL, if this configuration is
41
- * not specified it will default to the global {@link fetch} function (if
42
- * one is defined).
43
- */
44
- readonly fetchFormDefinition?: FetchResource;
45
-
46
- /**
47
- * A client may specify an arbitrary {@link fetch}-like function to retrieve a
48
- * form's attachments, i.e. any `jr:` URL referenced by the form (as specified
49
- * by {@link https://getodk.github.io/xforms-spec/ | ODK XForms}).
50
- *
51
- * Notes:
52
- *
53
- * - This configuration will be consulted for all supported form attachments,
54
- * as a part of {@link initializeForm | form initialization}.
55
- *
56
- * - If this configuration is not specified it will default to the global
57
- * {@link fetch} function (if one is defined).
58
- *
59
- * This default behavior will typically result in failure to load form
60
- * attachments—and in most cases this will also cause
61
- * {@link initializeForm | form initialization} to fail overall—with the
62
- * following exceptions:
63
- *
64
- * - **CLIENT-SPECIFIC:** Usage in coordination with a client-implemented
65
- * {@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API | Serivce Worker},
66
- * which can intercept network requests **generally**. Clients already using
67
- * a Service Worker may opt for the convenience of handling network requests
68
- * for `jr:` URLs along with any other network interception logic. Client
69
- * implementors should be warned, however, that such `jr:` URLs are not
70
- * namespaced or otherwise scoped to a particular form; such a client would
71
- * therefore inherently need to coordinate state between the Service Worker
72
- * and the main thread (or whatever other realm calls
73
- * {@link initializeForm}).
74
- */
75
- readonly fetchFormAttachment?: FetchFormAttachment;
76
-
77
- /**
78
- * @see {@link MissingResourceBehavior}
79
- * @see {@link MissingResourceBehaviorDefault}
80
- *
81
- * @default MissingResourceBehaviorDefault
82
- */
83
- readonly missingResourceBehavior?: MissingResourceBehavior;
84
- }
@@ -1,12 +0,0 @@
1
- import type {
2
- SubmissionInstanceFile,
3
- SubmissionInstanceFileName,
4
- } from './SubmissionInstanceFile.ts';
5
-
6
- export interface SubmissionData extends FormData {
7
- get(name: SubmissionInstanceFileName): SubmissionInstanceFile;
8
- get(name: string): FormDataEntryValue | null;
9
-
10
- has(name: SubmissionInstanceFileName): true;
11
- has(name: string): boolean;
12
- }
@@ -1,9 +0,0 @@
1
- import type { SubmissionInstanceFileName, SubmissionInstanceFileType } from '../constants.ts';
2
-
3
- // Re-export for convenient `SubmissionInstanceFile` construction/access flows
4
- export type { SubmissionInstanceFileName, SubmissionInstanceFileType };
5
-
6
- export interface SubmissionInstanceFile extends File {
7
- readonly name: SubmissionInstanceFileName;
8
- readonly type: SubmissionInstanceFileType;
9
- }
@@ -1,28 +0,0 @@
1
- export type SubmissionChunkedType = 'chunked' | 'monolithic';
2
-
3
- interface BaseSubmissionOptions<ChunkedType extends SubmissionChunkedType> {
4
- readonly chunked?: ChunkedType | undefined;
5
-
6
- /**
7
- * As described in the
8
- * {@link https://docs.getodk.org/openrosa-form-submission/#extended-transmission-considerations | OpenRosa Form Submission API},
9
- * clients may obtain this value from an OpenRosa server's
10
- * `X-OpenRosa-Accept-Content-Length` header.
11
- */
12
- readonly maxSize?: number;
13
- }
14
-
15
- interface ChunkedSubmissionOptions extends BaseSubmissionOptions<'chunked'> {
16
- readonly maxSize: number;
17
- }
18
-
19
- interface MonolithicSubmissionOptions extends BaseSubmissionOptions<'monolithic'> {
20
- readonly chunked?: 'monolithic' | undefined;
21
- readonly maxSize?: never;
22
- }
23
-
24
- // prettier-ignore
25
- export type SubmissionOptions<ChunkedType extends SubmissionChunkedType = 'monolithic'> = {
26
- chunked: ChunkedSubmissionOptions;
27
- monolithic: MonolithicSubmissionOptions;
28
- }[ChunkedType];
@@ -1,124 +0,0 @@
1
- import type { AnyViolation, DescendantNodeViolationReference } from '../validation.ts';
2
- import type { SubmissionData } from './SubmissionData.ts';
3
- import type { SubmissionDefinition } from './SubmissionDefinition.ts';
4
- import type { SubmissionChunkedType, SubmissionOptions } from './SubmissionOptions.ts';
5
-
6
- // prettier-ignore
7
- export type SubmissionResultStatus =
8
- // eslint-disable-next-line @typescript-eslint/sort-type-constituents
9
- | 'pending'
10
- | 'max-size-exceeded'
11
- | 'ready';
12
-
13
- // prettier-ignore
14
- type SubmissionResultData<ChunkedType extends SubmissionChunkedType> = {
15
- chunked: readonly [SubmissionData, ...SubmissionData[]];
16
- monolithic: SubmissionData;
17
- }[ChunkedType];
18
-
19
- /**
20
- * Provides detail about an individual submission attachment {@link File}s which
21
- * exceeds the client-specified {@link maxSize} for a
22
- * {@link SubmissionResult<'chunked'> | chunked submission result}. Clients may
23
- * use this value to provide guidance to users.
24
- *
25
- * @todo We may want to consider (a) making {@link maxSize} a configuration the
26
- * client can provide when initializing a form instance, rather than only on
27
- * submission; and then (b) treating a maximum size violation as another kind of
28
- * node-level violation. This would go beyond the kinds of validation specified
29
- * by ODK XForms, but it would make a lot of _conceptual sense_.
30
- *
31
- * It would almost certainly be helpful to alert users to violations as the
32
- * occur, rather than only at submission time (where they have likely already
33
- * moved on). This is something clients can do without engine support, but it
34
- * would likely promote good usability patterns if the engine makes it an
35
- * obvious and uniform option at the main engine/client entrypoint.
36
- *
37
- * @todo If we consider the above, we'd want to reframe _this interface_ to
38
- * match the shape of other {@link AnyViolation | violations} (adding it as a
39
- * member of that union). We'd also likely eliminate
40
- * {@link MaxSizeExceededResult} in the process, since
41
- * {@link PendingSubmissionResult} would then cover the case.
42
- */
43
- interface MaxSizeViolation {
44
- /**
45
- * Specifies the index of
46
- * {@link SubmissionResultData<'chunked'> | chunked submission data} where a
47
- * submission attachment {@link File} exceeds the client-specified
48
- * {@link maxSize}.
49
- */
50
- readonly dataIndex: number;
51
-
52
- /**
53
- * Specifies the name of the file which exceeds the client-specified
54
- * {@link maxSize}. This name can also be used as a key to access the
55
- * violating {@link File}/submission attachment, in the {@link SubmissionData}
56
- * at the specified {@link dataIndex}.
57
- */
58
- readonly fileName: string;
59
-
60
- /**
61
- * Reflects the client-specified maximum size for each chunk of a
62
- * {@link SubmissionResult<'chunked'> | chunked submission result}.
63
- */
64
- readonly maxSize: number;
65
-
66
- /**
67
- * Details the actual size of the violating {@link File}/submission
68
- * attachment. Along with {@link maxSize}. Clients may use the delta between
69
- * this value and {@link maxSize} to provide detailed guidance to users.
70
- */
71
- readonly actualSize: number;
72
- }
73
-
74
- // prettier-ignore
75
- type SubmissionResultViolation =
76
- | DescendantNodeViolationReference
77
- | MaxSizeViolation;
78
-
79
- interface BaseSubmissionResult<ChunkedType extends SubmissionChunkedType> {
80
- readonly status: SubmissionResultStatus;
81
- readonly definition: SubmissionDefinition;
82
- get violations(): readonly SubmissionResultViolation[] | null;
83
-
84
- /**
85
- * Submission data may be chunked according to the
86
- * {@link SubmissionOptions.maxSize | maxSize submission option}
87
- */
88
- readonly data: SubmissionResultData<ChunkedType>;
89
- }
90
-
91
- interface PendingSubmissionResult<ChunkedType extends SubmissionChunkedType>
92
- extends BaseSubmissionResult<ChunkedType> {
93
- readonly status: 'pending';
94
- get violations(): readonly DescendantNodeViolationReference[];
95
- }
96
-
97
- interface MaxSizeExceededResult extends BaseSubmissionResult<'chunked'> {
98
- readonly status: 'max-size-exceeded';
99
- get violations(): readonly MaxSizeViolation[];
100
- }
101
-
102
- interface ReadySubmissionResult<ChunkedType extends SubmissionChunkedType>
103
- extends BaseSubmissionResult<ChunkedType> {
104
- readonly status: 'ready';
105
- get violations(): null;
106
- }
107
-
108
- // prettier-ignore
109
- type CommonSubmissionResult<ChunkedType extends SubmissionChunkedType> =
110
- | PendingSubmissionResult<ChunkedType>
111
- | ReadySubmissionResult<ChunkedType>;
112
-
113
- // prettier-ignore
114
- export type ChunkedSubmissionResult =
115
- | CommonSubmissionResult<'chunked'>
116
- | MaxSizeExceededResult;
117
-
118
- export type MonolithicSubmissionResult = CommonSubmissionResult<'monolithic'>;
119
-
120
- // prettier-ignore
121
- export type SubmissionResult<ChunkedType extends SubmissionChunkedType> = {
122
- chunked: ChunkedSubmissionResult;
123
- monolithic: MonolithicSubmissionResult;
124
- }[ChunkedType];
@@ -1,14 +0,0 @@
1
- import type { RootNode } from '../RootNode.ts';
2
-
3
- export interface SubmissionState {
4
- /**
5
- * Represents the serialized XML state of a given node, as it will be prepared
6
- * for submission. The value produced in {@link RootNode.submissionState} is
7
- * the same serialization which will be produced for the complete submission.
8
- *
9
- * @todo Note that this particular aspect of the design doesn't yet address
10
- * production of unique file names. As such, this may change as we introduce
11
- * affected data types (and their supporting nodes).
12
- */
13
- get submissionXML(): string;
14
- }
@@ -1,36 +0,0 @@
1
- import type { UnknownAppearanceDefinition } from '../../parse/body/appearance/unknownAppearanceParser.ts';
2
- import type { UploadControlDefinition } from '../../parse/body/control/UploadControlDefinition.ts';
3
- import type { LeafNodeDefinition } from '../../parse/model/LeafNodeDefinition.ts';
4
- import type { BaseNode, BaseNodeState } from '../BaseNode.ts';
5
- import type { RootNode } from '../RootNode.ts';
6
- import type { GeneralParentNode } from '../hierarchy.ts';
7
- import type { UnsupportedControlNodeType } from '../node-types.ts';
8
- import type { LeafNodeValidationState } from '../validation.ts';
9
-
10
- export interface UnsupportedControlNodeState extends BaseNodeState {
11
- get children(): null;
12
- get valueOptions(): unknown;
13
- get value(): unknown;
14
- }
15
-
16
- // prettier-ignore
17
- export type UnsupportedControlElementDefinition = UploadControlDefinition;
18
-
19
- export interface UnsupportedControlDefinition extends LeafNodeDefinition {
20
- readonly bodyElement: UnsupportedControlElementDefinition;
21
- }
22
-
23
- /**
24
- * Stub node, for form controls pending further engine support.
25
- */
26
- export interface UnsupportedControlNode extends BaseNode {
27
- readonly nodeType: UnsupportedControlNodeType;
28
- readonly appearances: UnknownAppearanceDefinition;
29
- readonly definition: UnsupportedControlDefinition;
30
- readonly root: RootNode;
31
- readonly parent: GeneralParentNode;
32
- readonly currentState: UnsupportedControlNodeState;
33
- readonly validationState: LeafNodeValidationState;
34
-
35
- setValue?(value: never): never;
36
- }
@@ -1,14 +0,0 @@
1
- import type { UploadControlDefinition } from '../../parse/body/control/UploadControlDefinition.ts';
2
- import type {
3
- UnsupportedControlDefinition,
4
- UnsupportedControlNode,
5
- } from './UnsupportedControlNode.ts';
6
-
7
- export interface UploadNodeDefinition extends UnsupportedControlDefinition {
8
- readonly bodyElement: UploadControlDefinition;
9
- }
10
-
11
- export interface UploadNode extends UnsupportedControlNode {
12
- readonly nodeType: 'upload';
13
- readonly definition: UploadNodeDefinition;
14
- }