@getodk/xforms-engine 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/client/BaseNode.d.ts +14 -3
  2. package/dist/client/BaseValueNode.d.ts +32 -0
  3. package/dist/client/EngineConfig.d.ts +49 -48
  4. package/dist/client/InputNode.d.ts +53 -0
  5. package/dist/client/ModelValueNode.d.ts +12 -7
  6. package/dist/client/NoteNode.d.ts +2 -2
  7. package/dist/client/RootNode.d.ts +34 -7
  8. package/dist/client/SelectNode.d.ts +2 -2
  9. package/dist/client/ValueType.d.ts +3 -0
  10. package/dist/client/constants.d.ts +50 -0
  11. package/dist/client/hierarchy.d.ts +4 -4
  12. package/dist/client/identity.d.ts +14 -0
  13. package/dist/client/node-types.d.ts +2 -1
  14. package/dist/client/resources.d.ts +93 -0
  15. package/dist/client/submission/SubmissionData.d.ts +7 -0
  16. package/dist/client/submission/SubmissionDefinition.d.ts +14 -0
  17. package/dist/client/submission/SubmissionInstanceFile.d.ts +6 -0
  18. package/dist/client/submission/SubmissionOptions.d.ts +23 -0
  19. package/dist/client/submission/SubmissionResult.d.ts +91 -0
  20. package/dist/client/submission/SubmissionState.d.ts +12 -0
  21. package/dist/client/validation.d.ts +2 -2
  22. package/dist/error/ErrorProductionDesignPendingError.d.ts +7 -0
  23. package/dist/error/ValueTypeInvariantError.d.ts +17 -0
  24. package/dist/error/XPathFunctionalityError.d.ts +14 -0
  25. package/dist/error/XPathFunctionalityNotSupportedError.d.ts +7 -0
  26. package/dist/error/XPathFunctionalityPendingError.d.ts +7 -0
  27. package/dist/index.d.ts +10 -1
  28. package/dist/index.js +10856 -8585
  29. package/dist/index.js.map +1 -1
  30. package/dist/instance/Group.d.ts +9 -4
  31. package/dist/instance/InputControl.d.ts +36 -0
  32. package/dist/instance/ModelValue.d.ts +16 -26
  33. package/dist/instance/Note.d.ts +10 -3
  34. package/dist/instance/PrimaryInstance.d.ts +84 -0
  35. package/dist/instance/Root.d.ts +29 -25
  36. package/dist/instance/SelectField.d.ts +10 -2
  37. package/dist/instance/Subtree.d.ts +10 -5
  38. package/dist/instance/TriggerControl.d.ts +10 -3
  39. package/dist/instance/abstract/DescendantNode.d.ts +31 -23
  40. package/dist/instance/abstract/InstanceNode.d.ts +49 -29
  41. package/dist/instance/abstract/UnsupportedControl.d.ts +10 -3
  42. package/dist/instance/abstract/ValueNode.d.ts +48 -0
  43. package/dist/instance/hierarchy.d.ts +9 -8
  44. package/dist/instance/identity.d.ts +2 -7
  45. package/dist/instance/internal-api/EvaluationContext.d.ts +53 -12
  46. package/dist/instance/internal-api/InstanceConfig.d.ts +8 -2
  47. package/dist/instance/internal-api/InstanceValueContext.d.ts +20 -0
  48. package/dist/instance/internal-api/PrimaryInstanceDocument.d.ts +36 -0
  49. package/dist/instance/internal-api/TranslationContext.d.ts +3 -2
  50. package/dist/instance/internal-api/ValidationContext.d.ts +3 -4
  51. package/dist/instance/internal-api/ValueContext.d.ts +2 -1
  52. package/dist/instance/internal-api/submission/ClientReactiveSubmittableInstance.d.ts +14 -0
  53. package/dist/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.d.ts +31 -0
  54. package/dist/instance/internal-api/submission/ClientReactiveSubmittableParentNode.d.ts +18 -0
  55. package/dist/instance/internal-api/submission/ClientReactiveSubmittableValueNode.d.ts +17 -0
  56. package/dist/instance/repeat/BaseRepeatRange.d.ts +39 -83
  57. package/dist/instance/repeat/RepeatInstance.d.ts +11 -29
  58. package/dist/instance/repeat/RepeatRangeControlled.d.ts +2 -2
  59. package/dist/instance/repeat/RepeatRangeUncontrolled.d.ts +2 -2
  60. package/dist/instance/resource.d.ts +1 -1
  61. package/dist/instance/text/TextRange.d.ts +1 -1
  62. package/dist/instance/unsupported/RangeControl.d.ts +3 -1
  63. package/dist/instance/unsupported/RankControl.d.ts +3 -1
  64. package/dist/instance/unsupported/UploadControl.d.ts +3 -1
  65. package/dist/integration/xpath/EngineXPathEvaluator.d.ts +14 -0
  66. package/dist/integration/xpath/adapter/XFormsXPathNode.d.ts +71 -0
  67. package/dist/integration/xpath/adapter/engineDOMAdapter.d.ts +5 -0
  68. package/dist/integration/xpath/adapter/kind.d.ts +32 -0
  69. package/dist/integration/xpath/adapter/names.d.ts +16 -0
  70. package/dist/integration/xpath/adapter/traversal.d.ts +25 -0
  71. package/dist/integration/xpath/adapter/values.d.ts +2 -0
  72. package/dist/integration/xpath/static-dom/StaticAttribute.d.ts +19 -0
  73. package/dist/integration/xpath/static-dom/StaticDocument.d.ts +16 -0
  74. package/dist/integration/xpath/static-dom/StaticElement.d.ts +40 -0
  75. package/dist/integration/xpath/static-dom/StaticNamedNode.d.ts +17 -0
  76. package/dist/integration/xpath/static-dom/StaticNode.d.ts +33 -0
  77. package/dist/integration/xpath/static-dom/StaticText.d.ts +16 -0
  78. package/dist/lib/client-reactivity/submission/createInstanceSubmissionState.d.ts +3 -0
  79. package/dist/lib/client-reactivity/submission/createLeafNodeSubmissionState.d.ts +3 -0
  80. package/dist/lib/client-reactivity/submission/createNodeRangeSubmissionState.d.ts +4 -0
  81. package/dist/lib/client-reactivity/submission/createParentNodeSubmissionState.d.ts +4 -0
  82. package/dist/lib/client-reactivity/submission/createValueNodeSubmissionState.d.ts +3 -0
  83. package/dist/lib/client-reactivity/submission/prepareSubmission.d.ts +8 -0
  84. package/dist/lib/codecs/DecimalValueCodec.d.ts +6 -0
  85. package/dist/lib/codecs/IntValueCodec.d.ts +6 -0
  86. package/dist/lib/codecs/StringValueCodec.d.ts +4 -0
  87. package/dist/lib/codecs/ValueCodec.d.ts +30 -0
  88. package/dist/lib/codecs/ValueTypePlaceholderCodec.d.ts +12 -0
  89. package/dist/lib/codecs/getSharedValueCodec.d.ts +47 -0
  90. package/dist/lib/dom/query.d.ts +3 -0
  91. package/dist/lib/reactivity/createChildrenState.d.ts +7 -5
  92. package/dist/lib/reactivity/createComputedExpression.d.ts +18 -5
  93. package/dist/lib/reactivity/createInstanceValueState.d.ts +40 -0
  94. package/dist/lib/reactivity/createNoteReadonlyThunk.d.ts +2 -2
  95. package/dist/lib/reactivity/createTranslationState.d.ts +19 -0
  96. package/dist/lib/reactivity/createValueState.d.ts +6 -10
  97. package/dist/lib/reactivity/materializeCurrentStateChildren.d.ts +4 -4
  98. package/dist/lib/xml-serialization.d.ts +41 -0
  99. package/dist/parse/XFormDOM.d.ts +18 -7
  100. package/dist/parse/XFormDefinition.d.ts +1 -2
  101. package/dist/parse/attachments/FormAttachmentResource.d.ts +27 -0
  102. package/dist/parse/body/BodyDefinition.d.ts +3 -3
  103. package/dist/parse/body/RepeatElementDefinition.d.ts +1 -1
  104. package/dist/parse/body/appearance/inputAppearanceParser.d.ts +1 -1
  105. package/dist/parse/body/control/{InputDefinition.d.ts → InputControlDefinition.d.ts} +1 -1
  106. package/dist/parse/body/control/select/ItemsetNodesetContext.d.ts +0 -2
  107. package/dist/parse/expression/abstract/DependencyContext.d.ts +0 -5
  108. package/dist/parse/expression/abstract/DependentExpression.d.ts +2 -3
  109. package/dist/parse/model/BindDefinition.d.ts +4 -5
  110. package/dist/parse/model/BindTypeDefinition.d.ts +20 -0
  111. package/dist/parse/model/DescendentNodeDefinition.d.ts +0 -1
  112. package/dist/parse/model/FormSubmissionDefinition.d.ts +8 -0
  113. package/dist/parse/model/ItextTranslation/ItextTranslationDefinition.d.ts +4 -0
  114. package/dist/parse/model/ItextTranslation/ItextTranslationRootDefinition.d.ts +8 -0
  115. package/dist/parse/model/ItextTranslation/ItextTranslationsDefinition.d.ts +8 -0
  116. package/dist/parse/model/LeafNodeDefinition.d.ts +3 -1
  117. package/dist/parse/model/ModelBindMap.d.ts +1 -1
  118. package/dist/parse/model/ModelDefinition.d.ts +2 -0
  119. package/dist/parse/model/NodeDefinition.d.ts +0 -1
  120. package/dist/parse/model/NoteNodeDefinition.d.ts +4 -4
  121. package/dist/parse/model/RootDefinition.d.ts +3 -2
  122. package/dist/parse/model/SecondaryInstance/SecondaryInstanceDefinition.d.ts +4 -0
  123. package/dist/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.d.ts +7 -0
  124. package/dist/parse/model/SecondaryInstance/SecondaryInstancesDefinition.d.ts +13 -0
  125. package/dist/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.d.ts +14 -0
  126. package/dist/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.d.ts +22 -0
  127. package/dist/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.d.ts +23 -0
  128. package/dist/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceSource.d.ts +9 -0
  129. package/dist/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.d.ts +5 -0
  130. package/dist/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.d.ts +7 -0
  131. package/dist/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.d.ts +13 -0
  132. package/dist/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.d.ts +12 -0
  133. package/dist/parse/shared/parseStaticDocumentFromDOMSubtree.d.ts +24 -0
  134. package/dist/parse/text/abstract/TextRangeDefinition.d.ts +0 -2
  135. package/dist/parse/xpath/semantic-analysis.d.ts +5 -0
  136. package/dist/solid.js +8174 -5921
  137. package/dist/solid.js.map +1 -1
  138. package/package.json +13 -11
  139. package/src/client/BaseNode.ts +16 -6
  140. package/src/client/BaseValueNode.ts +35 -0
  141. package/src/client/EngineConfig.ts +52 -51
  142. package/src/client/InputNode.ts +77 -0
  143. package/src/client/ModelValueNode.ts +30 -7
  144. package/src/client/NoteNode.ts +2 -2
  145. package/src/client/RootNode.ts +37 -7
  146. package/src/client/SelectNode.ts +3 -3
  147. package/src/client/ValueType.ts +4 -0
  148. package/src/client/constants.ts +67 -0
  149. package/src/client/hierarchy.ts +5 -5
  150. package/src/client/identity.ts +16 -0
  151. package/src/client/node-types.ts +12 -6
  152. package/src/client/resources.ts +118 -0
  153. package/src/client/submission/SubmissionData.ts +12 -0
  154. package/src/client/submission/SubmissionDefinition.ts +16 -0
  155. package/src/client/submission/SubmissionInstanceFile.ts +9 -0
  156. package/src/client/submission/SubmissionOptions.ts +28 -0
  157. package/src/client/submission/SubmissionResult.ts +124 -0
  158. package/src/client/submission/SubmissionState.ts +14 -0
  159. package/src/client/validation.ts +2 -2
  160. package/src/error/ErrorProductionDesignPendingError.ts +6 -0
  161. package/src/error/ValueTypeInvariantError.ts +22 -0
  162. package/src/error/XPathFunctionalityError.ts +26 -0
  163. package/src/error/XPathFunctionalityNotSupportedError.ts +18 -0
  164. package/src/error/XPathFunctionalityPendingError.ts +18 -0
  165. package/src/index.ts +10 -1
  166. package/src/instance/Group.ts +17 -5
  167. package/src/instance/InputControl.ts +119 -0
  168. package/src/instance/ModelValue.ts +47 -54
  169. package/src/instance/Note.ts +24 -8
  170. package/src/instance/PrimaryInstance.ts +244 -0
  171. package/src/instance/Root.ts +62 -134
  172. package/src/instance/SelectField.ts +56 -19
  173. package/src/instance/Subtree.ts +19 -7
  174. package/src/instance/TriggerControl.ts +23 -6
  175. package/src/instance/abstract/DescendantNode.ts +90 -45
  176. package/src/instance/abstract/InstanceNode.ts +103 -105
  177. package/src/instance/abstract/UnsupportedControl.ts +28 -5
  178. package/src/instance/abstract/ValueNode.ts +127 -0
  179. package/src/instance/children.ts +9 -10
  180. package/src/instance/hierarchy.ts +19 -15
  181. package/src/instance/identity.ts +3 -9
  182. package/src/instance/index.ts +25 -7
  183. package/src/instance/internal-api/EvaluationContext.ts +60 -13
  184. package/src/instance/internal-api/InstanceConfig.ts +9 -2
  185. package/src/instance/internal-api/InstanceValueContext.ts +24 -0
  186. package/src/instance/internal-api/PrimaryInstanceDocument.ts +53 -0
  187. package/src/instance/internal-api/TranslationContext.ts +3 -2
  188. package/src/instance/internal-api/ValidationContext.ts +3 -4
  189. package/src/instance/internal-api/ValueContext.ts +2 -1
  190. package/src/instance/internal-api/submission/ClientReactiveSubmittableInstance.ts +20 -0
  191. package/src/instance/internal-api/submission/ClientReactiveSubmittableLeafNode.ts +42 -0
  192. package/src/instance/internal-api/submission/ClientReactiveSubmittableParentNode.ts +25 -0
  193. package/src/instance/internal-api/submission/ClientReactiveSubmittableValueNode.ts +23 -0
  194. package/src/instance/repeat/BaseRepeatRange.ts +50 -131
  195. package/src/instance/repeat/RepeatInstance.ts +20 -46
  196. package/src/instance/repeat/RepeatRangeControlled.ts +5 -5
  197. package/src/instance/repeat/RepeatRangeUncontrolled.ts +2 -4
  198. package/src/instance/resource.ts +1 -1
  199. package/src/instance/text/TextChunk.ts +1 -1
  200. package/src/instance/unsupported/RangeControl.ts +5 -1
  201. package/src/instance/unsupported/RankControl.ts +5 -1
  202. package/src/instance/unsupported/UploadControl.ts +5 -1
  203. package/src/integration/xpath/EngineXPathEvaluator.ts +22 -0
  204. package/src/integration/xpath/adapter/XFormsXPathNode.ts +126 -0
  205. package/src/integration/xpath/adapter/engineDOMAdapter.ts +57 -0
  206. package/src/integration/xpath/adapter/kind.ts +114 -0
  207. package/src/integration/xpath/adapter/names.ts +99 -0
  208. package/src/integration/xpath/adapter/traversal.ts +228 -0
  209. package/src/integration/xpath/adapter/values.ts +5 -0
  210. package/src/integration/xpath/static-dom/StaticAttribute.ts +33 -0
  211. package/src/integration/xpath/static-dom/StaticDocument.ts +38 -0
  212. package/src/integration/xpath/static-dom/StaticElement.ts +106 -0
  213. package/src/integration/xpath/static-dom/StaticNamedNode.ts +45 -0
  214. package/src/integration/xpath/static-dom/StaticNode.ts +68 -0
  215. package/src/integration/xpath/static-dom/StaticText.ts +28 -0
  216. package/src/lib/client-reactivity/README.md +0 -0
  217. package/src/lib/client-reactivity/submission/createInstanceSubmissionState.ts +12 -0
  218. package/src/lib/client-reactivity/submission/createLeafNodeSubmissionState.ts +20 -0
  219. package/src/lib/client-reactivity/submission/createNodeRangeSubmissionState.ts +17 -0
  220. package/src/lib/client-reactivity/submission/createParentNodeSubmissionState.ts +22 -0
  221. package/src/lib/client-reactivity/submission/createValueNodeSubmissionState.ts +21 -0
  222. package/src/lib/client-reactivity/submission/prepareSubmission.ts +172 -0
  223. package/src/lib/codecs/DecimalValueCodec.ts +46 -0
  224. package/src/lib/codecs/IntValueCodec.ts +100 -0
  225. package/src/lib/codecs/StringValueCodec.ts +11 -0
  226. package/src/lib/codecs/ValueCodec.ts +106 -0
  227. package/src/lib/codecs/ValueTypePlaceholderCodec.ts +19 -0
  228. package/src/lib/codecs/getSharedValueCodec.ts +77 -0
  229. package/src/lib/dom/query.ts +7 -0
  230. package/src/lib/reactivity/createChildrenState.ts +8 -6
  231. package/src/lib/reactivity/createComputedExpression.ts +57 -34
  232. package/src/lib/reactivity/createInstanceValueState.ts +166 -0
  233. package/src/lib/reactivity/createNoteReadonlyThunk.ts +12 -7
  234. package/src/lib/reactivity/createSelectItems.ts +21 -21
  235. package/src/lib/reactivity/createTranslationState.ts +61 -0
  236. package/src/lib/reactivity/createValueState.ts +62 -120
  237. package/src/lib/reactivity/materializeCurrentStateChildren.ts +7 -7
  238. package/src/lib/reactivity/text/createTextRange.ts +4 -3
  239. package/src/lib/reactivity/validation/createAggregatedViolations.ts +1 -1
  240. package/src/lib/reactivity/validation/createValidation.ts +2 -3
  241. package/src/lib/xml-serialization.ts +96 -0
  242. package/src/parse/XFormDOM.ts +110 -75
  243. package/src/parse/XFormDefinition.ts +1 -6
  244. package/src/parse/attachments/FormAttachmentResource.ts +40 -0
  245. package/src/parse/body/BodyDefinition.ts +3 -3
  246. package/src/parse/body/appearance/inputAppearanceParser.ts +1 -1
  247. package/src/parse/body/control/{InputDefinition.ts → InputControlDefinition.ts} +3 -5
  248. package/src/parse/body/control/select/ItemsetNodesetContext.ts +0 -5
  249. package/src/parse/expression/abstract/DependencyContext.ts +0 -26
  250. package/src/parse/expression/abstract/DependentExpression.ts +2 -13
  251. package/src/parse/model/BindDefinition.ts +5 -8
  252. package/src/parse/model/BindTypeDefinition.ts +175 -0
  253. package/src/parse/model/DescendentNodeDefinition.ts +0 -6
  254. package/src/parse/model/FormSubmissionDefinition.ts +44 -0
  255. package/src/parse/model/ItextTranslation/ItextTranslationDefinition.ts +4 -0
  256. package/src/parse/model/ItextTranslation/ItextTranslationRootDefinition.ts +41 -0
  257. package/src/parse/model/ItextTranslation/ItextTranslationsDefinition.ts +31 -0
  258. package/src/parse/model/LeafNodeDefinition.ts +4 -1
  259. package/src/parse/model/ModelBindMap.ts +6 -8
  260. package/src/parse/model/ModelDefinition.ts +6 -1
  261. package/src/parse/model/NodeDefinition.ts +0 -3
  262. package/src/parse/model/NoteNodeDefinition.ts +3 -3
  263. package/src/parse/model/RootDefinition.ts +2 -1
  264. package/src/parse/model/SecondaryInstance/SecondaryInstanceDefinition.ts +4 -0
  265. package/src/parse/model/SecondaryInstance/SecondaryInstanceRootDefinition.ts +12 -0
  266. package/src/parse/model/SecondaryInstance/SecondaryInstancesDefinition.ts +102 -0
  267. package/src/parse/model/SecondaryInstance/sources/BlankSecondaryInstanceSource.ts +40 -0
  268. package/src/parse/model/SecondaryInstance/sources/CSVExternalSecondaryInstance.ts +288 -0
  269. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceResource.ts +222 -0
  270. package/src/parse/model/SecondaryInstance/sources/ExternalSecondaryInstanceSource.ts +22 -0
  271. package/src/parse/model/SecondaryInstance/sources/GeoJSONExternalSecondaryInstance.ts +414 -0
  272. package/src/parse/model/SecondaryInstance/sources/InternalSecondaryInstanceSource.ts +19 -0
  273. package/src/parse/model/SecondaryInstance/sources/SecondaryInstanceSource.ts +29 -0
  274. package/src/parse/model/SecondaryInstance/sources/XMLExternalSecondaryInstanceSource.ts +32 -0
  275. package/src/parse/shared/parseStaticDocumentFromDOMSubtree.ts +149 -0
  276. package/src/parse/text/abstract/TextRangeDefinition.ts +0 -6
  277. package/src/parse/xpath/semantic-analysis.ts +29 -0
  278. package/dist/client/StringNode.d.ts +0 -46
  279. package/dist/instance/StringField.d.ts +0 -44
  280. package/dist/instance/internal-api/SubscribableDependency.d.ts +0 -59
  281. package/dist/parse/XFormDataType.d.ts +0 -25
  282. package/src/client/StringNode.ts +0 -52
  283. package/src/instance/StringField.ts +0 -120
  284. package/src/instance/internal-api/SubscribableDependency.ts +0 -61
  285. package/src/parse/XFormDataType.ts +0 -62
@@ -0,0 +1,91 @@
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 {};
@@ -0,0 +1,12 @@
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,4 +1,4 @@
1
- import { NodeID } from '../instance/identity.ts';
1
+ import { FormNodeID } from './identity.ts';
2
2
  import { TextRange } from './TextRange.ts';
3
3
  interface BaseValidity {
4
4
  /**
@@ -144,7 +144,7 @@ export interface LeafNodeValidationState {
144
144
  * each property will be directly computed from the affected node.
145
145
  */
146
146
  export interface DescendantNodeViolationReference {
147
- readonly nodeId: NodeID;
147
+ readonly nodeId: FormNodeID;
148
148
  get reference(): string;
149
149
  get violation(): AnyViolation;
150
150
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Temporary representation of newly introduced error conditions which we may
3
+ * produce to clients (and beyond). Intentionally a stub pending a more concrete
4
+ * design and implementation of our approach to producing Result types.
5
+ */
6
+ export declare class ErrorProductionDesignPendingError extends Error {
7
+ }
@@ -0,0 +1,17 @@
1
+ import { ValueType } from '../client/ValueType.ts';
2
+ import { ErrorProductionDesignPendingError } from './ErrorProductionDesignPendingError.ts';
3
+ /**
4
+ * Temporary(?) representation of error conditions arising from violation of
5
+ * invariants specific to {@link valueType}.
6
+ *
7
+ * @todo The intent of this distinct subclass of
8
+ * {@link ErrorProductionDesignPendingError} is to call out cases where we may
9
+ * want to represent such errors to clients as **validation errors** in the
10
+ * future. We identified this as probably desirable in the initial work on `int`
11
+ * and `decimal` value types, but held off on that aspect of implementation to
12
+ * tame scope.
13
+ */
14
+ export declare class ValueTypeInvariantError extends ErrorProductionDesignPendingError {
15
+ readonly valueType: ValueType;
16
+ constructor(valueType: ValueType, message: string);
17
+ }
@@ -0,0 +1,14 @@
1
+ import { AnyFunction, ExpandUnion } from '../../../common/types/helpers.js';
2
+ import { XPathDOMAdapter, XPathNode } from '@getodk/xpath';
3
+ /**
4
+ * @todo this is general enough to go in `@getodk/common`. Holding off until
5
+ * it's clear we actually benefit from this particular type gymnastic.
6
+ */
7
+ type MethodNameOf<T> = {
8
+ [K in keyof T]: T[K] extends AnyFunction ? K : never;
9
+ }[keyof T];
10
+ export type XPathFunctionalityErrorCategory = ExpandUnion<MethodNameOf<XPathDOMAdapter<XPathNode>> | 'processing-instruction'>;
11
+ export declare abstract class XPathFunctionalityError extends Error {
12
+ constructor(functionalityMessagePrefix: string, category: XPathFunctionalityErrorCategory);
13
+ }
14
+ export {};
@@ -0,0 +1,7 @@
1
+ import { XPathFunctionalityErrorCategory, XPathFunctionalityError } from './XPathFunctionalityError.ts';
2
+ type XPathFunctionalityNotSupportedStub = () => never;
3
+ export declare class XPathFunctionalityNotSupportedError extends XPathFunctionalityError {
4
+ static createStubImplementation(category: XPathFunctionalityErrorCategory): XPathFunctionalityNotSupportedStub;
5
+ private constructor();
6
+ }
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { XPathFunctionalityErrorCategory, XPathFunctionalityError } from './XPathFunctionalityError.ts';
2
+ type XPathFunctionalityPendingStub = () => never;
3
+ export declare class XPathFunctionalityPendingError extends XPathFunctionalityError {
4
+ static createStubImplementation(category: XPathFunctionalityErrorCategory): XPathFunctionalityPendingStub;
5
+ private constructor();
6
+ }
7
+ export {};
package/dist/index.d.ts CHANGED
@@ -1,20 +1,28 @@
1
1
  import { InitializeForm } from './index.ts';
2
2
  export declare const initializeForm: InitializeForm;
3
+ export type * from './client/constants.ts';
3
4
  export * as constants from './client/constants.ts';
4
5
  export type * from './client/EngineConfig.ts';
5
6
  export type * from './client/FormLanguage.ts';
6
7
  export type * from './client/GroupNode.ts';
7
8
  export type { AnyChildNode, AnyControlNode, AnyLeafNode, AnyNode, AnyParentNode, AnyUnsupportedControlNode, GeneralChildNode, GeneralParentNode, RepeatRangeNode, } from './client/hierarchy.ts';
8
9
  export type * from './client/index.ts';
10
+ export type * from './client/InputNode.ts';
9
11
  export type * from './client/ModelValueNode.ts';
10
12
  export type * from './client/NoteNode.ts';
11
13
  export type * from './client/OpaqueReactiveObjectFactory.ts';
12
14
  export type * from './client/repeat/RepeatInstanceNode.ts';
13
15
  export type * from './client/repeat/RepeatRangeControlledNode.ts';
14
16
  export type * from './client/repeat/RepeatRangeUncontrolledNode.ts';
17
+ export type * from './client/resources.ts';
15
18
  export type * from './client/RootNode.ts';
16
19
  export type * from './client/SelectNode.ts';
17
- export type * from './client/StringNode.ts';
20
+ export type * from './client/submission/SubmissionData.ts';
21
+ export type * from './client/submission/SubmissionDefinition.ts';
22
+ export type * from './client/submission/SubmissionInstanceFile.ts';
23
+ export type * from './client/submission/SubmissionOptions.ts';
24
+ export type * from './client/submission/SubmissionResult.ts';
25
+ export type * from './client/submission/SubmissionState.ts';
18
26
  export type * from './client/SubtreeNode.ts';
19
27
  export type * from './client/TextRange.ts';
20
28
  export type * from './client/TriggerNode.ts';
@@ -22,4 +30,5 @@ export type * from './client/unsupported/RangeNode.ts';
22
30
  export type * from './client/unsupported/RankNode.ts';
23
31
  export type * from './client/unsupported/UploadNode.ts';
24
32
  export type * from './client/validation.ts';
33
+ export type * from './client/ValueType.ts';
25
34
  export type { AnySelectDefinition, SelectDefinition, } from './parse/body/control/select/SelectDefinition.ts';