@webiny/languages 6.3.0 → 6.4.0-beta.1
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/Languages.js +8 -9
- package/Languages.js.map +1 -1
- package/admin/Extension.js +21 -25
- package/admin/Extension.js.map +1 -1
- package/admin/GenericCell.js +7 -12
- package/admin/GenericCell.js.map +1 -1
- package/admin/LanguageEntryList.js +31 -30
- package/admin/LanguageEntryList.js.map +1 -1
- package/admin/PermissionsSchema.js +5 -4
- package/admin/PermissionsSchema.js.map +1 -1
- package/admin/SecurityPermission.js +11 -14
- package/admin/SecurityPermission.js.map +1 -1
- package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.js +14 -11
- package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.js.map +1 -1
- package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js +12 -11
- package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js.map +1 -1
- package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js +16 -17
- package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js.map +1 -1
- package/admin/features/listLanguages/ListLanguagesGateway.js +18 -17
- package/admin/features/listLanguages/ListLanguagesGateway.js.map +1 -1
- package/admin/features/listLanguages/ListLanguagesRepository.js +23 -23
- package/admin/features/listLanguages/ListLanguagesRepository.js.map +1 -1
- package/admin/features/listLanguages/ListLanguagesUseCase.js +13 -10
- package/admin/features/listLanguages/ListLanguagesUseCase.js.map +1 -1
- package/admin/features/listLanguages/abstractions.js +5 -27
- package/admin/features/listLanguages/abstractions.js.map +1 -1
- package/admin/features/listLanguages/feature.js +22 -21
- package/admin/features/listLanguages/feature.js.map +1 -1
- package/admin/features/listLanguages/index.js +0 -2
- package/admin/features/listLanguages/toLanguageDto.js +10 -9
- package/admin/features/listLanguages/toLanguageDto.js.map +1 -1
- package/admin/presentation/hooks/useLanguages.js +20 -19
- package/admin/presentation/hooks/useLanguages.js.map +1 -1
- package/api/Extension.js +12 -15
- package/api/Extension.js.map +1 -1
- package/api/domain/Language.js +0 -3
- package/api/domain/LanguageModel.js +49 -24
- package/api/domain/LanguageModel.js.map +1 -1
- package/api/domain/errors.js +16 -17
- package/api/domain/errors.js.map +1 -1
- package/api/domain/permissionsSchema.js +5 -4
- package/api/domain/permissionsSchema.js.map +1 -1
- package/api/features/AddCmsPermissions/AddCmsPermissions.js +41 -32
- package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -1
- package/api/features/AddCmsPermissions/feature.js +6 -5
- package/api/features/AddCmsPermissions/feature.js.map +1 -1
- package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js +36 -46
- package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js.map +1 -1
- package/api/features/EnsureSingleDefaultLanguage/feature.js +6 -5
- package/api/features/EnsureSingleDefaultLanguage/feature.js.map +1 -1
- package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.js +36 -40
- package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.js.map +1 -1
- package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.js +14 -11
- package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.js.map +1 -1
- package/api/features/GetLanguageByCode/abstractions.js +3 -13
- package/api/features/GetLanguageByCode/abstractions.js.map +1 -1
- package/api/features/GetLanguageByCode/feature.js +7 -6
- package/api/features/GetLanguageByCode/feature.js.map +1 -1
- package/api/features/GetLanguageByCode/index.js +0 -2
- package/api/features/ListLanguages/ListLanguagesRepository.js +36 -34
- package/api/features/ListLanguages/ListLanguagesRepository.js.map +1 -1
- package/api/features/ListLanguages/ListLanguagesUseCase.js +14 -11
- package/api/features/ListLanguages/ListLanguagesUseCase.js.map +1 -1
- package/api/features/ListLanguages/abstractions.js +3 -13
- package/api/features/ListLanguages/abstractions.js.map +1 -1
- package/api/features/ListLanguages/feature.js +7 -6
- package/api/features/ListLanguages/feature.js.map +1 -1
- package/api/features/ListLanguages/index.js +0 -2
- package/api/features/Permissions/abstractions.js +2 -1
- package/api/features/Permissions/abstractions.js.map +1 -1
- package/api/features/Permissions/feature.js +2 -1
- package/api/features/Permissions/feature.js.map +1 -1
- package/api/graphql/LanguagesGraphQLSchema.js +24 -31
- package/api/graphql/LanguagesGraphQLSchema.js.map +1 -1
- package/exports/admin/languages.js +0 -2
- package/exports/api/languages.js +0 -2
- package/index.js +0 -2
- package/package.json +21 -21
- package/shared/constants.js +2 -1
- package/shared/constants.js.map +1 -1
- package/admin/features/listLanguages/index.js.map +0 -1
- package/api/domain/Language.js.map +0 -1
- package/api/features/GetLanguageByCode/index.js.map +0 -1
- package/api/features/ListLanguages/index.js.map +0 -1
- package/exports/admin/languages.js.map +0 -1
- package/exports/api/languages.js.map +0 -1
- package/index.js.map +0 -1
package/Languages.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { Admin, Api } from "@webiny/project-aws";
|
|
3
3
|
import { Wcp } from "@webiny/project";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
4
|
+
const Languages = ()=>/*#__PURE__*/ react.createElement(Wcp.CanUseMultiTenancy, null, /*#__PURE__*/ react.createElement(Api.Extension, {
|
|
5
|
+
src: import.meta.dirname + "/api/Extension.js"
|
|
6
|
+
}), /*#__PURE__*/ react.createElement(Admin.Extension, {
|
|
7
|
+
src: import.meta.dirname + "/admin/Extension.js"
|
|
8
|
+
}));
|
|
9
|
+
export { Languages };
|
|
11
10
|
|
|
12
11
|
//# sourceMappingURL=Languages.js.map
|
package/Languages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Languages.js","sources":["../src/Languages.tsx"],"sourcesContent":["import React from \"react\";\nimport { Api, Admin } from \"@webiny/project-aws\";\nimport { Wcp } from \"@webiny/project\";\n\nexport const Languages = () => {\n return (\n <Wcp.CanUseMultiTenancy>\n {/* Api extensions */}\n <Api.Extension src={import.meta.dirname + \"/api/Extension.js\"} />\n\n {/* Admin extensions */}\n <Admin.Extension src={import.meta.dirname + \"/admin/Extension.js\"} />\n </Wcp.CanUseMultiTenancy>\n );\n};\n"],"names":["Languages","Wcp","Api","Admin"],"mappings":";;;AAIO,MAAMA,YAAY,IACd,WAAP,GACI,oBAACC,IAAI,kBAAkB,sBAEnB,oBAACC,IAAI,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG;sBAG1C,oBAACC,MAAM,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG"}
|
package/admin/Extension.js
CHANGED
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { AdminConfig, HasPermission, RegisterFeature } from "@webiny/app-admin";
|
|
3
|
-
import { useRouter } from "@webiny/app-admin";
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { AdminConfig, HasPermission, RegisterFeature, useRouter } from "@webiny/app-admin";
|
|
4
3
|
import { Routes } from "@webiny/app-headless-cms";
|
|
5
4
|
import { LANGUAGE_MODEL_ID } from "../shared/constants.js";
|
|
6
5
|
import { SecurityPermission } from "./SecurityPermission.js";
|
|
7
6
|
import { LanguageEntryList } from "./LanguageEntryList.js";
|
|
8
7
|
import { ListLanguagesFeature } from "./features/listLanguages/index.js";
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
-
} =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
text: "Languages",
|
|
28
|
-
to: link
|
|
29
|
-
})
|
|
30
|
-
}))), /*#__PURE__*/React.createElement(LanguageEntryList, null));
|
|
8
|
+
const { Menu: Menu } = AdminConfig;
|
|
9
|
+
const Extension = ()=>{
|
|
10
|
+
const { getLink } = useRouter();
|
|
11
|
+
const link = getLink(Routes.ContentEntries.List, {
|
|
12
|
+
modelId: LANGUAGE_MODEL_ID
|
|
13
|
+
});
|
|
14
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
15
|
+
feature: ListLanguagesFeature
|
|
16
|
+
}), /*#__PURE__*/ react.createElement(SecurityPermission, null), /*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(HasPermission, {
|
|
17
|
+
name: "languages.*"
|
|
18
|
+
}, /*#__PURE__*/ react.createElement(Menu, {
|
|
19
|
+
parent: "settings.system",
|
|
20
|
+
name: "languages",
|
|
21
|
+
element: /*#__PURE__*/ react.createElement(Menu.Link, {
|
|
22
|
+
text: "Languages",
|
|
23
|
+
to: link
|
|
24
|
+
})
|
|
25
|
+
}))), /*#__PURE__*/ react.createElement(LanguageEntryList, null));
|
|
31
26
|
};
|
|
27
|
+
export { Extension };
|
|
32
28
|
|
|
33
29
|
//# sourceMappingURL=Extension.js.map
|
package/admin/Extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/Extension.js","sources":["../../src/admin/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, HasPermission, RegisterFeature } from \"@webiny/app-admin\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"@webiny/app-headless-cms\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { SecurityPermission } from \"./SecurityPermission.js\";\nimport { LanguageEntryList } from \"~/admin/LanguageEntryList.js\";\nimport { ListLanguagesFeature } from \"./features/listLanguages/index.js\";\n\nconst { Menu } = AdminConfig;\n\nexport const Extension = () => {\n const { getLink } = useRouter();\n\n const link = getLink(Routes.ContentEntries.List, { modelId: LANGUAGE_MODEL_ID });\n\n return (\n <>\n <RegisterFeature feature={ListLanguagesFeature} />\n <SecurityPermission />\n <AdminConfig>\n <HasPermission name={\"languages.*\"}>\n <Menu\n parent={\"settings.system\"}\n name=\"languages\"\n element={<Menu.Link text=\"Languages\" to={link} />}\n />\n </HasPermission>\n </AdminConfig>\n <LanguageEntryList />\n </>\n );\n};\n"],"names":["Menu","AdminConfig","Extension","getLink","useRouter","link","Routes","LANGUAGE_MODEL_ID","RegisterFeature","ListLanguagesFeature","SecurityPermission","HasPermission","LanguageEntryList"],"mappings":";;;;;;;AASA,MAAM,EAAEA,MAAAA,IAAI,EAAE,GAAGC;AAEV,MAAMC,YAAY;IACrB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,MAAMC,OAAOF,QAAQG,OAAO,cAAc,CAAC,IAAI,EAAE;QAAE,SAASC;IAAkB;IAE9E,OAAO,WAAP,GACI,wDACI,oBAACC,iBAAeA;QAAC,SAASC;sBAC1B,oBAACC,oBAAkBA,OAAAA,WAAAA,GACnB,oBAACT,aAAWA,MAAAA,WAAAA,GACR,oBAACU,eAAaA;QAAC,MAAM;qBACjB,oBAACX,MAAIA;QACD,QAAQ;QACR,MAAK;QACL,uBAAS,oBAACA,KAAK,IAAI;YAAC,MAAK;YAAY,IAAIK;;wBAIrD,oBAACO,mBAAiBA;AAG9B"}
|
package/admin/GenericCell.js
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { ContentEntryListConfig } from "@webiny/app-headless-cms";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
useTableRow
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
row
|
|
9
|
-
} = useTableRow();
|
|
10
|
-
if (!row.data.createdOn) {
|
|
11
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, "-");
|
|
12
|
-
}
|
|
13
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, props.render(row.data));
|
|
3
|
+
const GenericCell = (props)=>{
|
|
4
|
+
const { useTableRow } = ContentEntryListConfig.Browser.Table.Column;
|
|
5
|
+
const { row } = useTableRow();
|
|
6
|
+
if (!row.data.createdOn) return /*#__PURE__*/ react.createElement(react.Fragment, null, "-");
|
|
7
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, props.render(row.data));
|
|
14
8
|
};
|
|
9
|
+
export { GenericCell };
|
|
15
10
|
|
|
16
11
|
//# sourceMappingURL=GenericCell.js.map
|
package/admin/GenericCell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/GenericCell.js","sources":["../../src/admin/GenericCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport type { CmsContentEntry } from \"@webiny/app-headless-cms/types.js\";\n\nexport interface GenericCellProps {\n render: (data: CmsContentEntry) => React.ReactNode;\n}\n\nexport const GenericCell = (props: GenericCellProps) => {\n const { useTableRow } = ContentEntryListConfig.Browser.Table.Column;\n const { row } = useTableRow<CmsContentEntry>();\n\n if (!row.data.createdOn) {\n return <>{\"-\"}</>;\n }\n\n return <>{props.render(row.data)}</>;\n};\n"],"names":["GenericCell","props","useTableRow","ContentEntryListConfig","row"],"mappings":";;AAQO,MAAMA,cAAc,CAACC;IACxB,MAAM,EAAEC,WAAW,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IACnE,MAAM,EAAEC,GAAG,EAAE,GAAGF;IAEhB,IAAI,CAACE,IAAI,IAAI,CAAC,SAAS,EACnB,OAAO,WAAP,GAAO,0CAAG;IAGd,OAAO,WAAP,GAAO,0CAAGH,MAAM,MAAM,CAACG,IAAI,IAAI;AACnC"}
|
|
@@ -1,36 +1,37 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { ContentEntryListConfig } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
3
3
|
import { LANGUAGE_MODEL_ID } from "../shared/constants.js";
|
|
4
4
|
import { GenericCell } from "./GenericCell.js";
|
|
5
5
|
import { Tag } from "@webiny/admin-ui";
|
|
6
|
-
const {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
};
|
|
6
|
+
const { Browser: Browser } = ContentEntryListConfig;
|
|
7
|
+
const LanguageEntryList = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.Table.Column, {
|
|
8
|
+
name: "code",
|
|
9
|
+
header: "Code",
|
|
10
|
+
modelIds: [
|
|
11
|
+
LANGUAGE_MODEL_ID
|
|
12
|
+
],
|
|
13
|
+
after: "name",
|
|
14
|
+
cell: /*#__PURE__*/ react.createElement(GenericCell, {
|
|
15
|
+
render: (data)=>data.values.code
|
|
16
|
+
})
|
|
17
|
+
}), /*#__PURE__*/ react.createElement(Browser.Table.Column, {
|
|
18
|
+
name: "enabled",
|
|
19
|
+
header: "Is enabled?",
|
|
20
|
+
modelIds: [
|
|
21
|
+
LANGUAGE_MODEL_ID
|
|
22
|
+
],
|
|
23
|
+
after: "code",
|
|
24
|
+
cell: /*#__PURE__*/ react.createElement(GenericCell, {
|
|
25
|
+
render: (data)=>{
|
|
26
|
+
const enabled = data.values.enabled;
|
|
27
|
+
const variant = enabled ? "success" : "neutral-muted";
|
|
28
|
+
return /*#__PURE__*/ react.createElement(Tag, {
|
|
29
|
+
variant: variant,
|
|
30
|
+
content: enabled ? "Yes" : "No"
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
})));
|
|
35
|
+
export { LanguageEntryList };
|
|
35
36
|
|
|
36
37
|
//# sourceMappingURL=LanguageEntryList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/LanguageEntryList.js","sources":["../../src/admin/LanguageEntryList.tsx"],"sourcesContent":["import React from \"react\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { GenericCell } from \"~/admin/GenericCell.js\";\nimport { Tag } from \"@webiny/admin-ui\";\n\nconst { Browser } = ContentEntryListConfig;\n\nexport const LanguageEntryList = () => {\n return (\n <>\n <ContentEntryListConfig>\n <Browser.Table.Column\n name={\"code\"}\n header={\"Code\"}\n modelIds={[LANGUAGE_MODEL_ID]}\n after={\"name\"}\n cell={<GenericCell render={data => data.values.code} />}\n />\n <Browser.Table.Column\n name={\"enabled\"}\n header={\"Is enabled?\"}\n modelIds={[LANGUAGE_MODEL_ID]}\n after={\"code\"}\n cell={\n <GenericCell\n render={data => {\n const enabled = data.values.enabled;\n const variant = enabled ? \"success\" : \"neutral-muted\";\n return <Tag variant={variant} content={enabled ? \"Yes\" : \"No\"} />;\n }}\n />\n }\n />\n </ContentEntryListConfig>\n </>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","LanguageEntryList","LANGUAGE_MODEL_ID","GenericCell","data","enabled","variant","Tag"],"mappings":";;;;;AAMA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AAEb,MAAMC,oBAAoB,IACtB,WAAP,GACI,wDACI,oBAACD,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,KAAK,CAAC,MAAM;QACjB,MAAM;QACN,QAAQ;QACR,UAAU;YAACG;SAAkB;QAC7B,OAAO;QACP,oBAAM,oBAACC,aAAWA;YAAC,QAAQC,CAAAA,OAAQA,KAAK,MAAM,CAAC,IAAI;;sBAEvD,oBAACL,QAAQ,KAAK,CAAC,MAAM;QACjB,MAAM;QACN,QAAQ;QACR,UAAU;YAACG;SAAkB;QAC7B,OAAO;QACP,oBACI,oBAACC,aAAWA;YACR,QAAQC,CAAAA;gBACJ,MAAMC,UAAUD,KAAK,MAAM,CAAC,OAAO;gBACnC,MAAME,UAAUD,UAAU,YAAY;gBACtC,OAAO,WAAP,GAAO,oBAACE,KAAGA;oBAAC,SAASD;oBAAS,SAASD,UAAU,QAAQ;;YAC7D"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { createPermissionSchema } from "@webiny/app-admin";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
const LANGUAGES_PERMISSIONS_SCHEMA = createPermissionSchema({
|
|
3
|
+
prefix: "languages",
|
|
4
|
+
fullAccess: true,
|
|
5
|
+
readOnlyAccess: true
|
|
6
6
|
});
|
|
7
|
+
export { LANGUAGES_PERMISSIONS_SCHEMA };
|
|
7
8
|
|
|
8
9
|
//# sourceMappingURL=PermissionsSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/PermissionsSchema.js","sources":["../../src/admin/PermissionsSchema.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const LANGUAGES_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"languages\",\n fullAccess: true,\n readOnlyAccess: true\n});\n"],"names":["LANGUAGES_PERMISSIONS_SCHEMA","createPermissionSchema"],"mappings":";AAEO,MAAMA,+BAA+BC,uBAAuB;IAC/D,QAAQ;IACR,YAAY;IACZ,gBAAgB;AACpB"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import react from "react";
|
|
2
2
|
import { AdminConfig } from "@webiny/app-admin";
|
|
3
|
-
import { ReactComponent
|
|
3
|
+
import { ReactComponent } from "@webiny/icons/language.svg";
|
|
4
4
|
import { LANGUAGES_PERMISSIONS_SCHEMA } from "./PermissionsSchema.js";
|
|
5
|
-
const {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
schema: LANGUAGES_PERMISSIONS_SCHEMA
|
|
15
|
-
}));
|
|
16
|
-
};
|
|
5
|
+
const { Security: Security } = AdminConfig;
|
|
6
|
+
const SecurityPermission = ()=>/*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(Security.Permissions, {
|
|
7
|
+
name: "languages",
|
|
8
|
+
title: "Languages",
|
|
9
|
+
description: "Manage language permissions.",
|
|
10
|
+
icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
|
|
11
|
+
schema: LANGUAGES_PERMISSIONS_SCHEMA
|
|
12
|
+
}));
|
|
13
|
+
export { SecurityPermission };
|
|
17
14
|
|
|
18
15
|
//# sourceMappingURL=SecurityPermission.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/SecurityPermission.js","sources":["../../src/admin/SecurityPermission.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"@webiny/app-admin\";\nimport { ReactComponent as PermissionsIcon } from \"@webiny/icons/language.svg\";\nimport { LANGUAGES_PERMISSIONS_SCHEMA } from \"~/admin/PermissionsSchema.js\";\n\nconst { Security } = AdminConfig;\n\nexport const SecurityPermission = () => {\n return (\n <AdminConfig>\n <Security.Permissions\n name=\"languages\"\n title=\"Languages\"\n description=\"Manage language permissions.\"\n icon={<PermissionsIcon />}\n schema={LANGUAGES_PERMISSIONS_SCHEMA}\n />\n </AdminConfig>\n );\n};\n"],"names":["Security","AdminConfig","SecurityPermission","PermissionsIcon","LANGUAGES_PERMISSIONS_SCHEMA"],"mappings":";;;;AAKA,MAAM,EAAEA,UAAAA,QAAQ,EAAE,GAAGC;AAEd,MAAMC,qBAAqB,IACvB,WAAP,GACI,oBAACD,aAAWA,MAAAA,WAAAA,GACR,oBAACD,SAAS,WAAW;QACjB,MAAK;QACL,OAAM;QACN,aAAY;QACZ,oBAAM,oBAACG,gBAAeA;QACtB,QAAQC"}
|
|
@@ -3,19 +3,22 @@ import { LanguagesCache } from "./abstractions.js";
|
|
|
3
3
|
import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
|
|
4
4
|
import { toLanguageDto } from "./toLanguageDto.js";
|
|
5
5
|
class LanguageEntryAfterCreateHandlerImpl {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
constructor(cache){
|
|
7
|
+
this.cache = cache;
|
|
8
|
+
}
|
|
9
|
+
async handle(event) {
|
|
10
|
+
if (event.payload.model.modelId !== LANGUAGE_MODEL_ID) return;
|
|
11
|
+
this.cache.addItems([
|
|
12
|
+
toLanguageDto(event.payload.entry)
|
|
13
|
+
]);
|
|
12
14
|
}
|
|
13
|
-
this.cache.addItems([toLanguageDto(event.payload.entry)]);
|
|
14
|
-
}
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const LanguageEntryAfterCreateHandler = EntryAfterCreateEventHandler.createImplementation({
|
|
17
|
+
implementation: LanguageEntryAfterCreateHandlerImpl,
|
|
18
|
+
dependencies: [
|
|
19
|
+
LanguagesCache
|
|
20
|
+
]
|
|
19
21
|
});
|
|
22
|
+
export { LanguageEntryAfterCreateHandler };
|
|
20
23
|
|
|
21
24
|
//# sourceMappingURL=LanguageEntryAfterCreateHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/features/listLanguages/LanguageEntryAfterCreateHandler.js","sources":["../../../../src/admin/features/listLanguages/LanguageEntryAfterCreateHandler.ts"],"sourcesContent":["import { EntryAfterCreateEventHandler } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { LanguagesCache } from \"./abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { toLanguageDto } from \"./toLanguageDto.js\";\n\nclass LanguageEntryAfterCreateHandlerImpl implements EntryAfterCreateEventHandler.Interface {\n constructor(private cache: LanguagesCache.Interface) {}\n\n async handle(event: EntryAfterCreateEventHandler.Event): Promise<void> {\n if (event.payload.model.modelId !== LANGUAGE_MODEL_ID) {\n return;\n }\n\n this.cache.addItems([toLanguageDto(event.payload.entry)]);\n }\n}\n\nexport const LanguageEntryAfterCreateHandler = EntryAfterCreateEventHandler.createImplementation({\n implementation: LanguageEntryAfterCreateHandlerImpl,\n dependencies: [LanguagesCache]\n});\n"],"names":["LanguageEntryAfterCreateHandlerImpl","cache","event","LANGUAGE_MODEL_ID","toLanguageDto","LanguageEntryAfterCreateHandler","EntryAfterCreateEventHandler","LanguagesCache"],"mappings":";;;;AAKA,MAAMA;IACF,YAAoBC,KAA+B,CAAE;aAAjCA,KAAK,GAALA;IAAkC;IAEtD,MAAM,OAAOC,KAAyC,EAAiB;QACnE,IAAIA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,KAAKC,mBAChC;QAGJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAACC,cAAcF,MAAM,OAAO,CAAC,KAAK;SAAE;IAC5D;AACJ;AAEO,MAAMG,kCAAkCC,6BAA6B,oBAAoB,CAAC;IAC7F,gBAAgBN;IAChB,cAAc;QAACO;KAAe;AAClC"}
|
|
@@ -2,19 +2,20 @@ import { EntryAfterDeleteEventHandler } from "@webiny/app-headless-cms/exports/a
|
|
|
2
2
|
import { LanguagesCache } from "./abstractions.js";
|
|
3
3
|
import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
|
|
4
4
|
class LanguageEntryAfterDeleteHandlerImpl {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
constructor(cache){
|
|
6
|
+
this.cache = cache;
|
|
7
|
+
}
|
|
8
|
+
async handle(event) {
|
|
9
|
+
if (event.payload.model.modelId !== LANGUAGE_MODEL_ID) return;
|
|
10
|
+
this.cache.removeItems((item)=>item.id === event.payload.entryId);
|
|
11
11
|
}
|
|
12
|
-
this.cache.removeItems(item => item.id === event.payload.entryId);
|
|
13
|
-
}
|
|
14
12
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const LanguageEntryAfterDeleteHandler = EntryAfterDeleteEventHandler.createImplementation({
|
|
14
|
+
implementation: LanguageEntryAfterDeleteHandlerImpl,
|
|
15
|
+
dependencies: [
|
|
16
|
+
LanguagesCache
|
|
17
|
+
]
|
|
18
18
|
});
|
|
19
|
+
export { LanguageEntryAfterDeleteHandler };
|
|
19
20
|
|
|
20
21
|
//# sourceMappingURL=LanguageEntryAfterDeleteHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js","sources":["../../../../src/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.ts"],"sourcesContent":["import { EntryAfterDeleteEventHandler } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { LanguagesCache } from \"./abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\n\nclass LanguageEntryAfterDeleteHandlerImpl implements EntryAfterDeleteEventHandler.Interface {\n constructor(private cache: LanguagesCache.Interface) {}\n\n async handle(event: EntryAfterDeleteEventHandler.Event): Promise<void> {\n if (event.payload.model.modelId !== LANGUAGE_MODEL_ID) {\n return;\n }\n\n this.cache.removeItems(item => item.id === event.payload.entryId);\n }\n}\n\nexport const LanguageEntryAfterDeleteHandler = EntryAfterDeleteEventHandler.createImplementation({\n implementation: LanguageEntryAfterDeleteHandlerImpl,\n dependencies: [LanguagesCache]\n});\n"],"names":["LanguageEntryAfterDeleteHandlerImpl","cache","event","LANGUAGE_MODEL_ID","item","LanguageEntryAfterDeleteHandler","EntryAfterDeleteEventHandler","LanguagesCache"],"mappings":";;;AAIA,MAAMA;IACF,YAAoBC,KAA+B,CAAE;aAAjCA,KAAK,GAALA;IAAkC;IAEtD,MAAM,OAAOC,KAAyC,EAAiB;QACnE,IAAIA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,KAAKC,mBAChC;QAGJ,IAAI,CAAC,KAAK,CAAC,WAAW,CAACC,CAAAA,OAAQA,KAAK,EAAE,KAAKF,MAAM,OAAO,CAAC,OAAO;IACpE;AACJ;AAEO,MAAMG,kCAAkCC,6BAA6B,oBAAoB,CAAC;IAC7F,gBAAgBN;IAChB,cAAc;QAACO;KAAe;AAClC"}
|
|
@@ -3,25 +3,24 @@ import { LanguagesCache } from "./abstractions.js";
|
|
|
3
3
|
import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
|
|
4
4
|
import { toLanguageDto } from "./toLanguageDto.js";
|
|
5
5
|
class LanguageEntryAfterUpdateHandlerImpl {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
constructor(cache){
|
|
7
|
+
this.cache = cache;
|
|
8
|
+
}
|
|
9
|
+
async handle(event) {
|
|
10
|
+
if (event.payload.model.modelId !== LANGUAGE_MODEL_ID) return;
|
|
11
|
+
const updated = toLanguageDto(event.payload.entry);
|
|
12
|
+
this.cache.updateItems((item)=>{
|
|
13
|
+
if (item.id === updated.id) return updated;
|
|
14
|
+
return item;
|
|
15
|
+
});
|
|
12
16
|
}
|
|
13
|
-
const updated = toLanguageDto(event.payload.entry);
|
|
14
|
-
this.cache.updateItems(item => {
|
|
15
|
-
if (item.id === updated.id) {
|
|
16
|
-
return updated;
|
|
17
|
-
}
|
|
18
|
-
return item;
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
17
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
const LanguageEntryAfterUpdateHandler = EntryAfterUpdateEventHandler.createImplementation({
|
|
19
|
+
implementation: LanguageEntryAfterUpdateHandlerImpl,
|
|
20
|
+
dependencies: [
|
|
21
|
+
LanguagesCache
|
|
22
|
+
]
|
|
25
23
|
});
|
|
24
|
+
export { LanguageEntryAfterUpdateHandler };
|
|
26
25
|
|
|
27
26
|
//# sourceMappingURL=LanguageEntryAfterUpdateHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js","sources":["../../../../src/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.ts"],"sourcesContent":["import { EntryAfterUpdateEventHandler } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { LanguagesCache } from \"./abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { toLanguageDto } from \"./toLanguageDto.js\";\n\nclass LanguageEntryAfterUpdateHandlerImpl implements EntryAfterUpdateEventHandler.Interface {\n constructor(private cache: LanguagesCache.Interface) {}\n\n async handle(event: EntryAfterUpdateEventHandler.Event): Promise<void> {\n if (event.payload.model.modelId !== LANGUAGE_MODEL_ID) {\n return;\n }\n\n const updated = toLanguageDto(event.payload.entry);\n this.cache.updateItems(item => {\n if (item.id === updated.id) {\n return updated;\n }\n return item;\n });\n }\n}\n\nexport const LanguageEntryAfterUpdateHandler = EntryAfterUpdateEventHandler.createImplementation({\n implementation: LanguageEntryAfterUpdateHandlerImpl,\n dependencies: [LanguagesCache]\n});\n"],"names":["LanguageEntryAfterUpdateHandlerImpl","cache","event","LANGUAGE_MODEL_ID","updated","toLanguageDto","item","LanguageEntryAfterUpdateHandler","EntryAfterUpdateEventHandler","LanguagesCache"],"mappings":";;;;AAKA,MAAMA;IACF,YAAoBC,KAA+B,CAAE;aAAjCA,KAAK,GAALA;IAAkC;IAEtD,MAAM,OAAOC,KAAyC,EAAiB;QACnE,IAAIA,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,KAAKC,mBAChC;QAGJ,MAAMC,UAAUC,cAAcH,MAAM,OAAO,CAAC,KAAK;QACjD,IAAI,CAAC,KAAK,CAAC,WAAW,CAACI,CAAAA;YACnB,IAAIA,KAAK,EAAE,KAAKF,QAAQ,EAAE,EACtB,OAAOA;YAEX,OAAOE;QACX;IACJ;AACJ;AAEO,MAAMC,kCAAkCC,6BAA6B,oBAAoB,CAAC;IAC7F,gBAAgBR;IAChB,cAAc;QAACS;KAAe;AAClC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ListLanguagesGateway
|
|
1
|
+
import { ListLanguagesGateway } from "./abstractions.js";
|
|
2
2
|
import { MainGraphQLClient } from "@webiny/app/features/mainGraphQLClient";
|
|
3
|
-
const LIST_LANGUAGES =
|
|
3
|
+
const LIST_LANGUAGES = `
|
|
4
4
|
query ListLanguages {
|
|
5
5
|
languages {
|
|
6
6
|
listLanguages {
|
|
@@ -21,23 +21,24 @@ const LIST_LANGUAGES = /* GraphQL */`
|
|
|
21
21
|
}
|
|
22
22
|
`;
|
|
23
23
|
class ListLanguagesGatewayImpl {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
constructor(client){
|
|
25
|
+
this.client = client;
|
|
26
|
+
}
|
|
27
|
+
async execute() {
|
|
28
|
+
const response = await this.client.execute({
|
|
29
|
+
query: LIST_LANGUAGES
|
|
30
|
+
});
|
|
31
|
+
const envelope = response.languages.listLanguages;
|
|
32
|
+
if (envelope.error) throw new Error(envelope.error.message);
|
|
33
|
+
return envelope.data;
|
|
34
34
|
}
|
|
35
|
-
return envelope.data;
|
|
36
|
-
}
|
|
37
35
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
const ListLanguagesGateway_ListLanguagesGateway = ListLanguagesGateway.createImplementation({
|
|
37
|
+
implementation: ListLanguagesGatewayImpl,
|
|
38
|
+
dependencies: [
|
|
39
|
+
MainGraphQLClient
|
|
40
|
+
]
|
|
41
41
|
});
|
|
42
|
+
export { ListLanguagesGateway_ListLanguagesGateway as ListLanguagesGateway };
|
|
42
43
|
|
|
43
44
|
//# sourceMappingURL=ListLanguagesGateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/features/listLanguages/ListLanguagesGateway.js","sources":["../../../../src/admin/features/listLanguages/ListLanguagesGateway.ts"],"sourcesContent":["import { ListLanguagesGateway as GatewayAbstraction, LanguageDto } from \"./abstractions.js\";\nimport { MainGraphQLClient } from \"@webiny/app/features/mainGraphQLClient\";\n\nconst LIST_LANGUAGES = /* GraphQL */ `\n query ListLanguages {\n languages {\n listLanguages {\n data {\n id\n code\n name\n direction\n isDefault\n enabled\n }\n error {\n code\n message\n }\n }\n }\n }\n`;\n\ntype ListLanguagesResponse = {\n languages: {\n listLanguages:\n | { data: LanguageDto[]; error: null }\n | { data: null; error: { code: string; message: string } };\n };\n};\n\nclass ListLanguagesGatewayImpl implements GatewayAbstraction.Interface {\n constructor(private client: MainGraphQLClient.Interface) {}\n\n async execute(): Promise<LanguageDto[]> {\n const response = await this.client.execute<ListLanguagesResponse>({\n query: LIST_LANGUAGES\n });\n\n const envelope = response.languages.listLanguages;\n if (envelope.error) {\n throw new Error(envelope.error.message);\n }\n\n return envelope.data;\n }\n}\n\nexport const ListLanguagesGateway = GatewayAbstraction.createImplementation({\n implementation: ListLanguagesGatewayImpl,\n dependencies: [MainGraphQLClient]\n});\n"],"names":["LIST_LANGUAGES","ListLanguagesGatewayImpl","client","response","envelope","Error","ListLanguagesGateway","GatewayAbstraction","MainGraphQLClient"],"mappings":";;AAGA,MAAMA,iBAA+B,CAAC;;;;;;;;;;;;;;;;;;;AAmBtC,CAAC;AAUD,MAAMC;IACF,YAAoBC,MAAmC,CAAE;aAArCA,MAAM,GAANA;IAAsC;IAE1D,MAAM,UAAkC;QACpC,MAAMC,WAAW,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAwB;YAC9D,OAAOH;QACX;QAEA,MAAMI,WAAWD,SAAS,SAAS,CAAC,aAAa;QACjD,IAAIC,SAAS,KAAK,EACd,MAAM,IAAIC,MAAMD,SAAS,KAAK,CAAC,OAAO;QAG1C,OAAOA,SAAS,IAAI;IACxB;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAAuC,CAAC;IACxE,gBAAgBN;IAChB,cAAc;QAACO;KAAkB;AACrC"}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LanguagesCache, ListLanguagesGateway, ListLanguagesRepository } from "./abstractions.js";
|
|
2
2
|
class ListLanguagesRepositoryImpl {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
getLanguages() {
|
|
8
|
-
return this.cache.getItems();
|
|
9
|
-
}
|
|
10
|
-
async execute() {
|
|
11
|
-
if (this.cache.hasItems()) {
|
|
12
|
-
return this.cache.getItems();
|
|
3
|
+
constructor(gateway, cache){
|
|
4
|
+
this.gateway = gateway;
|
|
5
|
+
this.cache = cache;
|
|
13
6
|
}
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
getLanguages() {
|
|
8
|
+
return this.cache.getItems();
|
|
9
|
+
}
|
|
10
|
+
async execute() {
|
|
11
|
+
if (this.cache.hasItems()) return this.cache.getItems();
|
|
12
|
+
if (this.pending) return this.pending;
|
|
13
|
+
this.pending = this.gateway.execute().then((languages)=>{
|
|
14
|
+
const sorted = languages.sort((a, b)=>a.name.localeCompare(b.name));
|
|
15
|
+
this.cache.addItems(sorted);
|
|
16
|
+
return this.cache.getItems();
|
|
17
|
+
});
|
|
18
|
+
return this.pending;
|
|
16
19
|
}
|
|
17
|
-
this.pending = this.gateway.execute().then(languages => {
|
|
18
|
-
const sorted = languages.sort((a, b) => a.name.localeCompare(b.name));
|
|
19
|
-
this.cache.addItems(sorted);
|
|
20
|
-
return this.cache.getItems();
|
|
21
|
-
});
|
|
22
|
-
return this.pending;
|
|
23
|
-
}
|
|
24
20
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
const ListLanguagesRepository_ListLanguagesRepository = ListLanguagesRepository.createImplementation({
|
|
22
|
+
implementation: ListLanguagesRepositoryImpl,
|
|
23
|
+
dependencies: [
|
|
24
|
+
ListLanguagesGateway,
|
|
25
|
+
LanguagesCache
|
|
26
|
+
]
|
|
28
27
|
});
|
|
28
|
+
export { ListLanguagesRepository_ListLanguagesRepository as ListLanguagesRepository };
|
|
29
29
|
|
|
30
30
|
//# sourceMappingURL=ListLanguagesRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"admin/features/listLanguages/ListLanguagesRepository.js","sources":["../../../../src/admin/features/listLanguages/ListLanguagesRepository.ts"],"sourcesContent":["import {\n ListLanguagesRepository as RepositoryAbstraction,\n ListLanguagesGateway,\n LanguagesCache,\n type LanguageDto\n} from \"./abstractions.js\";\n\nclass ListLanguagesRepositoryImpl implements RepositoryAbstraction.Interface {\n private pending: Promise<LanguageDto[]> | undefined;\n\n constructor(\n private gateway: ListLanguagesGateway.Interface,\n private cache: LanguagesCache.Interface\n ) {}\n\n getLanguages(): LanguageDto[] {\n return this.cache.getItems();\n }\n\n async execute(): Promise<LanguageDto[]> {\n if (this.cache.hasItems()) {\n return this.cache.getItems();\n }\n\n if (this.pending) {\n return this.pending;\n }\n\n this.pending = this.gateway.execute().then(languages => {\n const sorted = languages.sort((a, b) => a.name.localeCompare(b.name));\n this.cache.addItems(sorted);\n return this.cache.getItems();\n });\n\n return this.pending;\n }\n}\n\nexport const ListLanguagesRepository = RepositoryAbstraction.createImplementation({\n implementation: ListLanguagesRepositoryImpl,\n dependencies: [ListLanguagesGateway, LanguagesCache]\n});\n"],"names":["ListLanguagesRepositoryImpl","gateway","cache","languages","sorted","a","b","ListLanguagesRepository","RepositoryAbstraction","ListLanguagesGateway","LanguagesCache"],"mappings":";AAOA,MAAMA;IAGF,YACYC,OAAuC,EACvCC,KAA+B,CACzC;aAFUD,OAAO,GAAPA;aACAC,KAAK,GAALA;IACT;IAEH,eAA8B;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;IAC9B;IAEA,MAAM,UAAkC;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IACnB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;QAG9B,IAAI,IAAI,CAAC,OAAO,EACZ,OAAO,IAAI,CAAC,OAAO;QAGvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAACC,CAAAA;YACvC,MAAMC,SAASD,UAAU,IAAI,CAAC,CAACE,GAAGC,IAAMD,EAAE,IAAI,CAAC,aAAa,CAACC,EAAE,IAAI;YACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAACF;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;QAC9B;QAEA,OAAO,IAAI,CAAC,OAAO;IACvB;AACJ;AAEO,MAAMG,kDAA0BC,wBAAAA,oBAA0C,CAAC;IAC9E,gBAAgBR;IAChB,cAAc;QAACS;QAAsBC;KAAe;AACxD"}
|