synapse-react-client 2.1.23 → 3.0.2

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 (153) hide show
  1. package/dist/containers/CardContainer.d.ts +0 -8
  2. package/dist/containers/CardContainer.js +13 -23
  3. package/dist/containers/CardContainer.js.map +1 -1
  4. package/dist/containers/CardContainerLogic.d.ts +3 -76
  5. package/dist/containers/CardContainerLogic.js +29 -150
  6. package/dist/containers/CardContainerLogic.js.map +1 -1
  7. package/dist/containers/EntityLink.js +2 -2
  8. package/dist/containers/EntityLink.js.map +1 -1
  9. package/dist/containers/FullTextSearch.d.ts +1 -5
  10. package/dist/containers/FullTextSearch.js +9 -9
  11. package/dist/containers/FullTextSearch.js.map +1 -1
  12. package/dist/containers/HasAccess.js +3 -2
  13. package/dist/containers/HasAccess.js.map +1 -1
  14. package/dist/containers/MarkdownPopover.js +1 -1
  15. package/dist/containers/MarkdownPopover.js.map +1 -1
  16. package/dist/containers/MissingQueryResultsWarning.d.ts +12 -0
  17. package/dist/containers/MissingQueryResultsWarning.js +64 -0
  18. package/dist/containers/MissingQueryResultsWarning.js.map +1 -0
  19. package/dist/containers/QueryCount.js +16 -44
  20. package/dist/containers/QueryCount.js.map +1 -1
  21. package/dist/containers/QueryVisualizationWrapper.d.ts +48 -0
  22. package/dist/containers/QueryVisualizationWrapper.js +81 -0
  23. package/dist/containers/QueryVisualizationWrapper.js.map +1 -0
  24. package/dist/containers/QueryWrapper.d.ts +55 -145
  25. package/dist/containers/QueryWrapper.js +188 -263
  26. package/dist/containers/QueryWrapper.js.map +1 -1
  27. package/dist/containers/QueryWrapperErrorBanner.d.ts +5 -0
  28. package/dist/containers/QueryWrapperErrorBanner.js +16 -0
  29. package/dist/containers/QueryWrapperErrorBanner.js.map +1 -0
  30. package/dist/containers/SearchV2.d.ts +6 -2
  31. package/dist/containers/SearchV2.js +11 -11
  32. package/dist/containers/SearchV2.js.map +1 -1
  33. package/dist/containers/SqlEditor.d.ts +1 -5
  34. package/dist/containers/SqlEditor.js +8 -7
  35. package/dist/containers/SqlEditor.js.map +1 -1
  36. package/dist/containers/TotalQueryResults.d.ts +3 -6
  37. package/dist/containers/TotalQueryResults.js +42 -58
  38. package/dist/containers/TotalQueryResults.js.map +1 -1
  39. package/dist/containers/download_list/DownloadConfirmation.d.ts +4 -4
  40. package/dist/containers/download_list/DownloadConfirmation.js +15 -17
  41. package/dist/containers/download_list/DownloadConfirmation.js.map +1 -1
  42. package/dist/containers/home_page/featured-data/FacetPlotsCard.d.ts +1 -4
  43. package/dist/containers/home_page/featured-data/FacetPlotsCard.js +11 -8
  44. package/dist/containers/home_page/featured-data/FacetPlotsCard.js.map +1 -1
  45. package/dist/containers/home_page/featured-data/QueryPerFacetPlotsCard.d.ts +1 -1
  46. package/dist/containers/home_page/featured-data/QueryPerFacetPlotsCard.js +8 -9
  47. package/dist/containers/home_page/featured-data/QueryPerFacetPlotsCard.js.map +1 -1
  48. package/dist/containers/home_page/featured-data/SingleQueryFacetPlotsCards.d.ts +1 -1
  49. package/dist/containers/home_page/featured-data/SingleQueryFacetPlotsCards.js +10 -11
  50. package/dist/containers/home_page/featured-data/SingleQueryFacetPlotsCards.js.map +1 -1
  51. package/dist/containers/query_wrapper_plot_nav/FilterAndView.d.ts +2 -4
  52. package/dist/containers/query_wrapper_plot_nav/FilterAndView.js +12 -5
  53. package/dist/containers/query_wrapper_plot_nav/FilterAndView.js.map +1 -1
  54. package/dist/containers/query_wrapper_plot_nav/QueryFilterToggleButton.d.ts +1 -2
  55. package/dist/containers/query_wrapper_plot_nav/QueryFilterToggleButton.js +9 -10
  56. package/dist/containers/query_wrapper_plot_nav/QueryFilterToggleButton.js.map +1 -1
  57. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.d.ts +4 -4
  58. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js +53 -35
  59. package/dist/containers/query_wrapper_plot_nav/QueryWrapperPlotNav.js.map +1 -1
  60. package/dist/containers/synapse_form_wrapper/SynapseFormWrapper.js +1 -1
  61. package/dist/containers/synapse_form_wrapper/SynapseFormWrapper.js.map +1 -1
  62. package/dist/containers/table/StandaloneQueryWrapper.d.ts +4 -6
  63. package/dist/containers/table/StandaloneQueryWrapper.js +29 -19
  64. package/dist/containers/table/StandaloneQueryWrapper.js.map +1 -1
  65. package/dist/containers/table/SynapseTable.d.ts +12 -13
  66. package/dist/containers/table/SynapseTable.js +100 -136
  67. package/dist/containers/table/SynapseTable.js.map +1 -1
  68. package/dist/containers/table/TopLevelControls.d.ts +1 -4
  69. package/dist/containers/table/TopLevelControls.js +31 -44
  70. package/dist/containers/table/TopLevelControls.js.map +1 -1
  71. package/dist/containers/table/table-top/ColumnSelection.d.ts +1 -1
  72. package/dist/containers/table/table-top/ColumnSelection.js +3 -5
  73. package/dist/containers/table/table-top/ColumnSelection.js.map +1 -1
  74. package/dist/containers/table/table-top/DownloadOptions.d.ts +0 -2
  75. package/dist/containers/table/table-top/DownloadOptions.js +7 -6
  76. package/dist/containers/table/table-top/DownloadOptions.js.map +1 -1
  77. package/dist/containers/table/table-top/ProgrammaticTableDownload.js +15 -8
  78. package/dist/containers/table/table-top/ProgrammaticTableDownload.js.map +1 -1
  79. package/dist/containers/widgets/facet-nav/FacetNav.d.ts +1 -3
  80. package/dist/containers/widgets/facet-nav/FacetNav.js +14 -10
  81. package/dist/containers/widgets/facet-nav/FacetNav.js.map +1 -1
  82. package/dist/containers/widgets/facet-nav/FacetNavPanel.d.ts +5 -8
  83. package/dist/containers/widgets/facet-nav/FacetNavPanel.js +15 -12
  84. package/dist/containers/widgets/facet-nav/FacetNavPanel.js.map +1 -1
  85. package/dist/containers/widgets/query-filter/EnumFacetFilter.d.ts +3 -3
  86. package/dist/containers/widgets/query-filter/EnumFacetFilter.js +2 -2
  87. package/dist/containers/widgets/query-filter/EnumFacetFilter.js.map +1 -1
  88. package/dist/containers/widgets/query-filter/QueryFilter.d.ts +7 -12
  89. package/dist/containers/widgets/query-filter/QueryFilter.js +12 -9
  90. package/dist/containers/widgets/query-filter/QueryFilter.js.map +1 -1
  91. package/dist/containers/widgets/query-filter/RangeFacetFilter.d.ts +4 -4
  92. package/dist/containers/widgets/query-filter/RangeFacetFilter.js +4 -4
  93. package/dist/containers/widgets/query-filter/RangeFacetFilter.js.map +1 -1
  94. package/dist/index.d.ts +3 -6
  95. package/dist/index.js +3 -5
  96. package/dist/index.js.map +1 -1
  97. package/dist/style/base/_icons.scss +4 -0
  98. package/dist/style/components/_dataset-editor.scss +6 -0
  99. package/dist/style/components/_markdown.scss +1 -1
  100. package/dist/style/components/entity_finder/_details-view.scss +6 -6
  101. package/dist/style/components/entity_finder/_entity-finder.scss +3 -7
  102. package/dist/style/components/entity_finder/_tree-node-browse.scss +1 -3
  103. package/dist/style/components/entity_finder/_tree-node-select.scss +0 -4
  104. package/dist/style/components/query_filter/_enum-facet-filter.scss +4 -1
  105. package/dist/style/main.css +887 -19
  106. package/dist/template_style/_form.scss +150 -105
  107. package/dist/umd/synapse-react-client.development.css +805 -19
  108. package/dist/umd/synapse-react-client.development.css.map +2 -2
  109. package/dist/umd/synapse-react-client.development.js +3792 -3581
  110. package/dist/umd/synapse-react-client.development.js.map +3 -3
  111. package/dist/umd/synapse-react-client.production.min.css +1 -1
  112. package/dist/umd/synapse-react-client.production.min.js +89 -89
  113. package/dist/utils/APIConstants.d.ts +3 -0
  114. package/dist/utils/APIConstants.js +12 -2
  115. package/dist/utils/APIConstants.js.map +1 -1
  116. package/dist/utils/SynapseClient.d.ts +47 -20
  117. package/dist/utils/SynapseClient.js +278 -209
  118. package/dist/utils/SynapseClient.js.map +1 -1
  119. package/dist/utils/SynapseConstants.d.ts +1 -0
  120. package/dist/utils/SynapseConstants.js +3 -2
  121. package/dist/utils/SynapseConstants.js.map +1 -1
  122. package/dist/utils/functions/EntityTypeUtils.d.ts +13 -1
  123. package/dist/utils/functions/EntityTypeUtils.js +25 -1
  124. package/dist/utils/functions/EntityTypeUtils.js.map +1 -1
  125. package/dist/utils/functions/queryUtils.d.ts +2 -2
  126. package/dist/utils/functions/queryUtils.js +22 -5
  127. package/dist/utils/functions/queryUtils.js.map +1 -1
  128. package/dist/utils/functions/sqlFunctions.d.ts +4 -0
  129. package/dist/utils/functions/sqlFunctions.js +14 -2
  130. package/dist/utils/functions/sqlFunctions.js.map +1 -1
  131. package/dist/utils/functions/unCamelCase.d.ts +1 -1
  132. package/dist/utils/functions/unCamelCase.js.map +1 -1
  133. package/dist/utils/hooks/SynapseAPI/useGetQueryResultBundle.d.ts +4 -3
  134. package/dist/utils/hooks/SynapseAPI/useGetQueryResultBundle.js +67 -1
  135. package/dist/utils/hooks/SynapseAPI/useGetQueryResultBundle.js.map +1 -1
  136. package/dist/utils/synapseTypes/Entity/Entity.js.map +1 -1
  137. package/dist/utils/synapseTypes/Table/AsynchronousJobStatus.d.ts +5 -4
  138. package/dist/utils/synapseTypes/Table/EntityView.d.ts +8 -0
  139. package/dist/utils/synapseTypes/Table/EntityView.js +9 -0
  140. package/dist/utils/synapseTypes/Table/EntityView.js.map +1 -1
  141. package/dist/utils/synapseTypes/Table/FacetColumnRequest.d.ts +1 -1
  142. package/dist/utils/synapseTypes/Table/FacetColumnResult.d.ts +10 -10
  143. package/dist/utils/synapseTypes/Table/QueryResultBundle.d.ts +1 -0
  144. package/package.json +46 -39
  145. package/dist/containers/StackedBarChart.d.ts +0 -63
  146. package/dist/containers/StackedBarChart.js +0 -229
  147. package/dist/containers/StackedBarChart.js.map +0 -1
  148. package/dist/utils/functions/facetUtils.d.ts +0 -20
  149. package/dist/utils/functions/facetUtils.js +0 -37
  150. package/dist/utils/functions/facetUtils.js.map +0 -1
  151. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.d.ts +0 -4
  152. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js +0 -3
  153. package/dist/utils/synapseTypes/DownloadListV2/DownloadListManifestResponse.js.map +0 -1
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWikiPageKeyForAccessRequirement = exports.getWikiPageKeyForEntity = exports.getTeamList = exports.getUserTeamList = exports.getUserChallenges = exports.removeUserFavorite = exports.getUserFavorites = exports.getEntityWiki = exports.getEntityBundleV2 = exports.deleteEntity = exports.updateEntity = exports.getEntityHeader = exports.getEntityHeaders = exports.getEntityHeadersByIds = exports.getEntity = exports.getBulkFiles = exports.getFiles = exports.lookupChildEntity = exports.getEntityChildren = exports.getUserProfiles = exports.getGroupHeadersBatch = exports.getUserGroupHeaders = exports.updateMyUserProfile = exports.getMyUserBundle = exports.getUserBundle = exports.getUserProfileById = exports.getUserProfile = exports.createProject = exports.createEntity = exports.oAuthSessionRequest = exports.oAuthUrlRequest = exports.login = exports.getFullQueryTableResults = exports.getQueryTableResults = exports.getAsyncResultFromJobId = exports.getFileHandleByIdURL = exports.getActualFileHandleByIdURL = exports.getFileHandleById = exports.getDownloadFromTableRequest = exports.addFilesToDownloadList = exports.getVersion = exports.doPut = exports.doDelete = exports.doGet = exports.doPost = exports.delay = exports.getRootURL = exports.SYNAPSE_STORAGE_LOCATION_ID = exports.ACCESS_TOKEN_COOKIE_KEY = exports.IS_OUTSIDE_SYNAPSE_ORG = void 0;
4
- exports.getProjectStatistics = exports.rejectFormData = exports.acceptFormData = exports.listFormDataAsFormAdmin = exports.listFormData = exports.submitFormData = exports.deleteFormData = exports.updateFormData = exports.createFormData = exports.updateFormACL = exports.getFormACL = exports.createFormGroup = exports.consentToOAuth2Request = exports.getAuthenticatedOn = exports.getOAuth2Client = exports.hasUserAuthorizedOAuthClient = exports.getOAuth2RequestDescription = exports.getEvaluationSubmissions = exports.deleteEvaluationRound = exports.updateEvaluationRound = exports.createEvaluationRound = exports.getEvaluationRoundsList = exports.getEvaluationRound = exports.deleteEvaluation = exports.createEvaluation = exports.updateEvaluation = exports.getEvaluation = exports.getEvaluationPermissions = exports.submitToEvaluation = exports.createACL = exports.addFilesToDownloadListV2 = exports.createManifestFromDownloadListV2 = exports.createPackageFromDownloadListV2 = exports.addFileToDownloadListV2 = exports.getFileResult = exports.getFileHandleContent = exports.getFileHandleContentFromID = exports.startMultipartUpload = exports.checkUploadComplete = exports.uploadFile = exports.signOut = exports.detectSSOCode = exports.getPrincipalAliasRequest = exports.getUseUtcTimeFromCookie = exports.getAccessTokenFromCookie = exports.setAccessTokenCookie = exports.isInSynapseExperimentalMode = exports.getPresignedUrlForWikiAttachment = exports.getWikiAttachmentsFromEvaluation = exports.getWikiAttachmentsFromEntity = void 0;
5
- exports.changePasswordWithCurrentPassword = exports.createProfileVerificationSubmission = exports.signSynapseTermsOfUse = exports.bindOAuthProviderToAccount = exports.oAuthRegisterAccountStep2 = exports.registerAccountStep2 = exports.registerAccountStep1 = exports.isAliasAvailable = exports.getNotificationEmail = exports.updateEntityJson = exports.getEntityJson = exports.hasAccessToEntity = exports.getValidationSchema = exports.getSchema = exports.getSchemaValidationResults = exports.getSchemaBinding = exports.cancelDataAccessRequest = exports.submitDataAccessRequest = exports.updateDataAccessRequest = exports.getDataAccessRequestForUpdate = exports.getResearchProject = exports.updateResearchProject = exports.removeItemFromDownloadListV2 = exports.getDownloadListActionsRequired = exports.getDownloadListStatistics = exports.getAvailableFilesToDownload = exports.clearDownloadListV2 = exports.searchEntities = exports.getEntityVersions = exports.getEntityPath = exports.getUserProjects = exports.getMyProjects = exports.deletePersonalAccessToken = exports.getPersonalAccessTokenRecords = exports.createPersonalAccessToken = exports.getTransformSqlWithFacetsRequest = exports.updateTable = exports.deleteDownloadList = exports.deleteDownloadListFiles = exports.getAllOfPaginatedService = exports.getDownloadOrder = exports.getDownloadList = exports.postAccessApproval = exports.getAccessApproval = exports.getAllAccessRequirements = exports.getAccessRequirementStatus = exports.getAccessRequirementById = exports.getAccessRequirement = exports.getRestrictionInformation = void 0;
3
+ exports.getTeamList = exports.getUserTeamList = exports.getUserChallenges = exports.removeUserFavorite = exports.getUserFavorites = exports.getEntityWiki = exports.getEntityBundleV2 = exports.deleteEntity = exports.updateEntity = exports.getEntityHeader = exports.getEntityHeaders = exports.getEntityHeadersByIds = exports.getEntity = exports.getBulkFiles = exports.getFiles = exports.lookupChildEntity = exports.getEntityChildren = exports.getUserProfiles = exports.getGroupHeadersBatch = exports.getUserGroupHeaders = exports.updateMyUserProfile = exports.getMyUserBundle = exports.getUserBundle = exports.getUserProfileById = exports.getUserProfile = exports.createProject = exports.createEntity = exports.oAuthSessionRequest = exports.oAuthUrlRequest = exports.login = exports.getFullQueryTableResults = exports.getQueryTableResults = exports.getQueryTableAsyncJobResults = exports.getAsyncResultBodyFromJobId = exports.getAsyncResultFromJobId = exports.getFileHandleByIdURL = exports.getActualFileHandleByIdURL = exports.getFileHandleById = exports.getDownloadFromTableRequest = exports.getVersion = exports.doPut = exports.doDelete = exports.doGet = exports.doPost = exports.SynapseClientError = exports.delay = exports.getRootURL = exports.SYNAPSE_STORAGE_LOCATION_ID = exports.ACCESS_TOKEN_COOKIE_KEY = exports.IS_OUTSIDE_SYNAPSE_ORG = void 0;
4
+ exports.acceptFormData = exports.listFormDataAsFormAdmin = exports.listFormData = exports.submitFormData = exports.deleteFormData = exports.updateFormData = exports.createFormData = exports.updateFormACL = exports.getFormACL = exports.createFormGroup = exports.consentToOAuth2Request = exports.getAuthenticatedOn = exports.getOAuth2Client = exports.hasUserAuthorizedOAuthClient = exports.getOAuth2RequestDescription = exports.getEvaluationSubmissions = exports.deleteEvaluationRound = exports.updateEvaluationRound = exports.createEvaluationRound = exports.getEvaluationRoundsList = exports.getEvaluationRound = exports.deleteEvaluation = exports.createEvaluation = exports.updateEvaluation = exports.getEvaluation = exports.getEvaluationPermissions = exports.submitToEvaluation = exports.createACL = exports.addFilesToDownloadListV2 = exports.createManifestFromDownloadListV2 = exports.createPackageFromDownloadListV2 = exports.addFileToDownloadListV2 = exports.getFileResult = exports.getFileHandleContent = exports.getFileHandleContentFromID = exports.startMultipartUpload = exports.checkUploadComplete = exports.uploadFile = exports.signOut = exports.detectSSOCode = exports.getPrincipalAliasRequest = exports.getUseUtcTimeFromCookie = exports.getAccessTokenFromCookie = exports.setAccessTokenCookie = exports.isInSynapseExperimentalMode = exports.getPresignedUrlForWikiAttachment = exports.getWikiAttachmentsFromEvaluation = exports.getWikiAttachmentsFromEntity = exports.getWikiPageKeyForAccessRequirement = exports.getWikiPageKeyForEntity = void 0;
5
+ exports.createProfileVerificationSubmission = exports.signSynapseTermsOfUse = exports.bindOAuthProviderToAccount = exports.oAuthRegisterAccountStep2 = exports.registerAccountStep2 = exports.registerAccountStep1 = exports.isAliasAvailable = exports.getNotificationEmail = exports.updateEntityJson = exports.getEntityJson = exports.hasAccessToEntity = exports.getValidationSchema = exports.getSchema = exports.getSchemaValidationResults = exports.getSchemaBinding = exports.cancelDataAccessRequest = exports.submitDataAccessRequest = exports.updateDataAccessRequest = exports.getDataAccessRequestForUpdate = exports.getResearchProject = exports.updateResearchProject = exports.removeItemFromDownloadListV2 = exports.getDownloadListActionsRequired = exports.getDownloadListStatistics = exports.getAvailableFilesToDownload = exports.clearDownloadListV2 = exports.searchEntities = exports.getEntityVersions = exports.getEntityPath = exports.getUserProjects = exports.getMyProjects = exports.deletePersonalAccessToken = exports.getPersonalAccessTokenRecords = exports.createPersonalAccessToken = exports.getTransformSqlWithFacetsRequest = exports.updateTable = exports.deleteDownloadList = exports.deleteDownloadListFiles = exports.getAllOfPaginatedService = exports.getDownloadOrder = exports.getDownloadList = exports.postAccessApproval = exports.getAccessApproval = exports.getAllAccessRequirements = exports.getAccessRequirementStatus = exports.getAccessRequirementById = exports.getAccessRequirement = exports.getRestrictionInformation = exports.getProjectStatistics = exports.rejectFormData = void 0;
6
+ exports.changePasswordWithCurrentPassword = void 0;
6
7
  var tslib_1 = require("tslib");
7
8
  var spark_md5_1 = (0, tslib_1.__importDefault)(require("spark-md5"));
8
9
  var universal_cookie_1 = (0, tslib_1.__importDefault)(require("universal-cookie"));
@@ -44,6 +45,21 @@ function delay(t) {
44
45
  });
45
46
  }
46
47
  exports.delay = delay;
48
+ /**
49
+ * Error message returned by the Synapse backend joined with the
50
+ * HTTP status code.
51
+ */
52
+ var SynapseClientError = /** @class */ (function (_super) {
53
+ (0, tslib_1.__extends)(SynapseClientError, _super);
54
+ function SynapseClientError(status, reason) {
55
+ var _this = _super.call(this, reason) || this;
56
+ _this.status = status;
57
+ _this.reason = reason;
58
+ return _this;
59
+ }
60
+ return SynapseClientError;
61
+ }(Error));
62
+ exports.SynapseClientError = SynapseClientError;
47
63
  /*
48
64
  0 - no internet connection
49
65
  429 - Too Many Requests
@@ -52,51 +68,57 @@ exports.delay = delay;
52
68
  504 - Gateway Timeout
53
69
  */
54
70
  var RETRY_STATUS_CODES = [0, 429, 502, 503, 504];
71
+ /**
72
+ * Fetches data, retrying if the HTTP status code indicates that it could be retried. Contains custom logic for
73
+ * handling errors returned by the Synapse backend.
74
+ * @throws SynapseClientError
75
+ */
55
76
  var fetchWithExponentialTimeout = function (url, options, delayMs) {
56
77
  if (delayMs === void 0) { delayMs = 1000; }
57
- return fetch(url, options)
58
- .then(function (resp) {
59
- return resp
60
- .text()
61
- .then(function (text) {
62
- // try to parse it as json
63
- try {
64
- var json = JSON.parse(text);
65
- return resp.ok ? Promise.resolve(json) : Promise.reject(json);
66
- }
67
- catch (error) {
68
- // failed to parse json, return text
69
- return resp.ok ? Promise.resolve(text) : Promise.reject(text);
70
- }
71
- })
72
- .catch(function (error) {
73
- if (resp.ok) {
74
- // possible empty response
75
- return Promise.resolve({
76
- reason: error,
77
- status: resp.status,
78
- });
79
- }
80
- if (error.reason && resp.status) {
81
- // successful return from server but invalid call
82
- return Promise.reject((0, tslib_1.__assign)((0, tslib_1.__assign)({}, error), { status: resp.status }));
78
+ return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
79
+ var response, responseBody, responseObject;
80
+ return (0, tslib_1.__generator)(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0: return [4 /*yield*/, fetch(url, options)];
83
+ case 1:
84
+ response = _a.sent();
85
+ _a.label = 2;
86
+ case 2:
87
+ if (!(response.status && RETRY_STATUS_CODES.includes(response.status))) return [3 /*break*/, 5];
88
+ return [4 /*yield*/, delay(delayMs)
89
+ // Exponential backoff if we re-fetch
90
+ ];
91
+ case 3:
92
+ _a.sent();
93
+ // Exponential backoff if we re-fetch
94
+ delayMs = delayMs * 2;
95
+ return [4 /*yield*/, fetch(url, options)];
96
+ case 4:
97
+ response = _a.sent();
98
+ return [3 /*break*/, 2];
99
+ case 5: return [4 /*yield*/, response.text()];
100
+ case 6:
101
+ responseBody = _a.sent();
102
+ responseObject = responseBody;
103
+ try {
104
+ // try to parse it as json
105
+ responseObject = JSON.parse(responseBody);
106
+ }
107
+ catch (error) {
108
+ console.warn('Failed to parse response as JSON', responseBody);
109
+ }
110
+ if (response.ok) {
111
+ return [2 /*return*/, responseObject];
112
+ }
113
+ else if (typeof responseObject === 'object' && 'reason' in responseObject) {
114
+ throw new SynapseClientError(response.status, responseObject.reason);
115
+ }
116
+ else {
117
+ throw new SynapseClientError(response.status, JSON.stringify(responseObject));
118
+ }
119
+ return [2 /*return*/];
83
120
  }
84
- // This occurs if the response is not ok and does not have json or is empty
85
- return Promise.reject({
86
- reason: error,
87
- status: resp.status,
88
- });
89
121
  });
90
- })
91
- .catch(function (error) {
92
- if (error.status && RETRY_STATUS_CODES.indexOf(error.status) !== -1) {
93
- return delay(delayMs).then(function () {
94
- return fetchWithExponentialTimeout(url, options, delayMs * 2);
95
- });
96
- }
97
- else {
98
- return Promise.reject(error);
99
- }
100
122
  });
101
123
  };
102
124
  var doPost = function (url, requestJsonObject, accessToken, initCredentials, endpoint, signal) {
@@ -110,7 +132,7 @@ var doPost = function (url, requestJsonObject, accessToken, initCredentials, end
110
132
  method: 'POST',
111
133
  mode: 'cors',
112
134
  credentials: initCredentials,
113
- signal: signal
135
+ signal: signal,
114
136
  };
115
137
  if (accessToken) {
116
138
  // @ts-ignore
@@ -180,36 +202,21 @@ var getVersion = function () {
180
202
  return (0, exports.doGet)('/repo/v1/version', undefined, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT);
181
203
  };
182
204
  exports.getVersion = getVersion;
183
- /**
184
- * https://rest-docs.synapse.org/rest/POST/download/list/add/async/start.html
185
- */
186
- //Start an asynchronous job to add files to a user's download list.
187
- var addFilesToDownloadList = function (request, accessToken, updateParentState) {
188
- return (0, exports.doPost)("/file/v1/download/list/add/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
189
- .then(function (resp) {
190
- var requestUrl = "/file/v1/download/list/add/async/get/" + resp.token;
191
- return (0, exports.getAsyncResultFromJobId)(requestUrl, accessToken, updateParentState).then(function (data) {
192
- (0, dispatchDownloadListChangeEvent_1.dispatchDownloadListChangeEvent)(data.downloadList);
193
- return data;
194
- });
195
- })
196
- .catch(function (error) {
197
- throw error;
198
- });
199
- };
200
- exports.addFilesToDownloadList = addFilesToDownloadList;
201
205
  /**
202
206
  * https://rest-docs.synapse.org/rest/POST/entity/id/table/download/csv/async/start.html
203
207
  */
204
- var getDownloadFromTableRequest = function (request, accessToken, updateParentState) {
208
+ var getDownloadFromTableRequest = function (request, accessToken) {
205
209
  if (accessToken === void 0) { accessToken = undefined; }
206
- return (0, exports.doPost)("/repo/v1/entity/" + request.entityId + "/table/download/csv/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
207
- .then(function (resp) {
208
- var requestUrl = "/repo/v1/entity/" + request.entityId + "/table/download/csv/async/get/" + resp.token;
209
- return (0, exports.getAsyncResultFromJobId)(requestUrl, accessToken, updateParentState);
210
- })
211
- .catch(function (error) {
212
- throw error;
210
+ return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
211
+ var asyncJobId;
212
+ return (0, tslib_1.__generator)(this, function (_a) {
213
+ switch (_a.label) {
214
+ case 0: return [4 /*yield*/, (0, exports.doPost)("/repo/v1/entity/" + request.entityId + "/table/download/csv/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
215
+ case 1:
216
+ asyncJobId = _a.sent();
217
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/entity/" + request.entityId + "/table/download/csv/async/get/" + asyncJobId.token, accessToken)];
218
+ }
219
+ });
213
220
  });
214
221
  };
215
222
  exports.getDownloadFromTableRequest = getDownloadFromTableRequest;
@@ -247,45 +254,99 @@ var getFileHandleByIdURL = function (handleId, accessToken) {
247
254
  return (0, exports.doGet)("/file/v1/fileHandle/" + handleId + "/url?redirect=false", accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT);
248
255
  };
249
256
  exports.getFileHandleByIdURL = getFileHandleByIdURL;
250
- var getAsyncResultFromJobId = function (urlRequest, accessToken, updateParentState) {
251
- if (accessToken === void 0) { accessToken = undefined; }
252
- return (0, exports.doGet)(urlRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
253
- .then(function (resp) {
254
- // is this the job status?
255
- if (resp.jobState && resp.jobState !== 'FAILED') {
256
- updateParentState &&
257
- updateParentState({
258
- asyncJobStatus: resp,
259
- });
260
- // still processing, wait for a second and try again
261
- return delay(500).then(function () {
262
- return (0, exports.getAsyncResultFromJobId)(urlRequest, accessToken, updateParentState);
263
- });
257
+ /**
258
+ * Get a completed asynchronous job. Will refetch every 500ms until COMPLETE or FAILED.
259
+ * @param asyncJobId
260
+ * @param accessToken
261
+ * @param setCurrentAsyncResult - optional function that will receive the AsynchronousJobStatus object every time
262
+ * it's fetched, including while it is in the "PROCESSING" state.
263
+ * @returns
264
+ */
265
+ var getAsyncResultFromJobId = function (asyncJobId, responseBodyEndpoint, accessToken, setCurrentAsyncResult) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
266
+ var response;
267
+ return (0, tslib_1.__generator)(this, function (_a) {
268
+ switch (_a.label) {
269
+ case 0: return [4 /*yield*/, (0, exports.doGet)((0, APIConstants_1.ASYNCHRONOUS_JOB_TOKEN)(asyncJobId), accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
270
+ case 1:
271
+ response = _a.sent();
272
+ setCurrentAsyncResult === null || setCurrentAsyncResult === void 0 ? void 0 : setCurrentAsyncResult(response);
273
+ _a.label = 2;
274
+ case 2:
275
+ if (!(response.jobState && response.jobState === 'PROCESSING')) return [3 /*break*/, 5];
276
+ return [4 /*yield*/, delay(500)];
277
+ case 3:
278
+ _a.sent();
279
+ return [4 /*yield*/, (0, exports.doGet)((0, APIConstants_1.ASYNCHRONOUS_JOB_TOKEN)(asyncJobId), accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
280
+ case 4:
281
+ response = _a.sent();
282
+ setCurrentAsyncResult === null || setCurrentAsyncResult === void 0 ? void 0 : setCurrentAsyncResult(response);
283
+ return [3 /*break*/, 2];
284
+ case 5:
285
+ if (response.jobState === 'FAILED') {
286
+ /**
287
+ * While we technically already have the failure reason in the response, the HTTP response doesn't give a helpful error code (e.g. 403)
288
+ * that we can use for an error banner. We can get the HTTP code if we fetch the response body directly.
289
+ */
290
+ (0, exports.doGet)(responseBodyEndpoint, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT);
291
+ }
292
+ return [2 /*return*/, response];
264
293
  }
265
- // these must be the query results!
266
- return resp;
267
- })
268
- .catch(function (error) {
269
- throw error;
270
294
  });
271
- };
295
+ }); };
272
296
  exports.getAsyncResultFromJobId = getAsyncResultFromJobId;
297
+ /**
298
+ * Get the response body for an asynchronous job, or throw an error if the job failed.
299
+ * @param asyncJobId
300
+ * @param accessToken
301
+ * @returns
302
+ */
303
+ var getAsyncResultBodyFromJobId = function (asyncJobId, responseBodyEndpoint, accessToken) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
304
+ var response;
305
+ return (0, tslib_1.__generator)(this, function (_a) {
306
+ switch (_a.label) {
307
+ case 0: return [4 /*yield*/, (0, exports.getAsyncResultFromJobId)(asyncJobId, responseBodyEndpoint, accessToken)];
308
+ case 1:
309
+ response = _a.sent();
310
+ return [2 /*return*/, response.responseBody];
311
+ }
312
+ });
313
+ }); };
314
+ exports.getAsyncResultBodyFromJobId = getAsyncResultBodyFromJobId;
273
315
  /**
274
316
  * https://rest-docs.synapse.org/rest/POST/entity/id/table/query/nextPage/async/start.html
275
317
  * @param {*} queryBundleRequest
276
318
  * @param {*} accessToken
277
319
  * @param {*} endpoint
278
320
  */
279
- var getQueryTableResults = function (queryBundleRequest, accessToken, updateParentState) {
280
- if (accessToken === void 0) { accessToken = undefined; }
281
- return (0, exports.doPost)("/repo/v1/entity/" + queryBundleRequest.entityId + "/table/query/async/start", queryBundleRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
282
- .then(function (resp) {
283
- return (0, exports.getAsyncResultFromJobId)("/repo/v1/entity/" + queryBundleRequest.entityId + "/table/query/async/get/" + resp.token, accessToken, updateParentState);
284
- })
285
- .catch(function (error) {
286
- throw error;
321
+ var getQueryTableAsyncJobResults = function (queryBundleRequest, accessToken) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
322
+ var asyncJobId;
323
+ return (0, tslib_1.__generator)(this, function (_a) {
324
+ switch (_a.label) {
325
+ case 0: return [4 /*yield*/, (0, exports.doPost)((0, APIConstants_1.TABLE_QUERY_ASYNC_START)(queryBundleRequest.entityId), queryBundleRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
326
+ case 1:
327
+ asyncJobId = _a.sent();
328
+ return [2 /*return*/, (0, exports.getAsyncResultFromJobId)(asyncJobId.token, (0, APIConstants_1.TABLE_QUERY_ASYNC_GET)(queryBundleRequest.entityId, asyncJobId.token), accessToken)];
329
+ }
287
330
  });
288
- };
331
+ }); };
332
+ exports.getQueryTableAsyncJobResults = getQueryTableAsyncJobResults;
333
+ /**
334
+ * https://rest-docs.synapse.org/rest/POST/entity/id/table/query/nextPage/async/start.html
335
+ * @param {*} queryBundleRequest
336
+ * @param {*} accessToken
337
+ * @param {*} endpoint
338
+ */
339
+ var getQueryTableResults = function (queryBundleRequest, accessToken) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
340
+ var asyncJobId;
341
+ return (0, tslib_1.__generator)(this, function (_a) {
342
+ switch (_a.label) {
343
+ case 0: return [4 /*yield*/, (0, exports.doPost)("/repo/v1/entity/" + queryBundleRequest.entityId + "/table/query/async/start", queryBundleRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
344
+ case 1:
345
+ asyncJobId = _a.sent();
346
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/entity/" + queryBundleRequest.entityId + "/table/query/async/get/" + asyncJobId.token, accessToken)];
347
+ }
348
+ });
349
+ }); };
289
350
  exports.getQueryTableResults = getQueryTableResults;
290
351
  /**
291
352
  * Run and return results from queryBundleRequest, queryBundle request must be of the
@@ -500,17 +561,26 @@ exports.getFiles = getFiles;
500
561
  */
501
562
  var getBulkFiles = function (bulkFileDownloadRequest, accessToken) {
502
563
  if (accessToken === void 0) { accessToken = undefined; }
503
- return (0, exports.doPost)('/file/v1/file/bulk/async/start', bulkFileDownloadRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
504
- .then(function (asyncJobId) {
505
- var urlRequest = "/file/v1/file/bulk/async/get/" + asyncJobId.token;
506
- return (0, exports.getAsyncResultFromJobId)(urlRequest, accessToken);
507
- })
508
- .catch(function (err) {
509
- console.error('Error on getBulkFiles ', err);
510
- throw err;
564
+ return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
565
+ var asyncJobId;
566
+ return (0, tslib_1.__generator)(this, function (_a) {
567
+ switch (_a.label) {
568
+ case 0: return [4 /*yield*/, (0, exports.doPost)('/file/v1/file/bulk/async/start', bulkFileDownloadRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
569
+ case 1:
570
+ asyncJobId = _a.sent();
571
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/file/v1/file/bulk/async/get/" + asyncJobId.token, accessToken)];
572
+ }
573
+ });
511
574
  });
512
575
  };
513
576
  exports.getBulkFiles = getBulkFiles;
577
+ /**
578
+ * Bundled access to Entity and related data components.
579
+ * An EntityBundle can be used to create, fetch, or update an Entity and associated
580
+ * objects with a single web service request.
581
+ * See SynapseClient.test.js for an example partsMask.
582
+ * https://rest-docs.synapse.org/rest/org/sagebionetworks/repo/model/Entity.html
583
+ */
514
584
  var getEntity = function (accessToken, entityId, versionNumber) {
515
585
  if (accessToken === void 0) { accessToken = undefined; }
516
586
  if (entityId.indexOf('.') > -1) {
@@ -815,11 +885,13 @@ var detectSSOCode = function (registerAccountUrl, onError) {
815
885
  }
816
886
  };
817
887
  if (state) {
818
- (0, exports.oAuthRegisterAccountStep2)(state, provider, code, redirectUrl, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT).then(onSuccess)
888
+ (0, exports.oAuthRegisterAccountStep2)(state, provider, code, redirectUrl, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
889
+ .then(onSuccess)
819
890
  .catch(onFailure);
820
891
  }
821
892
  else {
822
- (0, exports.oAuthSessionRequest)(provider, code, redirectUrl, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT).then(onSuccess)
893
+ (0, exports.oAuthSessionRequest)(provider, code, redirectUrl, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
894
+ .then(onSuccess)
823
895
  .catch(onFailure);
824
896
  }
825
897
  }
@@ -831,7 +903,8 @@ var detectSSOCode = function (registerAccountUrl, onError) {
831
903
  onError(err.reason);
832
904
  }
833
905
  };
834
- (0, exports.bindOAuthProviderToAccount)(provider, code, redirectUrl, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT).then(redirectAfterSuccess_1)
906
+ (0, exports.bindOAuthProviderToAccount)(provider, code, redirectUrl, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
907
+ .then(redirectAfterSuccess_1)
835
908
  .catch(onFailure);
836
909
  }
837
910
  }
@@ -999,36 +1072,22 @@ var uploadFilePart = function (presignedUrl, file, contentType) { return (0, tsl
999
1072
  var startMultipartUpload = function (accessToken, fileName, file, request, fileUploadResolve, fileUploadReject) {
1000
1073
  var url = '/file/v1/file/multipart';
1001
1074
  (0, exports.doPost)(url, request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1002
- .then(function (status) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1003
- var clientSidePartsState, i;
1004
- return (0, tslib_1.__generator)(this, function (_a) {
1005
- switch (_a.label) {
1006
- case 0:
1007
- clientSidePartsState = status.partsState
1008
- .split('')
1009
- .map(function (bit) { return bit === '1'; });
1010
- status.clientSidePartsState = clientSidePartsState;
1011
- i = 0;
1012
- _a.label = 1;
1013
- case 1:
1014
- if (!(i < clientSidePartsState.length)) return [3 /*break*/, 4];
1015
- if (!!clientSidePartsState[i]) return [3 /*break*/, 3];
1016
- // upload this part. note that partNumber is always the index+1
1017
- return [4 /*yield*/, processFilePart(i + 1, status, accessToken, fileName, file, request, fileUploadResolve, fileUploadReject)];
1018
- case 2:
1019
- // upload this part. note that partNumber is always the index+1
1020
- _a.sent();
1021
- _a.label = 3;
1022
- case 3:
1023
- i = i + 1;
1024
- return [3 /*break*/, 1];
1025
- case 4:
1026
- // in case there is no upload work to do!
1027
- (0, exports.checkUploadComplete)(status, fileName, accessToken, fileUploadResolve, fileUploadReject);
1028
- return [2 /*return*/];
1075
+ .then(function (status) {
1076
+ // started the upload
1077
+ // keep track of the part state client-side
1078
+ var clientSidePartsState = status.partsState
1079
+ .split('')
1080
+ .map(function (bit) { return bit === '1'; });
1081
+ status.clientSidePartsState = clientSidePartsState;
1082
+ for (var i = 0; i < clientSidePartsState.length; i = i + 1) {
1083
+ if (!clientSidePartsState[i]) {
1084
+ // upload this part. note that partNumber is always the index+1
1085
+ processFilePart(i + 1, status, accessToken, fileName, file, request, fileUploadResolve, fileUploadReject);
1029
1086
  }
1030
- });
1031
- }); })
1087
+ }
1088
+ // in case there is no upload work to do!
1089
+ (0, exports.checkUploadComplete)(status, fileName, accessToken, fileUploadResolve, fileUploadReject);
1090
+ })
1032
1091
  .catch(function (error) {
1033
1092
  fileUploadReject(error);
1034
1093
  });
@@ -1132,39 +1191,44 @@ exports.addFileToDownloadListV2 = addFileToDownloadListV2;
1132
1191
  /**
1133
1192
  * http://rest-docs.synapse.org/rest/POST/download/list/package/async/start.html
1134
1193
  */
1135
- var createPackageFromDownloadListV2 = function (zipFileName, accessToken, updateParentState) {
1136
- if (accessToken === void 0) { accessToken = undefined; }
1137
- var request = {
1138
- zipFileName: zipFileName,
1139
- includeManifest: true,
1140
- concreteType: 'org.sagebionetworks.repo.model.download.DownloadListPackageRequest',
1141
- };
1142
- return (0, exports.doPost)("/repo/v1/download/list/package/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1143
- .then(function (resp) {
1144
- var requestUrl = "/repo/v1/download/list/package/async/get/" + resp.token;
1145
- return (0, exports.getAsyncResultFromJobId)(requestUrl, accessToken, updateParentState);
1146
- })
1147
- .catch(function (error) {
1148
- throw error;
1194
+ var createPackageFromDownloadListV2 = function (zipFileName, accessToken) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1195
+ var request, asyncJobId;
1196
+ return (0, tslib_1.__generator)(this, function (_a) {
1197
+ switch (_a.label) {
1198
+ case 0:
1199
+ request = {
1200
+ zipFileName: zipFileName,
1201
+ includeManifest: true,
1202
+ concreteType: 'org.sagebionetworks.repo.model.download.DownloadListPackageRequest',
1203
+ };
1204
+ return [4 /*yield*/, (0, exports.doPost)("/repo/v1/download/list/package/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
1205
+ case 1:
1206
+ asyncJobId = _a.sent();
1207
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/download/list/package/async/get/" + asyncJobId.token, accessToken)];
1208
+ }
1149
1209
  });
1150
- };
1210
+ }); };
1151
1211
  exports.createPackageFromDownloadListV2 = createPackageFromDownloadListV2;
1152
1212
  /**
1153
1213
  * http://rest-docs.synapse.org/rest/POST/download/list/package/async/start.html
1154
1214
  */
1155
- var createManifestFromDownloadListV2 = function (accessToken, updateParentState) {
1215
+ var createManifestFromDownloadListV2 = function (accessToken) {
1156
1216
  if (accessToken === void 0) { accessToken = undefined; }
1157
- var request = {
1158
- csvTableDescriptor: {},
1159
- concreteType: 'org.sagebionetworks.repo.model.download.DownloadListManifestRequest',
1160
- };
1161
- return (0, exports.doPost)("/repo/v1/download/list/manifest/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1162
- .then(function (resp) {
1163
- var requestUrl = "/repo/v1/download/list/manifest/async/get/" + resp.token;
1164
- return (0, exports.getAsyncResultFromJobId)(requestUrl, accessToken, updateParentState);
1165
- })
1166
- .catch(function (error) {
1167
- throw error;
1217
+ return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1218
+ var request, asyncJobId;
1219
+ return (0, tslib_1.__generator)(this, function (_a) {
1220
+ switch (_a.label) {
1221
+ case 0:
1222
+ request = {
1223
+ csvTableDescriptor: {},
1224
+ concreteType: 'org.sagebionetworks.repo.model.download.DownloadListManifestRequest',
1225
+ };
1226
+ return [4 /*yield*/, (0, exports.doPost)("/repo/v1/download/list/manifest/async/start", request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
1227
+ case 1:
1228
+ asyncJobId = _a.sent();
1229
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/download/list/manifest/async/get/" + asyncJobId.token, accessToken)];
1230
+ }
1231
+ });
1168
1232
  });
1169
1233
  };
1170
1234
  exports.createManifestFromDownloadListV2 = createManifestFromDownloadListV2;
@@ -1172,17 +1236,17 @@ exports.createManifestFromDownloadListV2 = createManifestFromDownloadListV2;
1172
1236
  * http://rest-docs.synapse.org/rest/POST/download/list/add/async/start.html
1173
1237
  * Start an asynchronous job to add files to a user's download list from either a view query or a folder. Use GET /download/list/add/async/get/{asyncToken} to get both the job status and job results.
1174
1238
  */
1175
- var addFilesToDownloadListV2 = function (request, accessToken, updateParentState) {
1239
+ var addFilesToDownloadListV2 = function (request, accessToken) {
1176
1240
  if (accessToken === void 0) { accessToken = undefined; }
1177
1241
  return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1242
+ var asyncJobId;
1178
1243
  return (0, tslib_1.__generator)(this, function (_a) {
1179
- return [2 /*return*/, (0, exports.doPost)('/repo/v1//download/list/add/async/start', request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1180
- .then(function (resp) {
1181
- return (0, exports.getAsyncResultFromJobId)("/repo/v1/download/list/add/async/get/" + resp.token, accessToken, updateParentState);
1182
- })
1183
- .catch(function (error) {
1184
- throw error;
1185
- })];
1244
+ switch (_a.label) {
1245
+ case 0: return [4 /*yield*/, (0, exports.doPost)('/repo/v1/download/list/add/async/start', request, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
1246
+ case 1:
1247
+ asyncJobId = _a.sent();
1248
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/download/list/add/async/get/" + asyncJobId.token, accessToken)];
1249
+ }
1186
1250
  });
1187
1251
  });
1188
1252
  };
@@ -1626,14 +1690,18 @@ exports.deleteDownloadList = deleteDownloadList;
1626
1690
  * @param {*} endpoint
1627
1691
  * // technically returns a TableUpdateTransactionResponse, but I don't see any reason we need this
1628
1692
  */
1629
- var updateTable = function (tableUpdateRequest, accessToken, updateParentState) {
1693
+ var updateTable = function (tableUpdateRequest, accessToken) {
1630
1694
  if (accessToken === void 0) { accessToken = undefined; }
1631
- return (0, exports.doPost)("/repo/v1/entity/" + tableUpdateRequest.entityId + "/table/transaction/async/start", tableUpdateRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1632
- .then(function (resp) {
1633
- return (0, exports.getAsyncResultFromJobId)("/repo/v1/entity/" + tableUpdateRequest.entityId + "/table/transaction/async/get/" + resp.token, accessToken, updateParentState);
1634
- })
1635
- .catch(function (error) {
1636
- throw error;
1695
+ return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1696
+ var asyncJobId;
1697
+ return (0, tslib_1.__generator)(this, function (_a) {
1698
+ switch (_a.label) {
1699
+ case 0: return [4 /*yield*/, (0, exports.doPost)("/repo/v1/entity/" + tableUpdateRequest.entityId + "/table/transaction/async/start", tableUpdateRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
1700
+ case 1:
1701
+ asyncJobId = _a.sent();
1702
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/entity/" + tableUpdateRequest.entityId + "/table/transaction/async/get/" + asyncJobId.token, accessToken)];
1703
+ }
1704
+ });
1637
1705
  });
1638
1706
  };
1639
1707
  exports.updateTable = updateTable;
@@ -1685,23 +1753,25 @@ var searchEntities = function (query, accessToken) {
1685
1753
  return (0, exports.doPost)('/repo/v1/search', query, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT);
1686
1754
  };
1687
1755
  exports.searchEntities = searchEntities;
1688
- var getDownloadListJobResponse = function (accessToken, queryRequestDetails) {
1689
- var downloadListQueryRequest = {
1690
- concreteType: 'org.sagebionetworks.repo.model.download.DownloadListQueryRequest',
1691
- requestDetails: queryRequestDetails,
1692
- };
1693
- return (0, exports.doPost)('/repo/v1/download/list/query/async/start', downloadListQueryRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1694
- .then(function (asyncJobId) {
1695
- var urlRequest = "/repo/v1/download/list/query/async/get/" + asyncJobId.token;
1696
- return (0, exports.getAsyncResultFromJobId)(urlRequest, accessToken).then(function (queryResponse) {
1697
- return queryResponse.responseDetails;
1698
- });
1699
- })
1700
- .catch(function (err) {
1701
- console.error('Error on getDownloadListV2 ', err);
1702
- throw err;
1756
+ var getDownloadListJobResponse = function (accessToken, queryRequestDetails) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1757
+ var downloadListQueryRequest, asyncJobId, response;
1758
+ return (0, tslib_1.__generator)(this, function (_a) {
1759
+ switch (_a.label) {
1760
+ case 0:
1761
+ downloadListQueryRequest = {
1762
+ concreteType: 'org.sagebionetworks.repo.model.download.DownloadListQueryRequest',
1763
+ requestDetails: queryRequestDetails,
1764
+ };
1765
+ return [4 /*yield*/, (0, exports.doPost)('/repo/v1/download/list/query/async/start', downloadListQueryRequest, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
1766
+ case 1:
1767
+ asyncJobId = _a.sent();
1768
+ return [4 /*yield*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, "/repo/v1/download/list/query/async/get/" + asyncJobId.token, accessToken)];
1769
+ case 2:
1770
+ response = _a.sent();
1771
+ return [2 /*return*/, response.responseDetails];
1772
+ }
1703
1773
  });
1704
- };
1774
+ }); };
1705
1775
  /**
1706
1776
  * Clear all files from the user's Download List v2.
1707
1777
  * http://rest-docs.synapse.org/rest/DELETE/download/list.html
@@ -1821,18 +1891,17 @@ exports.getSchema = getSchema;
1821
1891
  * @returns
1822
1892
  */
1823
1893
  var getValidationSchema = function (schema$id, accessToken) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
1894
+ var asyncJobId;
1824
1895
  return (0, tslib_1.__generator)(this, function (_a) {
1825
- return [2 /*return*/, (0, exports.doPost)(APIConstants_1.SCHEMA_VALIDATION_START, {
1826
- concreteType: 'org.sagebionetworks.repo.model.schema.GetValidationSchemaRequest',
1827
- $id: schema$id,
1828
- }, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)
1829
- .then(function (asyncJobId) {
1830
- return (0, exports.getAsyncResultFromJobId)((0, APIConstants_1.SCHEMA_VALIDATION_GET)(asyncJobId.token), accessToken);
1831
- })
1832
- .catch(function (err) {
1833
- console.error('Error on getValidationSchema ', err);
1834
- throw err;
1835
- })];
1896
+ switch (_a.label) {
1897
+ case 0: return [4 /*yield*/, (0, exports.doPost)(APIConstants_1.SCHEMA_VALIDATION_START, {
1898
+ concreteType: 'org.sagebionetworks.repo.model.schema.GetValidationSchemaRequest',
1899
+ $id: schema$id,
1900
+ }, accessToken, undefined, getEndpoint_1.BackendDestinationEnum.REPO_ENDPOINT)];
1901
+ case 1:
1902
+ asyncJobId = _a.sent();
1903
+ return [2 /*return*/, (0, exports.getAsyncResultBodyFromJobId)(asyncJobId.token, (0, APIConstants_1.SCHEMA_VALIDATION_GET)(asyncJobId.token), accessToken)];
1904
+ }
1836
1905
  });
1837
1906
  }); };
1838
1907
  exports.getValidationSchema = getValidationSchema;