@keycloak/keycloak-admin-ui 26.1.0 → 26.1.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.
- package/lib/.vite/manifest.json +23 -23
- package/lib/App.d.ts +2 -0
- package/lib/{CreateFlow--atMTNJc.js → CreateFlow-BP640UYh.js} +2 -2
- package/lib/{CreateFlow--atMTNJc.js.map → CreateFlow-BP640UYh.js.map} +1 -1
- package/lib/{DetailOrganization-az4NPzMy.js → DetailOrganization-DmvcJpiT.js} +2 -2
- package/lib/{DetailOrganization-az4NPzMy.js.map → DetailOrganization-DmvcJpiT.js.map} +1 -1
- package/lib/{ExecutorForm-DaRc7uVA.js → ExecutorForm-Ckr_3kCd.js} +2 -2
- package/lib/{ExecutorForm-DaRc7uVA.js.map → ExecutorForm-Ckr_3kCd.js.map} +1 -1
- package/lib/{FlowDetails-qeT2t76N.js → FlowDetails-CxTTxsRh.js} +2 -2
- package/lib/{FlowDetails-qeT2t76N.js.map → FlowDetails-CxTTxsRh.js.map} +1 -1
- package/lib/{NewOrganization-DPk2Gzku.js → NewOrganization-B8QaQm9K.js} +2 -2
- package/lib/{NewOrganization-DPk2Gzku.js.map → NewOrganization-B8QaQm9K.js.map} +1 -1
- package/lib/{PermissionDetails-CnvNqBCb.js → PermissionDetails-DpwcCYaB.js} +2 -2
- package/lib/{PermissionDetails-CnvNqBCb.js.map → PermissionDetails-DpwcCYaB.js.map} +1 -1
- package/lib/{ResourceDetails-Cfnqq1uy.js → ResourceDetails-o5cgUkTJ.js} +2 -2
- package/lib/{ResourceDetails-Cfnqq1uy.js.map → ResourceDetails-o5cgUkTJ.js.map} +1 -1
- package/lib/{ScopeDetails-_i-3BNjz.js → ScopeDetails-DgvIDlC8.js} +2 -2
- package/lib/{ScopeDetails-_i-3BNjz.js.map → ScopeDetails-DgvIDlC8.js.map} +1 -1
- package/lib/{browser-ponyfill-uH6p8znu.js → browser-ponyfill-C_ISF2Ak.js} +2 -2
- package/lib/{browser-ponyfill-uH6p8znu.js.map → browser-ponyfill-C_ISF2Ak.js.map} +1 -1
- package/lib/{index-BIuvk4Xf.js → index-BJcywEEJ.js} +17 -19
- package/lib/{index-BIuvk4Xf.js.map → index-BJcywEEJ.js.map} +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/keycloak-admin-ui.js +278 -277
- package/package.json +4 -4
@@ -1,5 +1,5 @@
|
|
1
1
|
import { jsxs as r, Fragment as v, jsx as a } from "react/jsx-runtime";
|
2
|
-
import { u as z, B as h, a as b, b as f, V as p, P as S, c as F, F as O, bw as A, A as w, z as y, d as C, bG as E, bC as x, bE as B } from "./index-
|
2
|
+
import { u as z, B as h, a as b, b as f, V as p, P as S, c as F, F as O, bw as A, A as w, z as y, d as C, bG as E, bC as x, bE as B } from "./index-BJcywEEJ.js";
|
3
3
|
import { useTranslation as P } from "react-i18next";
|
4
4
|
import { useNavigate as j, Link as k } from "react-router-dom";
|
5
5
|
function K() {
|
@@ -33,4 +33,4 @@ function K() {
|
|
33
33
|
export {
|
34
34
|
K as default
|
35
35
|
};
|
36
|
-
//# sourceMappingURL=NewOrganization-
|
36
|
+
//# sourceMappingURL=NewOrganization-B8QaQm9K.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NewOrganization-
|
1
|
+
{"version":3,"file":"NewOrganization-B8QaQm9K.js","sources":["../src/organizations/NewOrganization.tsx"],"sourcesContent":["import { FormSubmitButton } from \"@keycloak/keycloak-ui-shared\";\nimport { ActionGroup, Button, PageSection } from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport {\n OrganizationForm,\n OrganizationFormType,\n convertToOrg,\n} from \"./OrganizationForm\";\nimport { toEditOrganization } from \"./routes/EditOrganization\";\nimport { toOrganizations } from \"./routes/Organizations\";\n\nexport default function NewOrganization() {\n const { adminClient } = useAdminClient();\n const { addAlert, addError } = useAlerts();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { realm } = useRealm();\n const form = useForm({ mode: \"onChange\" });\n const { handleSubmit, formState } = form;\n\n const save = async (org: OrganizationFormType) => {\n try {\n const organization = convertToOrg(org);\n const { id } = await adminClient.organizations.create(organization);\n addAlert(t(\"organizationSaveSuccess\"));\n navigate(toEditOrganization({ realm, id, tab: \"settings\" }));\n } catch (error) {\n addError(\"organizationSaveError\", error);\n }\n };\n\n return (\n <>\n <ViewHeader titleKey=\"createOrganization\" />\n <PageSection variant=\"light\">\n <FormAccess role=\"anyone\" onSubmit={handleSubmit(save)} isHorizontal>\n <FormProvider {...form}>\n <OrganizationForm />\n <ActionGroup>\n <FormSubmitButton formState={formState} data-testid=\"save\">\n {t(\"save\")}\n </FormSubmitButton>\n <Button\n data-testid=\"cancel\"\n variant=\"link\"\n component={(props) => (\n <Link {...props} to={toOrganizations({ realm })} />\n )}\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n </FormProvider>\n </FormAccess>\n </PageSection>\n </>\n );\n}\n"],"names":["NewOrganization","adminClient","useAdminClient","addAlert","addError","useAlerts","useTranslation","navigate","useNavigate","realm","useRealm","form","useForm","handleSubmit","formState","jsxs","Fragment","jsx","ViewHeader","PageSection","FormAccess","org","organization","convertToOrg","id","toEditOrganization","error","FormProvider","OrganizationForm","ActionGroup","FormSubmitButton","Button","props","Link","toOrganizations"],"mappings":";;;;AAkBA,SAAwBA,IAAkB;AAClC,QAAA,EAAE,aAAAC,EAAY,IAAIC,EAAe,GACjC,EAAE,UAAAC,GAAU,UAAAC,EAAS,IAAIC,EAAU,GACnC,EAAE,EAAE,IAAIC,EAAe,GACvBC,IAAWC,EAAY,GACvB,EAAE,OAAAC,EAAM,IAAIC,EAAS,GACrBC,IAAOC,EAAQ,EAAE,MAAM,YAAY,GACnC,EAAE,cAAAC,GAAc,WAAAC,EAAA,IAAcH;AAapC,SAEI,gBAAAI,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAW,UAAS,qBAAqB,CAAA;AAAA,sBACzCC,GAAY,EAAA,SAAQ,SACnB,UAAA,gBAAAF,EAACG,KAAW,MAAK,UAAS,UAAUP,EAf7B,OAAOQ,MAA8B;AAC5C,UAAA;AACI,cAAAC,IAAeC,EAAaF,CAAG,GAC/B,EAAE,IAAAG,EAAG,IAAI,MAAMvB,EAAY,cAAc,OAAOqB,CAAY;AACzD,QAAAnB,EAAA,EAAE,yBAAyB,CAAC,GACrCI,EAASkB,EAAmB,EAAE,OAAAhB,GAAO,IAAAe,GAAI,KAAK,WAAA,CAAY,CAAC;AAAA,eACpDE,GAAO;AACd,QAAAtB,EAAS,yBAAyBsB,CAAK;AAAA,MAAA;AAAA,IAE3C,CAM2D,GAAG,cAAY,IAClE,UAAC,gBAAAX,EAAAY,GAAA,EAAc,GAAGhB,GAChB,UAAA;AAAA,MAAA,gBAAAM,EAACW,GAAiB,EAAA;AAAA,wBACjBC,GACC,EAAA,UAAA;AAAA,QAAA,gBAAAZ,EAACa,KAAiB,WAAAhB,GAAsB,eAAY,QACjD,UAAA,EAAE,MAAM,GACX;AAAA,QACA,gBAAAG;AAAA,UAACc;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,SAAQ;AAAA,YACR,WAAW,CAACC,MACV,gBAAAf,EAACgB,GAAM,EAAA,GAAGD,GAAO,IAAIE,EAAgB,EAAE,OAAAzB,EAAM,CAAC,EAAG,CAAA;AAAA,YAGlD,YAAE,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACb,EACF,CAAA;AAAA,IAAA,EACF,CAAA,EACF,CAAA,EACF,CAAA;AAAA,EAAA,GACF;AAEJ;"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { jsx as s, jsxs as v, Fragment as N } from "react/jsx-runtime";
|
2
|
-
import { u as K, b5 as J, n as _, b6 as W, b7 as Y, b8 as B, aP as Q, b as X, b9 as Z, B as ee, ba as se, aY as ae, h as H, e as j, bb as k, bc as ie, bd as te, V as oe, be as ne, aG as re, P as le, c as ce, F as de, q as z, aJ as pe, bf as P, bg as C, bh as ue, bi as E, bj as M, bk as U, R as me, A as be, d as G, bl as fe } from "./index-
|
2
|
+
import { u as K, b5 as J, n as _, b6 as W, b7 as Y, b8 as B, aP as Q, b as X, b9 as Z, B as ee, ba as se, aY as ae, h as H, e as j, bb as k, bc as ie, bd as te, V as oe, be as ne, aG as re, P as le, c as ce, F as de, q as z, aJ as pe, bf as P, bg as C, bh as ue, bi as E, bj as M, bk as U, R as me, A as be, d as G, bl as fe } from "./index-BJcywEEJ.js";
|
3
3
|
import { useState as f, useRef as he } from "react";
|
4
4
|
import { useTranslation as $ } from "react-i18next";
|
5
5
|
import { useNavigate as ge, Link as ye } from "react-router-dom";
|
@@ -410,4 +410,4 @@ function Re() {
|
|
410
410
|
export {
|
411
411
|
Re as default
|
412
412
|
};
|
413
|
-
//# sourceMappingURL=PermissionDetails-
|
413
|
+
//# sourceMappingURL=PermissionDetails-DpwcCYaB.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PermissionDetails-CnvNqBCb.js","sources":["../src/clients/authorization/ScopeSelect.tsx","../src/clients/authorization/PermissionDetails.tsx"],"sourcesContent":["import type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport {\n KeycloakSelect,\n SelectVariant,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { SelectOption } from \"@patternfly/react-core\";\nimport { useRef, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\n\ntype ScopeSelectProps = {\n clientId: string;\n resourceId?: string;\n preSelected?: string;\n};\n\nexport const ScopeSelect = ({\n clientId,\n resourceId,\n preSelected,\n}: ScopeSelectProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const {\n control,\n getValues,\n setValue,\n formState: { errors },\n } = useFormContext();\n\n const [scopes, setScopes] = useState<ScopeRepresentation[]>([]);\n const [selectedScopes, setSelectedScopes] = useState<ScopeRepresentation[]>(\n [],\n );\n const [search, setSearch] = useState(\"\");\n const [open, setOpen] = useState(false);\n const firstUpdate = useRef(true);\n\n const values: string[] | undefined = getValues(\"scopes\");\n\n const toSelectOptions = (scopes: ScopeRepresentation[]) =>\n scopes.map((scope) => (\n <SelectOption key={scope.id} value={scope}>\n {scope.name}\n </SelectOption>\n ));\n\n useFetch(\n async (): Promise<ScopeRepresentation[]> => {\n if (!resourceId) {\n return adminClient.clients.listAllScopes(\n Object.assign(\n { id: clientId, deep: false },\n search === \"\" ? null : { name: search },\n ),\n );\n }\n\n if (resourceId && !firstUpdate.current) {\n setValue(\"scopes\", []);\n }\n\n firstUpdate.current = false;\n return adminClient.clients.listScopesByResource({\n id: clientId,\n resourceName: resourceId,\n });\n },\n (scopes) => {\n setScopes(scopes);\n if (!search)\n setSelectedScopes(\n scopes.filter((s: ScopeRepresentation) => values?.includes(s.id!)),\n );\n },\n [resourceId, search],\n );\n\n return (\n <Controller\n name=\"scopes\"\n defaultValue={preSelected ? [preSelected] : []}\n control={control}\n rules={{ validate: (value) => value.length > 0 }}\n render={({ field }) => (\n <KeycloakSelect\n toggleId=\"scopes\"\n variant={SelectVariant.typeaheadMulti}\n onToggle={(val) => setOpen(val)}\n onFilter={(filter) => {\n setSearch(filter);\n return toSelectOptions(scopes);\n }}\n onClear={() => {\n field.onChange([]);\n setSearch(\"\");\n }}\n selections={selectedScopes.map((s) => s.name!)}\n onSelect={(selectedValue) => {\n const option =\n typeof selectedValue === \"string\"\n ? selectedScopes.find((s) => s.name === selectedValue)!\n : (selectedValue as ScopeRepresentation);\n const changedValue = selectedScopes.find((p) => p.id === option.id)\n ? selectedScopes.filter((p) => p.id !== option.id)\n : [...selectedScopes, option];\n\n field.onChange(changedValue.map((s) => s.id));\n setSelectedScopes(changedValue);\n setSearch(\"\");\n }}\n isOpen={open}\n aria-labelledby={t(\"scopes\")}\n validated={errors.scopes ? \"error\" : \"default\"}\n isDisabled={!!preSelected}\n typeAheadAriaLabel={t(\"scopes\")}\n >\n {toSelectOptions(scopes)}\n </KeycloakSelect>\n )}\n />\n );\n};\n","import type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport { DecisionStrategy } from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n FormErrorText,\n HelpItem,\n SelectVariant,\n TextAreaControl,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n Radio,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { toUpperCase } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport type { NewPermissionParams } from \"../routes/NewPermission\";\nimport {\n PermissionDetailsParams,\n toPermissionDetails,\n} from \"../routes/PermissionDetails\";\nimport { ResourcesPolicySelect } from \"./ResourcesPolicySelect\";\nimport { ScopeSelect } from \"./ScopeSelect\";\n\ntype FormFields = PolicyRepresentation & {\n resourceType: string;\n};\n\nexport default function PermissionDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const form = useForm<FormFields>({\n mode: \"onChange\",\n });\n const {\n control,\n reset,\n formState: { errors },\n handleSubmit,\n } = form;\n\n const navigate = useNavigate();\n const { id, realm, permissionType, permissionId, selectedId } = useParams<\n NewPermissionParams & PermissionDetailsParams\n >();\n\n const { addAlert, addError } = useAlerts();\n const [permission, setPermission] = useState<PolicyRepresentation>();\n const [applyToResourceTypeFlag, setApplyToResourceTypeFlag] = useState(false);\n const { hasAccess } = useAccess();\n\n const isDisabled = !hasAccess(\"manage-authorization\");\n\n useFetch(\n async () => {\n if (!permissionId) {\n return {};\n }\n const [permission, resources, policies, scopes] = await Promise.all([\n adminClient.clients.findOnePermission({\n id,\n type: permissionType,\n permissionId,\n }),\n adminClient.clients.getAssociatedResources({\n id,\n permissionId,\n }),\n adminClient.clients.getAssociatedPolicies({\n id,\n permissionId,\n }),\n adminClient.clients.getAssociatedScopes({\n id,\n permissionId,\n }),\n ]);\n\n if (!permission) {\n throw new Error(t(\"notFound\"));\n }\n\n return {\n permission,\n resources: resources.map((r) => r._id),\n policies: policies.map((p) => p.id!),\n scopes: scopes.map((s) => s.id!),\n };\n },\n ({ permission, resources, policies, scopes }) => {\n reset({ ...permission, resources, policies, scopes });\n if (permission && \"resourceType\" in permission) {\n setApplyToResourceTypeFlag(\n !!(permission as { resourceType: string }).resourceType,\n );\n }\n setPermission({ ...permission, resources, policies });\n },\n [],\n );\n\n const save = async (permission: PolicyRepresentation) => {\n try {\n if (permissionId) {\n await adminClient.clients.updatePermission(\n { id, type: permissionType, permissionId },\n permission,\n );\n } else {\n const result = await adminClient.clients.createPermission(\n { id, type: permissionType },\n permission,\n );\n setPermission(result);\n navigate(\n toPermissionDetails({\n realm,\n id,\n permissionType,\n permissionId: result.id!,\n }),\n );\n }\n addAlert(\n t((permissionId ? \"update\" : \"create\") + \"PermissionSuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"permissionSaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deletePermission\",\n messageKey: t(\"deletePermissionConfirm\", {\n permission: permission?.name,\n }),\n continueButtonVariant: ButtonVariant.danger,\n continueButtonLabel: \"confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delPermission({\n id,\n type: permissionType,\n permissionId: permissionId,\n });\n addAlert(t(\"permissionDeletedSuccess\"), AlertVariant.success);\n navigate(\n toAuthorizationTab({ realm, clientId: id, tab: \"permissions\" }),\n );\n } catch (error) {\n addError(\"permissionDeletedError\", error);\n }\n },\n });\n\n const resourcesIds = useWatch({\n control,\n name: \"resources\",\n defaultValue: [],\n });\n\n if (!permission) {\n return <KeycloakSpinner />;\n }\n\n return (\n <>\n <DeleteConfirm />\n <ViewHeader\n titleKey={\n permissionId\n ? permission.name!\n : `create${toUpperCase(permissionType)}BasedPermission`\n }\n dropdownItems={\n permissionId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n isDisabled={isDisabled}\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n onSubmit={handleSubmit(save)}\n >\n <FormProvider {...form}>\n <TextControl\n name=\"name\"\n label={t(\"name\")}\n labelIcon={t(\"permissionName\")}\n rules={{\n required: t(\"required\"),\n }}\n />\n <TextAreaControl\n name=\"description\"\n label={t(\"description\")}\n labelIcon={t(\"permissionDescription\")}\n rules={{\n maxLength: {\n value: 255,\n message: t(\"maxLength\", { length: 255 }),\n },\n }}\n />\n <FormGroup\n label={t(\"applyToResourceTypeFlag\")}\n fieldId=\"applyToResourceTypeFlag\"\n labelIcon={\n <HelpItem\n helpText={t(\"applyToResourceTypeFlagHelp\")}\n fieldLabelId=\"applyToResourceTypeFlag\"\n />\n }\n >\n <Switch\n id=\"applyToResourceTypeFlag\"\n name=\"applyToResourceTypeFlag\"\n label={t(\"on\")}\n labelOff={t(\"off\")}\n isChecked={applyToResourceTypeFlag}\n onChange={(_event, val) => setApplyToResourceTypeFlag(val)}\n aria-label={t(\"applyToResourceTypeFlag\")}\n />\n </FormGroup>\n {applyToResourceTypeFlag ? (\n <TextControl\n name=\"resourceType\"\n label={t(\"resourceType\")}\n labelIcon={t(\"resourceTypeHelp\")}\n rules={{\n required: {\n value: permissionType === \"scope\" ? true : false,\n message: t(\"required\"),\n },\n }}\n />\n ) : (\n <FormGroup\n label={t(\"resource\")}\n fieldId=\"resources\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionResources\")}\n fieldLabelId=\"resources\"\n />\n }\n isRequired={permissionType !== \"scope\"}\n >\n <ResourcesPolicySelect\n name=\"resources\"\n clientId={id}\n permissionId={permissionId}\n preSelected={\n permissionType === \"scope\" ? undefined : selectedId\n }\n variant={\n permissionType === \"scope\"\n ? SelectVariant.typeahead\n : SelectVariant.typeaheadMulti\n }\n isRequired={permissionType !== \"scope\"}\n />\n {errors.resources && <FormErrorText message={t(\"required\")} />}\n </FormGroup>\n )}\n {permissionType === \"scope\" && (\n <FormGroup\n label={t(\"authorizationScopes\")}\n fieldId=\"scopes\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionScopesHelp\")}\n fieldLabelId=\"scopesSelect\"\n />\n }\n isRequired\n >\n <ScopeSelect\n clientId={id}\n resourceId={resourcesIds?.[0]}\n preSelected={selectedId}\n />\n {errors.scopes && <FormErrorText message={t(\"required\")} />}\n </FormGroup>\n )}\n <FormGroup\n label={t(\"policies\")}\n fieldId=\"policies\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionPoliciesHelp\")}\n fieldLabelId=\"policies\"\n />\n }\n >\n <ResourcesPolicySelect\n name=\"policies\"\n clientId={id}\n permissionId={permissionId}\n />\n </FormGroup>\n <FormGroup\n label={t(\"decisionStrategy\")}\n labelIcon={\n <HelpItem\n helpText={t(\"permissionDecisionStrategyHelp\")}\n fieldLabelId=\"decisionStrategy\"\n />\n }\n fieldId=\"policyEnforcementMode\"\n hasNoPaddingTop\n >\n <Controller\n name=\"decisionStrategy\"\n data-testid=\"decisionStrategy\"\n defaultValue={DecisionStrategy.UNANIMOUS}\n control={control}\n render={({ field }) => (\n <>\n {Object.values(DecisionStrategy).map((strategy) => (\n <Radio\n id={strategy}\n key={strategy}\n data-testid={strategy}\n isChecked={field.value === strategy}\n isDisabled={isDisabled}\n name=\"decisionStrategies\"\n onChange={() => field.onChange(strategy)}\n label={t(`decisionStrategies.${strategy}`)}\n className=\"pf-v5-u-mb-md\"\n />\n ))}\n </>\n )}\n />\n </FormGroup>\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"permissions\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </div>\n </ActionGroup>\n </FormProvider>\n </FormAccess>\n </PageSection>\n </>\n );\n}\n"],"names":["ScopeSelect","clientId","resourceId","preSelected","adminClient","useAdminClient","t","useTranslation","control","getValues","setValue","errors","useFormContext","scopes","setScopes","useState","selectedScopes","setSelectedScopes","search","setSearch","open","setOpen","firstUpdate","useRef","values","toSelectOptions","scope","jsx","SelectOption","useFetch","s","Controller","value","field","KeycloakSelect","SelectVariant","val","filter","selectedValue","option","changedValue","p","PermissionDetails","form","useForm","reset","handleSubmit","navigate","useNavigate","id","realm","permissionType","permissionId","selectedId","useParams","addAlert","addError","useAlerts","permission","setPermission","applyToResourceTypeFlag","setApplyToResourceTypeFlag","hasAccess","useAccess","isDisabled","resources","policies","r","save","result","toPermissionDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","toAuthorizationTab","resourcesIds","useWatch","jsxs","Fragment","ViewHeader","toUpperCase","DropdownItem","PageSection","FormAccess","FormProvider","TextControl","TextAreaControl","FormGroup","HelpItem","Switch","_event","ResourcesPolicySelect","FormErrorText","DecisionStrategy","strategy","Radio","ActionGroup","Button","props","Link","KeycloakSpinner"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"PermissionDetails-DpwcCYaB.js","sources":["../src/clients/authorization/ScopeSelect.tsx","../src/clients/authorization/PermissionDetails.tsx"],"sourcesContent":["import type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport {\n KeycloakSelect,\n SelectVariant,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { SelectOption } from \"@patternfly/react-core\";\nimport { useRef, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\n\ntype ScopeSelectProps = {\n clientId: string;\n resourceId?: string;\n preSelected?: string;\n};\n\nexport const ScopeSelect = ({\n clientId,\n resourceId,\n preSelected,\n}: ScopeSelectProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const {\n control,\n getValues,\n setValue,\n formState: { errors },\n } = useFormContext();\n\n const [scopes, setScopes] = useState<ScopeRepresentation[]>([]);\n const [selectedScopes, setSelectedScopes] = useState<ScopeRepresentation[]>(\n [],\n );\n const [search, setSearch] = useState(\"\");\n const [open, setOpen] = useState(false);\n const firstUpdate = useRef(true);\n\n const values: string[] | undefined = getValues(\"scopes\");\n\n const toSelectOptions = (scopes: ScopeRepresentation[]) =>\n scopes.map((scope) => (\n <SelectOption key={scope.id} value={scope}>\n {scope.name}\n </SelectOption>\n ));\n\n useFetch(\n async (): Promise<ScopeRepresentation[]> => {\n if (!resourceId) {\n return adminClient.clients.listAllScopes(\n Object.assign(\n { id: clientId, deep: false },\n search === \"\" ? null : { name: search },\n ),\n );\n }\n\n if (resourceId && !firstUpdate.current) {\n setValue(\"scopes\", []);\n }\n\n firstUpdate.current = false;\n return adminClient.clients.listScopesByResource({\n id: clientId,\n resourceName: resourceId,\n });\n },\n (scopes) => {\n setScopes(scopes);\n if (!search)\n setSelectedScopes(\n scopes.filter((s: ScopeRepresentation) => values?.includes(s.id!)),\n );\n },\n [resourceId, search],\n );\n\n return (\n <Controller\n name=\"scopes\"\n defaultValue={preSelected ? [preSelected] : []}\n control={control}\n rules={{ validate: (value) => value.length > 0 }}\n render={({ field }) => (\n <KeycloakSelect\n toggleId=\"scopes\"\n variant={SelectVariant.typeaheadMulti}\n onToggle={(val) => setOpen(val)}\n onFilter={(filter) => {\n setSearch(filter);\n return toSelectOptions(scopes);\n }}\n onClear={() => {\n field.onChange([]);\n setSearch(\"\");\n }}\n selections={selectedScopes.map((s) => s.name!)}\n onSelect={(selectedValue) => {\n const option =\n typeof selectedValue === \"string\"\n ? selectedScopes.find((s) => s.name === selectedValue)!\n : (selectedValue as ScopeRepresentation);\n const changedValue = selectedScopes.find((p) => p.id === option.id)\n ? selectedScopes.filter((p) => p.id !== option.id)\n : [...selectedScopes, option];\n\n field.onChange(changedValue.map((s) => s.id));\n setSelectedScopes(changedValue);\n setSearch(\"\");\n }}\n isOpen={open}\n aria-labelledby={t(\"scopes\")}\n validated={errors.scopes ? \"error\" : \"default\"}\n isDisabled={!!preSelected}\n typeAheadAriaLabel={t(\"scopes\")}\n >\n {toSelectOptions(scopes)}\n </KeycloakSelect>\n )}\n />\n );\n};\n","import type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport { DecisionStrategy } from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n FormErrorText,\n HelpItem,\n SelectVariant,\n TextAreaControl,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n Radio,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { toUpperCase } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport type { NewPermissionParams } from \"../routes/NewPermission\";\nimport {\n PermissionDetailsParams,\n toPermissionDetails,\n} from \"../routes/PermissionDetails\";\nimport { ResourcesPolicySelect } from \"./ResourcesPolicySelect\";\nimport { ScopeSelect } from \"./ScopeSelect\";\n\ntype FormFields = PolicyRepresentation & {\n resourceType: string;\n};\n\nexport default function PermissionDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const form = useForm<FormFields>({\n mode: \"onChange\",\n });\n const {\n control,\n reset,\n formState: { errors },\n handleSubmit,\n } = form;\n\n const navigate = useNavigate();\n const { id, realm, permissionType, permissionId, selectedId } = useParams<\n NewPermissionParams & PermissionDetailsParams\n >();\n\n const { addAlert, addError } = useAlerts();\n const [permission, setPermission] = useState<PolicyRepresentation>();\n const [applyToResourceTypeFlag, setApplyToResourceTypeFlag] = useState(false);\n const { hasAccess } = useAccess();\n\n const isDisabled = !hasAccess(\"manage-authorization\");\n\n useFetch(\n async () => {\n if (!permissionId) {\n return {};\n }\n const [permission, resources, policies, scopes] = await Promise.all([\n adminClient.clients.findOnePermission({\n id,\n type: permissionType,\n permissionId,\n }),\n adminClient.clients.getAssociatedResources({\n id,\n permissionId,\n }),\n adminClient.clients.getAssociatedPolicies({\n id,\n permissionId,\n }),\n adminClient.clients.getAssociatedScopes({\n id,\n permissionId,\n }),\n ]);\n\n if (!permission) {\n throw new Error(t(\"notFound\"));\n }\n\n return {\n permission,\n resources: resources.map((r) => r._id),\n policies: policies.map((p) => p.id!),\n scopes: scopes.map((s) => s.id!),\n };\n },\n ({ permission, resources, policies, scopes }) => {\n reset({ ...permission, resources, policies, scopes });\n if (permission && \"resourceType\" in permission) {\n setApplyToResourceTypeFlag(\n !!(permission as { resourceType: string }).resourceType,\n );\n }\n setPermission({ ...permission, resources, policies });\n },\n [],\n );\n\n const save = async (permission: PolicyRepresentation) => {\n try {\n if (permissionId) {\n await adminClient.clients.updatePermission(\n { id, type: permissionType, permissionId },\n permission,\n );\n } else {\n const result = await adminClient.clients.createPermission(\n { id, type: permissionType },\n permission,\n );\n setPermission(result);\n navigate(\n toPermissionDetails({\n realm,\n id,\n permissionType,\n permissionId: result.id!,\n }),\n );\n }\n addAlert(\n t((permissionId ? \"update\" : \"create\") + \"PermissionSuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"permissionSaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deletePermission\",\n messageKey: t(\"deletePermissionConfirm\", {\n permission: permission?.name,\n }),\n continueButtonVariant: ButtonVariant.danger,\n continueButtonLabel: \"confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delPermission({\n id,\n type: permissionType,\n permissionId: permissionId,\n });\n addAlert(t(\"permissionDeletedSuccess\"), AlertVariant.success);\n navigate(\n toAuthorizationTab({ realm, clientId: id, tab: \"permissions\" }),\n );\n } catch (error) {\n addError(\"permissionDeletedError\", error);\n }\n },\n });\n\n const resourcesIds = useWatch({\n control,\n name: \"resources\",\n defaultValue: [],\n });\n\n if (!permission) {\n return <KeycloakSpinner />;\n }\n\n return (\n <>\n <DeleteConfirm />\n <ViewHeader\n titleKey={\n permissionId\n ? permission.name!\n : `create${toUpperCase(permissionType)}BasedPermission`\n }\n dropdownItems={\n permissionId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n isDisabled={isDisabled}\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n onSubmit={handleSubmit(save)}\n >\n <FormProvider {...form}>\n <TextControl\n name=\"name\"\n label={t(\"name\")}\n labelIcon={t(\"permissionName\")}\n rules={{\n required: t(\"required\"),\n }}\n />\n <TextAreaControl\n name=\"description\"\n label={t(\"description\")}\n labelIcon={t(\"permissionDescription\")}\n rules={{\n maxLength: {\n value: 255,\n message: t(\"maxLength\", { length: 255 }),\n },\n }}\n />\n <FormGroup\n label={t(\"applyToResourceTypeFlag\")}\n fieldId=\"applyToResourceTypeFlag\"\n labelIcon={\n <HelpItem\n helpText={t(\"applyToResourceTypeFlagHelp\")}\n fieldLabelId=\"applyToResourceTypeFlag\"\n />\n }\n >\n <Switch\n id=\"applyToResourceTypeFlag\"\n name=\"applyToResourceTypeFlag\"\n label={t(\"on\")}\n labelOff={t(\"off\")}\n isChecked={applyToResourceTypeFlag}\n onChange={(_event, val) => setApplyToResourceTypeFlag(val)}\n aria-label={t(\"applyToResourceTypeFlag\")}\n />\n </FormGroup>\n {applyToResourceTypeFlag ? (\n <TextControl\n name=\"resourceType\"\n label={t(\"resourceType\")}\n labelIcon={t(\"resourceTypeHelp\")}\n rules={{\n required: {\n value: permissionType === \"scope\" ? true : false,\n message: t(\"required\"),\n },\n }}\n />\n ) : (\n <FormGroup\n label={t(\"resource\")}\n fieldId=\"resources\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionResources\")}\n fieldLabelId=\"resources\"\n />\n }\n isRequired={permissionType !== \"scope\"}\n >\n <ResourcesPolicySelect\n name=\"resources\"\n clientId={id}\n permissionId={permissionId}\n preSelected={\n permissionType === \"scope\" ? undefined : selectedId\n }\n variant={\n permissionType === \"scope\"\n ? SelectVariant.typeahead\n : SelectVariant.typeaheadMulti\n }\n isRequired={permissionType !== \"scope\"}\n />\n {errors.resources && <FormErrorText message={t(\"required\")} />}\n </FormGroup>\n )}\n {permissionType === \"scope\" && (\n <FormGroup\n label={t(\"authorizationScopes\")}\n fieldId=\"scopes\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionScopesHelp\")}\n fieldLabelId=\"scopesSelect\"\n />\n }\n isRequired\n >\n <ScopeSelect\n clientId={id}\n resourceId={resourcesIds?.[0]}\n preSelected={selectedId}\n />\n {errors.scopes && <FormErrorText message={t(\"required\")} />}\n </FormGroup>\n )}\n <FormGroup\n label={t(\"policies\")}\n fieldId=\"policies\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionPoliciesHelp\")}\n fieldLabelId=\"policies\"\n />\n }\n >\n <ResourcesPolicySelect\n name=\"policies\"\n clientId={id}\n permissionId={permissionId}\n />\n </FormGroup>\n <FormGroup\n label={t(\"decisionStrategy\")}\n labelIcon={\n <HelpItem\n helpText={t(\"permissionDecisionStrategyHelp\")}\n fieldLabelId=\"decisionStrategy\"\n />\n }\n fieldId=\"policyEnforcementMode\"\n hasNoPaddingTop\n >\n <Controller\n name=\"decisionStrategy\"\n data-testid=\"decisionStrategy\"\n defaultValue={DecisionStrategy.UNANIMOUS}\n control={control}\n render={({ field }) => (\n <>\n {Object.values(DecisionStrategy).map((strategy) => (\n <Radio\n id={strategy}\n key={strategy}\n data-testid={strategy}\n isChecked={field.value === strategy}\n isDisabled={isDisabled}\n name=\"decisionStrategies\"\n onChange={() => field.onChange(strategy)}\n label={t(`decisionStrategies.${strategy}`)}\n className=\"pf-v5-u-mb-md\"\n />\n ))}\n </>\n )}\n />\n </FormGroup>\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"permissions\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </div>\n </ActionGroup>\n </FormProvider>\n </FormAccess>\n </PageSection>\n </>\n );\n}\n"],"names":["ScopeSelect","clientId","resourceId","preSelected","adminClient","useAdminClient","t","useTranslation","control","getValues","setValue","errors","useFormContext","scopes","setScopes","useState","selectedScopes","setSelectedScopes","search","setSearch","open","setOpen","firstUpdate","useRef","values","toSelectOptions","scope","jsx","SelectOption","useFetch","s","Controller","value","field","KeycloakSelect","SelectVariant","val","filter","selectedValue","option","changedValue","p","PermissionDetails","form","useForm","reset","handleSubmit","navigate","useNavigate","id","realm","permissionType","permissionId","selectedId","useParams","addAlert","addError","useAlerts","permission","setPermission","applyToResourceTypeFlag","setApplyToResourceTypeFlag","hasAccess","useAccess","isDisabled","resources","policies","r","save","result","toPermissionDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","toAuthorizationTab","resourcesIds","useWatch","jsxs","Fragment","ViewHeader","toUpperCase","DropdownItem","PageSection","FormAccess","FormProvider","TextControl","TextAreaControl","FormGroup","HelpItem","Switch","_event","ResourcesPolicySelect","FormErrorText","DecisionStrategy","strategy","Radio","ActionGroup","Button","props","Link","KeycloakSpinner"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { jsx as e, jsxs as v, Fragment as x } from "react/jsx-runtime";
|
2
|
-
import { u as T, b5 as z, n as H, bd as L, bf as w, bg as C, b6 as M, b7 as j, b8 as E, aP as G, B as K, b as U, b9 as W, ba as Y, aY as J, bm as Q, e as D, bb as F, V as X, aG as Z, P as $, F as ee, c as ae, q as g, bn as se, bo as re, bp as te, A as ne, d as N, h as oe, aO as le, bq as ie, aN as ce } from "./index-
|
2
|
+
import { u as T, b5 as z, n as H, bd as L, bf as w, bg as C, b6 as M, b7 as j, b8 as E, aP as G, B as K, b as U, b9 as W, ba as Y, aY as J, bm as Q, e as D, bb as F, V as X, aG as Z, P as $, F as ee, c as ae, q as g, bn as se, bo as re, bp as te, A as ne, d as N, h as oe, aO as le, bq as ie, aN as ce } from "./index-BJcywEEJ.js";
|
3
3
|
import { useState as m } from "react";
|
4
4
|
import { useTranslation as V } from "react-i18next";
|
5
5
|
import { useNavigate as ue, Link as de } from "react-router-dom";
|
@@ -283,4 +283,4 @@ function Ie() {
|
|
283
283
|
export {
|
284
284
|
Ie as default
|
285
285
|
};
|
286
|
-
//# sourceMappingURL=ResourceDetails-
|
286
|
+
//# sourceMappingURL=ResourceDetails-o5cgUkTJ.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResourceDetails-Cfnqq1uy.js","sources":["../src/clients/authorization/ScopePicker.tsx","../src/clients/authorization/ResourceDetails.tsx"],"sourcesContent":["import type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport {\n HelpItem,\n KeycloakSelect,\n SelectVariant,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { FormGroup, SelectOption } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\n\ntype Scope = {\n id: string;\n name: string;\n};\n\nexport const ScopePicker = ({ clientId }: { clientId: string }) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { control } = useFormContext();\n\n const [open, setOpen] = useState(false);\n const [scopes, setScopes] = useState<ScopeRepresentation[]>();\n const [search, setSearch] = useState(\"\");\n\n useFetch(\n () => {\n const params = {\n id: clientId,\n first: 0,\n max: 20,\n deep: false,\n name: search,\n };\n return adminClient.clients.listAllScopes(params);\n },\n setScopes,\n [search],\n );\n\n const renderScopes = (scopes: ScopeRepresentation[]) =>\n scopes.map((option) => (\n <SelectOption key={option.id} value={option}>\n {option.name}\n </SelectOption>\n ));\n\n if (!scopes) return <KeycloakSpinner />;\n return (\n <FormGroup\n label={t(\"authorizationScopes\")}\n labelIcon={\n <HelpItem helpText={t(\"clientScopesHelp\")} fieldLabelId=\"scopes\" />\n }\n fieldId=\"scopes\"\n >\n <Controller\n name=\"scopes\"\n defaultValue={[]}\n control={control}\n render={({ field }) => (\n <KeycloakSelect\n toggleId=\"scopes\"\n variant={SelectVariant.typeaheadMulti}\n chipGroupProps={{\n numChips: 3,\n expandedText: t(\"hide\"),\n collapsedText: t(\"showRemaining\"),\n }}\n onToggle={(val) => setOpen(val)}\n isOpen={open}\n selections={field.value.map((o: Scope) => o.name)}\n onFilter={(value) => {\n setSearch(value);\n return renderScopes(scopes);\n }}\n onSelect={(selectedValue) => {\n const option =\n typeof selectedValue === \"string\"\n ? selectedValue\n : (selectedValue as Scope).name;\n const changedValue = field.value.find(\n (o: Scope) => o.name === option,\n )\n ? field.value.filter((item: Scope) => item.name !== option)\n : [...field.value, selectedValue];\n field.onChange(changedValue);\n }}\n onClear={() => {\n setSearch(\"\");\n field.onChange([]);\n }}\n typeAheadAriaLabel={t(\"authorizationScopes\")}\n >\n {renderScopes(scopes)}\n </KeycloakSelect>\n )}\n />\n </FormGroup>\n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport {\n HelpItem,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Alert,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { DefaultSwitchControl } from \"../../components/SwitchControl\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeyValueInput } from \"../../components/key-value-form/KeyValueInput\";\nimport type { KeyValueType } from \"../../components/key-value-form/key-value-convert\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\nimport { MultiLineInput } from \"../../components/multi-line-input/MultiLineInput\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { convertFormValuesToObject, convertToFormValues } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport { ResourceDetailsParams, toResourceDetails } from \"../routes/Resource\";\nimport { ScopePicker } from \"./ScopePicker\";\nimport \"./resource-details.css\";\n\ntype SubmittedResource = Omit<\n ResourceRepresentation,\n \"attributes\" | \"scopes\"\n> & {\n attributes: KeyValueType[];\n};\n\nexport default function ResourceDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const [client, setClient] = useState<ClientRepresentation>();\n const [resource, setResource] = useState<ResourceRepresentation>();\n\n const [permissions, setPermission] =\n useState<ResourceServerRepresentation[]>();\n\n const { addAlert, addError } = useAlerts();\n const form = useForm<SubmittedResource>({\n mode: \"onChange\",\n });\n const { setValue, handleSubmit } = form;\n\n const { id, resourceId, realm } = useParams<ResourceDetailsParams>();\n const navigate = useNavigate();\n\n const setupForm = (resource: ResourceRepresentation = {}) => {\n convertToFormValues(resource, setValue);\n };\n\n const { hasAccess } = useAccess();\n\n const isDisabled = !hasAccess(\"manage-authorization\");\n\n useFetch(\n () =>\n Promise.all([\n adminClient.clients.findOne({ id }),\n resourceId\n ? adminClient.clients.getResource({ id, resourceId })\n : Promise.resolve(undefined),\n resourceId\n ? adminClient.clients.listPermissionsByResource({ id, resourceId })\n : Promise.resolve(undefined),\n ]),\n ([client, resource, permissions]) => {\n if (!client) {\n throw new Error(t(\"notFound\"));\n }\n setClient(client);\n setPermission(permissions);\n setResource(resource);\n setupForm(resource);\n },\n [],\n );\n\n const submit = async (submitted: SubmittedResource) => {\n const resource = convertFormValuesToObject<\n SubmittedResource,\n ResourceRepresentation\n >(submitted);\n\n try {\n if (resourceId) {\n await adminClient.clients.updateResource({ id, resourceId }, resource);\n } else {\n const result = await adminClient.clients.createResource(\n { id },\n resource,\n );\n setResource(resource);\n navigate(toResourceDetails({ realm, id, resourceId: result._id! }));\n }\n addAlert(\n t((resourceId ? \"update\" : \"create\") + \"ResourceSuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"resourceSaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteResource\",\n children: (\n <>\n {t(\"deleteResourceConfirm\")}\n {permissions?.length !== 0 && (\n <Alert\n variant=\"warning\"\n isInline\n isPlain\n title={t(\"deleteResourceWarning\")}\n className=\"pf-v5-u-pt-lg\"\n >\n <p className=\"pf-v5-u-pt-xs\">\n {permissions?.map((permission) => (\n <strong key={permission.id} className=\"pf-v5-u-pr-md\">\n {permission.name}\n </strong>\n ))}\n </p>\n </Alert>\n )}\n </>\n ),\n continueButtonLabel: \"confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delResource({\n id,\n resourceId: resourceId!,\n });\n addAlert(t(\"resourceDeletedSuccess\"), AlertVariant.success);\n navigate(toAuthorizationTab({ realm, clientId: id, tab: \"resources\" }));\n } catch (error) {\n addError(\"resourceDeletedError\", error);\n }\n },\n });\n\n if (!client) {\n return <KeycloakSpinner />;\n }\n\n return (\n <>\n <DeleteConfirm />\n <ViewHeader\n titleKey={resourceId ? resource?.name! : \"createResource\"}\n dropdownItems={\n resourceId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n isDisabled={isDisabled}\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n className=\"keycloak__resource-details__form\"\n onSubmit={handleSubmit(submit)}\n >\n <TextControl\n name={resourceId ? \"owner.name\" : \"\"}\n label={t(\"owner\")}\n labelIcon={t(\"ownerHelp\")}\n defaultValue={client.clientId}\n readOnly\n />\n <TextControl\n name={\"name\"}\n label={t(\"name\")}\n labelIcon={t(\"resourceNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"displayName\"\n label={t(\"displayName\")}\n labelIcon={t(\"displayNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"type\"\n label={t(\"type\")}\n labelIcon={t(\"resourceDetailsTypeHelp\")}\n />\n <FormGroup\n label={t(\"uris\")}\n fieldId=\"uris\"\n labelIcon={\n <HelpItem helpText={t(\"urisHelp\")} fieldLabelId=\"uris\" />\n }\n >\n <MultiLineInput\n name=\"uris\"\n type=\"url\"\n aria-label={t(\"uris\")}\n addButtonLabel=\"addUri\"\n />\n </FormGroup>\n <ScopePicker clientId={id} />\n <TextControl\n name=\"icon_uri\"\n label={t(\"iconUri\")}\n labelIcon={t(\"iconUriHelp\")}\n type=\"url\"\n />\n <DefaultSwitchControl\n name=\"ownerManagedAccess\"\n label={t(\"ownerManagedAccess\")}\n labelIcon={t(\"ownerManagedAccessHelp\")}\n />\n <FormGroup\n hasNoPaddingTop\n label={t(\"resourceAttribute\")}\n labelIcon={\n <HelpItem\n helpText={t(\"resourceAttributeHelp\")}\n fieldLabelId=\"resourceAttribute\"\n />\n }\n fieldId=\"resourceAttribute\"\n >\n <KeyValueInput name=\"attributes\" isDisabled={isDisabled} />\n </FormGroup>\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"resources\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </div>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["ScopePicker","clientId","adminClient","useAdminClient","t","useTranslation","control","useFormContext","open","setOpen","useState","scopes","setScopes","search","setSearch","useFetch","params","renderScopes","option","jsx","SelectOption","FormGroup","HelpItem","Controller","field","KeycloakSelect","SelectVariant","val","o","value","selectedValue","changedValue","item","KeycloakSpinner","ResourceDetails","client","setClient","resource","setResource","permissions","setPermission","addAlert","addError","useAlerts","form","useForm","setValue","handleSubmit","id","resourceId","realm","useParams","navigate","useNavigate","setupForm","convertToFormValues","hasAccess","useAccess","isDisabled","submit","submitted","convertFormValuesToObject","result","toResourceDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","jsxs","Fragment","Alert","permission","toAuthorizationTab","ViewHeader","DropdownItem","PageSection","FormProvider","FormAccess","TextControl","MultiLineInput","DefaultSwitchControl","KeyValueInput","ActionGroup","Button","ButtonVariant","props","Link"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ResourceDetails-o5cgUkTJ.js","sources":["../src/clients/authorization/ScopePicker.tsx","../src/clients/authorization/ResourceDetails.tsx"],"sourcesContent":["import type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport {\n HelpItem,\n KeycloakSelect,\n SelectVariant,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { FormGroup, SelectOption } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\n\ntype Scope = {\n id: string;\n name: string;\n};\n\nexport const ScopePicker = ({ clientId }: { clientId: string }) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { control } = useFormContext();\n\n const [open, setOpen] = useState(false);\n const [scopes, setScopes] = useState<ScopeRepresentation[]>();\n const [search, setSearch] = useState(\"\");\n\n useFetch(\n () => {\n const params = {\n id: clientId,\n first: 0,\n max: 20,\n deep: false,\n name: search,\n };\n return adminClient.clients.listAllScopes(params);\n },\n setScopes,\n [search],\n );\n\n const renderScopes = (scopes: ScopeRepresentation[]) =>\n scopes.map((option) => (\n <SelectOption key={option.id} value={option}>\n {option.name}\n </SelectOption>\n ));\n\n if (!scopes) return <KeycloakSpinner />;\n return (\n <FormGroup\n label={t(\"authorizationScopes\")}\n labelIcon={\n <HelpItem helpText={t(\"clientScopesHelp\")} fieldLabelId=\"scopes\" />\n }\n fieldId=\"scopes\"\n >\n <Controller\n name=\"scopes\"\n defaultValue={[]}\n control={control}\n render={({ field }) => (\n <KeycloakSelect\n toggleId=\"scopes\"\n variant={SelectVariant.typeaheadMulti}\n chipGroupProps={{\n numChips: 3,\n expandedText: t(\"hide\"),\n collapsedText: t(\"showRemaining\"),\n }}\n onToggle={(val) => setOpen(val)}\n isOpen={open}\n selections={field.value.map((o: Scope) => o.name)}\n onFilter={(value) => {\n setSearch(value);\n return renderScopes(scopes);\n }}\n onSelect={(selectedValue) => {\n const option =\n typeof selectedValue === \"string\"\n ? selectedValue\n : (selectedValue as Scope).name;\n const changedValue = field.value.find(\n (o: Scope) => o.name === option,\n )\n ? field.value.filter((item: Scope) => item.name !== option)\n : [...field.value, selectedValue];\n field.onChange(changedValue);\n }}\n onClear={() => {\n setSearch(\"\");\n field.onChange([]);\n }}\n typeAheadAriaLabel={t(\"authorizationScopes\")}\n >\n {renderScopes(scopes)}\n </KeycloakSelect>\n )}\n />\n </FormGroup>\n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport {\n HelpItem,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Alert,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { DefaultSwitchControl } from \"../../components/SwitchControl\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeyValueInput } from \"../../components/key-value-form/KeyValueInput\";\nimport type { KeyValueType } from \"../../components/key-value-form/key-value-convert\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\nimport { MultiLineInput } from \"../../components/multi-line-input/MultiLineInput\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { convertFormValuesToObject, convertToFormValues } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport { ResourceDetailsParams, toResourceDetails } from \"../routes/Resource\";\nimport { ScopePicker } from \"./ScopePicker\";\nimport \"./resource-details.css\";\n\ntype SubmittedResource = Omit<\n ResourceRepresentation,\n \"attributes\" | \"scopes\"\n> & {\n attributes: KeyValueType[];\n};\n\nexport default function ResourceDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const [client, setClient] = useState<ClientRepresentation>();\n const [resource, setResource] = useState<ResourceRepresentation>();\n\n const [permissions, setPermission] =\n useState<ResourceServerRepresentation[]>();\n\n const { addAlert, addError } = useAlerts();\n const form = useForm<SubmittedResource>({\n mode: \"onChange\",\n });\n const { setValue, handleSubmit } = form;\n\n const { id, resourceId, realm } = useParams<ResourceDetailsParams>();\n const navigate = useNavigate();\n\n const setupForm = (resource: ResourceRepresentation = {}) => {\n convertToFormValues(resource, setValue);\n };\n\n const { hasAccess } = useAccess();\n\n const isDisabled = !hasAccess(\"manage-authorization\");\n\n useFetch(\n () =>\n Promise.all([\n adminClient.clients.findOne({ id }),\n resourceId\n ? adminClient.clients.getResource({ id, resourceId })\n : Promise.resolve(undefined),\n resourceId\n ? adminClient.clients.listPermissionsByResource({ id, resourceId })\n : Promise.resolve(undefined),\n ]),\n ([client, resource, permissions]) => {\n if (!client) {\n throw new Error(t(\"notFound\"));\n }\n setClient(client);\n setPermission(permissions);\n setResource(resource);\n setupForm(resource);\n },\n [],\n );\n\n const submit = async (submitted: SubmittedResource) => {\n const resource = convertFormValuesToObject<\n SubmittedResource,\n ResourceRepresentation\n >(submitted);\n\n try {\n if (resourceId) {\n await adminClient.clients.updateResource({ id, resourceId }, resource);\n } else {\n const result = await adminClient.clients.createResource(\n { id },\n resource,\n );\n setResource(resource);\n navigate(toResourceDetails({ realm, id, resourceId: result._id! }));\n }\n addAlert(\n t((resourceId ? \"update\" : \"create\") + \"ResourceSuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"resourceSaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteResource\",\n children: (\n <>\n {t(\"deleteResourceConfirm\")}\n {permissions?.length !== 0 && (\n <Alert\n variant=\"warning\"\n isInline\n isPlain\n title={t(\"deleteResourceWarning\")}\n className=\"pf-v5-u-pt-lg\"\n >\n <p className=\"pf-v5-u-pt-xs\">\n {permissions?.map((permission) => (\n <strong key={permission.id} className=\"pf-v5-u-pr-md\">\n {permission.name}\n </strong>\n ))}\n </p>\n </Alert>\n )}\n </>\n ),\n continueButtonLabel: \"confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delResource({\n id,\n resourceId: resourceId!,\n });\n addAlert(t(\"resourceDeletedSuccess\"), AlertVariant.success);\n navigate(toAuthorizationTab({ realm, clientId: id, tab: \"resources\" }));\n } catch (error) {\n addError(\"resourceDeletedError\", error);\n }\n },\n });\n\n if (!client) {\n return <KeycloakSpinner />;\n }\n\n return (\n <>\n <DeleteConfirm />\n <ViewHeader\n titleKey={resourceId ? resource?.name! : \"createResource\"}\n dropdownItems={\n resourceId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n isDisabled={isDisabled}\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n className=\"keycloak__resource-details__form\"\n onSubmit={handleSubmit(submit)}\n >\n <TextControl\n name={resourceId ? \"owner.name\" : \"\"}\n label={t(\"owner\")}\n labelIcon={t(\"ownerHelp\")}\n defaultValue={client.clientId}\n readOnly\n />\n <TextControl\n name={\"name\"}\n label={t(\"name\")}\n labelIcon={t(\"resourceNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"displayName\"\n label={t(\"displayName\")}\n labelIcon={t(\"displayNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"type\"\n label={t(\"type\")}\n labelIcon={t(\"resourceDetailsTypeHelp\")}\n />\n <FormGroup\n label={t(\"uris\")}\n fieldId=\"uris\"\n labelIcon={\n <HelpItem helpText={t(\"urisHelp\")} fieldLabelId=\"uris\" />\n }\n >\n <MultiLineInput\n name=\"uris\"\n type=\"url\"\n aria-label={t(\"uris\")}\n addButtonLabel=\"addUri\"\n />\n </FormGroup>\n <ScopePicker clientId={id} />\n <TextControl\n name=\"icon_uri\"\n label={t(\"iconUri\")}\n labelIcon={t(\"iconUriHelp\")}\n type=\"url\"\n />\n <DefaultSwitchControl\n name=\"ownerManagedAccess\"\n label={t(\"ownerManagedAccess\")}\n labelIcon={t(\"ownerManagedAccessHelp\")}\n />\n <FormGroup\n hasNoPaddingTop\n label={t(\"resourceAttribute\")}\n labelIcon={\n <HelpItem\n helpText={t(\"resourceAttributeHelp\")}\n fieldLabelId=\"resourceAttribute\"\n />\n }\n fieldId=\"resourceAttribute\"\n >\n <KeyValueInput name=\"attributes\" isDisabled={isDisabled} />\n </FormGroup>\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"resources\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </div>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["ScopePicker","clientId","adminClient","useAdminClient","t","useTranslation","control","useFormContext","open","setOpen","useState","scopes","setScopes","search","setSearch","useFetch","params","renderScopes","option","jsx","SelectOption","FormGroup","HelpItem","Controller","field","KeycloakSelect","SelectVariant","val","o","value","selectedValue","changedValue","item","KeycloakSpinner","ResourceDetails","client","setClient","resource","setResource","permissions","setPermission","addAlert","addError","useAlerts","form","useForm","setValue","handleSubmit","id","resourceId","realm","useParams","navigate","useNavigate","setupForm","convertToFormValues","hasAccess","useAccess","isDisabled","submit","submitted","convertFormValuesToObject","result","toResourceDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","jsxs","Fragment","Alert","permission","toAuthorizationTab","ViewHeader","DropdownItem","PageSection","FormProvider","FormAccess","TextControl","MultiLineInput","DefaultSwitchControl","KeyValueInput","ActionGroup","Button","ButtonVariant","props","Link"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { jsxs as c, Fragment as D, jsx as t } from "react/jsx-runtime";
|
2
|
-
import { u as w, b9 as N, B as z, aH as F, b as H, n as k, br as C, bb as l, V as U, aG as B, P, F as V, c as j, q as d, A as q, d as m, h as x, e as E } from "./index-
|
2
|
+
import { u as w, b9 as N, B as z, aH as F, b as H, n as k, br as C, bb as l, V as U, aG as B, P, F as V, c as j, q as d, A as q, d as m, h as x, e as E } from "./index-BJcywEEJ.js";
|
3
3
|
import { useState as T } from "react";
|
4
4
|
import { useTranslation as G } from "react-i18next";
|
5
5
|
import { useNavigate as K, Link as L } from "react-router-dom";
|
@@ -150,4 +150,4 @@ function W() {
|
|
150
150
|
export {
|
151
151
|
W as default
|
152
152
|
};
|
153
|
-
//# sourceMappingURL=ScopeDetails-
|
153
|
+
//# sourceMappingURL=ScopeDetails-DgvIDlC8.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ScopeDetails-
|
1
|
+
{"version":3,"file":"ScopeDetails-DgvIDlC8.js","sources":["../src/clients/authorization/ScopeDetails.tsx"],"sourcesContent":["import type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport { TextControl, useAlerts, useFetch } from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useParams } from \"../../utils/useParams\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport type { ScopeDetailsParams } from \"../routes/Scope\";\nimport { DeleteScopeDialog } from \"./DeleteScopeDialog\";\n\ntype FormFields = Omit<ScopeRepresentation, \"resources\">;\n\nexport default function ScopeDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { id, scopeId, realm } = useParams<ScopeDetailsParams>();\n const navigate = useNavigate();\n const { addAlert, addError } = useAlerts();\n const [deleteDialog, toggleDeleteDialog] = useToggle();\n const [scope, setScope] = useState<ScopeRepresentation>();\n const form = useForm<FormFields>({\n mode: \"onChange\",\n });\n const { reset, handleSubmit } = form;\n\n useFetch(\n async () => {\n if (scopeId) {\n const scope = await adminClient.clients.getAuthorizationScope({\n id,\n scopeId,\n });\n if (!scope) {\n throw new Error(t(\"notFound\"));\n }\n return scope;\n }\n },\n (scope) => {\n setScope(scope);\n reset({ ...scope });\n },\n [],\n );\n\n const onSubmit = async (scope: ScopeRepresentation) => {\n try {\n if (scopeId) {\n await adminClient.clients.updateAuthorizationScope(\n { id, scopeId },\n scope,\n );\n setScope(scope);\n } else {\n await adminClient.clients.createAuthorizationScope(\n { id },\n {\n name: scope.name!,\n displayName: scope.displayName,\n iconUri: scope.iconUri,\n },\n );\n navigate(toAuthorizationTab({ realm, clientId: id, tab: \"scopes\" }));\n }\n addAlert(\n t((scopeId ? \"update\" : \"create\") + \"ScopeSuccess\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"scopeSaveError\", error);\n }\n };\n\n return (\n <>\n <DeleteScopeDialog\n clientId={id}\n open={deleteDialog}\n toggleDialog={toggleDeleteDialog}\n selectedScope={scope}\n refresh={() =>\n navigate(toAuthorizationTab({ realm, clientId: id, tab: \"scopes\" }))\n }\n />\n <ViewHeader\n titleKey={scopeId ? scope?.name! : t(\"createAuthorizationScope\")}\n dropdownItems={\n scopeId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormProvider {...form}>\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <TextControl\n name=\"name\"\n label={t(\"name\")}\n labelIcon={t(\"scopeNameHelp\")}\n rules={{ required: t(\"required\") }}\n />\n <TextControl\n name=\"displayName\"\n label={t(\"displayName\")}\n labelIcon={t(\"scopeDisplayNameHelp\")}\n />\n <TextControl\n name=\"iconUri\"\n label={t(\"iconUri\")}\n labelIcon={t(\"iconUriHelp\")}\n />\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n {!scope ? (\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"scopes\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n ) : (\n <Button\n variant=\"link\"\n data-testid=\"revert\"\n onClick={() => reset({ ...scope })}\n >\n {t(\"revert\")}\n </Button>\n )}\n </div>\n </ActionGroup>\n </FormAccess>\n </FormProvider>\n </PageSection>\n </>\n );\n}\n"],"names":["ScopeDetails","adminClient","useAdminClient","t","useTranslation","id","scopeId","realm","useParams","navigate","useNavigate","addAlert","addError","useAlerts","deleteDialog","toggleDeleteDialog","useToggle","scope","setScope","useState","form","useForm","reset","handleSubmit","useFetch","onSubmit","toAuthorizationTab","AlertVariant","error","jsxs","Fragment","jsx","DeleteScopeDialog","ViewHeader","DropdownItem","PageSection","FormProvider","FormAccess","TextControl","ActionGroup","Button","ButtonVariant","props","Link"],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { bJ as R, x as z } from "./index-
|
1
|
+
import { bJ as R, x as z } from "./index-BJcywEEJ.js";
|
2
2
|
function $(w, d) {
|
3
3
|
for (var b = 0; b < d.length; b++) {
|
4
4
|
const y = d[b];
|
@@ -339,4 +339,4 @@ const J = /* @__PURE__ */ z(j), Q = /* @__PURE__ */ $({
|
|
339
339
|
export {
|
340
340
|
Q as b
|
341
341
|
};
|
342
|
-
//# sourceMappingURL=browser-ponyfill-
|
342
|
+
//# sourceMappingURL=browser-ponyfill-C_ISF2Ak.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"browser-ponyfill-uH6p8znu.js","sources":["../../../node_modules/.pnpm/cross-fetch@4.0.0/node_modules/cross-fetch/dist/browser-ponyfill.js"],"sourcesContent":["// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n"],"names":["__global__","global","__globalThis__","F","globalThis","exports","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","name","normalizeValue","value","iteratorFor","items","iterator","Headers","headers","header","oldValue","callback","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","readArrayBufferAsText","buf","view","chars","i","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","options","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","key","Response","bodyInit","response","redirectStatuses","url","status","message","error","fetch","init","request","xhr","abortXhr","fixUrl","ctx","module"],"mappings":"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","x_google_ignoreList":[0]}
|
1
|
+
{"version":3,"file":"browser-ponyfill-C_ISF2Ak.js","sources":["../../../node_modules/.pnpm/cross-fetch@4.0.0/node_modules/cross-fetch/dist/browser-ponyfill.js"],"sourcesContent":["// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global);\n\n var support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = global.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!global.fetch) {\n global.fetch = fetch;\n global.Headers = Headers;\n global.Request = Request;\n global.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n"],"names":["__global__","global","__globalThis__","F","globalThis","exports","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","name","normalizeValue","value","iteratorFor","items","iterator","Headers","headers","header","oldValue","callback","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","readArrayBufferAsText","buf","view","chars","i","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","options","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","key","Response","bodyInit","response","redirectStatuses","url","status","message","error","fetch","init","request","xhr","abortXhr","fixUrl","ctx","module"],"mappings":"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","x_google_ignoreList":[0]}
|