openvsx-webui-test 0.19.0-dev.2 → 0.20.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/banner.js +1 -2
- package/lib/components/banner.js.map +1 -1
- package/lib/components/copy-to-clipboard.js +1 -2
- package/lib/components/copy-to-clipboard.js.map +1 -1
- package/lib/components/delayed-load-indicator.js +2 -4
- package/lib/components/delayed-load-indicator.js.map +1 -1
- package/lib/components/error-dialog.d.ts.map +1 -1
- package/lib/components/error-dialog.js +5 -3
- package/lib/components/error-dialog.js.map +1 -1
- package/lib/components/rate-limiting/customer/general-details.d.ts +20 -0
- package/lib/components/rate-limiting/customer/general-details.d.ts.map +1 -0
- package/lib/components/rate-limiting/customer/general-details.js +8 -0
- package/lib/components/rate-limiting/customer/general-details.js.map +1 -0
- package/lib/components/rate-limiting/customer/index.d.ts +17 -0
- package/lib/components/rate-limiting/customer/index.d.ts.map +1 -0
- package/lib/components/rate-limiting/customer/index.js +15 -0
- package/lib/components/rate-limiting/customer/index.js.map +1 -0
- package/lib/components/rate-limiting/customer/usage-stats.d.ts +24 -0
- package/lib/components/rate-limiting/customer/usage-stats.d.ts.map +1 -0
- package/lib/components/rate-limiting/customer/usage-stats.js +6 -0
- package/lib/components/rate-limiting/customer/usage-stats.js.map +1 -0
- package/lib/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.d.ts +5 -2
- package/lib/components/rate-limiting/usage-stats/usage-stats-chart.d.ts.map +1 -0
- package/lib/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.js +25 -18
- package/lib/components/rate-limiting/usage-stats/usage-stats-chart.js.map +1 -0
- package/lib/components/rate-limiting/usage-stats/usage-stats-utils.d.ts +15 -0
- package/lib/components/rate-limiting/usage-stats/usage-stats-utils.d.ts.map +1 -0
- package/{src/pages/admin-dashboard/usage-stats/usage-stats-utils.ts → lib/components/rate-limiting/usage-stats/usage-stats-utils.js} +4 -3
- package/lib/components/rate-limiting/usage-stats/usage-stats-utils.js.map +1 -0
- package/lib/components/rate-limiting/usage-stats/use-usage-stats.d.ts +22 -0
- package/lib/components/rate-limiting/usage-stats/use-usage-stats.d.ts.map +1 -0
- package/lib/components/rate-limiting/usage-stats/use-usage-stats.js +58 -0
- package/lib/components/rate-limiting/usage-stats/use-usage-stats.js.map +1 -0
- package/lib/components/scan-admin/common/conditional-tooltip.js +4 -16
- package/lib/components/scan-admin/common/conditional-tooltip.js.map +1 -1
- package/lib/components/scan-admin/common/file-table.js +24 -13
- package/lib/components/scan-admin/common/file-table.js.map +1 -1
- package/lib/components/scan-admin/dialogs/quarantine-dialog.js +4 -8
- package/lib/components/scan-admin/dialogs/quarantine-dialog.js.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-content.js +2 -2
- package/lib/components/scan-admin/scan-card/scan-card-content.js.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js +21 -16
- package/lib/components/scan-admin/scan-card/scan-card-expand-strip-badges.js.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js +1 -2
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-header.js +10 -5
- package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
- package/lib/components/scan-admin/scan-card/utils.js +1 -2
- package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js +4 -6
- package/lib/components/scan-admin/tab-contents/quarantined-tab-content.js.map +1 -1
- package/lib/components/sidepanel/drawer-header.d.ts +14 -0
- package/lib/components/sidepanel/drawer-header.d.ts.map +1 -0
- package/lib/components/sidepanel/drawer-header.js +22 -0
- package/lib/components/sidepanel/drawer-header.js.map +1 -0
- package/lib/components/sidepanel/navigation-item.d.ts.map +1 -1
- package/lib/components/sidepanel/navigation-item.js +3 -3
- package/lib/components/sidepanel/navigation-item.js.map +1 -1
- package/lib/components/sidepanel/sidepanel.d.ts +7 -1
- package/lib/components/sidepanel/sidepanel.d.ts.map +1 -1
- package/lib/components/sidepanel/sidepanel.js +12 -13
- package/lib/components/sidepanel/sidepanel.js.map +1 -1
- package/lib/components/text-divider.js +1 -2
- package/lib/components/text-divider.js.map +1 -1
- package/lib/components/timestamp.d.ts +0 -1
- package/lib/components/timestamp.d.ts.map +1 -1
- package/lib/components/timestamp.js +2 -4
- package/lib/components/timestamp.js.map +1 -1
- package/lib/context/scan-admin/scan-api-actions.js +7 -16
- package/lib/context/scan-admin/scan-api-actions.js.map +1 -1
- package/lib/context/scan-admin/scan-api-effects.js +77 -93
- package/lib/context/scan-admin/scan-api-effects.js.map +1 -1
- package/lib/context/scan-admin/scan-context.d.ts.map +1 -1
- package/lib/context/scan-admin/scan-context.js +1 -0
- package/lib/context/scan-admin/scan-context.js.map +1 -1
- package/lib/context/scan-admin/scan-reducer.js +134 -53
- package/lib/context/scan-admin/scan-reducer.js.map +1 -1
- package/lib/default/default-app.d.ts +1 -1
- package/lib/default/default-app.d.ts.map +1 -1
- package/lib/default/default-app.js +11 -22
- package/lib/default/default-app.js.map +1 -1
- package/lib/default/menu-content.d.ts.map +1 -1
- package/lib/default/menu-content.js +7 -3
- package/lib/default/menu-content.js.map +1 -1
- package/lib/default/page-settings.js +13 -18
- package/lib/default/page-settings.js.map +1 -1
- package/lib/extension-registry-service.d.ts +11 -1
- package/lib/extension-registry-service.d.ts.map +1 -1
- package/lib/extension-registry-service.js +618 -629
- package/lib/extension-registry-service.js.map +1 -1
- package/lib/extension-registry-types.d.ts +7 -0
- package/lib/extension-registry-types.d.ts.map +1 -1
- package/lib/hooks/scan-admin/use-auto-rejected-tab.js +5 -7
- package/lib/hooks/scan-admin/use-auto-rejected-tab.js.map +1 -1
- package/lib/hooks/scan-admin/use-quarantined-tab.js +5 -7
- package/lib/hooks/scan-admin/use-quarantined-tab.js.map +1 -1
- package/lib/main.d.ts.map +1 -1
- package/lib/main.js +8 -16
- package/lib/main.js.map +1 -1
- package/lib/other-pages.d.ts +12 -0
- package/lib/other-pages.d.ts.map +1 -1
- package/lib/other-pages.js +25 -12
- package/lib/other-pages.js.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts +0 -12
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +136 -49
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/admin-routes.d.ts +25 -0
- package/lib/pages/admin-dashboard/admin-routes.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/admin-routes.js +27 -0
- package/lib/pages/admin-dashboard/admin-routes.js.map +1 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts +1 -9
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js +17 -15
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js.map +1 -1
- package/lib/pages/admin-dashboard/components/data-grid-filter.d.ts +22 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter.js +13 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter.js.map +1 -0
- package/lib/pages/admin-dashboard/components/index.d.ts +2 -1
- package/lib/pages/admin-dashboard/components/index.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/components/index.js +2 -1
- package/lib/pages/admin-dashboard/components/index.js.map +1 -1
- package/lib/pages/admin-dashboard/{usage-stats/usage-stats-utils.d.ts → customers/customer-details.d.ts} +3 -2
- package/lib/pages/admin-dashboard/customers/customer-details.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/customers/customer-details.js +77 -0
- package/lib/pages/admin-dashboard/customers/customer-details.js.map +1 -0
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts +1 -1
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.js +33 -34
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-member-list.d.ts +19 -0
- package/lib/pages/admin-dashboard/customers/customer-member-list.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/customers/customer-member-list.js +88 -0
- package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -0
- package/lib/pages/admin-dashboard/customers/customers.d.ts +1 -1
- package/lib/pages/admin-dashboard/customers/customers.js +20 -29
- package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js +4 -14
- package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/extension-admin.js +7 -16
- package/lib/pages/admin-dashboard/extension-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/extension-remove-dialog.js +3 -12
- package/lib/pages/admin-dashboard/extension-remove-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/extension-version-container.js +3 -5
- package/lib/pages/admin-dashboard/extension-version-container.js.map +1 -1
- package/lib/pages/admin-dashboard/logs/logs.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/logs/logs.js +6 -24
- package/lib/pages/admin-dashboard/logs/logs.js.map +1 -1
- package/lib/pages/admin-dashboard/namespace-admin.js +7 -16
- package/lib/pages/admin-dashboard/namespace-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/namespace-change-dialog.js +3 -12
- package/lib/pages/admin-dashboard/namespace-change-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/namespace-input.js +1 -1
- package/lib/pages/admin-dashboard/namespace-input.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js +28 -22
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js +5 -15
- package/lib/pages/admin-dashboard/publisher-revoke-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js +3 -12
- package/lib/pages/admin-dashboard/publisher-revoke-tokens-button.js.map +1 -1
- package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js +4 -13
- package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js +34 -23
- package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js.map +1 -1
- package/lib/pages/admin-dashboard/tiers/tiers.js +12 -21
- package/lib/pages/admin-dashboard/tiers/tiers.js.map +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js +3 -14
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js.map +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +11 -45
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
- package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.d.ts +22 -0
- package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.js +58 -0
- package/lib/pages/admin-dashboard/usage-stats/use-usage-stats.js.map +1 -0
- package/lib/pages/admin-dashboard/welcome.js +1 -1
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-changes.js +3 -12
- package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.js +6 -16
- package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.js +12 -24
- package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-routes.d.ts +32 -0
- package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -0
- package/lib/pages/extension-detail/extension-detail-routes.js +35 -0
- package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail.d.ts +0 -19
- package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail.js +28 -50
- package/lib/pages/extension-detail/extension-detail.js.map +1 -1
- package/lib/pages/extension-detail/extension-rating-stars.js +1 -2
- package/lib/pages/extension-detail/extension-rating-stars.js.map +1 -1
- package/lib/pages/extension-detail/extension-review-dialog.js +4 -14
- package/lib/pages/extension-detail/extension-review-dialog.js.map +1 -1
- package/lib/pages/extension-list/extension-list-container.d.ts +0 -3
- package/lib/pages/extension-list/extension-list-container.d.ts.map +1 -1
- package/lib/pages/extension-list/extension-list-container.js +5 -10
- package/lib/pages/extension-list/extension-list-container.js.map +1 -1
- package/lib/pages/extension-list/extension-list-header.js +3 -6
- package/lib/pages/extension-list/extension-list-header.js.map +1 -1
- package/lib/pages/extension-list/extension-list-item.js +7 -17
- package/lib/pages/extension-list/extension-list-item.js.map +1 -1
- package/lib/pages/extension-list/extension-list-routes.d.ts +16 -0
- package/lib/pages/extension-list/extension-list-routes.d.ts.map +1 -0
- package/lib/pages/extension-list/extension-list-routes.js +18 -0
- package/lib/pages/extension-list/extension-list-routes.js.map +1 -0
- package/lib/pages/extension-list/extension-list-searchfield.js +4 -7
- package/lib/pages/extension-list/extension-list-searchfield.js.map +1 -1
- package/lib/pages/extension-list/extension-list.js +8 -19
- package/lib/pages/extension-list/extension-list.js.map +1 -1
- package/lib/pages/namespace-detail/namespace-detail-routes.d.ts +20 -0
- package/lib/pages/namespace-detail/namespace-detail-routes.d.ts.map +1 -0
- package/lib/pages/namespace-detail/namespace-detail-routes.js +23 -0
- package/lib/pages/namespace-detail/namespace-detail-routes.js.map +1 -0
- package/lib/pages/namespace-detail/namespace-detail.d.ts +0 -7
- package/lib/pages/namespace-detail/namespace-detail.d.ts.map +1 -1
- package/lib/pages/namespace-detail/namespace-detail.js +4 -24
- package/lib/pages/namespace-detail/namespace-detail.js.map +1 -1
- package/lib/pages/user/add-namespace-member-dialog.d.ts.map +1 -1
- package/lib/pages/user/add-namespace-member-dialog.js +8 -67
- package/lib/pages/user/add-namespace-member-dialog.js.map +1 -1
- package/lib/pages/user/add-user-dialog.d.ts +25 -0
- package/lib/pages/user/add-user-dialog.d.ts.map +1 -0
- package/lib/pages/user/add-user-dialog.js +66 -0
- package/lib/pages/user/add-user-dialog.js.map +1 -0
- package/lib/pages/user/avatar.js +3 -3
- package/lib/pages/user/avatar.js.map +1 -1
- package/lib/pages/user/create-namespace-dialog.js +3 -12
- package/lib/pages/user/create-namespace-dialog.js.map +1 -1
- package/lib/pages/user/generate-token-dialog.js +3 -12
- package/lib/pages/user/generate-token-dialog.js.map +1 -1
- package/lib/pages/user/logout.js +3 -12
- package/lib/pages/user/logout.js.map +1 -1
- package/lib/pages/user/publish-extension-dialog.js +12 -21
- package/lib/pages/user/publish-extension-dialog.js.map +1 -1
- package/lib/pages/user/user-namespace-details.js +29 -42
- package/lib/pages/user/user-namespace-details.js.map +1 -1
- package/lib/pages/user/user-namespace-extension-list-item.js +6 -8
- package/lib/pages/user/user-namespace-extension-list-item.js.map +1 -1
- package/lib/pages/user/user-namespace-extension-list.js +6 -15
- package/lib/pages/user/user-namespace-extension-list.js.map +1 -1
- package/lib/pages/user/user-namespace-member-component.js +1 -1
- package/lib/pages/user/user-namespace-member-component.js.map +1 -1
- package/lib/pages/user/user-namespace-member-list.js +9 -18
- package/lib/pages/user/user-namespace-member-list.js.map +1 -1
- package/lib/pages/user/user-publisher-agreement.js +8 -18
- package/lib/pages/user/user-publisher-agreement.js.map +1 -1
- package/lib/pages/user/user-setting-tabs.d.ts.map +1 -1
- package/lib/pages/user/user-setting-tabs.js +2 -2
- package/lib/pages/user/user-setting-tabs.js.map +1 -1
- package/lib/pages/user/user-settings-customer-detail.d.ts +19 -0
- package/lib/pages/user/user-settings-customer-detail.d.ts.map +1 -0
- package/lib/pages/user/user-settings-customer-detail.js +9 -0
- package/lib/pages/user/user-settings-customer-detail.js.map +1 -0
- package/lib/pages/user/user-settings-customers.d.ts +15 -0
- package/lib/pages/user/user-settings-customers.d.ts.map +1 -0
- package/lib/pages/user/user-settings-customers.js +66 -0
- package/lib/pages/user/user-settings-customers.js.map +1 -0
- package/lib/pages/user/user-settings-delete-extension.js +8 -17
- package/lib/pages/user/user-settings-delete-extension.js.map +1 -1
- package/lib/pages/user/user-settings-extensions.js +3 -12
- package/lib/pages/user/user-settings-extensions.js.map +1 -1
- package/lib/pages/user/user-settings-namespace-detail.d.ts.map +1 -1
- package/lib/pages/user/user-settings-namespace-detail.js +4 -12
- package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
- package/lib/pages/user/user-settings-namespaces.js +6 -15
- package/lib/pages/user/user-settings-namespaces.js.map +1 -1
- package/lib/pages/user/user-settings-profile.js +1 -2
- package/lib/pages/user/user-settings-profile.js.map +1 -1
- package/lib/pages/user/user-settings-routes.d.ts +23 -0
- package/lib/pages/user/user-settings-routes.d.ts.map +1 -0
- package/lib/pages/user/user-settings-routes.js +25 -0
- package/lib/pages/user/user-settings-routes.js.map +1 -0
- package/lib/pages/user/user-settings-tokens.d.ts +0 -7
- package/lib/pages/user/user-settings-tokens.d.ts.map +1 -1
- package/lib/pages/user/user-settings-tokens.js +14 -24
- package/lib/pages/user/user-settings-tokens.js.map +1 -1
- package/lib/pages/user/user-settings.d.ts +0 -9
- package/lib/pages/user/user-settings.d.ts.map +1 -1
- package/lib/pages/user/user-settings.js +4 -12
- package/lib/pages/user/user-settings.js.map +1 -1
- package/lib/server-request.js +64 -76
- package/lib/server-request.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +7 -14
- package/lib/utils.js.map +1 -1
- package/package.json +4 -2
- package/src/components/error-dialog.tsx +5 -3
- package/src/components/rate-limiting/customer/general-details.tsx +106 -0
- package/src/components/rate-limiting/customer/index.ts +18 -0
- package/src/components/rate-limiting/customer/usage-stats.tsx +50 -0
- package/src/{pages/admin-dashboard → components/rate-limiting}/usage-stats/usage-stats-chart.tsx +46 -26
- package/{lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js → src/components/rate-limiting/usage-stats/usage-stats-utils.ts} +4 -2
- package/src/components/rate-limiting/usage-stats/use-usage-stats.ts +70 -0
- package/src/components/scan-admin/scan-card/scan-card-header.tsx +2 -2
- package/src/components/sidepanel/drawer-header.tsx +23 -0
- package/src/components/sidepanel/navigation-item.tsx +3 -2
- package/src/components/sidepanel/sidepanel.tsx +29 -17
- package/src/components/timestamp.tsx +1 -3
- package/src/context/scan-admin/scan-context.tsx +1 -0
- package/src/default/default-app.tsx +1 -1
- package/src/default/menu-content.tsx +6 -2
- package/src/default/page-settings.tsx +1 -1
- package/src/extension-registry-service.ts +105 -26
- package/src/extension-registry-types.ts +9 -0
- package/src/main.tsx +2 -1
- package/src/other-pages.tsx +21 -4
- package/src/pages/admin-dashboard/admin-dashboard.tsx +260 -83
- package/src/pages/admin-dashboard/admin-routes.ts +27 -0
- package/src/pages/admin-dashboard/components/data-grid-filter-operators.tsx +1 -31
- package/src/pages/admin-dashboard/components/data-grid-filter.tsx +45 -0
- package/src/pages/admin-dashboard/components/index.ts +1 -1
- package/src/pages/admin-dashboard/customers/customer-details.tsx +129 -0
- package/src/pages/admin-dashboard/customers/customer-form-dialog.tsx +3 -4
- package/src/pages/admin-dashboard/customers/customer-member-list.tsx +174 -0
- package/src/pages/admin-dashboard/customers/customers.tsx +8 -8
- package/src/pages/admin-dashboard/logs/logs.tsx +1 -10
- package/src/pages/admin-dashboard/publisher-admin.tsx +29 -11
- package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +10 -39
- package/src/pages/admin-dashboard/usage-stats/use-usage-stats.ts +70 -0
- package/src/pages/admin-dashboard/welcome.tsx +1 -1
- package/src/pages/extension-detail/extension-detail-overview.tsx +2 -2
- package/src/pages/extension-detail/extension-detail-routes.ts +35 -0
- package/src/pages/extension-detail/extension-detail.tsx +3 -23
- package/src/pages/extension-list/extension-list-container.tsx +1 -5
- package/src/pages/extension-list/extension-list-item.tsx +1 -1
- package/src/pages/extension-list/extension-list-routes.ts +18 -0
- package/src/pages/namespace-detail/namespace-detail-routes.ts +23 -0
- package/src/pages/namespace-detail/namespace-detail.tsx +0 -10
- package/src/pages/user/add-namespace-member-dialog.tsx +17 -116
- package/src/pages/user/add-user-dialog.tsx +141 -0
- package/src/pages/user/avatar.tsx +2 -2
- package/src/pages/user/user-namespace-extension-list-item.tsx +2 -2
- package/src/pages/user/user-setting-tabs.tsx +2 -1
- package/src/pages/user/user-settings-customer-detail.tsx +39 -0
- package/src/pages/user/user-settings-customers.tsx +120 -0
- package/src/pages/user/user-settings-delete-extension.tsx +1 -1
- package/src/pages/user/user-settings-namespace-detail.tsx +3 -1
- package/src/pages/user/user-settings-routes.ts +25 -0
- package/src/pages/user/user-settings-tokens.tsx +2 -9
- package/src/pages/user/user-settings.tsx +4 -12
- package/src/utils.ts +5 -9
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts.map +0 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js.map +0 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts.map +0 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js.map +0 -1
|
@@ -7,15 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
11
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
12
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
13
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
14
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
15
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
16
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
10
|
import { isError, } from './extension-registry-types';
|
|
20
11
|
import { createAbsoluteURL, addQuery } from './utils';
|
|
21
12
|
import { sendRequest } from './server-request';
|
|
@@ -24,7 +15,7 @@ export class ExtensionRegistryService {
|
|
|
24
15
|
this.serverUrl = serverUrl;
|
|
25
16
|
this.admin = new AdminConstructor(this);
|
|
26
17
|
}
|
|
27
|
-
getLoginProviders(abortController) {
|
|
18
|
+
async getLoginProviders(abortController) {
|
|
28
19
|
const endpoint = createAbsoluteURL([this.serverUrl, 'login-providers']);
|
|
29
20
|
return sendRequest({ abortController, endpoint });
|
|
30
21
|
}
|
|
@@ -41,52 +32,48 @@ export class ExtensionRegistryService {
|
|
|
41
32
|
}
|
|
42
33
|
return createAbsoluteURL(arr);
|
|
43
34
|
}
|
|
44
|
-
getNamespaceDetails(abortController, name) {
|
|
35
|
+
async getNamespaceDetails(abortController, name) {
|
|
45
36
|
const endpoint = createAbsoluteURL([this.serverUrl, 'api', name, 'details']);
|
|
46
37
|
return sendRequest({ abortController, endpoint });
|
|
47
38
|
}
|
|
48
|
-
setNamespaceDetails(abortController, endpoint, details) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
search(abortController, filter) {
|
|
39
|
+
async setNamespaceDetails(abortController, endpoint, details) {
|
|
40
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
41
|
+
const headers = {
|
|
42
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
43
|
+
};
|
|
44
|
+
if (!isError(csrfResponse)) {
|
|
45
|
+
const csrfToken = csrfResponse;
|
|
46
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
47
|
+
}
|
|
48
|
+
return sendRequest({
|
|
49
|
+
abortController,
|
|
50
|
+
method: 'POST',
|
|
51
|
+
payload: details,
|
|
52
|
+
credentials: true,
|
|
53
|
+
endpoint,
|
|
54
|
+
headers
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async setNamespaceLogo(abortController, endpoint, logoFile, logoName) {
|
|
58
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
59
|
+
const headers = {};
|
|
60
|
+
if (!isError(csrfResponse)) {
|
|
61
|
+
const csrfToken = csrfResponse;
|
|
62
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
63
|
+
}
|
|
64
|
+
const form = new FormData();
|
|
65
|
+
form.append('file', logoFile, logoName);
|
|
66
|
+
endpoint = createAbsoluteURL([endpoint, 'logo']);
|
|
67
|
+
return sendRequest({
|
|
68
|
+
abortController,
|
|
69
|
+
method: 'POST',
|
|
70
|
+
payload: form,
|
|
71
|
+
credentials: true,
|
|
72
|
+
endpoint,
|
|
73
|
+
headers
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async search(abortController, filter) {
|
|
90
77
|
const query = [];
|
|
91
78
|
if (filter) {
|
|
92
79
|
if (filter.query)
|
|
@@ -105,10 +92,10 @@ export class ExtensionRegistryService {
|
|
|
105
92
|
const endpoint = createAbsoluteURL([this.serverUrl, 'api', '-', 'search'], query);
|
|
106
93
|
return sendRequest({ abortController, endpoint });
|
|
107
94
|
}
|
|
108
|
-
getExtensionDetail(abortController, extensionUrl) {
|
|
95
|
+
async getExtensionDetail(abortController, extensionUrl) {
|
|
109
96
|
return sendRequest({ abortController, endpoint: extensionUrl });
|
|
110
97
|
}
|
|
111
|
-
getExtensionReadme(abortController, extension) {
|
|
98
|
+
async getExtensionReadme(abortController, extension) {
|
|
112
99
|
return sendRequest({
|
|
113
100
|
abortController,
|
|
114
101
|
endpoint: extension.files.readme,
|
|
@@ -116,7 +103,7 @@ export class ExtensionRegistryService {
|
|
|
116
103
|
followRedirect: true
|
|
117
104
|
});
|
|
118
105
|
}
|
|
119
|
-
getExtensionChangelog(abortController, extension) {
|
|
106
|
+
async getExtensionChangelog(abortController, extension) {
|
|
120
107
|
return sendRequest({
|
|
121
108
|
abortController,
|
|
122
109
|
endpoint: extension.files.changelog,
|
|
@@ -124,7 +111,7 @@ export class ExtensionRegistryService {
|
|
|
124
111
|
followRedirect: true
|
|
125
112
|
});
|
|
126
113
|
}
|
|
127
|
-
getExtensionIcon(abortController, extension) {
|
|
114
|
+
async getExtensionIcon(abortController, extension) {
|
|
128
115
|
if (!extension.files.icon) {
|
|
129
116
|
return Promise.resolve(undefined);
|
|
130
117
|
}
|
|
@@ -157,204 +144,204 @@ export class ExtensionRegistryService {
|
|
|
157
144
|
'Notebooks'
|
|
158
145
|
];
|
|
159
146
|
}
|
|
160
|
-
getExtensionReviews(abortController, extension) {
|
|
147
|
+
async getExtensionReviews(abortController, extension) {
|
|
161
148
|
return sendRequest({ abortController, endpoint: extension.reviewsUrl });
|
|
162
149
|
}
|
|
163
|
-
postReview(abortController, review, postReviewUrl) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
headers
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
deleteReview(abortController, deleteReviewUrl) {
|
|
184
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
185
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
186
|
-
const headers = {};
|
|
187
|
-
if (!isError(csrfResponse)) {
|
|
188
|
-
const csrfToken = csrfResponse;
|
|
189
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
190
|
-
}
|
|
191
|
-
return sendRequest({
|
|
192
|
-
abortController,
|
|
193
|
-
method: 'POST',
|
|
194
|
-
credentials: true,
|
|
195
|
-
endpoint: deleteReviewUrl,
|
|
196
|
-
headers
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
deleteUserReview(abortController, extension, user) {
|
|
201
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
202
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
203
|
-
const headers = {};
|
|
204
|
-
if (!isError(csrfResponse)) {
|
|
205
|
-
const csrfToken = csrfResponse;
|
|
206
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
207
|
-
}
|
|
208
|
-
return sendRequest({
|
|
209
|
-
abortController,
|
|
210
|
-
method: 'POST',
|
|
211
|
-
credentials: true,
|
|
212
|
-
endpoint: createAbsoluteURL([this.serverUrl, 'admin', 'extension', extension.namespace, extension.name, 'review', user.provider || 'github', user.loginName, 'delete']),
|
|
213
|
-
headers
|
|
214
|
-
});
|
|
150
|
+
async postReview(abortController, review, postReviewUrl) {
|
|
151
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
152
|
+
const headers = {
|
|
153
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
154
|
+
};
|
|
155
|
+
if (!isError(csrfResponse)) {
|
|
156
|
+
const csrfToken = csrfResponse;
|
|
157
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
158
|
+
}
|
|
159
|
+
return sendRequest({
|
|
160
|
+
abortController,
|
|
161
|
+
method: 'POST',
|
|
162
|
+
payload: review,
|
|
163
|
+
credentials: true,
|
|
164
|
+
endpoint: postReviewUrl,
|
|
165
|
+
headers
|
|
215
166
|
});
|
|
216
167
|
}
|
|
217
|
-
|
|
168
|
+
async deleteReview(abortController, deleteReviewUrl) {
|
|
169
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
170
|
+
const headers = {};
|
|
171
|
+
if (!isError(csrfResponse)) {
|
|
172
|
+
const csrfToken = csrfResponse;
|
|
173
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
174
|
+
}
|
|
175
|
+
return sendRequest({
|
|
176
|
+
abortController,
|
|
177
|
+
method: 'POST',
|
|
178
|
+
credentials: true,
|
|
179
|
+
endpoint: deleteReviewUrl,
|
|
180
|
+
headers
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
async deleteUserReview(abortController, extension, user) {
|
|
184
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
185
|
+
const headers = {};
|
|
186
|
+
if (!isError(csrfResponse)) {
|
|
187
|
+
const csrfToken = csrfResponse;
|
|
188
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
189
|
+
}
|
|
190
|
+
return sendRequest({
|
|
191
|
+
abortController,
|
|
192
|
+
method: 'POST',
|
|
193
|
+
credentials: true,
|
|
194
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'admin', 'extension', extension.namespace, extension.name, 'review', user.provider || 'github', user.loginName, 'delete']),
|
|
195
|
+
headers
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
async getUser(abortController) {
|
|
218
199
|
return sendRequest({
|
|
219
200
|
abortController,
|
|
220
201
|
endpoint: createAbsoluteURL([this.serverUrl, 'user']),
|
|
221
202
|
credentials: true
|
|
222
203
|
});
|
|
223
204
|
}
|
|
224
|
-
getUserAuthError(abortController) {
|
|
205
|
+
async getUserAuthError(abortController) {
|
|
225
206
|
return sendRequest({
|
|
226
207
|
abortController,
|
|
227
208
|
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'auth-error']),
|
|
228
209
|
credentials: true
|
|
229
210
|
});
|
|
230
211
|
}
|
|
231
|
-
getUserByName(abortController, name) {
|
|
212
|
+
async getUserByName(abortController, name) {
|
|
232
213
|
return sendRequest({
|
|
233
214
|
abortController,
|
|
234
215
|
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'search', name]),
|
|
235
216
|
credentials: true
|
|
236
217
|
});
|
|
237
218
|
}
|
|
238
|
-
getAccessTokens(abortController, user) {
|
|
219
|
+
async getAccessTokens(abortController, user) {
|
|
239
220
|
return sendRequest({
|
|
240
221
|
abortController,
|
|
241
222
|
credentials: true,
|
|
242
223
|
endpoint: user.tokensUrl
|
|
243
224
|
});
|
|
244
225
|
}
|
|
245
|
-
createAccessToken(abortController, user, description) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
headers
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
deleteAccessToken(abortController, token) {
|
|
264
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
265
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
266
|
-
const headers = {};
|
|
267
|
-
if (!isError(csrfResponse)) {
|
|
268
|
-
const csrfToken = csrfResponse;
|
|
269
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
270
|
-
}
|
|
271
|
-
return sendRequest({
|
|
272
|
-
abortController,
|
|
273
|
-
method: 'POST',
|
|
274
|
-
credentials: true,
|
|
275
|
-
endpoint: token.deleteTokenUrl,
|
|
276
|
-
headers
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
deleteAllAccessTokens(abortController, tokens) {
|
|
281
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
282
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
283
|
-
const headers = {};
|
|
284
|
-
if (!isError(csrfResponse)) {
|
|
285
|
-
const csrfToken = csrfResponse;
|
|
286
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
287
|
-
}
|
|
288
|
-
return yield Promise.all(tokens.map(token => sendRequest({
|
|
289
|
-
abortController,
|
|
290
|
-
method: 'POST',
|
|
291
|
-
credentials: true,
|
|
292
|
-
endpoint: token.deleteTokenUrl,
|
|
293
|
-
headers
|
|
294
|
-
})));
|
|
226
|
+
async createAccessToken(abortController, user, description) {
|
|
227
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
228
|
+
const headers = {};
|
|
229
|
+
if (!isError(csrfResponse)) {
|
|
230
|
+
const csrfToken = csrfResponse;
|
|
231
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
232
|
+
}
|
|
233
|
+
const endpoint = addQuery(user.createTokenUrl, [{ key: 'description', value: description }]);
|
|
234
|
+
return sendRequest({
|
|
235
|
+
abortController,
|
|
236
|
+
method: 'POST',
|
|
237
|
+
credentials: true,
|
|
238
|
+
endpoint,
|
|
239
|
+
headers
|
|
295
240
|
});
|
|
296
241
|
}
|
|
297
|
-
|
|
242
|
+
async deleteAccessToken(abortController, token) {
|
|
243
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
244
|
+
const headers = {};
|
|
245
|
+
if (!isError(csrfResponse)) {
|
|
246
|
+
const csrfToken = csrfResponse;
|
|
247
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
248
|
+
}
|
|
249
|
+
return sendRequest({
|
|
250
|
+
abortController,
|
|
251
|
+
method: 'POST',
|
|
252
|
+
credentials: true,
|
|
253
|
+
endpoint: token.deleteTokenUrl,
|
|
254
|
+
headers
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
async deleteAllAccessTokens(abortController, tokens) {
|
|
258
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
259
|
+
const headers = {};
|
|
260
|
+
if (!isError(csrfResponse)) {
|
|
261
|
+
const csrfToken = csrfResponse;
|
|
262
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
263
|
+
}
|
|
264
|
+
return await Promise.all(tokens.map(token => sendRequest({
|
|
265
|
+
abortController,
|
|
266
|
+
method: 'POST',
|
|
267
|
+
credentials: true,
|
|
268
|
+
endpoint: token.deleteTokenUrl,
|
|
269
|
+
headers
|
|
270
|
+
})));
|
|
271
|
+
}
|
|
272
|
+
async getCsrfToken(abortController) {
|
|
298
273
|
return sendRequest({
|
|
299
274
|
abortController,
|
|
300
275
|
credentials: true,
|
|
301
276
|
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'csrf'])
|
|
302
277
|
});
|
|
303
278
|
}
|
|
304
|
-
getNamespaces(abortController) {
|
|
279
|
+
async getNamespaces(abortController) {
|
|
305
280
|
return sendRequest({
|
|
306
281
|
abortController,
|
|
307
282
|
credentials: true,
|
|
308
283
|
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'namespaces'])
|
|
309
284
|
});
|
|
310
285
|
}
|
|
311
|
-
|
|
286
|
+
async getCustomers(abortController) {
|
|
287
|
+
return sendRequest({
|
|
288
|
+
abortController,
|
|
289
|
+
credentials: true,
|
|
290
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'customers'])
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
async getUsageStats(abortController, customerName, date) {
|
|
294
|
+
const query = [];
|
|
295
|
+
query.push({ key: 'date', value: date.toISOString() });
|
|
296
|
+
return sendRequest({
|
|
297
|
+
abortController,
|
|
298
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'customers', customerName, 'usage'], query),
|
|
299
|
+
credentials: true
|
|
300
|
+
}, false);
|
|
301
|
+
}
|
|
302
|
+
async getNamespaceMembers(abortController, namespace) {
|
|
312
303
|
return sendRequest({
|
|
313
304
|
abortController,
|
|
314
305
|
credentials: true,
|
|
315
306
|
endpoint: namespace.membersUrl
|
|
316
307
|
});
|
|
317
308
|
}
|
|
318
|
-
setNamespaceMember(abortController, endpoint, user, role) {
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
endpoint: addQuery(endpoint, query)
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
signPublisherAgreement(abortController) {
|
|
341
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
342
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
343
|
-
const headers = {};
|
|
344
|
-
if (!isError(csrfResponse)) {
|
|
345
|
-
const csrfToken = csrfResponse;
|
|
346
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
347
|
-
}
|
|
348
|
-
return sendRequest({
|
|
349
|
-
abortController,
|
|
350
|
-
method: 'POST',
|
|
351
|
-
credentials: true,
|
|
352
|
-
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'publisher-agreement']),
|
|
353
|
-
headers
|
|
354
|
-
});
|
|
309
|
+
async setNamespaceMember(abortController, endpoint, user, role) {
|
|
310
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
311
|
+
const headers = {};
|
|
312
|
+
if (!isError(csrfResponse)) {
|
|
313
|
+
const csrfToken = csrfResponse;
|
|
314
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
315
|
+
}
|
|
316
|
+
const query = [
|
|
317
|
+
{ key: 'user', value: user.loginName },
|
|
318
|
+
{ key: 'provider', value: user.provider },
|
|
319
|
+
{ key: 'role', value: role }
|
|
320
|
+
];
|
|
321
|
+
return sendRequest({
|
|
322
|
+
abortController,
|
|
323
|
+
headers,
|
|
324
|
+
method: 'POST',
|
|
325
|
+
credentials: true,
|
|
326
|
+
endpoint: addQuery(endpoint, query)
|
|
355
327
|
});
|
|
356
328
|
}
|
|
357
|
-
|
|
329
|
+
async signPublisherAgreement(abortController) {
|
|
330
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
331
|
+
const headers = {};
|
|
332
|
+
if (!isError(csrfResponse)) {
|
|
333
|
+
const csrfToken = csrfResponse;
|
|
334
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
335
|
+
}
|
|
336
|
+
return sendRequest({
|
|
337
|
+
abortController,
|
|
338
|
+
method: 'POST',
|
|
339
|
+
credentials: true,
|
|
340
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'publisher-agreement']),
|
|
341
|
+
headers
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
async getStaticContent(abortController, url) {
|
|
358
345
|
return sendRequest({
|
|
359
346
|
abortController,
|
|
360
347
|
endpoint: url,
|
|
@@ -362,229 +349,205 @@ export class ExtensionRegistryService {
|
|
|
362
349
|
followRedirect: true
|
|
363
350
|
});
|
|
364
351
|
}
|
|
365
|
-
publishExtension(abortController, extensionPackage) {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
payload: { name: name },
|
|
400
|
-
headers: headers,
|
|
401
|
-
endpoint: createAbsoluteURL([this.serverUrl, 'api', 'user', 'namespace', 'create'])
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
getExtensions(abortController) {
|
|
406
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
407
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
408
|
-
const headers = {};
|
|
409
|
-
if (!isError(csrfResponse)) {
|
|
410
|
-
const csrfToken = csrfResponse;
|
|
411
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
412
|
-
}
|
|
413
|
-
return sendRequest({
|
|
414
|
-
abortController,
|
|
415
|
-
method: 'GET',
|
|
416
|
-
credentials: true,
|
|
417
|
-
headers: headers,
|
|
418
|
-
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'extensions'])
|
|
419
|
-
});
|
|
420
|
-
});
|
|
421
|
-
}
|
|
422
|
-
getExtension(abortController, namespace, extension) {
|
|
423
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
424
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
425
|
-
const headers = {};
|
|
426
|
-
if (!isError(csrfResponse)) {
|
|
427
|
-
const csrfToken = csrfResponse;
|
|
428
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
429
|
-
}
|
|
430
|
-
return sendRequest({
|
|
431
|
-
abortController,
|
|
432
|
-
method: 'GET',
|
|
433
|
-
credentials: true,
|
|
434
|
-
headers: headers,
|
|
435
|
-
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'extension', namespace, extension])
|
|
436
|
-
});
|
|
437
|
-
});
|
|
438
|
-
}
|
|
439
|
-
deleteExtensions(abortController, req) {
|
|
440
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
441
|
-
const csrfResponse = yield this.getCsrfToken(abortController);
|
|
442
|
-
const headers = {
|
|
443
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
444
|
-
};
|
|
445
|
-
if (!isError(csrfResponse)) {
|
|
446
|
-
const csrfToken = csrfResponse;
|
|
447
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
448
|
-
}
|
|
449
|
-
return sendRequest({
|
|
450
|
-
abortController,
|
|
451
|
-
method: 'POST',
|
|
452
|
-
credentials: true,
|
|
453
|
-
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'extension', req.namespace, req.extension, 'delete']),
|
|
454
|
-
headers,
|
|
455
|
-
payload: req.targetPlatformVersions
|
|
456
|
-
});
|
|
352
|
+
async publishExtension(abortController, extensionPackage) {
|
|
353
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
354
|
+
const headers = {
|
|
355
|
+
'Content-Type': 'application/octet-stream'
|
|
356
|
+
};
|
|
357
|
+
if (!isError(csrfResponse)) {
|
|
358
|
+
const csrfToken = csrfResponse;
|
|
359
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
360
|
+
}
|
|
361
|
+
return sendRequest({
|
|
362
|
+
abortController,
|
|
363
|
+
method: 'POST',
|
|
364
|
+
credentials: true,
|
|
365
|
+
payload: extensionPackage,
|
|
366
|
+
headers: headers,
|
|
367
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'api', 'user', 'publish'])
|
|
368
|
+
}, false); // do not retry publishing an extension but show the explicit error received
|
|
369
|
+
}
|
|
370
|
+
async createNamespace(abortController, name) {
|
|
371
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
372
|
+
const headers = {
|
|
373
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
374
|
+
};
|
|
375
|
+
if (!isError(csrfResponse)) {
|
|
376
|
+
const csrfToken = csrfResponse;
|
|
377
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
378
|
+
}
|
|
379
|
+
return sendRequest({
|
|
380
|
+
abortController,
|
|
381
|
+
method: 'POST',
|
|
382
|
+
credentials: true,
|
|
383
|
+
payload: { name: name },
|
|
384
|
+
headers: headers,
|
|
385
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'api', 'user', 'namespace', 'create'])
|
|
457
386
|
});
|
|
458
387
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
388
|
+
async getExtensions(abortController) {
|
|
389
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
390
|
+
const headers = {};
|
|
391
|
+
if (!isError(csrfResponse)) {
|
|
392
|
+
const csrfToken = csrfResponse;
|
|
393
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
394
|
+
}
|
|
395
|
+
return sendRequest({
|
|
396
|
+
abortController,
|
|
397
|
+
method: 'GET',
|
|
398
|
+
credentials: true,
|
|
399
|
+
headers: headers,
|
|
400
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'extensions'])
|
|
463
401
|
});
|
|
464
402
|
}
|
|
403
|
+
async getExtension(abortController, namespace, extension) {
|
|
404
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
405
|
+
const headers = {};
|
|
406
|
+
if (!isError(csrfResponse)) {
|
|
407
|
+
const csrfToken = csrfResponse;
|
|
408
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
409
|
+
}
|
|
410
|
+
return sendRequest({
|
|
411
|
+
abortController,
|
|
412
|
+
method: 'GET',
|
|
413
|
+
credentials: true,
|
|
414
|
+
headers: headers,
|
|
415
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'extension', namespace, extension])
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
async deleteExtensions(abortController, req) {
|
|
419
|
+
const csrfResponse = await this.getCsrfToken(abortController);
|
|
420
|
+
const headers = {
|
|
421
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
422
|
+
};
|
|
423
|
+
if (!isError(csrfResponse)) {
|
|
424
|
+
const csrfToken = csrfResponse;
|
|
425
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
426
|
+
}
|
|
427
|
+
return sendRequest({
|
|
428
|
+
abortController,
|
|
429
|
+
method: 'POST',
|
|
430
|
+
credentials: true,
|
|
431
|
+
endpoint: createAbsoluteURL([this.serverUrl, 'user', 'extension', req.namespace, req.extension, 'delete']),
|
|
432
|
+
headers,
|
|
433
|
+
payload: req.targetPlatformVersions
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
async getRegistryVersion(abortController) {
|
|
437
|
+
const endpoint = createAbsoluteURL([this.serverUrl, 'api', 'version']);
|
|
438
|
+
return sendRequest({ abortController, endpoint });
|
|
439
|
+
}
|
|
465
440
|
}
|
|
466
441
|
export class AdminServiceImpl {
|
|
467
442
|
constructor(registry) {
|
|
468
443
|
this.registry = registry;
|
|
469
444
|
}
|
|
470
|
-
getExtension(abortController, namespace, extension) {
|
|
445
|
+
async getExtension(abortController, namespace, extension) {
|
|
471
446
|
return sendRequest({
|
|
472
447
|
abortController,
|
|
473
448
|
credentials: true,
|
|
474
449
|
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'extension', namespace, extension])
|
|
475
450
|
});
|
|
476
451
|
}
|
|
477
|
-
deleteExtensions(abortController, req) {
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
payload: req.targetPlatformVersions
|
|
494
|
-
});
|
|
452
|
+
async deleteExtensions(abortController, req) {
|
|
453
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
454
|
+
const headers = {
|
|
455
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
456
|
+
};
|
|
457
|
+
if (!isError(csrfResponse)) {
|
|
458
|
+
const csrfToken = csrfResponse;
|
|
459
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
460
|
+
}
|
|
461
|
+
return sendRequest({
|
|
462
|
+
abortController,
|
|
463
|
+
method: 'POST',
|
|
464
|
+
credentials: true,
|
|
465
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'extension', req.namespace, req.extension, 'delete']),
|
|
466
|
+
headers,
|
|
467
|
+
payload: req.targetPlatformVersions
|
|
495
468
|
});
|
|
496
469
|
}
|
|
497
|
-
getNamespace(abortController, name) {
|
|
470
|
+
async getNamespace(abortController, name) {
|
|
498
471
|
return sendRequest({
|
|
499
472
|
abortController,
|
|
500
473
|
credentials: true,
|
|
501
474
|
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'namespace', name])
|
|
502
475
|
});
|
|
503
476
|
}
|
|
504
|
-
createNamespace(abortController, namespace) {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
return
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
const csrfToken = csrfResponse;
|
|
576
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
577
|
-
}
|
|
578
|
-
return sendRequest({
|
|
579
|
-
abortController,
|
|
580
|
-
method: 'POST',
|
|
581
|
-
credentials: true,
|
|
582
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'publisher', provider, login, 'tokens', 'revoke']),
|
|
583
|
-
headers
|
|
584
|
-
});
|
|
477
|
+
async createNamespace(abortController, namespace) {
|
|
478
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
479
|
+
const headers = {
|
|
480
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
481
|
+
};
|
|
482
|
+
if (!isError(csrfResponse)) {
|
|
483
|
+
const csrfToken = csrfResponse;
|
|
484
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
485
|
+
}
|
|
486
|
+
return sendRequest({
|
|
487
|
+
abortController,
|
|
488
|
+
credentials: true,
|
|
489
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'create-namespace']),
|
|
490
|
+
method: 'POST',
|
|
491
|
+
payload: namespace,
|
|
492
|
+
headers
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
async changeNamespace(abortController, req) {
|
|
496
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
497
|
+
const headers = {
|
|
498
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
499
|
+
};
|
|
500
|
+
if (!isError(csrfResponse)) {
|
|
501
|
+
const csrfToken = csrfResponse;
|
|
502
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
503
|
+
}
|
|
504
|
+
return sendRequest({
|
|
505
|
+
abortController,
|
|
506
|
+
credentials: true,
|
|
507
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'change-namespace']),
|
|
508
|
+
method: 'POST',
|
|
509
|
+
payload: req,
|
|
510
|
+
headers
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
async getPublisherInfo(abortController, provider, login) {
|
|
514
|
+
return sendRequest({
|
|
515
|
+
abortController,
|
|
516
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'publisher', provider, login]),
|
|
517
|
+
credentials: true
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
async revokePublisherContributions(abortController, provider, login) {
|
|
521
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
522
|
+
const headers = {};
|
|
523
|
+
if (!isError(csrfResponse)) {
|
|
524
|
+
const csrfToken = csrfResponse;
|
|
525
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
526
|
+
}
|
|
527
|
+
return sendRequest({
|
|
528
|
+
abortController,
|
|
529
|
+
method: 'POST',
|
|
530
|
+
credentials: true,
|
|
531
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'publisher', provider, login, 'revoke']),
|
|
532
|
+
headers
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
async revokeAccessTokens(abortController, provider, login) {
|
|
536
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
537
|
+
const headers = {};
|
|
538
|
+
if (!isError(csrfResponse)) {
|
|
539
|
+
const csrfToken = csrfResponse;
|
|
540
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
541
|
+
}
|
|
542
|
+
return sendRequest({
|
|
543
|
+
abortController,
|
|
544
|
+
method: 'POST',
|
|
545
|
+
credentials: true,
|
|
546
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'publisher', provider, login, 'tokens', 'revoke']),
|
|
547
|
+
headers
|
|
585
548
|
});
|
|
586
549
|
}
|
|
587
|
-
getAllScans(abortController, params) {
|
|
550
|
+
async getAllScans(abortController, params) {
|
|
588
551
|
const query = [];
|
|
589
552
|
if (params) {
|
|
590
553
|
if (params.size !== undefined)
|
|
@@ -621,14 +584,14 @@ export class AdminServiceImpl {
|
|
|
621
584
|
endpoint
|
|
622
585
|
});
|
|
623
586
|
}
|
|
624
|
-
getScan(abortController, scanId) {
|
|
587
|
+
async getScan(abortController, scanId) {
|
|
625
588
|
return sendRequest({
|
|
626
589
|
abortController,
|
|
627
590
|
credentials: true,
|
|
628
591
|
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'scans', scanId])
|
|
629
592
|
});
|
|
630
593
|
}
|
|
631
|
-
getScanCounts(abortController, params) {
|
|
594
|
+
async getScanCounts(abortController, params) {
|
|
632
595
|
const query = [];
|
|
633
596
|
if (params) {
|
|
634
597
|
if (params.dateStartedFrom)
|
|
@@ -651,14 +614,14 @@ export class AdminServiceImpl {
|
|
|
651
614
|
endpoint
|
|
652
615
|
});
|
|
653
616
|
}
|
|
654
|
-
getScanFilterOptions(abortController) {
|
|
617
|
+
async getScanFilterOptions(abortController) {
|
|
655
618
|
return sendRequest({
|
|
656
619
|
abortController,
|
|
657
620
|
credentials: true,
|
|
658
621
|
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'scans', 'filterOptions'])
|
|
659
622
|
});
|
|
660
623
|
}
|
|
661
|
-
getFiles(abortController, params) {
|
|
624
|
+
async getFiles(abortController, params) {
|
|
662
625
|
const query = [];
|
|
663
626
|
if (params) {
|
|
664
627
|
if (params.size !== undefined)
|
|
@@ -689,7 +652,7 @@ export class AdminServiceImpl {
|
|
|
689
652
|
endpoint
|
|
690
653
|
});
|
|
691
654
|
}
|
|
692
|
-
getFileCounts(abortController, params) {
|
|
655
|
+
async getFileCounts(abortController, params) {
|
|
693
656
|
const query = [];
|
|
694
657
|
if (params) {
|
|
695
658
|
if (params.dateDecidedFrom)
|
|
@@ -704,232 +667,258 @@ export class AdminServiceImpl {
|
|
|
704
667
|
endpoint
|
|
705
668
|
});
|
|
706
669
|
}
|
|
707
|
-
makeScanDecision(abortController, request) {
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
method: 'DELETE',
|
|
760
|
-
credentials: true,
|
|
761
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'scans', 'files', 'decisions']),
|
|
762
|
-
headers,
|
|
763
|
-
payload: request
|
|
764
|
-
});
|
|
765
|
-
});
|
|
766
|
-
}
|
|
767
|
-
getTiers(abortController) {
|
|
768
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
769
|
-
return sendRequest({
|
|
770
|
-
abortController,
|
|
771
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers']),
|
|
772
|
-
credentials: true
|
|
773
|
-
}, false);
|
|
774
|
-
});
|
|
775
|
-
}
|
|
776
|
-
createTier(abortController, tier) {
|
|
777
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
778
|
-
const csrfResponse = yield this.registry.getCsrfToken(abortController);
|
|
779
|
-
const headers = {
|
|
780
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
781
|
-
};
|
|
782
|
-
if (!isError(csrfResponse)) {
|
|
783
|
-
const csrfToken = csrfResponse;
|
|
784
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
785
|
-
}
|
|
786
|
-
return sendRequest({
|
|
787
|
-
abortController,
|
|
788
|
-
method: 'POST',
|
|
789
|
-
payload: tier,
|
|
790
|
-
credentials: true,
|
|
791
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', 'create']),
|
|
792
|
-
headers
|
|
793
|
-
}, false);
|
|
794
|
-
});
|
|
795
|
-
}
|
|
796
|
-
updateTier(abortController, name, tier) {
|
|
797
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
798
|
-
const csrfResponse = yield this.registry.getCsrfToken(abortController);
|
|
799
|
-
const headers = {
|
|
800
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
801
|
-
};
|
|
802
|
-
if (!isError(csrfResponse)) {
|
|
803
|
-
const csrfToken = csrfResponse;
|
|
804
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
805
|
-
}
|
|
806
|
-
return sendRequest({
|
|
807
|
-
abortController,
|
|
808
|
-
method: 'PUT',
|
|
809
|
-
payload: tier,
|
|
810
|
-
credentials: true,
|
|
811
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', name]),
|
|
812
|
-
headers
|
|
813
|
-
}, false);
|
|
814
|
-
});
|
|
815
|
-
}
|
|
816
|
-
deleteTier(abortController, name) {
|
|
817
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
818
|
-
const csrfResponse = yield this.registry.getCsrfToken(abortController);
|
|
819
|
-
const headers = {
|
|
820
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
821
|
-
};
|
|
822
|
-
if (!isError(csrfResponse)) {
|
|
823
|
-
const csrfToken = csrfResponse;
|
|
824
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
825
|
-
}
|
|
826
|
-
return sendRequest({
|
|
827
|
-
abortController,
|
|
828
|
-
method: 'DELETE',
|
|
829
|
-
credentials: true,
|
|
830
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', name]),
|
|
831
|
-
headers
|
|
832
|
-
}, false);
|
|
833
|
-
});
|
|
834
|
-
}
|
|
835
|
-
getCustomers(abortController) {
|
|
836
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
837
|
-
return sendRequest({
|
|
838
|
-
abortController,
|
|
839
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers']),
|
|
840
|
-
credentials: true
|
|
841
|
-
}, false);
|
|
842
|
-
});
|
|
843
|
-
}
|
|
844
|
-
createCustomer(abortController, customer) {
|
|
845
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
846
|
-
const csrfResponse = yield this.registry.getCsrfToken(abortController);
|
|
847
|
-
const headers = {
|
|
848
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
849
|
-
};
|
|
850
|
-
if (!isError(csrfResponse)) {
|
|
851
|
-
const csrfToken = csrfResponse;
|
|
852
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
853
|
-
}
|
|
854
|
-
return sendRequest({
|
|
855
|
-
abortController,
|
|
856
|
-
method: 'POST',
|
|
857
|
-
payload: customer,
|
|
858
|
-
credentials: true,
|
|
859
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', 'create']),
|
|
860
|
-
headers
|
|
861
|
-
}, false);
|
|
862
|
-
});
|
|
863
|
-
}
|
|
864
|
-
updateCustomer(abortController, name, customer) {
|
|
865
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
866
|
-
const csrfResponse = yield this.registry.getCsrfToken(abortController);
|
|
867
|
-
const headers = {
|
|
868
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
869
|
-
};
|
|
870
|
-
if (!isError(csrfResponse)) {
|
|
871
|
-
const csrfToken = csrfResponse;
|
|
872
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
873
|
-
}
|
|
874
|
-
return sendRequest({
|
|
875
|
-
abortController,
|
|
876
|
-
method: 'PUT',
|
|
877
|
-
payload: customer,
|
|
878
|
-
credentials: true,
|
|
879
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
|
|
880
|
-
headers
|
|
881
|
-
}, false);
|
|
882
|
-
});
|
|
883
|
-
}
|
|
884
|
-
deleteCustomer(abortController, name) {
|
|
885
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
886
|
-
const csrfResponse = yield this.registry.getCsrfToken(abortController);
|
|
887
|
-
const headers = {
|
|
888
|
-
'Content-Type': 'application/json;charset=UTF-8'
|
|
889
|
-
};
|
|
890
|
-
if (!isError(csrfResponse)) {
|
|
891
|
-
const csrfToken = csrfResponse;
|
|
892
|
-
headers[csrfToken.header] = csrfToken.value;
|
|
893
|
-
}
|
|
894
|
-
return sendRequest({
|
|
895
|
-
abortController,
|
|
896
|
-
method: 'DELETE',
|
|
897
|
-
credentials: true,
|
|
898
|
-
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
|
|
899
|
-
headers
|
|
900
|
-
}, false);
|
|
670
|
+
async makeScanDecision(abortController, request) {
|
|
671
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
672
|
+
const headers = {
|
|
673
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
674
|
+
};
|
|
675
|
+
if (!isError(csrfResponse)) {
|
|
676
|
+
const csrfToken = csrfResponse;
|
|
677
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
678
|
+
}
|
|
679
|
+
return sendRequest({
|
|
680
|
+
abortController,
|
|
681
|
+
method: 'POST',
|
|
682
|
+
credentials: true,
|
|
683
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'scans', 'decisions']),
|
|
684
|
+
headers,
|
|
685
|
+
payload: request
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
async makeFileDecision(abortController, request) {
|
|
689
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
690
|
+
const headers = {
|
|
691
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
692
|
+
};
|
|
693
|
+
if (!isError(csrfResponse)) {
|
|
694
|
+
const csrfToken = csrfResponse;
|
|
695
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
696
|
+
}
|
|
697
|
+
return sendRequest({
|
|
698
|
+
abortController,
|
|
699
|
+
method: 'POST',
|
|
700
|
+
credentials: true,
|
|
701
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'scans', 'files', 'decisions']),
|
|
702
|
+
headers,
|
|
703
|
+
payload: request
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
async deleteFileDecisions(abortController, request) {
|
|
707
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
708
|
+
const headers = {
|
|
709
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
710
|
+
};
|
|
711
|
+
if (!isError(csrfResponse)) {
|
|
712
|
+
const csrfToken = csrfResponse;
|
|
713
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
714
|
+
}
|
|
715
|
+
return sendRequest({
|
|
716
|
+
abortController,
|
|
717
|
+
method: 'DELETE',
|
|
718
|
+
credentials: true,
|
|
719
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'scans', 'files', 'decisions']),
|
|
720
|
+
headers,
|
|
721
|
+
payload: request
|
|
901
722
|
});
|
|
902
723
|
}
|
|
724
|
+
async getTiers(abortController) {
|
|
725
|
+
return sendRequest({
|
|
726
|
+
abortController,
|
|
727
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers']),
|
|
728
|
+
credentials: true
|
|
729
|
+
}, false);
|
|
730
|
+
}
|
|
731
|
+
async createTier(abortController, tier) {
|
|
732
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
733
|
+
const headers = {
|
|
734
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
735
|
+
};
|
|
736
|
+
if (!isError(csrfResponse)) {
|
|
737
|
+
const csrfToken = csrfResponse;
|
|
738
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
739
|
+
}
|
|
740
|
+
return sendRequest({
|
|
741
|
+
abortController,
|
|
742
|
+
method: 'POST',
|
|
743
|
+
payload: tier,
|
|
744
|
+
credentials: true,
|
|
745
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', 'create']),
|
|
746
|
+
headers
|
|
747
|
+
}, false);
|
|
748
|
+
}
|
|
749
|
+
async updateTier(abortController, name, tier) {
|
|
750
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
751
|
+
const headers = {
|
|
752
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
753
|
+
};
|
|
754
|
+
if (!isError(csrfResponse)) {
|
|
755
|
+
const csrfToken = csrfResponse;
|
|
756
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
757
|
+
}
|
|
758
|
+
return sendRequest({
|
|
759
|
+
abortController,
|
|
760
|
+
method: 'PUT',
|
|
761
|
+
payload: tier,
|
|
762
|
+
credentials: true,
|
|
763
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', name]),
|
|
764
|
+
headers
|
|
765
|
+
}, false);
|
|
766
|
+
}
|
|
767
|
+
async deleteTier(abortController, name) {
|
|
768
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
769
|
+
const headers = {
|
|
770
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
771
|
+
};
|
|
772
|
+
if (!isError(csrfResponse)) {
|
|
773
|
+
const csrfToken = csrfResponse;
|
|
774
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
775
|
+
}
|
|
776
|
+
return sendRequest({
|
|
777
|
+
abortController,
|
|
778
|
+
method: 'DELETE',
|
|
779
|
+
credentials: true,
|
|
780
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'tiers', name]),
|
|
781
|
+
headers
|
|
782
|
+
}, false);
|
|
783
|
+
}
|
|
784
|
+
async getCustomers(abortController) {
|
|
785
|
+
return await sendRequest({
|
|
786
|
+
abortController,
|
|
787
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers']),
|
|
788
|
+
credentials: true
|
|
789
|
+
}, false);
|
|
790
|
+
}
|
|
791
|
+
async getCustomer(abortController, name) {
|
|
792
|
+
return await sendRequest({
|
|
793
|
+
abortController,
|
|
794
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
|
|
795
|
+
credentials: true
|
|
796
|
+
}, false);
|
|
797
|
+
}
|
|
798
|
+
async createCustomer(abortController, customer) {
|
|
799
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
800
|
+
const headers = {
|
|
801
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
802
|
+
};
|
|
803
|
+
if (!isError(csrfResponse)) {
|
|
804
|
+
const csrfToken = csrfResponse;
|
|
805
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
806
|
+
}
|
|
807
|
+
return sendRequest({
|
|
808
|
+
abortController,
|
|
809
|
+
method: 'POST',
|
|
810
|
+
payload: customer,
|
|
811
|
+
credentials: true,
|
|
812
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', 'create']),
|
|
813
|
+
headers
|
|
814
|
+
}, false);
|
|
815
|
+
}
|
|
816
|
+
async updateCustomer(abortController, name, customer) {
|
|
817
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
818
|
+
const headers = {
|
|
819
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
820
|
+
};
|
|
821
|
+
if (!isError(csrfResponse)) {
|
|
822
|
+
const csrfToken = csrfResponse;
|
|
823
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
824
|
+
}
|
|
825
|
+
return sendRequest({
|
|
826
|
+
abortController,
|
|
827
|
+
method: 'PUT',
|
|
828
|
+
payload: customer,
|
|
829
|
+
credentials: true,
|
|
830
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
|
|
831
|
+
headers
|
|
832
|
+
}, false);
|
|
833
|
+
}
|
|
834
|
+
async deleteCustomer(abortController, name) {
|
|
835
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
836
|
+
const headers = {
|
|
837
|
+
'Content-Type': 'application/json;charset=UTF-8'
|
|
838
|
+
};
|
|
839
|
+
if (!isError(csrfResponse)) {
|
|
840
|
+
const csrfToken = csrfResponse;
|
|
841
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
842
|
+
}
|
|
843
|
+
return sendRequest({
|
|
844
|
+
abortController,
|
|
845
|
+
method: 'DELETE',
|
|
846
|
+
credentials: true,
|
|
847
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name]),
|
|
848
|
+
headers
|
|
849
|
+
}, false);
|
|
850
|
+
}
|
|
851
|
+
async getCustomerMembers(abortController, name) {
|
|
852
|
+
return sendRequest({
|
|
853
|
+
abortController,
|
|
854
|
+
credentials: true,
|
|
855
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name, "members"]),
|
|
856
|
+
}, false);
|
|
857
|
+
}
|
|
858
|
+
async addCustomerMember(abortController, name, user) {
|
|
859
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
860
|
+
const headers = {};
|
|
861
|
+
if (!isError(csrfResponse)) {
|
|
862
|
+
const csrfToken = csrfResponse;
|
|
863
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
864
|
+
}
|
|
865
|
+
const query = [
|
|
866
|
+
{ key: 'user', value: user.loginName },
|
|
867
|
+
{ key: 'provider', value: user.provider },
|
|
868
|
+
];
|
|
869
|
+
return sendRequest({
|
|
870
|
+
abortController,
|
|
871
|
+
headers,
|
|
872
|
+
method: 'POST',
|
|
873
|
+
credentials: true,
|
|
874
|
+
endpoint: addQuery(createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name, "add-member"]), query),
|
|
875
|
+
}, false);
|
|
876
|
+
}
|
|
877
|
+
async removeCustomerMember(abortController, name, user) {
|
|
878
|
+
const csrfResponse = await this.registry.getCsrfToken(abortController);
|
|
879
|
+
const headers = {};
|
|
880
|
+
if (!isError(csrfResponse)) {
|
|
881
|
+
const csrfToken = csrfResponse;
|
|
882
|
+
headers[csrfToken.header] = csrfToken.value;
|
|
883
|
+
}
|
|
884
|
+
const query = [
|
|
885
|
+
{ key: 'user', value: user.loginName },
|
|
886
|
+
{ key: 'provider', value: user.provider },
|
|
887
|
+
];
|
|
888
|
+
return sendRequest({
|
|
889
|
+
abortController,
|
|
890
|
+
headers,
|
|
891
|
+
method: 'POST',
|
|
892
|
+
credentials: true,
|
|
893
|
+
endpoint: addQuery(createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', name, "remove-member"]), query),
|
|
894
|
+
}, false);
|
|
895
|
+
}
|
|
903
896
|
/**
|
|
904
897
|
* Get usage stats for a customer within an optional date range.
|
|
905
898
|
*/
|
|
906
|
-
getUsageStats(abortController, customerName, date) {
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
endpoint,
|
|
930
|
-
credentials: true
|
|
931
|
-
}, false);
|
|
932
|
-
});
|
|
899
|
+
async getUsageStats(abortController, customerName, date) {
|
|
900
|
+
const query = [];
|
|
901
|
+
query.push({ key: 'date', value: date.toISOString() });
|
|
902
|
+
return sendRequest({
|
|
903
|
+
abortController,
|
|
904
|
+
endpoint: createAbsoluteURL([this.registry.serverUrl, 'admin', 'ratelimit', 'customers', customerName, 'usage'], query),
|
|
905
|
+
credentials: true
|
|
906
|
+
}, false);
|
|
907
|
+
}
|
|
908
|
+
async getLogs(abortController, page = 0, size = 20, period) {
|
|
909
|
+
const query = [
|
|
910
|
+
{ key: 'page', value: page },
|
|
911
|
+
{ key: 'size', value: size }
|
|
912
|
+
];
|
|
913
|
+
if (period) {
|
|
914
|
+
query.push({ key: 'period', value: period });
|
|
915
|
+
}
|
|
916
|
+
const endpoint = addQuery(createAbsoluteURL([this.registry.serverUrl, 'admin', 'logs']), query);
|
|
917
|
+
return sendRequest({
|
|
918
|
+
abortController,
|
|
919
|
+
endpoint,
|
|
920
|
+
credentials: true
|
|
921
|
+
}, false);
|
|
933
922
|
}
|
|
934
923
|
}
|
|
935
924
|
//# sourceMappingURL=extension-registry-service.js.map
|