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.
- package/dist/SWC.index.d.ts +1 -0
- package/dist/SWC.index.d.ts.map +1 -1
- package/dist/SWC.index.js +2 -1
- package/dist/SWC.index.js.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts +1 -0
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.d.ts.map +1 -1
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js +12 -12
- package/dist/components/AccessRequirement/ImposeRestrictionDialog/ImposeRestrictionDialog.js.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.d.ts.map +1 -1
- package/dist/components/Aridhia/AridhiaAccessStatus.js +51 -48
- package/dist/components/Aridhia/AridhiaAccessStatus.js.map +1 -1
- package/dist/components/Authentication/Constants.d.ts +4 -0
- package/dist/components/Authentication/Constants.d.ts.map +1 -1
- package/dist/components/Authentication/Constants.js +5 -2
- package/dist/components/Authentication/Constants.js.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.d.ts.map +1 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js +8 -1
- package/dist/components/Authentication/RecoveryCodeGrid.js.map +1 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js +4 -1
- package/dist/components/Authentication/RegenerateBackupCodesWarning.js.map +1 -1
- package/dist/components/Authentication/TOTPForm.d.ts.map +1 -1
- package/dist/components/Authentication/TOTPForm.js +20 -18
- package/dist/components/Authentication/TOTPForm.js.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorBackupCodes.js +41 -12
- package/dist/components/Authentication/TwoFactorBackupCodes.js.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.d.ts.map +1 -1
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js +74 -71
- package/dist/components/Authentication/TwoFactorEnrollmentForm.js.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.d.ts.map +1 -1
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js +43 -46
- package/dist/components/DataGrid/components/ReorderColumnsDialog.js.map +1 -1
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts +11 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js +61 -0
- package/dist/components/FormTemplateEditor/ChoiceOptionsEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts +33 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js +187 -0
- package/dist/components/FormTemplateEditor/FieldDefinitionDrawer.js.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts +14 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js +83 -0
- package/dist/components/FormTemplateEditor/FormTemplatePreview.js.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts +13 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js +33 -0
- package/dist/components/FormTemplateEditor/JsonSchemaBodyEditor.js.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts +32 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js +75 -0
- package/dist/components/FormTemplateEditor/formTemplateValidation.js.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts +25 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js +66 -0
- package/dist/components/FormTemplateEditor/schemaFieldUtils.js.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts +28 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js +39 -0
- package/dist/components/FormTemplateEditor/useSaveFormTemplate.js.map +1 -0
- package/dist/components/FormTemplateEditor/utils.d.ts +21 -0
- package/dist/components/FormTemplateEditor/utils.d.ts.map +1 -0
- package/dist/components/FormTemplateEditor/utils.js +27 -0
- package/dist/components/FormTemplateEditor/utils.js.map +1 -0
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts +1 -1
- package/dist/components/JsonSchemaForm/CustomFormContext.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.css +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.js.map +1 -1
- package/dist/components/JsonSchemaForm/JsonSchemaForm.module.scss +6 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js +4 -0
- package/dist/components/JsonSchemaForm/templates/RJSFInputLabel.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.css +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts +2 -0
- package/dist/components/QueryBuilder/FilterConditionRow.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.js +112 -109
- package/dist/components/QueryBuilder/FilterConditionRow.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.module.js +10 -11
- package/dist/components/QueryBuilder/FilterConditionRow.module.js.map +1 -1
- package/dist/components/QueryBuilder/FilterConditionRow.module.scss +0 -5
- package/dist/components/QueryBuilder/FilterGroupNode.css +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts +4 -0
- package/dist/components/QueryBuilder/FilterGroupNode.d.ts.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.js +85 -51
- package/dist/components/QueryBuilder/FilterGroupNode.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.module.js +10 -9
- package/dist/components/QueryBuilder/FilterGroupNode.module.js.map +1 -1
- package/dist/components/QueryBuilder/FilterGroupNode.module.scss +9 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts +10 -0
- package/dist/components/QueryBuilder/QBDragHandle.d.ts.map +1 -0
- package/dist/components/QueryBuilder/QBDragHandle.js +22 -0
- package/dist/components/QueryBuilder/QBDragHandle.js.map +1 -0
- package/dist/components/QueryBuilder/QueryBuilderControls.d.ts.map +1 -1
- package/dist/components/QueryBuilder/QueryBuilderControls.js +112 -107
- package/dist/components/QueryBuilder/QueryBuilderControls.js.map +1 -1
- package/dist/components/QueryBuilder/qbTreeToReadable.js +11 -11
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts +27 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.d.ts.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js +41 -0
- package/dist/components/QueryBuilder/queryBuilderDnd.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.css +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js +8 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.js.map +1 -0
- package/dist/components/QueryBuilder/queryBuilderDrag.module.scss +12 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts +13 -0
- package/dist/components/QueryBuilder/queryBuilderOperations.d.ts.map +1 -1
- package/dist/components/QueryBuilder/queryBuilderOperations.js +39 -36
- package/dist/components/QueryBuilder/queryBuilderOperations.js.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.d.ts.map +1 -1
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js +46 -47
- package/dist/components/QueryWrapperPlotNav/QueryWrapperPlotNav.js.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts +0 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.d.ts.map +1 -1
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js +35 -36
- package/dist/components/entity/page/title_bar/EntityPageTitleBar.js.map +1 -1
- package/dist/components/styled/LeftRightPanel.d.ts.map +1 -1
- package/dist/components/styled/LeftRightPanel.js +19 -2
- package/dist/components/styled/LeftRightPanel.js.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts +2 -2
- package/dist/mocks/accessRequirement/mockFormTemplates.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockFormTemplates.js +7 -14
- package/dist/mocks/accessRequirement/mockFormTemplates.js.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts +4 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.d.ts.map +1 -1
- package/dist/mocks/accessRequirement/mockJsonSchemas.js +36 -15
- package/dist/mocks/accessRequirement/mockJsonSchemas.js.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts +41 -14
- package/dist/mocks/msw/handlers/asyncJobHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/asyncJobHandlers.js +53 -44
- package/dist/mocks/msw/handlers/asyncJobHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/chatHandlers.js +19 -13
- package/dist/mocks/msw/handlers/chatHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts +2 -1
- package/dist/mocks/msw/handlers/schemaHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/schemaHandlers.js +13 -7
- package/dist/mocks/msw/handlers/schemaHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/searchQueryHandlers.js +24 -18
- package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.d.ts.map +1 -1
- package/dist/mocks/msw/handlers/tableQueryHandlers.js +35 -16
- package/dist/mocks/msw/handlers/tableQueryHandlers.js.map +1 -1
- package/dist/synapse-queries/KeyFactory.d.ts +1 -2
- package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
- package/dist/synapse-queries/KeyFactory.js +2 -5
- package/dist/synapse-queries/KeyFactory.js.map +1 -1
- package/dist/synapse-queries/dataaccess/index.d.ts +0 -1
- package/dist/synapse-queries/dataaccess/index.d.ts.map +1 -1
- package/dist/synapse-queries/dataaccess/index.js +3 -4
- package/dist/synapse-queries/index.js +180 -184
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts +9 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.d.ts.map +1 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js +22 -0
- package/dist/synapse-queries/jsonschema/useCreateJsonSchema.js.map +1 -0
- package/dist/testutils/vitest.setup.js +18 -9
- package/dist/testutils/vitest.setup.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/APIConstants.d.ts +1 -0
- package/dist/utils/APIConstants.d.ts.map +1 -1
- package/dist/utils/APIConstants.js +2 -2
- package/dist/utils/APIConstants.js.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.d.ts.map +1 -1
- package/dist/utils/appendFinalQueryParamKey.js +4 -1
- package/dist/utils/appendFinalQueryParamKey.js.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.d.ts +1 -0
- package/dist/utils/featureflag/FeatureFlags.d.ts.map +1 -1
- package/dist/utils/featureflag/FeatureFlags.js +1 -1
- package/dist/utils/featureflag/FeatureFlags.js.map +1 -1
- package/dist/utils/functions/ArrayUtils.d.ts +3 -0
- package/dist/utils/functions/ArrayUtils.d.ts.map +1 -1
- package/dist/utils/functions/ArrayUtils.js +7 -1
- package/dist/utils/functions/ArrayUtils.js.map +1 -1
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts +26 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.d.ts.map +1 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js +28 -0
- package/dist/utils/jsonschema/generateDataAccessSchema.js.map +1 -0
- package/dist/utils/jsonschema/submissionContext.d.ts +86 -0
- package/dist/utils/jsonschema/submissionContext.d.ts.map +1 -0
- package/dist/utils/jsonschema/submissionContext.js +186 -0
- package/dist/utils/jsonschema/submissionContext.js.map +1 -0
- package/package.json +5 -3
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts +0 -6
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.d.ts.map +0 -1
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js +0 -32
- package/dist/components/AccessRequirement/AddConditionsForUseButton/AddConditionsForUseButton.js.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts +0 -9
- package/dist/components/entity/page/title_bar/TitleBarProperties.d.ts.map +0 -1
- package/dist/components/entity/page/title_bar/TitleBarProperties.js +0 -24
- package/dist/components/entity/page/title_bar/TitleBarProperties.js.map +0 -1
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts +0 -21
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.d.ts.map +0 -1
- package/dist/synapse-queries/dataaccess/useGenerateDataAccessSchema.js +0 -34
- 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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
59
|
+
}, a = [r, i];
|
|
67
60
|
//#endregion
|
|
68
|
-
export {
|
|
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 {
|
|
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
|
-
/**
|
|
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;
|
|
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
|
|
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: [
|
|
19
|
-
|
|
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: [
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
|
57
|
-
return
|
|
77
|
+
function a(e) {
|
|
78
|
+
return i[e];
|
|
58
79
|
}
|
|
59
80
|
//#endregion
|
|
60
|
-
export {
|
|
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
|
|
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
|
-
*
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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,
|
|
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 {
|
|
3
|
-
import
|
|
4
|
-
import { HttpResponse as
|
|
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
|
|
6
|
+
var s = new i({
|
|
7
7
|
idField: "id",
|
|
8
8
|
autoGenerateId: !0
|
|
9
9
|
});
|
|
10
|
-
function
|
|
11
|
-
return [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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 {
|
|
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 {
|
|
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,
|
|
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 {
|
|
5
|
-
import { mockAgentChatResponse as
|
|
6
|
-
import { HttpResponse as
|
|
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
|
|
9
|
-
return !e.attachments || e.attachments.length === 0 ?
|
|
10
|
-
...
|
|
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
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
...c(
|
|
27
|
-
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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":"
|
|
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 {
|
|
3
|
+
import { dispatchEntry as o, generateAsyncJobHandlers as s } from "./asyncJobHandlers.js";
|
|
4
4
|
//#region src/mocks/msw/handlers/schemaHandlers.ts
|
|
5
|
-
var
|
|
5
|
+
var c = [
|
|
6
6
|
a,
|
|
7
7
|
n,
|
|
8
8
|
r,
|
|
9
9
|
i
|
|
10
10
|
];
|
|
11
|
-
function
|
|
12
|
-
return o(
|
|
13
|
-
let t = e.$id, n =
|
|
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
|
-
},
|
|
19
|
+
}), {
|
|
20
|
+
asyncTypeServicePaths: {
|
|
21
|
+
requestPath: t,
|
|
22
|
+
responsePath: (t) => e(t)
|
|
23
|
+
},
|
|
24
|
+
backendOrigin: n
|
|
25
|
+
});
|
|
20
26
|
}
|
|
21
27
|
//#endregion
|
|
22
|
-
export {
|
|
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 {
|
|
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,
|
|
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"}
|