synapse-react-client 4.0.40 → 4.0.41

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 (195) hide show
  1. package/dist/SWC.index.d.ts +1 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +2 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
  6. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
  7. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
  8. package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
  9. package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
  10. package/dist/components/Aridhia/AridhiaAccessStatus.js +51 -48
  11. package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
  12. package/dist/components/Authentication/Constants.d.ts +4 -0
  13. package/dist/components/Authentication/Constants.d.ts.map +1 -1
  14. package/dist/components/Authentication/Constants.js +5 -2
  15. package/dist/components/Authentication/Constants.js.map +1 -1
  16. package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
  17. package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
  18. package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
  19. package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
  20. package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
  21. package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
  22. package/dist/components/Authentication/TOTPForm.js +20 -18
  23. package/dist/components/Authentication/TOTPForm.js.map +1 -1
  24. package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
  25. package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
  26. package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
  27. package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
  28. package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
  29. package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
  30. package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
  31. package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
  32. package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
  33. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
  34. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
  35. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
  36. package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
  37. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
  38. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
  39. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
  40. package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
  41. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
  42. package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
  43. package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
  44. package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
  45. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
  46. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
  47. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
  48. package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
  49. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
  50. package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
  51. package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
  52. package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
  53. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
  54. package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
  55. package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
  56. package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
  57. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
  58. package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
  59. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
  60. package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
  61. package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
  62. package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
  63. package/dist/components/FormTemplateEditor/utils.js +27 -0
  64. package/dist/components/FormTemplateEditor/utils.js.map +1 -0
  65. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
  66. package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
  67. package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
  68. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
  69. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
  70. package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
  71. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
  72. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
  73. package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
  74. package/dist/components/QueryBuilder/FilterConditionRow.css +1 -1
  75. package/dist/components/QueryBuilder/FilterConditionRow.d.ts +2 -0
  76. package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
  77. package/dist/components/QueryBuilder/FilterConditionRow.js +112 -109
  78. package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
  79. package/dist/components/QueryBuilder/FilterConditionRow.module.js +10 -11
  80. package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -1
  81. package/dist/components/QueryBuilder/FilterConditionRow.module.scss +0 -5
  82. package/dist/components/QueryBuilder/FilterGroupNode.css +1 -1
  83. package/dist/components/QueryBuilder/FilterGroupNode.d.ts +4 -0
  84. package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
  85. package/dist/components/QueryBuilder/FilterGroupNode.js +85 -51
  86. package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
  87. package/dist/components/QueryBuilder/FilterGroupNode.module.js +10 -9
  88. package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -1
  89. package/dist/components/QueryBuilder/FilterGroupNode.module.scss +9 -0
  90. package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
  91. package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
  92. package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
  93. package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
  94. package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
  95. package/dist/components/QueryBuilder/QueryBuilderControls.js +112 -107
  96. package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
  97. package/dist/components/QueryBuilder/qbTreeToReadable.js +11 -11
  98. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
  99. package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
  100. package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
  101. package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
  102. package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
  103. package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
  104. package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
  105. package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
  106. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +13 -0
  107. package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -1
  108. package/dist/components/QueryBuilder/queryBuilderOperations.js +39 -36
  109. package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -1
  110. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
  111. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +46 -47
  112. package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
  113. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
  114. package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
  115. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +35 -36
  116. package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
  117. package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
  118. package/dist/components/styled/LeftRightPanel.js +19 -2
  119. package/dist/components/styled/LeftRightPanel.js.map +1 -1
  120. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -2
  121. package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
  122. package/dist/mocks/accessRequirement/mockFormTemplates.js +7 -14
  123. package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
  124. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +4 -1
  125. package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
  126. package/dist/mocks/accessRequirement/mockJsonSchemas.js +36 -15
  127. package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
  128. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
  129. package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
  130. package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
  131. package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
  132. package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
  133. package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
  134. package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
  135. package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
  136. package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
  137. package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
  138. package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
  139. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  140. package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
  141. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  142. package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
  143. package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
  144. package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
  145. package/dist/synapse-queries/KeyFactory.d.ts +1 -2
  146. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  147. package/dist/synapse-queries/KeyFactory.js +2 -5
  148. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  149. package/dist/synapse-queries/dataaccess/index.d.ts +0 -1
  150. package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
  151. package/dist/synapse-queries/dataaccess/index.js +3 -4
  152. package/dist/synapse-queries/index.js +180 -184
  153. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
  154. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
  155. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
  156. package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
  157. package/dist/testutils/vitest.setup.js +18 -9
  158. package/dist/testutils/vitest.setup.js.map +1 -1
  159. package/dist/tsconfig.build.tsbuildinfo +1 -1
  160. package/dist/utils/APIConstants.d.ts +1 -0
  161. package/dist/utils/APIConstants.d.ts.map +1 -1
  162. package/dist/utils/APIConstants.js +2 -2
  163. package/dist/utils/APIConstants.js.map +1 -1
  164. package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
  165. package/dist/utils/appendFinalQueryParamKey.js +4 -1
  166. package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
  167. package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
  168. package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
  169. package/dist/utils/featureflag/FeatureFlags.js +1 -1
  170. package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
  171. package/dist/utils/functions/ArrayUtils.d.ts +3 -0
  172. package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
  173. package/dist/utils/functions/ArrayUtils.js +7 -1
  174. package/dist/utils/functions/ArrayUtils.js.map +1 -1
  175. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
  176. package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
  177. package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
  178. package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
  179. package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
  180. package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
  181. package/dist/utils/jsonschema/submissionContext.js +186 -0
  182. package/dist/utils/jsonschema/submissionContext.js.map +1 -0
  183. package/package.json +5 -3
  184. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
  185. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
  186. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
  187. package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
  188. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
  189. package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
  190. package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
  191. package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
  192. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts +0 -21
  193. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts.map +0 -1
  194. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js +0 -34
  195. package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js.map +0 -1
@@ -1,8 +1,7 @@
1
1
  import { MOCK_FILE_HANDLE_ID as e } from "../mock_file_handle.js";
2
2
  import { mockClinicalSchema as t, mockGenomicsSchema as n } from "./mockJsonSchemas.js";
3
- import { FormTemplateFieldSubmissionContextEnum as r } from "@sage-bionetworks/synapse-client";
4
3
  //#region src/mocks/accessRequirement/mockFormTemplates.ts
5
- var i = {
4
+ var r = {
6
5
  id: "template-1",
7
6
  name: "Genomics DAR",
8
7
  etag: "etag-template-1",
@@ -17,7 +16,6 @@ var i = {
17
16
  "ui:widget": "textarea",
18
17
  "ui:options": { rows: 5 }
19
18
  },
20
- submissionContext: r.ALWAYS,
21
19
  isPublic: !0
22
20
  }]
23
21
  }, {
@@ -25,12 +23,11 @@ var i = {
25
23
  description: "Review and agree to the terms and conditions for accessing this data.",
26
24
  fields: [{
27
25
  schemaPath: "/agreeToTerms",
28
- uiDefinition: {},
29
- submissionContext: r.ALWAYS
26
+ uiDefinition: {}
30
27
  }]
31
28
  }],
32
29
  deprecated: !1
33
- }, a = {
30
+ }, i = {
34
31
  id: "template-2",
35
32
  name: "Clinical Trial DAR",
36
33
  etag: "etag-template-2",
@@ -41,30 +38,26 @@ var i = {
41
38
  fields: [{
42
39
  schemaPath: "/projectTitle",
43
40
  uiDefinition: {},
44
- submissionContext: r.ALWAYS,
45
41
  isPublic: !0
46
42
  }, {
47
43
  schemaPath: "/dataUsePurpose",
48
- uiDefinition: {},
49
- submissionContext: r.ALWAYS
44
+ uiDefinition: {}
50
45
  }]
51
46
  }, {
52
47
  title: "Compliance",
53
48
  description: "Provide any required compliance documentation.",
54
49
  fields: [{
55
50
  schemaPath: "/irbApprovalNumber",
56
- uiDefinition: {},
57
- submissionContext: r.RENEWAL_ONLY
51
+ uiDefinition: {}
58
52
  }, {
59
53
  schemaPath: "/signedDataUseAgreement",
60
54
  uiDefinition: {},
61
- submissionContext: r.ALWAYS,
62
55
  templateFileHandleId: e
63
56
  }]
64
57
  }],
65
58
  deprecated: !1
66
- }, o = [i, a];
59
+ }, a = [r, i];
67
60
  //#endregion
68
- export { a as mockClinicalTemplate, o as mockFormTemplates, i as mockGenomicsTemplate };
61
+ export { i as mockClinicalTemplate, a as mockFormTemplates, r as mockGenomicsTemplate };
69
62
 
70
63
  //# sourceMappingURL=mockFormTemplates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockFormTemplates.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"sourcesContent":["import {\n FormTemplate,\n FormTemplateFieldSubmissionContextEnum,\n} from '@sage-bionetworks/synapse-client'\nimport { MOCK_FILE_HANDLE_ID } from '@/mocks/mock_file_handle'\nimport { mockClinicalSchema, mockGenomicsSchema } from './mockJsonSchemas'\n\n/**\n * Renders the a Data Access schema as a 2-step form:\n * Research Use → Agreements\n */\nexport const mockGenomicsTemplate: FormTemplate = {\n id: 'template-1',\n name: 'Genomics DAR',\n etag: 'etag-template-1',\n versionNumber: 1,\n schema$id: mockGenomicsSchema.$id as string,\n steps: [\n {\n title: 'Research Use',\n description:\n 'Describe your research project and how you intend to use the data.',\n fields: [\n {\n schemaPath: '/intendedDataUse',\n uiDefinition: {\n 'ui:widget': 'textarea',\n 'ui:options': { rows: 5 },\n },\n submissionContext: FormTemplateFieldSubmissionContextEnum.ALWAYS,\n isPublic: true,\n },\n ],\n },\n {\n title: 'Agreements',\n description:\n 'Review and agree to the terms and conditions for accessing this data.',\n fields: [\n {\n schemaPath: '/agreeToTerms',\n uiDefinition: {},\n submissionContext: FormTemplateFieldSubmissionContextEnum.ALWAYS,\n },\n ],\n },\n ],\n deprecated: false,\n}\n\n/**\n * Renders the Data Access schema as a 2-step form:\n * Project Details → Compliance.\n *\n * Demonstrates a file-upload field with a downloadable template, and a\n * RENEWAL_ONLY field.\n */\nexport const mockClinicalTemplate: FormTemplate = {\n id: 'template-2',\n name: 'Clinical Trial DAR',\n etag: 'etag-template-2',\n versionNumber: 1,\n schema$id: mockClinicalSchema.$id as string,\n steps: [\n {\n title: 'Project Details',\n fields: [\n {\n schemaPath: '/projectTitle',\n uiDefinition: {},\n submissionContext: FormTemplateFieldSubmissionContextEnum.ALWAYS,\n isPublic: true,\n },\n {\n schemaPath: '/dataUsePurpose',\n uiDefinition: {},\n submissionContext: FormTemplateFieldSubmissionContextEnum.ALWAYS,\n },\n ],\n },\n {\n title: 'Compliance',\n description: 'Provide any required compliance documentation.',\n fields: [\n {\n schemaPath: '/irbApprovalNumber',\n uiDefinition: {},\n submissionContext:\n FormTemplateFieldSubmissionContextEnum.RENEWAL_ONLY,\n },\n {\n schemaPath: '/signedDataUseAgreement',\n uiDefinition: {},\n submissionContext: FormTemplateFieldSubmissionContextEnum.ALWAYS,\n templateFileHandleId: MOCK_FILE_HANDLE_ID,\n },\n ],\n },\n ],\n deprecated: false,\n}\n\nexport const mockFormTemplates: FormTemplate[] = [\n mockGenomicsTemplate,\n mockClinicalTemplate,\n]\n"],"mappings":";;;;AAWA,IAAa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc;IACZ,aAAa;IACb,cAAc,EAAE,MAAM,EAAE;GAC1B;GACA,mBAAmB,EAAuC;GAC1D,UAAU;EACZ,CACF;CACF,GACA;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,mBAAmB,EAAuC;EAC5D,CACF;CACF,CACF;CACA,YAAY;AACd,GASa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,mBAAmB,EAAuC;GAC1D,UAAU;EACZ,GACA;GACE,YAAY;GACZ,cAAc,CAAC;GACf,mBAAmB,EAAuC;EAC5D,CACF;CACF,GACA;EACE,OAAO;EACP,aAAa;EACb,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,mBACE,EAAuC;EAC3C,GACA;GACE,YAAY;GACZ,cAAc,CAAC;GACf,mBAAmB,EAAuC;GAC1D,sBAAsB;EACxB,CACF;CACF,CACF;CACA,YAAY;AACd,GAEa,IAAoC,CAC/C,GACA,CACF"}
1
+ {"version":3,"file":"mockFormTemplates.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockFormTemplates.ts"],"sourcesContent":["import { FormTemplate } from '@sage-bionetworks/synapse-client'\nimport { MOCK_FILE_HANDLE_ID } from '@/mocks/mock_file_handle'\nimport { mockClinicalSchema, mockGenomicsSchema } from './mockJsonSchemas'\n\n/**\n * Renders the a Data Access schema as a 2-step form:\n * Research Use → Agreements\n */\nexport const mockGenomicsTemplate: FormTemplate = {\n id: 'template-1',\n name: 'Genomics DAR',\n etag: 'etag-template-1',\n versionNumber: 1,\n schema$id: mockGenomicsSchema.$id as string,\n steps: [\n {\n title: 'Research Use',\n description:\n 'Describe your research project and how you intend to use the data.',\n fields: [\n {\n schemaPath: '/intendedDataUse',\n uiDefinition: {\n 'ui:widget': 'textarea',\n 'ui:options': { rows: 5 },\n },\n isPublic: true,\n },\n ],\n },\n {\n title: 'Agreements',\n description:\n 'Review and agree to the terms and conditions for accessing this data.',\n fields: [\n {\n schemaPath: '/agreeToTerms',\n uiDefinition: {},\n },\n ],\n },\n ],\n deprecated: false,\n}\n\n/**\n * Renders the Data Access schema as a 2-step form:\n * Project Details → Compliance.\n *\n * Demonstrates a file-upload field with a downloadable template, and a Renewal-only field\n * (`irbApprovalNumber`, gated in `mockClinicalSchema` via `x-synapse-submissionContext`).\n */\nexport const mockClinicalTemplate: FormTemplate = {\n id: 'template-2',\n name: 'Clinical Trial DAR',\n etag: 'etag-template-2',\n versionNumber: 1,\n schema$id: mockClinicalSchema.$id as string,\n steps: [\n {\n title: 'Project Details',\n fields: [\n {\n schemaPath: '/projectTitle',\n uiDefinition: {},\n isPublic: true,\n },\n {\n schemaPath: '/dataUsePurpose',\n uiDefinition: {},\n },\n ],\n },\n {\n title: 'Compliance',\n description: 'Provide any required compliance documentation.',\n fields: [\n {\n schemaPath: '/irbApprovalNumber',\n uiDefinition: {},\n },\n {\n schemaPath: '/signedDataUseAgreement',\n uiDefinition: {},\n templateFileHandleId: MOCK_FILE_HANDLE_ID,\n },\n ],\n },\n ],\n deprecated: false,\n}\n\nexport const mockFormTemplates: FormTemplate[] = [\n mockGenomicsTemplate,\n mockClinicalTemplate,\n]\n"],"mappings":";;;AAQA,IAAa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc;IACZ,aAAa;IACb,cAAc,EAAE,MAAM,EAAE;GAC1B;GACA,UAAU;EACZ,CACF;CACF,GACA;EACE,OAAO;EACP,aACE;EACF,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,CACF;CACA,YAAY;AACd,GASa,IAAqC;CAChD,IAAI;CACJ,MAAM;CACN,MAAM;CACN,eAAe;CACf,WAAW,EAAmB;CAC9B,OAAO,CACL;EACE,OAAO;EACP,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;GACf,UAAU;EACZ,GACA;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,CACF;CACF,GACA;EACE,OAAO;EACP,aAAa;EACb,QAAQ,CACN;GACE,YAAY;GACZ,cAAc,CAAC;EACjB,GACA;GACE,YAAY;GACZ,cAAc,CAAC;GACf,sBAAsB;EACxB,CACF;CACF,CACF;CACA,YAAY;AACd,GAEa,IAAoC,CAC/C,GACA,CACF"}
@@ -12,7 +12,10 @@
12
12
  import { RJSFSchema } from '@rjsf/utils';
13
13
  /** Genomics DAR data contract — all fields required. */
14
14
  export declare const mockGenomicsSchema: RJSFSchema;
15
- /** Clinical Trial DAR data contract — includes a file upload. */
15
+ /**
16
+ * Clinical Trial DAR data contract — includes a file upload and a Renewal-only field
17
+ * (`irbApprovalNumber`), gated behind an `x-synapse-submissionContext` conditional.
18
+ */
16
19
  export declare const mockClinicalSchema: RJSFSchema;
17
20
  /**
18
21
  * Map from `$id` (with version) to the JSON Schema body. In the real system
@@ -1 +1 @@
1
- {"version":3,"file":"mockJsonSchemas.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,UAmBhC,CAAA;AAED,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,EAAE,UA+BhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAG7D,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,SAAS,CAExB"}
1
+ {"version":3,"file":"mockJsonSchemas.d.ts","sourceRoot":"","sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,EAAE,UAuBhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,UAsDhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAG7D,CAAA;AAED,0DAA0D;AAC1D,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,SAAS,CAExB"}
@@ -1,5 +1,7 @@
1
+ import { SUBMISSION_CONTEXT_PROPERTY as e } from "../../utils/jsonschema/submissionContext.js";
2
+ import { DataAccessRequestType as t } from "@sage-bionetworks/synapse-client";
1
3
  //#region src/mocks/accessRequirement/mockJsonSchemas.ts
2
- var e = {
4
+ var n = {
3
5
  $id: "org.sagebionetworks.dar.genomics-1.0.0",
4
6
  type: "object",
5
7
  title: "Genomics Data Access Request",
@@ -13,10 +15,18 @@ var e = {
13
15
  type: "boolean",
14
16
  title: "Terms and Conditions",
15
17
  description: "I agree to abide by all terms and conditions for accessing this data."
18
+ },
19
+ [e]: {
20
+ type: "string",
21
+ enum: [t.REQUEST, t.RENEWAL]
16
22
  }
17
23
  },
18
- required: ["intendedDataUse", "agreeToTerms"]
19
- }, t = {
24
+ required: [
25
+ "intendedDataUse",
26
+ "agreeToTerms",
27
+ e
28
+ ]
29
+ }, r = {
20
30
  $id: "org.sagebionetworks.dar.clinical-1.0.0",
21
31
  type: "object",
22
32
  title: "Clinical Trial Data Access Request",
@@ -36,27 +46,38 @@ var e = {
36
46
  "Educational"
37
47
  ]
38
48
  },
39
- irbApprovalNumber: {
40
- type: "string",
41
- title: "IRB Approval Number",
42
- description: "If your institution requires IRB approval, provide the approval number."
43
- },
44
49
  signedDataUseAgreement: {
45
50
  type: "number",
46
51
  title: "Signed Data Use Agreement",
47
52
  description: "Upload a signed copy of the Data Use Agreement. A template is available for download.",
48
53
  format: "synapse-filehandle-id"
54
+ },
55
+ [e]: {
56
+ type: "string",
57
+ enum: [t.REQUEST, t.RENEWAL]
49
58
  }
50
59
  },
51
- required: ["projectTitle", "signedDataUseAgreement"]
52
- }, n = {
53
- [e.$id]: e,
54
- [t.$id]: t
60
+ required: [
61
+ "projectTitle",
62
+ "signedDataUseAgreement",
63
+ e
64
+ ],
65
+ allOf: [{
66
+ if: { properties: { [e]: { const: t.RENEWAL } } },
67
+ then: { properties: { irbApprovalNumber: {
68
+ type: "string",
69
+ title: "IRB Approval Number",
70
+ description: "If your institution requires IRB approval, provide the approval number."
71
+ } } }
72
+ }]
73
+ }, i = {
74
+ [n.$id]: n,
75
+ [r.$id]: r
55
76
  };
56
- function r(e) {
57
- return n[e];
77
+ function a(e) {
78
+ return i[e];
58
79
  }
59
80
  //#endregion
60
- export { r as getMockJsonSchemaById, t as mockClinicalSchema, e as mockGenomicsSchema, n as mockJsonSchemaRegistry };
81
+ export { a as getMockJsonSchemaById, r as mockClinicalSchema, n as mockGenomicsSchema, i as mockJsonSchemaRegistry };
61
82
 
62
83
  //# sourceMappingURL=mockJsonSchemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mockJsonSchemas.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"sourcesContent":["/**\n * Mock JSON Schema registry for the JSON Schema-based Access Requirements demo.\n *\n * Each FormTemplate pins a registered JSON Schema by `$id`. The schema is the\n * data contract — it owns property types, validation rules, and which properties\n * are required.\n *\n * The FormTemplateEditor lets ACT edit the schema body alongside the template in\n * a single UI; saving is conceptually a write to both the schema registry and\n * the template service.\n */\n\nimport { RJSFSchema } from '@rjsf/utils'\n\n/** Genomics DAR data contract — all fields required. */\nexport const mockGenomicsSchema: RJSFSchema = {\n $id: 'org.sagebionetworks.dar.genomics-1.0.0',\n type: 'object',\n title: 'Genomics Data Access Request',\n properties: {\n intendedDataUse: {\n type: 'string',\n title: 'Intended Data Use Statement',\n description:\n 'Describe in detail how you intend to use the requested data.',\n },\n agreeToTerms: {\n type: 'boolean',\n title: 'Terms and Conditions',\n description:\n 'I agree to abide by all terms and conditions for accessing this data.',\n },\n },\n required: ['intendedDataUse', 'agreeToTerms'],\n}\n\n/** Clinical Trial DAR data contract — includes a file upload. */\nexport const mockClinicalSchema: RJSFSchema = {\n $id: 'org.sagebionetworks.dar.clinical-1.0.0',\n type: 'object',\n title: 'Clinical Trial Data Access Request',\n properties: {\n projectTitle: {\n type: 'string',\n title: 'Project Title',\n description: 'The title of the research project.',\n },\n dataUsePurpose: {\n type: 'string',\n title: 'Data Use Purpose',\n description: 'Select the primary purpose for your use of this data.',\n enum: ['Research', 'Commercial', 'Educational'],\n },\n irbApprovalNumber: {\n type: 'string',\n title: 'IRB Approval Number',\n description:\n 'If your institution requires IRB approval, provide the approval number.',\n },\n signedDataUseAgreement: {\n type: 'number',\n title: 'Signed Data Use Agreement',\n description:\n 'Upload a signed copy of the Data Use Agreement. A template is available for download.',\n format: 'synapse-filehandle-id',\n },\n },\n required: ['projectTitle', 'signedDataUseAgreement'],\n}\n\n/**\n * Map from `$id` (with version) to the JSON Schema body. In the real system\n * this is served by the registered JSON Schema service.\n */\nexport const mockJsonSchemaRegistry: Record<string, RJSFSchema> = {\n [mockGenomicsSchema.$id as string]: mockGenomicsSchema,\n [mockClinicalSchema.$id as string]: mockClinicalSchema,\n}\n\n/** Look up a registered JSON Schema body by its `$id`. */\nexport function getMockJsonSchemaById(\n schema$id: string,\n): RJSFSchema | undefined {\n return mockJsonSchemaRegistry[schema$id]\n}\n"],"mappings":";AAeA,IAAa,IAAiC;CAC5C,KAAK;CACL,MAAM;CACN,OAAO;CACP,YAAY;EACV,iBAAiB;GACf,MAAM;GACN,OAAO;GACP,aACE;EACJ;EACA,cAAc;GACZ,MAAM;GACN,OAAO;GACP,aACE;EACJ;CACF;CACA,UAAU,CAAC,mBAAmB,cAAc;AAC9C,GAGa,IAAiC;CAC5C,KAAK;CACL,MAAM;CACN,OAAO;CACP,YAAY;EACV,cAAc;GACZ,MAAM;GACN,OAAO;GACP,aAAa;EACf;EACA,gBAAgB;GACd,MAAM;GACN,OAAO;GACP,aAAa;GACb,MAAM;IAAC;IAAY;IAAc;GAAa;EAChD;EACA,mBAAmB;GACjB,MAAM;GACN,OAAO;GACP,aACE;EACJ;EACA,wBAAwB;GACtB,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ;EACV;CACF;CACA,UAAU,CAAC,gBAAgB,wBAAwB;AACrD,GAMa,IAAqD;EAC/D,EAAmB,MAAgB;EACnC,EAAmB,MAAgB;AACtC;AAGA,SAAgB,EACd,GACwB;CACxB,OAAO,EAAuB;AAChC"}
1
+ {"version":3,"file":"mockJsonSchemas.js","names":[],"sources":["../../../src/mocks/accessRequirement/mockJsonSchemas.ts"],"sourcesContent":["/**\n * Mock JSON Schema registry for the JSON Schema-based Access Requirements demo.\n *\n * Each FormTemplate pins a registered JSON Schema by `$id`. The schema is the\n * data contract — it owns property types, validation rules, and which properties\n * are required.\n *\n * The FormTemplateEditor lets ACT edit the schema body alongside the template in\n * a single UI; saving is conceptually a write to both the schema registry and\n * the template service.\n */\n\nimport { RJSFSchema } from '@rjsf/utils'\nimport { DataAccessRequestType } from '@sage-bionetworks/synapse-client'\nimport { SUBMISSION_CONTEXT_PROPERTY } from '@/utils/jsonschema/submissionContext'\n\n/** Genomics DAR data contract — all fields required. */\nexport const mockGenomicsSchema: RJSFSchema = {\n $id: 'org.sagebionetworks.dar.genomics-1.0.0',\n type: 'object',\n title: 'Genomics Data Access Request',\n properties: {\n intendedDataUse: {\n type: 'string',\n title: 'Intended Data Use Statement',\n description:\n 'Describe in detail how you intend to use the requested data.',\n },\n agreeToTerms: {\n type: 'boolean',\n title: 'Terms and Conditions',\n description:\n 'I agree to abide by all terms and conditions for accessing this data.',\n },\n [SUBMISSION_CONTEXT_PROPERTY]: {\n type: 'string',\n enum: [DataAccessRequestType.REQUEST, DataAccessRequestType.RENEWAL],\n },\n },\n required: ['intendedDataUse', 'agreeToTerms', SUBMISSION_CONTEXT_PROPERTY],\n}\n\n/**\n * Clinical Trial DAR data contract — includes a file upload and a Renewal-only field\n * (`irbApprovalNumber`), gated behind an `x-synapse-submissionContext` conditional.\n */\nexport const mockClinicalSchema: RJSFSchema = {\n $id: 'org.sagebionetworks.dar.clinical-1.0.0',\n type: 'object',\n title: 'Clinical Trial Data Access Request',\n properties: {\n projectTitle: {\n type: 'string',\n title: 'Project Title',\n description: 'The title of the research project.',\n },\n dataUsePurpose: {\n type: 'string',\n title: 'Data Use Purpose',\n description: 'Select the primary purpose for your use of this data.',\n enum: ['Research', 'Commercial', 'Educational'],\n },\n signedDataUseAgreement: {\n type: 'number',\n title: 'Signed Data Use Agreement',\n description:\n 'Upload a signed copy of the Data Use Agreement. A template is available for download.',\n format: 'synapse-filehandle-id',\n },\n [SUBMISSION_CONTEXT_PROPERTY]: {\n type: 'string',\n enum: [DataAccessRequestType.REQUEST, DataAccessRequestType.RENEWAL],\n },\n },\n required: [\n 'projectTitle',\n 'signedDataUseAgreement',\n SUBMISSION_CONTEXT_PROPERTY,\n ],\n allOf: [\n {\n if: {\n properties: {\n [SUBMISSION_CONTEXT_PROPERTY]: {\n const: DataAccessRequestType.RENEWAL,\n },\n },\n },\n then: {\n properties: {\n irbApprovalNumber: {\n type: 'string',\n title: 'IRB Approval Number',\n description:\n 'If your institution requires IRB approval, provide the approval number.',\n },\n },\n },\n },\n ],\n}\n\n/**\n * Map from `$id` (with version) to the JSON Schema body. In the real system\n * this is served by the registered JSON Schema service.\n */\nexport const mockJsonSchemaRegistry: Record<string, RJSFSchema> = {\n [mockGenomicsSchema.$id as string]: mockGenomicsSchema,\n [mockClinicalSchema.$id as string]: mockClinicalSchema,\n}\n\n/** Look up a registered JSON Schema body by its `$id`. */\nexport function getMockJsonSchemaById(\n schema$id: string,\n): RJSFSchema | undefined {\n return mockJsonSchemaRegistry[schema$id]\n}\n"],"mappings":";;;AAiBA,IAAa,IAAiC;CAC5C,KAAK;CACL,MAAM;CACN,OAAO;CACP,YAAY;EACV,iBAAiB;GACf,MAAM;GACN,OAAO;GACP,aACE;EACJ;EACA,cAAc;GACZ,MAAM;GACN,OAAO;GACP,aACE;EACJ;GACC,IAA8B;GAC7B,MAAM;GACN,MAAM,CAAC,EAAsB,SAAS,EAAsB,OAAO;EACrE;CACF;CACA,UAAU;EAAC;EAAmB;EAAgB;CAA2B;AAC3E,GAMa,IAAiC;CAC5C,KAAK;CACL,MAAM;CACN,OAAO;CACP,YAAY;EACV,cAAc;GACZ,MAAM;GACN,OAAO;GACP,aAAa;EACf;EACA,gBAAgB;GACd,MAAM;GACN,OAAO;GACP,aAAa;GACb,MAAM;IAAC;IAAY;IAAc;GAAa;EAChD;EACA,wBAAwB;GACtB,MAAM;GACN,OAAO;GACP,aACE;GACF,QAAQ;EACV;GACC,IAA8B;GAC7B,MAAM;GACN,MAAM,CAAC,EAAsB,SAAS,EAAsB,OAAO;EACrE;CACF;CACA,UAAU;EACR;EACA;EACA;CACF;CACA,OAAO,CACL;EACE,IAAI,EACF,YAAY,GACT,IAA8B,EAC7B,OAAO,EAAsB,QAC/B,EACF,EACF;EACA,MAAM,EACJ,YAAY,EACV,mBAAmB;GACjB,MAAM;GACN,OAAO;GACP,aACE;EACJ,EACF,EACF;CACF,CACF;AACF,GAMa,IAAqD;EAC/D,EAAmB,MAAgB;EACnC,EAAmB,MAAgB;AACtC;AAGA,SAAgB,EACd,GACwB;CACxB,OAAO,EAAuB;AAChC"}
@@ -1,15 +1,42 @@
1
- import { ErrorResponse } from '@sage-bionetworks/synapse-client';
2
- import { DefaultBodyType } from 'msw';
3
- /**
4
- * Generates MSW handlers for asynchronous jobs.
5
- * @param requestPath the path to the service-specific asynchronous job request endpoint.
6
- * For example, `'/repo/v1/entity/:id/table/query/async/start'`
7
- * @param responsePath a function that takes the token parameter ID and returns a path to the service-specific asynchronous job response endpoint.
8
- * For example, `param => /repo/v1/entity/:id/table/query/async/get/${param}`
9
- * The generic asynchronous job retrieval handler will be generated automatically.
10
- * @param responseBody the response body, or a function that takes the request body and returns the response body
11
- * @param backendOrigin the backend origin to use for the handlers.
12
- * @param serviceSpecificEndpointResponseStatus the status code to use for the service-specific endpoint. The asynchronous job endpoint will always return 200.
13
- */
14
- export declare function generateAsyncJobHandlers<TRequestBody = unknown, TResponseBody extends DefaultBodyType | ErrorResponse = DefaultBodyType | ErrorResponse>(requestPath: string, responsePath: (tokenParam: string) => string, responseBody: TResponseBody | ((requestBody: TRequestBody) => TResponseBody), backendOrigin?: string, serviceSpecificEndpointResponseStatus?: number): import("msw").HttpHandler[];
1
+ import { AsynchronousRequestBody, ErrorResponse } from '@sage-bionetworks/synapse-client';
2
+ import { DefaultBodyType, HttpHandler } from 'msw';
3
+ /**
4
+ * Maps a job request's `concreteType` to a function producing that job's response body.
5
+ */
6
+ export type AsynchronousJobDispatch = Record<string, (request: AsynchronousRequestBody) => DefaultBodyType | ErrorResponse>;
7
+ /**
8
+ * Build a single-entry `AsynchronousJobDispatch` for one `concreteType`, narrowing `handler`'s
9
+ * request parameter to that type's variant of `AsynchronousRequestBody` so callers never have to
10
+ * re-cast the generic request themselves.
11
+ */
12
+ export declare function dispatchEntry<T extends AsynchronousRequestBody['concreteType']>(concreteType: T, handler: (request: Extract<AsynchronousRequestBody, {
13
+ concreteType: T;
14
+ }>) => DefaultBodyType | ErrorResponse): AsynchronousJobDispatch;
15
+ /**
16
+ * A dedicated async service-specific start/get path pair.
17
+ */
18
+ type AsyncTypeServicePaths = {
19
+ requestPath: string;
20
+ responsePath: (tokenParam: string) => string;
21
+ };
22
+ /**
23
+ * Generates MSW handlers for asynchronous jobs, dispatching by request `concreteType`.
24
+ *
25
+ * By default, registers the generic endpoint pair used by every job type dispatched through
26
+ * `postRepoV1AsynchronousJob`/`getRepoV1AsynchronousJobJobId`
27
+ * (`POST /repo/v1/asynchronous/job` + `GET /repo/v1/asynchronous/job/{jobId}`). Callers that need
28
+ * to support more than one `concreteType` in the same test/story MUST merge their entries into a
29
+ * single `dispatch` map and call this once.
30
+ *
31
+ * @param dispatch maps each supported request `concreteType` to a function producing that job's response body
32
+ * @param options.asyncTypeServicePaths registers a dedicated start/get path pair instead of the generic endpoint; see {@link AsyncTypeServicePaths}
33
+ * @param options.backendOrigin the backend origin to use for the handlers
34
+ * @param options.serviceSpecificEndpointResponseStatus the status code for the dedicated response path (`asyncTypeServicePaths` only); also determines whether both GET endpoints report `COMPLETE` or `FAILED`
35
+ */
36
+ export declare function generateAsyncJobHandlers(dispatch: AsynchronousJobDispatch, options?: {
37
+ asyncTypeServicePaths?: AsyncTypeServicePaths;
38
+ backendOrigin?: string;
39
+ serviceSpecificEndpointResponseStatus?: number;
40
+ }): HttpHandler[];
41
+ export {};
15
42
  //# sourceMappingURL=asyncJobHandlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asyncJobHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/asyncJobHandlers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAMhE,OAAO,EAAE,eAAe,EAAsB,MAAM,KAAK,CAAA;AAiBzD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,GAAG,OAAO,EACtB,aAAa,SAAS,eAAe,GAAG,aAAa,GACjD,eAAe,GACf,aAAa,EAEjB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,EAC5C,YAAY,EAAE,aAAa,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,KAAK,aAAa,CAAC,EAC5E,aAAa,SAAoD,EACjE,qCAAqC,SAAM,+BA+F5C"}
1
+ {"version":3,"file":"asyncJobHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/asyncJobHandlers.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,uBAAuB,EACvB,aAAa,EACd,MAAM,kCAAkC,CAAA;AAMzC,OAAO,EAAE,eAAe,EAAQ,WAAW,EAAgB,MAAM,KAAK,CAAA;AAiBtE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,MAAM,EACN,CAAC,OAAO,EAAE,uBAAuB,KAAK,eAAe,GAAG,aAAa,CACtE,CAAA;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,CAAC,SAAS,uBAAuB,CAAC,cAAc,CAAC,EAEjD,YAAY,EAAE,CAAC,EACf,OAAO,EAAE,CACP,OAAO,EAAE,OAAO,CAAC,uBAAuB,EAAE;IAAE,YAAY,EAAE,CAAC,CAAA;CAAE,CAAC,KAC3D,eAAe,GAAG,aAAa,GACnC,uBAAuB,CAKzB;AAED;;GAEG;AACH,KAAK,qBAAqB,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;CAC7C,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,uBAAuB,EACjC,OAAO,GAAE;IACP,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qCAAqC,CAAC,EAAE,MAAM,CAAA;CAC1C,GACL,WAAW,EAAE,CA0Hf"}
@@ -1,53 +1,62 @@
1
1
  import { BackendDestinationEnum as e, getEndpoint as t } from "../../../utils/functions/getEndpoint.js";
2
- import { ASYNCHRONOUS_JOB_TOKEN as n } from "../../../utils/APIConstants.js";
3
- import r from "../util/BasicMockedCrudService.js";
4
- import { HttpResponse as i, http as a } from "msw";
2
+ import { ASYNCHRONOUS_JOB as n, ASYNCHRONOUS_JOB_TOKEN as r } from "../../../utils/APIConstants.js";
3
+ import i from "../util/BasicMockedCrudService.js";
4
+ import { HttpResponse as a, http as o } from "msw";
5
5
  //#region src/mocks/msw/handlers/asyncJobHandlers.ts
6
- var o = new r({
6
+ var s = new i({
7
7
  idField: "id",
8
8
  autoGenerateId: !0
9
9
  });
10
- function s(r, s, c, l = t(e.REPO_ENDPOINT), u = 201) {
11
- return [
12
- a.post(`${l}${r}`, async ({ request: e }) => {
13
- let t = { token: o.create({
14
- request: await e.json(),
15
- response: c
16
- }).id };
17
- return i.json(t, { status: 201 });
18
- }),
19
- a.get(`${l}${n(":id")}`, ({ params: e }) => {
20
- let t = e.id, n = o.getOneById(t);
21
- if (!t || !n) return i.json({ message: "The mocked asynchronous job was not found" }, { status: 404 });
22
- let { request: r, response: a } = n, s = typeof a == "function" ? a(r) : a, c = u < 400 ? "COMPLETE" : "FAILED";
23
- return i.json({
24
- jobState: c,
25
- jobCanceling: !1,
26
- requestBody: r,
27
- etag: "00000000-0000-0000-0000-000000000000",
28
- jobId: t,
29
- responseBody: s,
30
- startedByUserId: 0,
31
- startedOn: "",
32
- changedOn: "",
33
- progressMessage: "",
34
- progressCurrent: 100,
35
- progressTotal: 100,
36
- exception: "",
37
- errorMessage: "",
38
- errorDetails: "",
39
- runtimeMS: 100
40
- }, { status: 200 });
41
- }),
42
- a.get(`${l}${s(":asyncJobToken")}`, ({ params: e }) => {
43
- let t = e.asyncJobToken, n = o.getOneById(t);
44
- if (!t || !n) return i.json({ message: "The mocked asynchronous job was not found" }, { status: 404 });
45
- let { request: r, response: a } = n, s = typeof a == "function" ? a(r) : a;
46
- return i.json(s, { status: u });
47
- })
48
- ];
10
+ function c(e, t) {
11
+ return { [e]: (e) => t(e) };
12
+ }
13
+ function l(i, c = {}) {
14
+ let { asyncTypeServicePaths: l, backendOrigin: u = t(e.REPO_ENDPOINT), serviceSpecificEndpointResponseStatus: d = 201 } = c;
15
+ if (l && Object.keys(i).length !== 1) throw Error("generateAsyncJobHandlers: asyncTypeServicePaths requires exactly one dispatch entry, since the dedicated path already disambiguates the job type.");
16
+ let f = d < 400 ? "COMPLETE" : "FAILED";
17
+ function p(e) {
18
+ let t = i[e.concreteType];
19
+ if (!t) throw Error(`generateAsyncJobHandlers: unsupported concreteType "${e.concreteType}"`);
20
+ return t(e);
21
+ }
22
+ let m = l?.requestPath ?? n, h = [o.post(`${u}${m}`, async ({ request: e }) => {
23
+ let t = await e.json(), n = s.create({
24
+ request: t,
25
+ response: p(t)
26
+ }), r = l ? { token: n.id } : {
27
+ jobId: n.id,
28
+ jobState: "PROCESSING"
29
+ };
30
+ return a.json(r, { status: 201 });
31
+ }), o.get(`${u}${r(":id")}`, ({ params: e }) => {
32
+ let t = e.id, n = s.getOneById(t);
33
+ if (!t || !n) return a.json({ message: "The mocked asynchronous job was not found" }, { status: 404 });
34
+ let { request: r, response: i } = n;
35
+ return a.json({
36
+ jobState: f,
37
+ jobCanceling: !1,
38
+ requestBody: r,
39
+ etag: "00000000-0000-0000-0000-000000000000",
40
+ jobId: t,
41
+ responseBody: i,
42
+ startedByUserId: 0,
43
+ startedOn: "",
44
+ changedOn: "",
45
+ progressMessage: "",
46
+ progressCurrent: 100,
47
+ progressTotal: 100,
48
+ exception: "",
49
+ errorMessage: "",
50
+ errorDetails: "",
51
+ runtimeMS: 100
52
+ }, { status: 200 });
53
+ })];
54
+ return l && h.push(o.get(`${u}${l.responsePath(":asyncJobToken")}`, ({ params: e }) => {
55
+ let t = e.asyncJobToken, n = s.getOneById(t);
56
+ return !t || !n ? a.json({ message: "The mocked asynchronous job was not found" }, { status: 404 }) : a.json(n.response, { status: d });
57
+ })), h;
49
58
  }
50
59
  //#endregion
51
- export { s as generateAsyncJobHandlers };
60
+ export { c as dispatchEntry, l as generateAsyncJobHandlers };
52
61
 
53
62
  //# sourceMappingURL=asyncJobHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asyncJobHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/asyncJobHandlers.ts"],"sourcesContent":["import { ASYNCHRONOUS_JOB_TOKEN } from '@/utils/APIConstants'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport { ErrorResponse } from '@sage-bionetworks/synapse-client'\nimport {\n AsynchJobState,\n AsynchronousJobStatus,\n AsyncJobId,\n} from '@sage-bionetworks/synapse-types'\nimport { DefaultBodyType, http, HttpResponse } from 'msw'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\ntype AsyncJobDetails<TRequestBody, TResponseBody> = {\n id: string\n request: TRequestBody\n response: TResponseBody\n}\n\nconst mockAsynchronousJobService = new BasicMockedCrudService<\n AsyncJobDetails<unknown, unknown>,\n 'id'\n>({\n idField: 'id',\n autoGenerateId: true,\n})\n\n/**\n * Generates MSW handlers for asynchronous jobs.\n * @param requestPath the path to the service-specific asynchronous job request endpoint.\n * For example, `'/repo/v1/entity/:id/table/query/async/start'`\n * @param responsePath a function that takes the token parameter ID and returns a path to the service-specific asynchronous job response endpoint.\n * For example, `param => /repo/v1/entity/:id/table/query/async/get/${param}`\n * The generic asynchronous job retrieval handler will be generated automatically.\n * @param responseBody the response body, or a function that takes the request body and returns the response body\n * @param backendOrigin the backend origin to use for the handlers.\n * @param serviceSpecificEndpointResponseStatus the status code to use for the service-specific endpoint. The asynchronous job endpoint will always return 200.\n */\nexport function generateAsyncJobHandlers<\n TRequestBody = unknown,\n TResponseBody extends DefaultBodyType | ErrorResponse =\n | DefaultBodyType\n | ErrorResponse,\n>(\n requestPath: string,\n responsePath: (tokenParam: string) => string,\n responseBody: TResponseBody | ((requestBody: TRequestBody) => TResponseBody),\n backendOrigin = getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n serviceSpecificEndpointResponseStatus = 201,\n) {\n return [\n // Handler for the asynchronous job request endpoint.\n http.post(`${backendOrigin}${requestPath}`, async ({ request }) => {\n const createdJob = mockAsynchronousJobService.create({\n request: await request.json(),\n response: responseBody,\n })\n\n const asyncJobResponse: AsyncJobId = {\n token: createdJob.id,\n }\n\n return HttpResponse.json(asyncJobResponse, { status: 201 })\n }),\n\n // Generic async job response handler. Since this implementation is the same for all services and references the global map, it's fine if this is overridden.\n http.get(\n `${backendOrigin}${ASYNCHRONOUS_JOB_TOKEN(':id')}`,\n ({ params }) => {\n const id = params.id as string\n const asyncJobDetails = mockAsynchronousJobService.getOneById(id)\n if (!id || !asyncJobDetails) {\n return HttpResponse.json(\n { message: 'The mocked asynchronous job was not found' },\n { status: 404 },\n )\n }\n const { request, response } = asyncJobDetails as {\n request: TRequestBody\n response: TResponseBody\n }\n const responseObject: TResponseBody =\n typeof response === 'function' ? response(request) : response\n\n const jobState: AsynchJobState =\n serviceSpecificEndpointResponseStatus < 400 ? 'COMPLETE' : 'FAILED'\n\n return HttpResponse.json<\n AsynchronousJobStatus<TRequestBody, TResponseBody>\n >(\n {\n jobState,\n jobCanceling: false,\n requestBody: request,\n etag: '00000000-0000-0000-0000-000000000000',\n jobId: id,\n responseBody: responseObject,\n startedByUserId: 0,\n startedOn: '',\n changedOn: '',\n progressMessage: '',\n progressCurrent: 100,\n progressTotal: 100,\n exception: '',\n errorMessage: '',\n errorDetails: '',\n runtimeMS: 100,\n },\n {\n // This endpoint returns a successful status code regardless of the job status\n status: 200,\n },\n )\n },\n ),\n\n // Service-specific response endpoint\n http.get<{ asyncJobToken: string }, TResponseBody>(\n `${backendOrigin}${responsePath(':asyncJobToken')}`,\n ({ params }) => {\n const asyncJobToken = params.asyncJobToken\n const asyncJobDetails =\n mockAsynchronousJobService.getOneById(asyncJobToken)\n if (!asyncJobToken || !asyncJobDetails) {\n return HttpResponse.json(\n { message: 'The mocked asynchronous job was not found' },\n { status: 404 },\n )\n }\n\n const { request, response } = asyncJobDetails as {\n request: TRequestBody\n response: TResponseBody\n }\n const responseObject: TResponseBody =\n typeof response === 'function' ? response(request) : response\n\n return HttpResponse.json(responseObject, {\n status: serviceSpecificEndpointResponseStatus,\n })\n },\n ),\n ]\n}\n"],"mappings":";;;;;AAoBA,IAAM,IAA6B,IAAI,EAGrC;CACA,SAAS;CACT,gBAAgB;AAClB,CAAC;AAaD,SAAgB,EAMd,GACA,GACA,GACA,IAAgB,EAAY,EAAuB,aAAa,GAChE,IAAwC,KACxC;CACA,OAAO;EAEL,EAAK,KAAK,GAAG,IAAgB,KAAe,OAAO,EAAE,iBAAc;GAMjE,IAAM,IAA+B,EACnC,OANiB,EAA2B,OAAO;IACnD,SAAS,MAAM,EAAQ,KAAK;IAC5B,UAAU;GACZ,CAGS,EAAW,GACpB;GAEA,OAAO,EAAa,KAAK,GAAkB,EAAE,QAAQ,IAAI,CAAC;EAC5D,CAAC;EAGD,EAAK,IACH,GAAG,IAAgB,EAAuB,KAAK,MAC9C,EAAE,gBAAa;GACd,IAAM,IAAK,EAAO,IACZ,IAAkB,EAA2B,WAAW,CAAE;GAChE,IAAI,CAAC,KAAM,CAAC,GACV,OAAO,EAAa,KAClB,EAAE,SAAS,4CAA4C,GACvD,EAAE,QAAQ,IAAI,CAChB;GAEF,IAAM,EAAE,YAAS,gBAAa,GAIxB,IACJ,OAAO,KAAa,aAAa,EAAS,CAAO,IAAI,GAEjD,IACJ,IAAwC,MAAM,aAAa;GAE7D,OAAO,EAAa,KAGlB;IACE;IACA,cAAc;IACd,aAAa;IACb,MAAM;IACN,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,WAAW;IACX,cAAc;IACd,cAAc;IACd,WAAW;GACb,GACA,EAEE,QAAQ,IACV,CACF;EACF,CACF;EAGA,EAAK,IACH,GAAG,IAAgB,EAAa,gBAAgB,MAC/C,EAAE,gBAAa;GACd,IAAM,IAAgB,EAAO,eACvB,IACJ,EAA2B,WAAW,CAAa;GACrD,IAAI,CAAC,KAAiB,CAAC,GACrB,OAAO,EAAa,KAClB,EAAE,SAAS,4CAA4C,GACvD,EAAE,QAAQ,IAAI,CAChB;GAGF,IAAM,EAAE,YAAS,gBAAa,GAIxB,IACJ,OAAO,KAAa,aAAa,EAAS,CAAO,IAAI;GAEvD,OAAO,EAAa,KAAK,GAAgB,EACvC,QAAQ,EACV,CAAC;EACH,CACF;CACF;AACF"}
1
+ {"version":3,"file":"asyncJobHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/asyncJobHandlers.ts"],"sourcesContent":["import { ASYNCHRONOUS_JOB, ASYNCHRONOUS_JOB_TOKEN } from '@/utils/APIConstants'\nimport {\n BackendDestinationEnum,\n getEndpoint,\n} from '@/utils/functions/getEndpoint'\nimport {\n AsynchronousRequestBody,\n ErrorResponse,\n} from '@sage-bionetworks/synapse-client'\nimport {\n AsynchJobState,\n AsynchronousJobStatus,\n AsyncJobId,\n} from '@sage-bionetworks/synapse-types'\nimport { DefaultBodyType, http, HttpHandler, HttpResponse } from 'msw'\nimport BasicMockedCrudService from '../util/BasicMockedCrudService'\n\ntype AsyncJobDetails = {\n id: string\n request: AsynchronousRequestBody\n response: DefaultBodyType | ErrorResponse\n}\n\nconst mockAsynchronousJobService = new BasicMockedCrudService<\n AsyncJobDetails,\n 'id'\n>({\n idField: 'id',\n autoGenerateId: true,\n})\n\n/**\n * Maps a job request's `concreteType` to a function producing that job's response body.\n */\nexport type AsynchronousJobDispatch = Record<\n string,\n (request: AsynchronousRequestBody) => DefaultBodyType | ErrorResponse\n>\n\n/**\n * Build a single-entry `AsynchronousJobDispatch` for one `concreteType`, narrowing `handler`'s\n * request parameter to that type's variant of `AsynchronousRequestBody` so callers never have to\n * re-cast the generic request themselves.\n */\nexport function dispatchEntry<\n T extends AsynchronousRequestBody['concreteType'],\n>(\n concreteType: T,\n handler: (\n request: Extract<AsynchronousRequestBody, { concreteType: T }>,\n ) => DefaultBodyType | ErrorResponse,\n): AsynchronousJobDispatch {\n return {\n [concreteType]: request =>\n handler(request as Extract<AsynchronousRequestBody, { concreteType: T }>),\n }\n}\n\n/**\n * A dedicated async service-specific start/get path pair.\n */\ntype AsyncTypeServicePaths = {\n requestPath: string\n responsePath: (tokenParam: string) => string\n}\n\n/**\n * Generates MSW handlers for asynchronous jobs, dispatching by request `concreteType`.\n *\n * By default, registers the generic endpoint pair used by every job type dispatched through\n * `postRepoV1AsynchronousJob`/`getRepoV1AsynchronousJobJobId`\n * (`POST /repo/v1/asynchronous/job` + `GET /repo/v1/asynchronous/job/{jobId}`). Callers that need\n * to support more than one `concreteType` in the same test/story MUST merge their entries into a\n * single `dispatch` map and call this once.\n *\n * @param dispatch maps each supported request `concreteType` to a function producing that job's response body\n * @param options.asyncTypeServicePaths registers a dedicated start/get path pair instead of the generic endpoint; see {@link AsyncTypeServicePaths}\n * @param options.backendOrigin the backend origin to use for the handlers\n * @param options.serviceSpecificEndpointResponseStatus the status code for the dedicated response path (`asyncTypeServicePaths` only); also determines whether both GET endpoints report `COMPLETE` or `FAILED`\n */\nexport function generateAsyncJobHandlers(\n dispatch: AsynchronousJobDispatch,\n options: {\n asyncTypeServicePaths?: AsyncTypeServicePaths\n backendOrigin?: string\n serviceSpecificEndpointResponseStatus?: number\n } = {},\n): HttpHandler[] {\n const {\n asyncTypeServicePaths,\n backendOrigin = getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n serviceSpecificEndpointResponseStatus = 201,\n } = options\n\n if (asyncTypeServicePaths && Object.keys(dispatch).length !== 1) {\n throw new Error(\n 'generateAsyncJobHandlers: asyncTypeServicePaths requires exactly one dispatch entry, since the dedicated path already disambiguates the job type.',\n )\n }\n\n const jobState: AsynchJobState =\n serviceSpecificEndpointResponseStatus < 400 ? 'COMPLETE' : 'FAILED'\n\n function resolveResponse(\n body: AsynchronousRequestBody,\n ): DefaultBodyType | ErrorResponse {\n const handler = dispatch[body.concreteType]\n if (!handler) {\n throw new Error(\n `generateAsyncJobHandlers: unsupported concreteType \"${body.concreteType}\"`,\n )\n }\n return handler(body)\n }\n\n const requestPath = asyncTypeServicePaths?.requestPath ?? ASYNCHRONOUS_JOB\n\n const handlers: HttpHandler[] = [\n // Handler for the asynchronous job request endpoint.\n http.post(`${backendOrigin}${requestPath}`, async ({ request }) => {\n const body = (await request.json()) as AsynchronousRequestBody\n const createdJob = mockAsynchronousJobService.create({\n request: body,\n response: resolveResponse(body),\n })\n\n // The generic endpoint's response is a full AsynchronousJobStatus (read via `.jobId`).\n // The per-service endpoints respond with an AsyncJobId (read via `.token`).\n const responseBody:\n | AsyncJobId\n | Partial<\n AsynchronousJobStatus<AsynchronousRequestBody, DefaultBodyType>\n > = asyncTypeServicePaths\n ? { token: createdJob.id }\n : { jobId: createdJob.id, jobState: 'PROCESSING' }\n\n return HttpResponse.json(responseBody, { status: 201 })\n }),\n\n // Generic async job response handler. Since this implementation is the same for all services and references the global map, it's fine if this is overridden.\n http.get(\n `${backendOrigin}${ASYNCHRONOUS_JOB_TOKEN(':id')}`,\n ({ params }) => {\n const id = params.id as string\n const asyncJobDetails = mockAsynchronousJobService.getOneById(id)\n if (!id || !asyncJobDetails) {\n return HttpResponse.json(\n { message: 'The mocked asynchronous job was not found' },\n { status: 404 },\n )\n }\n const { request, response } = asyncJobDetails\n\n return HttpResponse.json<\n AsynchronousJobStatus<AsynchronousRequestBody, DefaultBodyType>\n >(\n {\n jobState,\n jobCanceling: false,\n requestBody: request,\n etag: '00000000-0000-0000-0000-000000000000',\n jobId: id,\n responseBody: response as DefaultBodyType,\n startedByUserId: 0,\n startedOn: '',\n changedOn: '',\n progressMessage: '',\n progressCurrent: 100,\n progressTotal: 100,\n exception: '',\n errorMessage: '',\n errorDetails: '',\n runtimeMS: 100,\n },\n {\n // This endpoint returns a successful status code regardless of the job status\n status: 200,\n },\n )\n },\n ),\n ]\n\n if (asyncTypeServicePaths) {\n // Dedicated service-specific response endpoint, polled directly by type-specific services instead of\n // the generic async job response handler above.\n handlers.push(\n http.get<{ asyncJobToken: string }>(\n `${backendOrigin}${asyncTypeServicePaths.responsePath(':asyncJobToken')}`,\n ({ params }) => {\n const asyncJobToken = params.asyncJobToken\n const asyncJobDetails =\n mockAsynchronousJobService.getOneById(asyncJobToken)\n if (!asyncJobToken || !asyncJobDetails) {\n return HttpResponse.json(\n { message: 'The mocked asynchronous job was not found' },\n { status: 404 },\n )\n }\n\n return HttpResponse.json(asyncJobDetails.response, {\n status: serviceSpecificEndpointResponseStatus,\n })\n },\n ),\n )\n }\n\n return handlers\n}\n"],"mappings":";;;;;AAuBA,IAAM,IAA6B,IAAI,EAGrC;CACA,SAAS;CACT,gBAAgB;AAClB,CAAC;AAeD,SAAgB,EAGd,GACA,GAGyB;CACzB,OAAO,GACJ,KAAe,MACd,EAAQ,CAAgE,EAC5E;AACF;AAwBA,SAAgB,EACd,GACA,IAII,CAAC,GACU;CACf,IAAM,EACJ,0BACA,mBAAgB,EAAY,EAAuB,aAAa,GAChE,2CAAwC,QACtC;CAEJ,IAAI,KAAyB,OAAO,KAAK,CAAQ,EAAE,WAAW,GAC5D,MAAU,MACR,mJACF;CAGF,IAAM,IACJ,IAAwC,MAAM,aAAa;CAE7D,SAAS,EACP,GACiC;EACjC,IAAM,IAAU,EAAS,EAAK;EAC9B,IAAI,CAAC,GACH,MAAU,MACR,uDAAuD,EAAK,aAAa,EAC3E;EAEF,OAAO,EAAQ,CAAI;CACrB;CAEA,IAAM,IAAc,GAAuB,eAAe,GAEpD,IAA0B,CAE9B,EAAK,KAAK,GAAG,IAAgB,KAAe,OAAO,EAAE,iBAAc;EACjE,IAAM,IAAQ,MAAM,EAAQ,KAAK,GAC3B,IAAa,EAA2B,OAAO;GACnD,SAAS;GACT,UAAU,EAAgB,CAAI;EAChC,CAAC,GAIK,IAIE,IACJ,EAAE,OAAO,EAAW,GAAG,IACvB;GAAE,OAAO,EAAW;GAAI,UAAU;EAAa;EAEnD,OAAO,EAAa,KAAK,GAAc,EAAE,QAAQ,IAAI,CAAC;CACxD,CAAC,GAGD,EAAK,IACH,GAAG,IAAgB,EAAuB,KAAK,MAC9C,EAAE,gBAAa;EACd,IAAM,IAAK,EAAO,IACZ,IAAkB,EAA2B,WAAW,CAAE;EAChE,IAAI,CAAC,KAAM,CAAC,GACV,OAAO,EAAa,KAClB,EAAE,SAAS,4CAA4C,GACvD,EAAE,QAAQ,IAAI,CAChB;EAEF,IAAM,EAAE,YAAS,gBAAa;EAE9B,OAAO,EAAa,KAGlB;GACE;GACA,cAAc;GACd,aAAa;GACb,MAAM;GACN,OAAO;GACP,cAAc;GACd,iBAAiB;GACjB,WAAW;GACX,WAAW;GACX,iBAAiB;GACjB,iBAAiB;GACjB,eAAe;GACf,WAAW;GACX,cAAc;GACd,cAAc;GACd,WAAW;EACb,GACA,EAEE,QAAQ,IACV,CACF;CACF,CACF,CACF;CA2BA,OAzBI,KAGF,EAAS,KACP,EAAK,IACH,GAAG,IAAgB,EAAsB,aAAa,gBAAgB,MACrE,EAAE,gBAAa;EACd,IAAM,IAAgB,EAAO,eACvB,IACJ,EAA2B,WAAW,CAAa;EAQrD,OAPI,CAAC,KAAiB,CAAC,IACd,EAAa,KAClB,EAAE,SAAS,4CAA4C,GACvD,EAAE,QAAQ,IAAI,CAChB,IAGK,EAAa,KAAK,EAAgB,UAAU,EACjD,QAAQ,EACV,CAAC;CACH,CACF,CACF,GAGK;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"chatHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,kBAAkB,GAC7B,sBAAiE,gCAwClE,CAAA"}
1
+ {"version":3,"file":"chatHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,kBAAkB,GAC7B,sBAAiE,gCA+ClE,CAAA"}
@@ -1,13 +1,13 @@
1
1
  import { BackendDestinationEnum as e, getEndpoint as t } from "../../../utils/functions/getEndpoint.js";
2
2
  import { AGENT_CHAT_TRACE as n, AGENT_SESSION as r, AGENT_SESSION_HISTORY as i, GET_CHAT_ASYNC as a, LIST_AGENT_SESSIONS as o, START_CHAT_ASYNC as s } from "../../../utils/APIConstants.js";
3
3
  import "../../../utils/functions/index.js";
4
- import { generateAsyncJobHandlers as c } from "./asyncJobHandlers.js";
5
- import { mockAgentChatResponse as l, mockAgentSession as u, mockChatSessionId as d, mockEmptyTraceEventsResponse as f, mockListAgentSessionsResponse as p, mockSessionHistoryResponse as m, mockTraceEventsResponse1 as h, mockTraceEventsResponse2 as g, mockTraceEventsResponse3 as _ } from "../../chat/mockChat.js";
6
- import { HttpResponse as v, http as y } from "msw";
4
+ import { dispatchEntry as c, generateAsyncJobHandlers as l } from "./asyncJobHandlers.js";
5
+ import { mockAgentChatResponse as u, mockAgentSession as d, mockChatSessionId as f, mockEmptyTraceEventsResponse as p, mockListAgentSessionsResponse as m, mockSessionHistoryResponse as h, mockTraceEventsResponse1 as g, mockTraceEventsResponse2 as _, mockTraceEventsResponse3 as v } from "../../chat/mockChat.js";
6
+ import { HttpResponse as y, http as b } from "msw";
7
7
  //#region src/mocks/msw/handlers/chatHandlers.ts
8
- function b(e) {
9
- return !e.attachments || e.attachments.length === 0 ? l : {
10
- ...l,
8
+ function x(e) {
9
+ return !e.attachments || e.attachments.length === 0 ? u : {
10
+ ...u,
11
11
  attachmentStatuses: e.attachments.map((e, t) => t === 0 ? {
12
12
  fileHandleId: e.fileHandleId,
13
13
  status: "FAILED",
@@ -19,14 +19,20 @@ function b(e) {
19
19
  })
20
20
  };
21
21
  }
22
- var x = 0, S = (l = t(e.REPO_ENDPOINT)) => [
23
- y.post(`${l}${r}`, () => v.json(u, { status: 201 })),
24
- y.post(`${l}${o}`, () => v.json(p, { status: 201 })),
25
- y.post(`${l}${i(d)}`, () => v.json(m, { status: 201 })),
26
- ...c(s, (e) => a(e), b, l),
27
- y.post(`${l}${n(":id")}`, () => (x++, x == 1 ? v.json(h, { status: 201 }) : x == 5 ? v.json(g, { status: 201 }) : x == 8 ? v.json(_, { status: 201 }) : v.json(f, { status: 201 })))
22
+ var S = 0, C = (u = t(e.REPO_ENDPOINT)) => [
23
+ b.post(`${u}${r}`, () => y.json(d, { status: 201 })),
24
+ b.post(`${u}${o}`, () => y.json(m, { status: 201 })),
25
+ b.post(`${u}${i(f)}`, () => y.json(h, { status: 201 })),
26
+ ...l(c("org.sagebionetworks.repo.model.agent.AgentChatRequest", x), {
27
+ asyncTypeServicePaths: {
28
+ requestPath: s,
29
+ responsePath: (e) => a(e)
30
+ },
31
+ backendOrigin: u
32
+ }),
33
+ b.post(`${u}${n(":id")}`, () => (S++, S == 1 ? y.json(g, { status: 201 }) : S == 5 ? y.json(_, { status: 201 }) : S == 8 ? y.json(v, { status: 201 }) : y.json(p, { status: 201 })))
28
34
  ];
29
35
  //#endregion
30
- export { S as getChatbotHandlers };
36
+ export { C as getChatbotHandlers };
31
37
 
32
38
  //# sourceMappingURL=chatHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"sourcesContent":["import {\n mockAgentChatResponse,\n mockAgentSession,\n mockChatSessionId,\n mockEmptyTraceEventsResponse,\n mockListAgentSessionsResponse,\n mockSessionHistoryResponse,\n mockTraceEventsResponse1,\n mockTraceEventsResponse2,\n mockTraceEventsResponse3,\n} from '@/mocks/chat/mockChat'\nimport {\n AGENT_CHAT_TRACE,\n AGENT_SESSION,\n AGENT_SESSION_HISTORY,\n GET_CHAT_ASYNC,\n LIST_AGENT_SESSIONS,\n START_CHAT_ASYNC,\n} from '@/utils/APIConstants'\nimport { BackendDestinationEnum, getEndpoint } from '@/utils/functions'\nimport {\n AgentChatRequest,\n AgentChatResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\nimport { generateAsyncJobHandlers } from './asyncJobHandlers'\n\nfunction buildMockChatResponse(request: AgentChatRequest): AgentChatResponse {\n if (!request.attachments || request.attachments.length === 0) {\n return mockAgentChatResponse\n }\n return {\n ...mockAgentChatResponse,\n attachmentStatuses: request.attachments.map((attachment, index) =>\n index === 0\n ? {\n fileHandleId: attachment.fileHandleId,\n status: 'FAILED',\n failureCode: 'UNSUPPORTED_TYPE',\n failureMessage: 'This file type is not supported.',\n }\n : {\n fileHandleId: attachment.fileHandleId,\n status: 'STAGED',\n },\n ),\n }\n}\n\nlet traceCallCount = 0\nexport const getChatbotHandlers = (\n backendOrigin = getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n) => [\n http.post(`${backendOrigin}${AGENT_SESSION}`, () => {\n return HttpResponse.json(mockAgentSession, { status: 201 })\n }),\n\n //list chat sessions\n http.post(`${backendOrigin}${LIST_AGENT_SESSIONS}`, () => {\n // const request: ListAgentSessionsRequest = await request.json()\n return HttpResponse.json(mockListAgentSessionsResponse, { status: 201 })\n }),\n\n //session history\n http.post(\n `${backendOrigin}${AGENT_SESSION_HISTORY(mockChatSessionId)}`,\n () => {\n return HttpResponse.json(mockSessionHistoryResponse, { status: 201 })\n },\n ),\n //Async job to send chat message to the agent\n ...generateAsyncJobHandlers<AgentChatRequest, AgentChatResponse>(\n START_CHAT_ASYNC,\n tokenParam => GET_CHAT_ASYNC(tokenParam),\n buildMockChatResponse,\n backendOrigin,\n ),\n\n //trace events\n http.post(`${backendOrigin}${AGENT_CHAT_TRACE(':id')}`, () => {\n //mock showing progress (increasing number of items)\n traceCallCount++\n if (traceCallCount == 1) {\n return HttpResponse.json(mockTraceEventsResponse1, { status: 201 })\n } else if (traceCallCount == 5) {\n return HttpResponse.json(mockTraceEventsResponse2, { status: 201 })\n } else if (traceCallCount == 8) {\n return HttpResponse.json(mockTraceEventsResponse3, { status: 201 })\n } else\n return HttpResponse.json(mockEmptyTraceEventsResponse, { status: 201 })\n }),\n]\n"],"mappings":";;;;;;;AA2BA,SAAS,EAAsB,GAA8C;CAI3E,OAHI,CAAC,EAAQ,eAAe,EAAQ,YAAY,WAAW,IAClD,IAEF;EACL,GAAG;EACH,oBAAoB,EAAQ,YAAY,KAAK,GAAY,MACvD,MAAU,IACN;GACE,cAAc,EAAW;GACzB,QAAQ;GACR,aAAa;GACb,gBAAgB;EAClB,IACA;GACE,cAAc,EAAW;GACzB,QAAQ;EACV,CACN;CACF;AACF;AAEA,IAAI,IAAiB,GACR,KACX,IAAgB,EAAY,EAAuB,aAAa,MAC7D;CACH,EAAK,KAAK,GAAG,IAAgB,WACpB,EAAa,KAAK,GAAkB,EAAE,QAAQ,IAAI,CAAC,CAC3D;CAGD,EAAK,KAAK,GAAG,IAAgB,WAEpB,EAAa,KAAK,GAA+B,EAAE,QAAQ,IAAI,CAAC,CACxE;CAGD,EAAK,KACH,GAAG,IAAgB,EAAsB,CAAiB,WAEjD,EAAa,KAAK,GAA4B,EAAE,QAAQ,IAAI,CAAC,CAExE;CAEA,GAAG,EACD,IACA,MAAc,EAAe,CAAU,GACvC,GACA,CACF;CAGA,EAAK,KAAK,GAAG,IAAgB,EAAiB,KAAK,YAEjD,KACI,KAAkB,IACb,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IACzD,KAAkB,IACpB,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IACzD,KAAkB,IACpB,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IAE3D,EAAa,KAAK,GAA8B,EAAE,QAAQ,IAAI,CAAC,EACzE;AACH"}
1
+ {"version":3,"file":"chatHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/chatHandlers.ts"],"sourcesContent":["import {\n mockAgentChatResponse,\n mockAgentSession,\n mockChatSessionId,\n mockEmptyTraceEventsResponse,\n mockListAgentSessionsResponse,\n mockSessionHistoryResponse,\n mockTraceEventsResponse1,\n mockTraceEventsResponse2,\n mockTraceEventsResponse3,\n} from '@/mocks/chat/mockChat'\nimport {\n AGENT_CHAT_TRACE,\n AGENT_SESSION,\n AGENT_SESSION_HISTORY,\n GET_CHAT_ASYNC,\n LIST_AGENT_SESSIONS,\n START_CHAT_ASYNC,\n} from '@/utils/APIConstants'\nimport { BackendDestinationEnum, getEndpoint } from '@/utils/functions'\nimport {\n AgentChatRequest,\n AgentChatResponse,\n} from '@sage-bionetworks/synapse-client'\nimport { http, HttpResponse } from 'msw'\nimport { dispatchEntry, generateAsyncJobHandlers } from './asyncJobHandlers'\n\nfunction buildMockChatResponse(request: AgentChatRequest): AgentChatResponse {\n if (!request.attachments || request.attachments.length === 0) {\n return mockAgentChatResponse\n }\n return {\n ...mockAgentChatResponse,\n attachmentStatuses: request.attachments.map((attachment, index) =>\n index === 0\n ? {\n fileHandleId: attachment.fileHandleId,\n status: 'FAILED',\n failureCode: 'UNSUPPORTED_TYPE',\n failureMessage: 'This file type is not supported.',\n }\n : {\n fileHandleId: attachment.fileHandleId,\n status: 'STAGED',\n },\n ),\n }\n}\n\nlet traceCallCount = 0\nexport const getChatbotHandlers = (\n backendOrigin = getEndpoint(BackendDestinationEnum.REPO_ENDPOINT),\n) => [\n http.post(`${backendOrigin}${AGENT_SESSION}`, () => {\n return HttpResponse.json(mockAgentSession, { status: 201 })\n }),\n\n //list chat sessions\n http.post(`${backendOrigin}${LIST_AGENT_SESSIONS}`, () => {\n // const request: ListAgentSessionsRequest = await request.json()\n return HttpResponse.json(mockListAgentSessionsResponse, { status: 201 })\n }),\n\n //session history\n http.post(\n `${backendOrigin}${AGENT_SESSION_HISTORY(mockChatSessionId)}`,\n () => {\n return HttpResponse.json(mockSessionHistoryResponse, { status: 201 })\n },\n ),\n //Async job to send chat message to the agent\n ...generateAsyncJobHandlers(\n dispatchEntry(\n 'org.sagebionetworks.repo.model.agent.AgentChatRequest',\n buildMockChatResponse,\n ),\n {\n asyncTypeServicePaths: {\n requestPath: START_CHAT_ASYNC,\n responsePath: tokenParam => GET_CHAT_ASYNC(tokenParam),\n },\n backendOrigin,\n },\n ),\n\n //trace events\n http.post(`${backendOrigin}${AGENT_CHAT_TRACE(':id')}`, () => {\n //mock showing progress (increasing number of items)\n traceCallCount++\n if (traceCallCount == 1) {\n return HttpResponse.json(mockTraceEventsResponse1, { status: 201 })\n } else if (traceCallCount == 5) {\n return HttpResponse.json(mockTraceEventsResponse2, { status: 201 })\n } else if (traceCallCount == 8) {\n return HttpResponse.json(mockTraceEventsResponse3, { status: 201 })\n } else\n return HttpResponse.json(mockEmptyTraceEventsResponse, { status: 201 })\n }),\n]\n"],"mappings":";;;;;;;AA2BA,SAAS,EAAsB,GAA8C;CAI3E,OAHI,CAAC,EAAQ,eAAe,EAAQ,YAAY,WAAW,IAClD,IAEF;EACL,GAAG;EACH,oBAAoB,EAAQ,YAAY,KAAK,GAAY,MACvD,MAAU,IACN;GACE,cAAc,EAAW;GACzB,QAAQ;GACR,aAAa;GACb,gBAAgB;EAClB,IACA;GACE,cAAc,EAAW;GACzB,QAAQ;EACV,CACN;CACF;AACF;AAEA,IAAI,IAAiB,GACR,KACX,IAAgB,EAAY,EAAuB,aAAa,MAC7D;CACH,EAAK,KAAK,GAAG,IAAgB,WACpB,EAAa,KAAK,GAAkB,EAAE,QAAQ,IAAI,CAAC,CAC3D;CAGD,EAAK,KAAK,GAAG,IAAgB,WAEpB,EAAa,KAAK,GAA+B,EAAE,QAAQ,IAAI,CAAC,CACxE;CAGD,EAAK,KACH,GAAG,IAAgB,EAAsB,CAAiB,WAEjD,EAAa,KAAK,GAA4B,EAAE,QAAQ,IAAI,CAAC,CAExE;CAEA,GAAG,EACD,EACE,yDACA,CACF,GACA;EACE,uBAAuB;GACrB,aAAa;GACb,eAAc,MAAc,EAAe,CAAU;EACvD;EACA;CACF,CACF;CAGA,EAAK,KAAK,GAAG,IAAgB,EAAiB,KAAK,YAEjD,KACI,KAAkB,IACb,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IACzD,KAAkB,IACpB,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IACzD,KAAkB,IACpB,EAAa,KAAK,GAA0B,EAAE,QAAQ,IAAI,CAAC,IAE3D,EAAa,KAAK,GAA8B,EAAE,QAAQ,IAAI,CAAC,EACzE;AACH"}
@@ -1,2 +1,3 @@
1
- export declare function getValidationSchemaHandlers(backendOrigin?: string): import("msw").HttpHandler[];
1
+ import { JSONSchema7 } from 'json-schema';
2
+ export declare function getValidationSchemaHandlers(backendOrigin?: string, schemas?: JSONSchema7[]): import("msw").HttpHandler[];
2
3
  //# sourceMappingURL=schemaHandlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/schemaHandlers.ts"],"names":[],"mappings":"AAqBA,wBAAgB,2BAA2B,CAAC,aAAa,CAAC,EAAE,MAAM,+BA+BjE"}
1
+ {"version":3,"file":"schemaHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/schemaHandlers.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AASzC,wBAAgB,2BAA2B,CACzC,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,GAAE,WAAW,EAAsB,+BA8B3C"}
@@ -1,24 +1,30 @@
1
1
  import { SCHEMA_VALIDATION_GET as e, SCHEMA_VALIDATION_START as t } from "../../../utils/APIConstants.js";
2
2
  import { mockConditionalOnConcreteTypeSchema as n, mockFileEntityValidationSchema as r, mockProjectValidationSchema as i, mockValidationSchema as a } from "../../mockSchema.js";
3
- import { generateAsyncJobHandlers as o } from "./asyncJobHandlers.js";
3
+ import { dispatchEntry as o, generateAsyncJobHandlers as s } from "./asyncJobHandlers.js";
4
4
  //#region src/mocks/msw/handlers/schemaHandlers.ts
5
- var s = [
5
+ var c = [
6
6
  a,
7
7
  n,
8
8
  r,
9
9
  i
10
10
  ];
11
- function c(n) {
12
- return o(t, (t) => e(t), (e) => {
13
- let t = e.$id, n = s.find((e) => e.$id?.includes(t));
11
+ function l(n, r = c) {
12
+ return s(o("org.sagebionetworks.repo.model.schema.GetValidationSchemaRequest", (e) => {
13
+ let t = e.$id, n = t ? r.find((e) => e.$id?.includes(t)) : void 0;
14
14
  if (!n) throw Error(`Validation schema with id ${t} not found in mock data.`);
15
15
  return {
16
16
  concreteType: "org.sagebionetworks.repo.model.schema.GetValidationSchemaResponse",
17
17
  validationSchema: n
18
18
  };
19
- }, n);
19
+ }), {
20
+ asyncTypeServicePaths: {
21
+ requestPath: t,
22
+ responsePath: (t) => e(t)
23
+ },
24
+ backendOrigin: n
25
+ });
20
26
  }
21
27
  //#endregion
22
- export { c as getValidationSchemaHandlers };
28
+ export { l as getValidationSchemaHandlers };
23
29
 
24
30
  //# sourceMappingURL=schemaHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemaHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/schemaHandlers.ts"],"sourcesContent":["// MSW handlers for JSON Schema services\nimport {\n mockConditionalOnConcreteTypeSchema,\n mockFileEntityValidationSchema,\n mockProjectValidationSchema,\n mockValidationSchema,\n} from '@/mocks/mockSchema'\nimport { generateAsyncJobHandlers } from '@/mocks/msw/handlers/asyncJobHandlers'\nimport {\n SCHEMA_VALIDATION_GET,\n SCHEMA_VALIDATION_START,\n} from '@/utils/APIConstants'\nimport { JSONSchema7 } from 'json-schema'\n\nconst validationSchemas: JSONSchema7[] = [\n mockValidationSchema,\n mockConditionalOnConcreteTypeSchema,\n mockFileEntityValidationSchema,\n mockProjectValidationSchema,\n]\n\nexport function getValidationSchemaHandlers(backendOrigin?: string) {\n return generateAsyncJobHandlers<\n {\n concreteType: 'org.sagebionetworks.repo.model.schema.GetValidationSchemaRequest'\n $id: string\n },\n {\n concreteType: 'org.sagebionetworks.repo.model.schema.GetValidationSchemaResponse'\n validationSchema: JSONSchema7\n }\n >(\n SCHEMA_VALIDATION_START,\n tokenParam => SCHEMA_VALIDATION_GET(tokenParam),\n req => {\n const requestedId = req.$id\n const validationSchema = validationSchemas.find(schema =>\n schema.$id?.includes(requestedId),\n )\n if (!validationSchema) {\n throw new Error(\n `Validation schema with id ${requestedId} not found in mock data.`,\n )\n }\n return {\n concreteType:\n 'org.sagebionetworks.repo.model.schema.GetValidationSchemaResponse',\n validationSchema: validationSchema,\n }\n },\n backendOrigin,\n )\n}\n"],"mappings":";;;;AAcA,IAAM,IAAmC;CACvC;CACA;CACA;CACA;AACF;AAEA,SAAgB,EAA4B,GAAwB;CAClE,OAAO,EAUL,IACA,MAAc,EAAsB,CAAU,IAC9C,MAAO;EACL,IAAM,IAAc,EAAI,KAClB,IAAmB,EAAkB,MAAK,MAC9C,EAAO,KAAK,SAAS,CAAW,CAClC;EACA,IAAI,CAAC,GACH,MAAU,MACR,6BAA6B,EAAY,yBAC3C;EAEF,OAAO;GACL,cACE;GACgB;EACpB;CACF,GACA,CACF;AACF"}
1
+ {"version":3,"file":"schemaHandlers.js","names":[],"sources":["../../../../src/mocks/msw/handlers/schemaHandlers.ts"],"sourcesContent":["// MSW handlers for JSON Schema services\nimport {\n mockConditionalOnConcreteTypeSchema,\n mockFileEntityValidationSchema,\n mockProjectValidationSchema,\n mockValidationSchema,\n} from '@/mocks/mockSchema'\nimport {\n dispatchEntry,\n generateAsyncJobHandlers,\n} from '@/mocks/msw/handlers/asyncJobHandlers'\nimport {\n SCHEMA_VALIDATION_GET,\n SCHEMA_VALIDATION_START,\n} from '@/utils/APIConstants'\nimport { JSONSchema7 } from 'json-schema'\n\nconst validationSchemas: JSONSchema7[] = [\n mockValidationSchema,\n mockConditionalOnConcreteTypeSchema,\n mockFileEntityValidationSchema,\n mockProjectValidationSchema,\n]\n\nexport function getValidationSchemaHandlers(\n backendOrigin?: string,\n schemas: JSONSchema7[] = validationSchemas,\n) {\n return generateAsyncJobHandlers(\n dispatchEntry(\n 'org.sagebionetworks.repo.model.schema.GetValidationSchemaRequest',\n request => {\n const requestedId = request.$id\n const validationSchema = requestedId\n ? schemas.find(schema => schema.$id?.includes(requestedId))\n : undefined\n if (!validationSchema) {\n throw new Error(\n `Validation schema with id ${requestedId} not found in mock data.`,\n )\n }\n return {\n concreteType:\n 'org.sagebionetworks.repo.model.schema.GetValidationSchemaResponse',\n validationSchema,\n }\n },\n ),\n {\n asyncTypeServicePaths: {\n requestPath: SCHEMA_VALIDATION_START,\n responsePath: tokenParam => SCHEMA_VALIDATION_GET(tokenParam),\n },\n backendOrigin,\n },\n )\n}\n"],"mappings":";;;;AAiBA,IAAM,IAAmC;CACvC;CACA;CACA;CACA;AACF;AAEA,SAAgB,EACd,GACA,IAAyB,GACzB;CACA,OAAO,EACL,EACE,qEACA,MAAW;EACT,IAAM,IAAc,EAAQ,KACtB,IAAmB,IACrB,EAAQ,MAAK,MAAU,EAAO,KAAK,SAAS,CAAW,CAAC,IACxD,KAAA;EACJ,IAAI,CAAC,GACH,MAAU,MACR,6BAA6B,EAAY,yBAC3C;EAEF,OAAO;GACL,cACE;GACF;EACF;CACF,CACF,GACA;EACE,uBAAuB;GACrB,aAAa;GACb,eAAc,MAAc,EAAsB,CAAU;EAC9D;EACA;CACF,CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"searchQueryHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/searchQueryHandlers.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,iBAAiB,EAClB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,gBAAgB,EAEhB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAKjC;;;GAGG;AACH,KAAK,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG;IACjE,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CACvD,CAAA;AAwCD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,iBAAiB,QAQ1B;AAmED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,SAAoD,GAChE,WAAW,EAAE,CAOf"}
1
+ {"version":3,"file":"searchQueryHandlers.d.ts","sourceRoot":"","sources":["../../../../src/mocks/msw/handlers/searchQueryHandlers.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,iBAAiB,EAClB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,gBAAgB,EAEhB,iBAAiB,EAClB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAA;AAKjC;;;GAGG;AACH,KAAK,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG;IACjE,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CACvD,CAAA;AAwCD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,iBAAiB,QAQ1B;AAmED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,SAAoD,GAChE,WAAW,EAAE,CAcf"}