@webiny/languages 0.0.0-unstable.e6f0dc8ca7
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/LICENSE +36 -0
- package/Languages.d.ts +2 -0
- package/Languages.js +12 -0
- package/Languages.js.map +1 -0
- package/README.md +11 -0
- package/admin/Extension.d.ts +2 -0
- package/admin/Extension.js +33 -0
- package/admin/Extension.js.map +1 -0
- package/admin/GenericCell.d.ts +6 -0
- package/admin/GenericCell.js +16 -0
- package/admin/GenericCell.js.map +1 -0
- package/admin/LanguageEntryList.d.ts +2 -0
- package/admin/LanguageEntryList.js +36 -0
- package/admin/LanguageEntryList.js.map +1 -0
- package/admin/PermissionsSchema.d.ts +5 -0
- package/admin/PermissionsSchema.js +8 -0
- package/admin/PermissionsSchema.js.map +1 -0
- package/admin/SecurityPermission.d.ts +2 -0
- package/admin/SecurityPermission.js +18 -0
- package/admin/SecurityPermission.js.map +1 -0
- package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.d.ts +11 -0
- package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.js +21 -0
- package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.js.map +1 -0
- package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.d.ts +11 -0
- package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js +20 -0
- package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js.map +1 -0
- package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.d.ts +11 -0
- package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js +27 -0
- package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js.map +1 -0
- package/admin/features/listLanguages/ListLanguagesGateway.d.ts +11 -0
- package/admin/features/listLanguages/ListLanguagesGateway.js +43 -0
- package/admin/features/listLanguages/ListLanguagesGateway.js.map +1 -0
- package/admin/features/listLanguages/ListLanguagesRepository.d.ts +13 -0
- package/admin/features/listLanguages/ListLanguagesRepository.js +30 -0
- package/admin/features/listLanguages/ListLanguagesRepository.js.map +1 -0
- package/admin/features/listLanguages/ListLanguagesUseCase.d.ts +10 -0
- package/admin/features/listLanguages/ListLanguagesUseCase.js +15 -0
- package/admin/features/listLanguages/ListLanguagesUseCase.js.map +1 -0
- package/admin/features/listLanguages/abstractions.d.ts +35 -0
- package/admin/features/listLanguages/abstractions.js +30 -0
- package/admin/features/listLanguages/abstractions.js.map +1 -0
- package/admin/features/listLanguages/feature.d.ts +6 -0
- package/admin/features/listLanguages/feature.js +30 -0
- package/admin/features/listLanguages/feature.js.map +1 -0
- package/admin/features/listLanguages/index.d.ts +2 -0
- package/admin/features/listLanguages/index.js +3 -0
- package/admin/features/listLanguages/index.js.map +1 -0
- package/admin/features/listLanguages/toLanguageDto.d.ts +3 -0
- package/admin/features/listLanguages/toLanguageDto.js +12 -0
- package/admin/features/listLanguages/toLanguageDto.js.map +1 -0
- package/admin/presentation/hooks/useLanguages.d.ts +5 -0
- package/admin/presentation/hooks/useLanguages.js +26 -0
- package/admin/presentation/hooks/useLanguages.js.map +1 -0
- package/api/Extension.d.ts +4 -0
- package/api/Extension.js +26 -0
- package/api/Extension.js.map +1 -0
- package/api/domain/Language.d.ts +8 -0
- package/api/domain/Language.js +3 -0
- package/api/domain/Language.js.map +1 -0
- package/api/domain/LanguageModel.d.ts +8 -0
- package/api/domain/LanguageModel.js +31 -0
- package/api/domain/LanguageModel.js.map +1 -0
- package/api/domain/errors.d.ts +11 -0
- package/api/domain/errors.js +22 -0
- package/api/domain/errors.js.map +1 -0
- package/api/domain/permissionsSchema.d.ts +5 -0
- package/api/domain/permissionsSchema.js +8 -0
- package/api/domain/permissionsSchema.js.map +1 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +8 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.js +40 -0
- package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -0
- package/api/features/AddCmsPermissions/feature.d.ts +4 -0
- package/api/features/AddCmsPermissions/feature.js +10 -0
- package/api/features/AddCmsPermissions/feature.js.map +1 -0
- package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.d.ts +15 -0
- package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js +58 -0
- package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js.map +1 -0
- package/api/features/EnsureSingleDefaultLanguage/feature.d.ts +4 -0
- package/api/features/EnsureSingleDefaultLanguage/feature.js +10 -0
- package/api/features/EnsureSingleDefaultLanguage/feature.js.map +1 -0
- package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.d.ts +13 -0
- package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.js +52 -0
- package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.js.map +1 -0
- package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.d.ts +8 -0
- package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.js +17 -0
- package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.js.map +1 -0
- package/api/features/GetLanguageByCode/abstractions.d.ts +33 -0
- package/api/features/GetLanguageByCode/abstractions.js +16 -0
- package/api/features/GetLanguageByCode/abstractions.js.map +1 -0
- package/api/features/GetLanguageByCode/feature.d.ts +4 -0
- package/api/features/GetLanguageByCode/feature.js +12 -0
- package/api/features/GetLanguageByCode/feature.js.map +1 -0
- package/api/features/GetLanguageByCode/index.d.ts +1 -0
- package/api/features/GetLanguageByCode/index.js +3 -0
- package/api/features/GetLanguageByCode/index.js.map +1 -0
- package/api/features/ListLanguages/ListLanguagesRepository.d.ts +13 -0
- package/api/features/ListLanguages/ListLanguagesRepository.js +46 -0
- package/api/features/ListLanguages/ListLanguagesRepository.js.map +1 -0
- package/api/features/ListLanguages/ListLanguagesUseCase.d.ts +8 -0
- package/api/features/ListLanguages/ListLanguagesUseCase.js +17 -0
- package/api/features/ListLanguages/ListLanguagesUseCase.js.map +1 -0
- package/api/features/ListLanguages/abstractions.d.ts +31 -0
- package/api/features/ListLanguages/abstractions.js +16 -0
- package/api/features/ListLanguages/abstractions.js.map +1 -0
- package/api/features/ListLanguages/feature.d.ts +4 -0
- package/api/features/ListLanguages/feature.js +12 -0
- package/api/features/ListLanguages/feature.js.map +1 -0
- package/api/features/ListLanguages/index.d.ts +1 -0
- package/api/features/ListLanguages/index.js +3 -0
- package/api/features/ListLanguages/index.js.map +1 -0
- package/api/features/Permissions/abstractions.d.ts +10 -0
- package/api/features/Permissions/abstractions.js +5 -0
- package/api/features/Permissions/abstractions.js.map +1 -0
- package/api/features/Permissions/feature.d.ts +4 -0
- package/api/features/Permissions/feature.js +6 -0
- package/api/features/Permissions/feature.js.map +1 -0
- package/api/graphql/LanguagesGraphQLSchema.d.ts +8 -0
- package/api/graphql/LanguagesGraphQLSchema.js +66 -0
- package/api/graphql/LanguagesGraphQLSchema.js.map +1 -0
- package/exports/admin/languages.d.ts +2 -0
- package/exports/admin/languages.js +3 -0
- package/exports/admin/languages.js.map +1 -0
- package/exports/api/languages.d.ts +2 -0
- package/exports/api/languages.js +4 -0
- package/exports/api/languages.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +3 -0
- package/index.js.map +1 -0
- package/package.json +49 -0
- package/shared/constants.d.ts +1 -0
- package/shared/constants.js +3 -0
- package/shared/constants.js.map +1 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/admin";
|
|
2
|
+
import { ListLanguagesUseCase as UseCaseAbstraction, ListLanguagesRepository as RepositoryAbstraction, LanguagesCache } from "./abstractions.js";
|
|
3
|
+
import { ListLanguagesUseCase } from "./ListLanguagesUseCase.js";
|
|
4
|
+
import { ListLanguagesRepository } from "./ListLanguagesRepository.js";
|
|
5
|
+
import { ListLanguagesGateway } from "./ListLanguagesGateway.js";
|
|
6
|
+
import { LanguageEntryAfterCreateHandler } from "./LanguageEntryAfterCreateHandler.js";
|
|
7
|
+
import { LanguageEntryAfterUpdateHandler } from "./LanguageEntryAfterUpdateHandler.js";
|
|
8
|
+
import { LanguageEntryAfterDeleteHandler } from "./LanguageEntryAfterDeleteHandler.js";
|
|
9
|
+
import { ListCache } from "@webiny/app-headless-cms/features/ListCache.js";
|
|
10
|
+
export const ListLanguagesFeature = createFeature({
|
|
11
|
+
name: "Languages/ListLanguages",
|
|
12
|
+
register(container) {
|
|
13
|
+
container.registerInstance(LanguagesCache, new ListCache());
|
|
14
|
+
container.register(ListLanguagesUseCase);
|
|
15
|
+
container.register(ListLanguagesRepository).inSingletonScope();
|
|
16
|
+
container.register(ListLanguagesGateway).inSingletonScope();
|
|
17
|
+
container.register(LanguageEntryAfterCreateHandler);
|
|
18
|
+
container.register(LanguageEntryAfterUpdateHandler);
|
|
19
|
+
container.register(LanguageEntryAfterDeleteHandler);
|
|
20
|
+
},
|
|
21
|
+
resolve(container) {
|
|
22
|
+
return {
|
|
23
|
+
useCase: container.resolve(UseCaseAbstraction),
|
|
24
|
+
repository: container.resolve(RepositoryAbstraction),
|
|
25
|
+
cache: container.resolve(LanguagesCache)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","ListLanguagesUseCase","UseCaseAbstraction","ListLanguagesRepository","RepositoryAbstraction","LanguagesCache","ListLanguagesGateway","LanguageEntryAfterCreateHandler","LanguageEntryAfterUpdateHandler","LanguageEntryAfterDeleteHandler","ListCache","ListLanguagesFeature","name","register","container","registerInstance","inSingletonScope","resolve","useCase","repository","cache"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport {\n ListLanguagesUseCase as UseCaseAbstraction,\n ListLanguagesRepository as RepositoryAbstraction,\n LanguagesCache\n} from \"./abstractions.js\";\nimport type { LanguageDto } from \"./abstractions.js\";\nimport { ListLanguagesUseCase } from \"./ListLanguagesUseCase.js\";\nimport { ListLanguagesRepository } from \"./ListLanguagesRepository.js\";\nimport { ListLanguagesGateway } from \"./ListLanguagesGateway.js\";\nimport { LanguageEntryAfterCreateHandler } from \"./LanguageEntryAfterCreateHandler.js\";\nimport { LanguageEntryAfterUpdateHandler } from \"./LanguageEntryAfterUpdateHandler.js\";\nimport { LanguageEntryAfterDeleteHandler } from \"./LanguageEntryAfterDeleteHandler.js\";\nimport { ListCache } from \"@webiny/app-headless-cms/features/ListCache.js\";\n\nexport const ListLanguagesFeature = createFeature({\n name: \"Languages/ListLanguages\",\n register(container) {\n container.registerInstance(LanguagesCache, new ListCache<LanguageDto>());\n container.register(ListLanguagesUseCase);\n container.register(ListLanguagesRepository).inSingletonScope();\n container.register(ListLanguagesGateway).inSingletonScope();\n container.register(LanguageEntryAfterCreateHandler);\n container.register(LanguageEntryAfterUpdateHandler);\n container.register(LanguageEntryAfterDeleteHandler);\n },\n resolve(container) {\n return {\n useCase: container.resolve(UseCaseAbstraction),\n repository: container.resolve(RepositoryAbstraction),\n cache: container.resolve(LanguagesCache)\n };\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,uBAAuB;AACrD,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB,IAAIC,qBAAqB,EAChDC,cAAc;AAGlB,SAASJ,oBAAoB;AAC7B,SAASE,uBAAuB;AAChC,SAASG,oBAAoB;AAC7B,SAASC,+BAA+B;AACxC,SAASC,+BAA+B;AACxC,SAASC,+BAA+B;AACxC,SAASC,SAAS,QAAQ,gDAAgD;AAE1E,OAAO,MAAMC,oBAAoB,GAAGX,aAAa,CAAC;EAC9CY,IAAI,EAAE,yBAAyB;EAC/BC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACC,gBAAgB,CAACV,cAAc,EAAE,IAAIK,SAAS,CAAc,CAAC,CAAC;IACxEI,SAAS,CAACD,QAAQ,CAACZ,oBAAoB,CAAC;IACxCa,SAAS,CAACD,QAAQ,CAACV,uBAAuB,CAAC,CAACa,gBAAgB,CAAC,CAAC;IAC9DF,SAAS,CAACD,QAAQ,CAACP,oBAAoB,CAAC,CAACU,gBAAgB,CAAC,CAAC;IAC3DF,SAAS,CAACD,QAAQ,CAACN,+BAA+B,CAAC;IACnDO,SAAS,CAACD,QAAQ,CAACL,+BAA+B,CAAC;IACnDM,SAAS,CAACD,QAAQ,CAACJ,+BAA+B,CAAC;EACvD,CAAC;EACDQ,OAAOA,CAACH,SAAS,EAAE;IACf,OAAO;MACHI,OAAO,EAAEJ,SAAS,CAACG,OAAO,CAACf,kBAAkB,CAAC;MAC9CiB,UAAU,EAAEL,SAAS,CAACG,OAAO,CAACb,qBAAqB,CAAC;MACpDgB,KAAK,EAAEN,SAAS,CAACG,OAAO,CAACZ,cAAc;IAC3C,CAAC;EACL;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ListLanguagesFeature"],"sources":["index.ts"],"sourcesContent":["export { ListLanguagesFeature } from \"./feature.js\";\nexport type { LanguageDto } from \"./abstractions.js\";\n"],"mappings":"AAAA,SAASA,oBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function toLanguageDto(entry) {
|
|
2
|
+
return {
|
|
3
|
+
id: entry.entryId,
|
|
4
|
+
code: entry.values.code,
|
|
5
|
+
name: entry.values.name,
|
|
6
|
+
direction: entry.values.direction,
|
|
7
|
+
isDefault: entry.values.isDefault,
|
|
8
|
+
enabled: entry.values.enabled
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=toLanguageDto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toLanguageDto","entry","id","entryId","code","values","name","direction","isDefault","enabled"],"sources":["toLanguageDto.ts"],"sourcesContent":["import type { LanguageDto } from \"./abstractions.js\";\nimport type { CmsContentEntry } from \"@webiny/app-headless-cms/types.js\";\n\nexport function toLanguageDto(entry: CmsContentEntry): LanguageDto {\n return {\n id: entry.entryId,\n code: entry.values.code,\n name: entry.values.name,\n direction: entry.values.direction,\n isDefault: entry.values.isDefault,\n enabled: entry.values.enabled\n };\n}\n"],"mappings":"AAGA,OAAO,SAASA,aAAaA,CAACC,KAAsB,EAAe;EAC/D,OAAO;IACHC,EAAE,EAAED,KAAK,CAACE,OAAO;IACjBC,IAAI,EAAEH,KAAK,CAACI,MAAM,CAACD,IAAI;IACvBE,IAAI,EAAEL,KAAK,CAACI,MAAM,CAACC,IAAI;IACvBC,SAAS,EAAEN,KAAK,CAACI,MAAM,CAACE,SAAS;IACjCC,SAAS,EAAEP,KAAK,CAACI,MAAM,CAACG,SAAS;IACjCC,OAAO,EAAER,KAAK,CAACI,MAAM,CAACI;EAC1B,CAAC;AACL","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { autorun } from "mobx";
|
|
3
|
+
import { useFeature } from "@webiny/app";
|
|
4
|
+
import { ListLanguagesFeature } from "../../features/listLanguages/index.js";
|
|
5
|
+
export const useLanguages = () => {
|
|
6
|
+
const {
|
|
7
|
+
useCase,
|
|
8
|
+
cache
|
|
9
|
+
} = useFeature(ListLanguagesFeature);
|
|
10
|
+
const [languages, setLanguages] = useState([]);
|
|
11
|
+
const [loading, setLoading] = useState(true);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
useCase.execute().then(() => {
|
|
14
|
+
setLoading(false);
|
|
15
|
+
});
|
|
16
|
+
return autorun(() => {
|
|
17
|
+
setLanguages(cache.getItems());
|
|
18
|
+
});
|
|
19
|
+
}, [useCase, cache]);
|
|
20
|
+
return {
|
|
21
|
+
loading,
|
|
22
|
+
languages
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=useLanguages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","autorun","useFeature","ListLanguagesFeature","useLanguages","useCase","cache","languages","setLanguages","loading","setLoading","execute","then","getItems"],"sources":["useLanguages.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { autorun } from \"mobx\";\nimport { useFeature } from \"@webiny/app\";\nimport { ListLanguagesFeature } from \"~/admin/features/listLanguages/index.js\";\nimport type { LanguageDto } from \"~/admin/features/listLanguages/index.js\";\n\nexport const useLanguages = () => {\n const { useCase, cache } = useFeature(ListLanguagesFeature);\n const [languages, setLanguages] = useState<LanguageDto[]>([]);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n useCase.execute().then(() => {\n setLoading(false);\n });\n\n return autorun(() => {\n setLanguages(cache.getItems());\n });\n }, [useCase, cache]);\n\n return { loading, languages };\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,OAAO,QAAQ,MAAM;AAC9B,SAASC,UAAU,QAAQ,aAAa;AACxC,SAASC,oBAAoB;AAG7B,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAM;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGJ,UAAU,CAACC,oBAAoB,CAAC;EAC3D,MAAM,CAACI,SAAS,EAAEC,YAAY,CAAC,GAAGR,QAAQ,CAAgB,EAAE,CAAC;EAC7D,MAAM,CAACS,OAAO,EAAEC,UAAU,CAAC,GAAGV,QAAQ,CAAC,IAAI,CAAC;EAE5CD,SAAS,CAAC,MAAM;IACZM,OAAO,CAACM,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,MAAM;MACzBF,UAAU,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,OAAOT,OAAO,CAAC,MAAM;MACjBO,YAAY,CAACF,KAAK,CAACO,QAAQ,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;EACN,CAAC,EAAE,CAACR,OAAO,EAAEC,KAAK,CAAC,CAAC;EAEpB,OAAO;IAAEG,OAAO;IAAEF;EAAU,CAAC;AACjC,CAAC","ignoreList":[]}
|
package/api/Extension.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import LanguageModel from "./domain/LanguageModel.js";
|
|
3
|
+
import { EnsureSingleDefaultLanguageFeature } from "./features/EnsureSingleDefaultLanguage/feature.js";
|
|
4
|
+
import { GetLanguageByCodeFeature } from "./features/GetLanguageByCode/feature.js";
|
|
5
|
+
import { ListLanguagesFeature } from "./features/ListLanguages/feature.js";
|
|
6
|
+
import { LanguagesGraphQLSchema } from "./graphql/LanguagesGraphQLSchema.js";
|
|
7
|
+
import { AddCmsPermissionsFeature } from "./features/AddCmsPermissions/feature.js";
|
|
8
|
+
import { LanguagesPermissionsFeature } from "./features/Permissions/feature.js";
|
|
9
|
+
export const Extension = createFeature({
|
|
10
|
+
name: "Languages",
|
|
11
|
+
register(container) {
|
|
12
|
+
container.register(LanguageModel);
|
|
13
|
+
|
|
14
|
+
// Features
|
|
15
|
+
EnsureSingleDefaultLanguageFeature.register(container);
|
|
16
|
+
GetLanguageByCodeFeature.register(container);
|
|
17
|
+
ListLanguagesFeature.register(container);
|
|
18
|
+
AddCmsPermissionsFeature.register(container);
|
|
19
|
+
LanguagesPermissionsFeature.register(container);
|
|
20
|
+
|
|
21
|
+
// GraphQL
|
|
22
|
+
container.register(LanguagesGraphQLSchema);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=Extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","LanguageModel","EnsureSingleDefaultLanguageFeature","GetLanguageByCodeFeature","ListLanguagesFeature","LanguagesGraphQLSchema","AddCmsPermissionsFeature","LanguagesPermissionsFeature","Extension","name","register","container"],"sources":["Extension.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport LanguageModel from \"./domain/LanguageModel.js\";\nimport { EnsureSingleDefaultLanguageFeature } from \"./features/EnsureSingleDefaultLanguage/feature.js\";\nimport { GetLanguageByCodeFeature } from \"./features/GetLanguageByCode/feature.js\";\nimport { ListLanguagesFeature } from \"./features/ListLanguages/feature.js\";\nimport { LanguagesGraphQLSchema } from \"./graphql/LanguagesGraphQLSchema.js\";\nimport { AddCmsPermissionsFeature } from \"~/api/features/AddCmsPermissions/feature.js\";\nimport { LanguagesPermissionsFeature } from \"~/api/features/Permissions/feature.js\";\n\nexport const Extension = createFeature({\n name: \"Languages\",\n register(container) {\n container.register(LanguageModel);\n\n // Features\n EnsureSingleDefaultLanguageFeature.register(container);\n GetLanguageByCodeFeature.register(container);\n ListLanguagesFeature.register(container);\n AddCmsPermissionsFeature.register(container);\n LanguagesPermissionsFeature.register(container);\n\n // GraphQL\n container.register(LanguagesGraphQLSchema);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,aAAa;AACpB,SAASC,kCAAkC;AAC3C,SAASC,wBAAwB;AACjC,SAASC,oBAAoB;AAC7B,SAASC,sBAAsB;AAC/B,SAASC,wBAAwB;AACjC,SAASC,2BAA2B;AAEpC,OAAO,MAAMC,SAAS,GAAGR,aAAa,CAAC;EACnCS,IAAI,EAAE,WAAW;EACjBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACT,aAAa,CAAC;;IAEjC;IACAC,kCAAkC,CAACQ,QAAQ,CAACC,SAAS,CAAC;IACtDR,wBAAwB,CAACO,QAAQ,CAACC,SAAS,CAAC;IAC5CP,oBAAoB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACxCL,wBAAwB,CAACI,QAAQ,CAACC,SAAS,CAAC;IAC5CJ,2BAA2B,CAACG,QAAQ,CAACC,SAAS,CAAC;;IAE/C;IACAA,SAAS,CAACD,QAAQ,CAACL,sBAAsB,CAAC;EAC9C;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["Language.ts"],"sourcesContent":["export interface Language {\n id: string;\n name: string;\n code: string;\n direction: \"ltr\" | \"rtl\";\n isDefault: boolean;\n enabled: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
|
|
2
|
+
declare class LanguageModelFactory implements ModelFactory.Interface {
|
|
3
|
+
execute(builder: ModelFactory.Builder): Promise<import("@webiny/api-headless-cms/features/modelBuilder/index.js").PublicModelBuilder[]>;
|
|
4
|
+
}
|
|
5
|
+
declare const _default: typeof LanguageModelFactory & {
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/modelBuilder/abstractions").IModelFactory>;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
|
|
2
|
+
import { LANGUAGE_MODEL_ID } from "../../shared/constants.js";
|
|
3
|
+
class LanguageModelFactory {
|
|
4
|
+
async execute(builder) {
|
|
5
|
+
const model = builder.public({
|
|
6
|
+
modelId: LANGUAGE_MODEL_ID,
|
|
7
|
+
name: "Language",
|
|
8
|
+
group: "hidden"
|
|
9
|
+
}).description("Manage system languages.").titleFieldId("name").icon("fas/language").singularApiName("Language").pluralApiName("Languages").tags(["$publishing:false", "$hidden:true"]);
|
|
10
|
+
model.fields(fields => ({
|
|
11
|
+
name: fields.text().label("Name").description("The display name for this language (e.g., German, English, Arabic).").required().renderer("textInput"),
|
|
12
|
+
code: fields.text().label("Code").description("A unique language or locale code used for URL routing and identifying content (e.g., en, de, pt-BR).").required().renderer("textInput"),
|
|
13
|
+
direction: fields.text().label("Direction").description("Controls the text direction. Most languages read left-to-right, but some (like Arabic and Hebrew) read right-to-left.").defaultValue("ltr").renderer("dropdown").required().predefinedValues([{
|
|
14
|
+
value: "ltr",
|
|
15
|
+
label: "LTR"
|
|
16
|
+
}, {
|
|
17
|
+
value: "rtl",
|
|
18
|
+
label: "RTL"
|
|
19
|
+
}]),
|
|
20
|
+
isDefault: fields.boolean().label("Is default?").description("Make this the primary language. Default language content is shown when no specific language is requested.").defaultValue(false).renderer("switch"),
|
|
21
|
+
enabled: fields.boolean().label("Is enabled?").description("Disabled languages are hidden from the public site but can still be configured and translated in the admin.").defaultValue(false).renderer("switch")
|
|
22
|
+
})).layout([["name"], ["code"], ["direction"], ["isDefault"], ["enabled"]]);
|
|
23
|
+
return [model];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export default ModelFactory.createImplementation({
|
|
27
|
+
implementation: LanguageModelFactory,
|
|
28
|
+
dependencies: []
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=LanguageModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ModelFactory","LANGUAGE_MODEL_ID","LanguageModelFactory","execute","builder","model","public","modelId","name","group","description","titleFieldId","icon","singularApiName","pluralApiName","tags","fields","text","label","required","renderer","code","direction","defaultValue","predefinedValues","value","isDefault","boolean","enabled","layout","createImplementation","implementation","dependencies"],"sources":["LanguageModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\n\nclass LanguageModelFactory implements ModelFactory.Interface {\n async execute(builder: ModelFactory.Builder) {\n const model = builder\n .public({\n modelId: LANGUAGE_MODEL_ID,\n name: \"Language\",\n group: \"hidden\"\n })\n .description(\"Manage system languages.\")\n .titleFieldId(\"name\")\n .icon(\"fas/language\")\n .singularApiName(\"Language\")\n .pluralApiName(\"Languages\")\n .tags([\"$publishing:false\", \"$hidden:true\"]);\n\n model\n .fields(fields => ({\n name: fields\n .text()\n .label(\"Name\")\n .description(\n \"The display name for this language (e.g., German, English, Arabic).\"\n )\n .required()\n .renderer(\"textInput\"),\n code: fields\n .text()\n .label(\"Code\")\n .description(\n \"A unique language or locale code used for URL routing and identifying content (e.g., en, de, pt-BR).\"\n )\n .required()\n .renderer(\"textInput\"),\n direction: fields\n .text()\n .label(\"Direction\")\n .description(\n \"Controls the text direction. Most languages read left-to-right, but some (like Arabic and Hebrew) read right-to-left.\"\n )\n .defaultValue(\"ltr\")\n .renderer(\"dropdown\")\n .required()\n .predefinedValues([\n {\n value: \"ltr\",\n label: \"LTR\"\n },\n {\n value: \"rtl\",\n label: \"RTL\"\n }\n ]),\n isDefault: fields\n .boolean()\n .label(\"Is default?\")\n .description(\n \"Make this the primary language. Default language content is shown when no specific language is requested.\"\n )\n .defaultValue(false)\n .renderer(\"switch\"),\n enabled: fields\n .boolean()\n .label(\"Is enabled?\")\n .description(\n \"Disabled languages are hidden from the public site but can still be configured and translated in the admin.\"\n )\n .defaultValue(false)\n .renderer(\"switch\")\n }))\n .layout([[\"name\"], [\"code\"], [\"direction\"], [\"isDefault\"], [\"enabled\"]]);\n\n return [model];\n }\n}\n\nexport default ModelFactory.createImplementation({\n implementation: LanguageModelFactory,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,yDAAyD;AACtF,SAASC,iBAAiB;AAE1B,MAAMC,oBAAoB,CAAmC;EACzD,MAAMC,OAAOA,CAACC,OAA6B,EAAE;IACzC,MAAMC,KAAK,GAAGD,OAAO,CAChBE,MAAM,CAAC;MACJC,OAAO,EAAEN,iBAAiB;MAC1BO,IAAI,EAAE,UAAU;MAChBC,KAAK,EAAE;IACX,CAAC,CAAC,CACDC,WAAW,CAAC,0BAA0B,CAAC,CACvCC,YAAY,CAAC,MAAM,CAAC,CACpBC,IAAI,CAAC,cAAc,CAAC,CACpBC,eAAe,CAAC,UAAU,CAAC,CAC3BC,aAAa,CAAC,WAAW,CAAC,CAC1BC,IAAI,CAAC,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAEhDV,KAAK,CACAW,MAAM,CAACA,MAAM,KAAK;MACfR,IAAI,EAAEQ,MAAM,CACPC,IAAI,CAAC,CAAC,CACNC,KAAK,CAAC,MAAM,CAAC,CACbR,WAAW,CACR,qEACJ,CAAC,CACAS,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,WAAW,CAAC;MAC1BC,IAAI,EAAEL,MAAM,CACPC,IAAI,CAAC,CAAC,CACNC,KAAK,CAAC,MAAM,CAAC,CACbR,WAAW,CACR,sGACJ,CAAC,CACAS,QAAQ,CAAC,CAAC,CACVC,QAAQ,CAAC,WAAW,CAAC;MAC1BE,SAAS,EAAEN,MAAM,CACZC,IAAI,CAAC,CAAC,CACNC,KAAK,CAAC,WAAW,CAAC,CAClBR,WAAW,CACR,uHACJ,CAAC,CACAa,YAAY,CAAC,KAAK,CAAC,CACnBH,QAAQ,CAAC,UAAU,CAAC,CACpBD,QAAQ,CAAC,CAAC,CACVK,gBAAgB,CAAC,CACd;QACIC,KAAK,EAAE,KAAK;QACZP,KAAK,EAAE;MACX,CAAC,EACD;QACIO,KAAK,EAAE,KAAK;QACZP,KAAK,EAAE;MACX,CAAC,CACJ,CAAC;MACNQ,SAAS,EAAEV,MAAM,CACZW,OAAO,CAAC,CAAC,CACTT,KAAK,CAAC,aAAa,CAAC,CACpBR,WAAW,CACR,2GACJ,CAAC,CACAa,YAAY,CAAC,KAAK,CAAC,CACnBH,QAAQ,CAAC,QAAQ,CAAC;MACvBQ,OAAO,EAAEZ,MAAM,CACVW,OAAO,CAAC,CAAC,CACTT,KAAK,CAAC,aAAa,CAAC,CACpBR,WAAW,CACR,6GACJ,CAAC,CACAa,YAAY,CAAC,KAAK,CAAC,CACnBH,QAAQ,CAAC,QAAQ;IAC1B,CAAC,CAAC,CAAC,CACFS,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAE5E,OAAO,CAACxB,KAAK,CAAC;EAClB;AACJ;AAEA,eAAeL,YAAY,CAAC8B,oBAAoB,CAAC;EAC7CC,cAAc,EAAE7B,oBAAoB;EACpC8B,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseError } from "@webiny/feature/api";
|
|
2
|
+
export declare class LanguageNotFoundError extends BaseError<{
|
|
3
|
+
code: string;
|
|
4
|
+
}> {
|
|
5
|
+
readonly code: "Languages/NotFound";
|
|
6
|
+
constructor(languageCode: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class LanguagePersistenceError extends BaseError {
|
|
9
|
+
readonly code: "Languages/PersistenceError";
|
|
10
|
+
constructor(error: Error);
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseError } from "@webiny/feature/api";
|
|
2
|
+
export class LanguageNotFoundError extends BaseError {
|
|
3
|
+
code = "Languages/NotFound";
|
|
4
|
+
constructor(languageCode) {
|
|
5
|
+
super({
|
|
6
|
+
message: `Language not found: "${languageCode}".`,
|
|
7
|
+
data: {
|
|
8
|
+
code: languageCode
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class LanguagePersistenceError extends BaseError {
|
|
14
|
+
code = "Languages/PersistenceError";
|
|
15
|
+
constructor(error) {
|
|
16
|
+
super({
|
|
17
|
+
message: error.message
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BaseError","LanguageNotFoundError","code","constructor","languageCode","message","data","LanguagePersistenceError","error"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class LanguageNotFoundError extends BaseError<{ code: string }> {\n override readonly code = \"Languages/NotFound\" as const;\n\n constructor(languageCode: string) {\n super({\n message: `Language not found: \"${languageCode}\".`,\n data: {\n code: languageCode\n }\n });\n }\n}\n\nexport class LanguagePersistenceError extends BaseError {\n override readonly code = \"Languages/PersistenceError\" as const;\n\n constructor(error: Error) {\n super({ message: error.message });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAE/C,OAAO,MAAMC,qBAAqB,SAASD,SAAS,CAAmB;EACjDE,IAAI,GAAG,oBAAoB;EAE7CC,WAAWA,CAACC,YAAoB,EAAE;IAC9B,KAAK,CAAC;MACFC,OAAO,EAAE,wBAAwBD,YAAY,IAAI;MACjDE,IAAI,EAAE;QACFJ,IAAI,EAAEE;MACV;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,wBAAwB,SAASP,SAAS,CAAC;EAClCE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAACK,KAAY,EAAE;IACtB,KAAK,CAAC;MAAEH,OAAO,EAAEG,KAAK,CAACH;IAAQ,CAAC,CAAC;EACrC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createPermissionSchema } from "@webiny/api-core/exports/api/security.js";
|
|
2
|
+
export const LANGUAGES_PERMISSIONS_SCHEMA = createPermissionSchema({
|
|
3
|
+
prefix: "languages",
|
|
4
|
+
fullAccess: true,
|
|
5
|
+
readOnlyAccess: true
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=permissionsSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPermissionSchema","LANGUAGES_PERMISSIONS_SCHEMA","prefix","fullAccess","readOnlyAccess"],"sources":["permissionsSchema.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/api-core/exports/api/security.js\";\n\nexport const LANGUAGES_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"languages\",\n fullAccess: true,\n readOnlyAccess: true\n});\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,0CAA0C;AAEjF,OAAO,MAAMC,4BAA4B,GAAGD,sBAAsB,CAAC;EAC/DE,MAAM,EAAE,WAAW;EACnBC,UAAU,EAAE,IAAI;EAChBC,cAAc,EAAE;AACpB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
|
|
2
|
+
declare class AddCmsPermissions implements PermissionTransformer.Interface {
|
|
3
|
+
execute(permission: PermissionTransformer.Permission): PermissionTransformer.Permission | PermissionTransformer.Permission[];
|
|
4
|
+
}
|
|
5
|
+
declare const _default: typeof AddCmsPermissions & {
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js").IPermissionTransformer>;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
|
|
2
|
+
import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
|
|
3
|
+
class AddCmsPermissions {
|
|
4
|
+
execute(permission) {
|
|
5
|
+
if (!permission.name.startsWith("languages.")) {
|
|
6
|
+
return permission;
|
|
7
|
+
}
|
|
8
|
+
const isReadOnly = permission.name === "languages.*" && permission.rwd === "r";
|
|
9
|
+
return [permission, {
|
|
10
|
+
name: "cms.endpoint.manage",
|
|
11
|
+
_src: "languages"
|
|
12
|
+
}, {
|
|
13
|
+
name: "cms.contentModel",
|
|
14
|
+
own: false,
|
|
15
|
+
rwd: "r",
|
|
16
|
+
pw: "",
|
|
17
|
+
models: [LANGUAGE_MODEL_ID],
|
|
18
|
+
_src: "languages"
|
|
19
|
+
}, {
|
|
20
|
+
name: "cms.contentModelGroup",
|
|
21
|
+
own: false,
|
|
22
|
+
rwd: "r",
|
|
23
|
+
pw: "",
|
|
24
|
+
groups: ["hidden"],
|
|
25
|
+
_src: "languages"
|
|
26
|
+
}, {
|
|
27
|
+
name: "cms.contentEntry",
|
|
28
|
+
own: false,
|
|
29
|
+
rwd: isReadOnly ? "r" : "rwd",
|
|
30
|
+
pw: "",
|
|
31
|
+
_src: "languages"
|
|
32
|
+
}];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export default PermissionTransformer.createImplementation({
|
|
36
|
+
implementation: AddCmsPermissions,
|
|
37
|
+
dependencies: []
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=AddCmsPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PermissionTransformer","LANGUAGE_MODEL_ID","AddCmsPermissions","execute","permission","name","startsWith","isReadOnly","rwd","_src","own","pw","models","groups","createImplementation","implementation","dependencies"],"sources":["AddCmsPermissions.ts"],"sourcesContent":["import { PermissionTransformer } from \"@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\n\nclass AddCmsPermissions implements PermissionTransformer.Interface {\n execute(permission: PermissionTransformer.Permission) {\n if (!permission.name.startsWith(\"languages.\")) {\n return permission;\n }\n\n const isReadOnly = permission.name === \"languages.*\" && permission.rwd === \"r\";\n\n return [\n permission,\n {\n name: \"cms.endpoint.manage\",\n _src: \"languages\"\n },\n {\n name: \"cms.contentModel\",\n own: false,\n rwd: \"r\",\n pw: \"\",\n models: [LANGUAGE_MODEL_ID],\n _src: \"languages\"\n },\n {\n name: \"cms.contentModelGroup\",\n own: false,\n rwd: \"r\",\n pw: \"\",\n groups: [\"hidden\"],\n _src: \"languages\"\n },\n {\n name: \"cms.contentEntry\",\n own: false,\n rwd: isReadOnly ? \"r\" : \"rwd\",\n pw: \"\",\n _src: \"languages\"\n }\n ];\n }\n}\n\nexport default PermissionTransformer.createImplementation({\n implementation: AddCmsPermissions,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,uFAAuF;AAC7H,SAASC,iBAAiB;AAE1B,MAAMC,iBAAiB,CAA4C;EAC/DC,OAAOA,CAACC,UAA4C,EAAE;IAClD,IAAI,CAACA,UAAU,CAACC,IAAI,CAACC,UAAU,CAAC,YAAY,CAAC,EAAE;MAC3C,OAAOF,UAAU;IACrB;IAEA,MAAMG,UAAU,GAAGH,UAAU,CAACC,IAAI,KAAK,aAAa,IAAID,UAAU,CAACI,GAAG,KAAK,GAAG;IAE9E,OAAO,CACHJ,UAAU,EACV;MACIC,IAAI,EAAE,qBAAqB;MAC3BI,IAAI,EAAE;IACV,CAAC,EACD;MACIJ,IAAI,EAAE,kBAAkB;MACxBK,GAAG,EAAE,KAAK;MACVF,GAAG,EAAE,GAAG;MACRG,EAAE,EAAE,EAAE;MACNC,MAAM,EAAE,CAACX,iBAAiB,CAAC;MAC3BQ,IAAI,EAAE;IACV,CAAC,EACD;MACIJ,IAAI,EAAE,uBAAuB;MAC7BK,GAAG,EAAE,KAAK;MACVF,GAAG,EAAE,GAAG;MACRG,EAAE,EAAE,EAAE;MACNE,MAAM,EAAE,CAAC,QAAQ,CAAC;MAClBJ,IAAI,EAAE;IACV,CAAC,EACD;MACIJ,IAAI,EAAE,kBAAkB;MACxBK,GAAG,EAAE,KAAK;MACVF,GAAG,EAAED,UAAU,GAAG,GAAG,GAAG,KAAK;MAC7BI,EAAE,EAAE,EAAE;MACNF,IAAI,EAAE;IACV,CAAC,CACJ;EACL;AACJ;AAEA,eAAeT,qBAAqB,CAACc,oBAAoB,CAAC;EACtDC,cAAc,EAAEb,iBAAiB;EACjCc,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import AddCmsPermissions from "./AddCmsPermissions.js";
|
|
3
|
+
export const AddCmsPermissionsFeature = createFeature({
|
|
4
|
+
name: "Languages/AddCmsPermissions",
|
|
5
|
+
register(container) {
|
|
6
|
+
container.register(AddCmsPermissions);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","AddCmsPermissions","AddCmsPermissionsFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport AddCmsPermissions from \"./AddCmsPermissions.js\";\n\nexport const AddCmsPermissionsFeature = createFeature({\n name: \"Languages/AddCmsPermissions\",\n register(container) {\n container.register(AddCmsPermissions);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,iBAAiB;AAExB,OAAO,MAAMC,wBAAwB,GAAGF,aAAa,CAAC;EAClDG,IAAI,EAAE,6BAA6B;EACnCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,iBAAiB,CAAC;EACzC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EntryAfterUpdateEventHandler } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/events.js";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js";
|
|
3
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
|
+
import { UpdateEntryRepository } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/abstractions.js";
|
|
5
|
+
declare class UnsetDefaultLanguagesHandler implements EntryAfterUpdateEventHandler.Interface {
|
|
6
|
+
private getModel;
|
|
7
|
+
private listLatestEntries;
|
|
8
|
+
private updateEntry;
|
|
9
|
+
constructor(getModel: GetModelUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface, updateEntry: UpdateEntryRepository.Interface);
|
|
10
|
+
handle(event: EntryAfterUpdateEventHandler.Event): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: typeof UnsetDefaultLanguagesHandler & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-headless-cms/features/contentEntry/UpdateEntry/events.js").EntryAfterUpdateEvent>>;
|
|
14
|
+
};
|
|
15
|
+
export default _default;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { EntryAfterUpdateEventHandler } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/events.js";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js";
|
|
3
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
|
+
import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
|
|
5
|
+
import { UpdateEntryRepository } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/abstractions.js";
|
|
6
|
+
class UnsetDefaultLanguagesHandler {
|
|
7
|
+
constructor(getModel, listLatestEntries, updateEntry) {
|
|
8
|
+
this.getModel = getModel;
|
|
9
|
+
this.listLatestEntries = listLatestEntries;
|
|
10
|
+
this.updateEntry = updateEntry;
|
|
11
|
+
}
|
|
12
|
+
async handle(event) {
|
|
13
|
+
const {
|
|
14
|
+
entry,
|
|
15
|
+
model
|
|
16
|
+
} = event.payload;
|
|
17
|
+
if (model.modelId !== LANGUAGE_MODEL_ID) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (!entry.values.isDefault) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);
|
|
24
|
+
if (modelResult.isFail()) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const languageModel = modelResult.value;
|
|
28
|
+
const listResult = await this.listLatestEntries.execute(languageModel, {
|
|
29
|
+
where: {
|
|
30
|
+
entryId_not: entry.entryId,
|
|
31
|
+
values: {
|
|
32
|
+
isDefault: true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
if (listResult.isFail()) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const {
|
|
40
|
+
entries
|
|
41
|
+
} = listResult.value;
|
|
42
|
+
for (const other of entries) {
|
|
43
|
+
await this.updateEntry.execute(languageModel, {
|
|
44
|
+
...other,
|
|
45
|
+
values: {
|
|
46
|
+
...other.values,
|
|
47
|
+
isDefault: false
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export default EntryAfterUpdateEventHandler.createImplementation({
|
|
54
|
+
implementation: UnsetDefaultLanguagesHandler,
|
|
55
|
+
dependencies: [GetModelUseCase, ListLatestEntriesUseCase, UpdateEntryRepository]
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=UnsetDefaultLanguagesHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EntryAfterUpdateEventHandler","GetModelUseCase","ListLatestEntriesUseCase","LANGUAGE_MODEL_ID","UpdateEntryRepository","UnsetDefaultLanguagesHandler","constructor","getModel","listLatestEntries","updateEntry","handle","event","entry","model","payload","modelId","values","isDefault","modelResult","execute","isFail","languageModel","value","listResult","where","entryId_not","entryId","entries","other","createImplementation","implementation","dependencies"],"sources":["UnsetDefaultLanguagesHandler.ts"],"sourcesContent":["import { EntryAfterUpdateEventHandler } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/events.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { UpdateEntryRepository } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/abstractions.js\";\n\nclass UnsetDefaultLanguagesHandler implements EntryAfterUpdateEventHandler.Interface {\n constructor(\n private getModel: GetModelUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private updateEntry: UpdateEntryRepository.Interface\n ) {}\n\n async handle(event: EntryAfterUpdateEventHandler.Event): Promise<void> {\n const { entry, model } = event.payload;\n\n if (model.modelId !== LANGUAGE_MODEL_ID) {\n return;\n }\n\n if (!entry.values.isDefault) {\n return;\n }\n\n const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);\n if (modelResult.isFail()) {\n return;\n }\n\n const languageModel = modelResult.value;\n\n const listResult = await this.listLatestEntries.execute(languageModel, {\n where: {\n entryId_not: entry.entryId,\n values: {\n isDefault: true\n }\n }\n });\n\n if (listResult.isFail()) {\n return;\n }\n\n const { entries } = listResult.value;\n\n for (const other of entries) {\n await this.updateEntry.execute(languageModel, {\n ...other,\n values: {\n ...other.values,\n isDefault: false\n }\n });\n }\n }\n}\n\nexport default EntryAfterUpdateEventHandler.createImplementation({\n implementation: UnsetDefaultLanguagesHandler,\n dependencies: [GetModelUseCase, ListLatestEntriesUseCase, UpdateEntryRepository]\n});\n"],"mappings":"AAAA,SAASA,4BAA4B,QAAQ,sEAAsE;AACnH,SAASC,eAAe,QAAQ,yEAAyE;AACzG,SAASC,wBAAwB,QAAQ,4EAA4E;AACrH,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB,QAAQ,4EAA4E;AAElH,MAAMC,4BAA4B,CAAmD;EACjFC,WAAWA,CACCC,QAAmC,EACnCC,iBAAqD,EACrDC,WAA4C,EACtD;IAAA,KAHUF,QAAmC,GAAnCA,QAAmC;IAAA,KACnCC,iBAAqD,GAArDA,iBAAqD;IAAA,KACrDC,WAA4C,GAA5CA,WAA4C;EACrD;EAEH,MAAMC,MAAMA,CAACC,KAAyC,EAAiB;IACnE,MAAM;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAGF,KAAK,CAACG,OAAO;IAEtC,IAAID,KAAK,CAACE,OAAO,KAAKZ,iBAAiB,EAAE;MACrC;IACJ;IAEA,IAAI,CAACS,KAAK,CAACI,MAAM,CAACC,SAAS,EAAE;MACzB;IACJ;IAEA,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACX,QAAQ,CAACY,OAAO,CAAChB,iBAAiB,CAAC;IAClE,IAAIe,WAAW,CAACE,MAAM,CAAC,CAAC,EAAE;MACtB;IACJ;IAEA,MAAMC,aAAa,GAAGH,WAAW,CAACI,KAAK;IAEvC,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACf,iBAAiB,CAACW,OAAO,CAACE,aAAa,EAAE;MACnEG,KAAK,EAAE;QACHC,WAAW,EAAEb,KAAK,CAACc,OAAO;QAC1BV,MAAM,EAAE;UACJC,SAAS,EAAE;QACf;MACJ;IACJ,CAAC,CAAC;IAEF,IAAIM,UAAU,CAACH,MAAM,CAAC,CAAC,EAAE;MACrB;IACJ;IAEA,MAAM;MAAEO;IAAQ,CAAC,GAAGJ,UAAU,CAACD,KAAK;IAEpC,KAAK,MAAMM,KAAK,IAAID,OAAO,EAAE;MACzB,MAAM,IAAI,CAAClB,WAAW,CAACU,OAAO,CAACE,aAAa,EAAE;QAC1C,GAAGO,KAAK;QACRZ,MAAM,EAAE;UACJ,GAAGY,KAAK,CAACZ,MAAM;UACfC,SAAS,EAAE;QACf;MACJ,CAAC,CAAC;IACN;EACJ;AACJ;AAEA,eAAejB,4BAA4B,CAAC6B,oBAAoB,CAAC;EAC7DC,cAAc,EAAEzB,4BAA4B;EAC5C0B,YAAY,EAAE,CAAC9B,eAAe,EAAEC,wBAAwB,EAAEE,qBAAqB;AACnF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import UnsetDefaultLanguagesHandler from "./UnsetDefaultLanguagesHandler.js";
|
|
3
|
+
export const EnsureSingleDefaultLanguageFeature = createFeature({
|
|
4
|
+
name: "Languages/EnsureSingleDefaultLanguage",
|
|
5
|
+
register(container) {
|
|
6
|
+
container.register(UnsetDefaultLanguagesHandler);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","UnsetDefaultLanguagesHandler","EnsureSingleDefaultLanguageFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport UnsetDefaultLanguagesHandler from \"./UnsetDefaultLanguagesHandler.js\";\n\nexport const EnsureSingleDefaultLanguageFeature = createFeature({\n name: \"Languages/EnsureSingleDefaultLanguage\",\n register(container) {\n container.register(UnsetDefaultLanguagesHandler);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,4BAA4B;AAEnC,OAAO,MAAMC,kCAAkC,GAAGF,aAAa,CAAC;EAC5DG,IAAI,EAAE,uCAAuC;EAC7CC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,4BAA4B,CAAC;EACpD;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js";
|
|
2
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
3
|
+
import { GetLanguageByCodeRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
4
|
+
declare class GetLanguageByCodeRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
5
|
+
private getModel;
|
|
6
|
+
private listLatestEntries;
|
|
7
|
+
constructor(getModel: GetModelUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface);
|
|
8
|
+
execute(code: string): RepositoryAbstraction.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const GetLanguageByCodeRepository: typeof GetLanguageByCodeRepositoryImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetLanguageByCodeRepository>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js";
|
|
3
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
|
+
import { GetLanguageByCodeRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
5
|
+
import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
|
|
6
|
+
import { LanguageNotFoundError, LanguagePersistenceError } from "../../domain/errors.js";
|
|
7
|
+
class GetLanguageByCodeRepositoryImpl {
|
|
8
|
+
constructor(getModel, listLatestEntries) {
|
|
9
|
+
this.getModel = getModel;
|
|
10
|
+
this.listLatestEntries = listLatestEntries;
|
|
11
|
+
}
|
|
12
|
+
async execute(code) {
|
|
13
|
+
const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);
|
|
14
|
+
if (modelResult.isFail()) {
|
|
15
|
+
return Result.fail(new LanguagePersistenceError(modelResult.error));
|
|
16
|
+
}
|
|
17
|
+
const model = modelResult.value;
|
|
18
|
+
const listResult = await this.listLatestEntries.execute(model, {
|
|
19
|
+
where: {
|
|
20
|
+
values: {
|
|
21
|
+
code
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
limit: 1
|
|
25
|
+
});
|
|
26
|
+
if (listResult.isFail()) {
|
|
27
|
+
return Result.fail(new LanguagePersistenceError(listResult.error));
|
|
28
|
+
}
|
|
29
|
+
const {
|
|
30
|
+
entries
|
|
31
|
+
} = listResult.value;
|
|
32
|
+
if (entries.length === 0) {
|
|
33
|
+
return Result.fail(new LanguageNotFoundError(code));
|
|
34
|
+
}
|
|
35
|
+
const entry = entries[0];
|
|
36
|
+
const language = {
|
|
37
|
+
id: entry.entryId,
|
|
38
|
+
name: entry.values.name,
|
|
39
|
+
code: entry.values.code,
|
|
40
|
+
direction: entry.values.direction,
|
|
41
|
+
isDefault: entry.values.isDefault,
|
|
42
|
+
enabled: entry.values.enabled
|
|
43
|
+
};
|
|
44
|
+
return Result.ok(language);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export const GetLanguageByCodeRepository = RepositoryAbstraction.createImplementation({
|
|
48
|
+
implementation: GetLanguageByCodeRepositoryImpl,
|
|
49
|
+
dependencies: [GetModelUseCase, ListLatestEntriesUseCase]
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=GetLanguageByCodeRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","GetModelUseCase","ListLatestEntriesUseCase","GetLanguageByCodeRepository","RepositoryAbstraction","LANGUAGE_MODEL_ID","LanguageNotFoundError","LanguagePersistenceError","GetLanguageByCodeRepositoryImpl","constructor","getModel","listLatestEntries","execute","code","modelResult","isFail","fail","error","model","value","listResult","where","values","limit","entries","length","entry","language","id","entryId","name","direction","isDefault","enabled","ok","createImplementation","implementation","dependencies"],"sources":["GetLanguageByCodeRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport { GetLanguageByCodeRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { LanguageNotFoundError, LanguagePersistenceError } from \"~/api/domain/errors.js\";\nimport type { Language } from \"~/api/domain/Language.js\";\n\nclass GetLanguageByCodeRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private getModel: GetModelUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface\n ) {}\n\n async execute(code: string): RepositoryAbstraction.Return {\n const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);\n if (modelResult.isFail()) {\n return Result.fail(new LanguagePersistenceError(modelResult.error));\n }\n\n const model = modelResult.value;\n\n const listResult = await this.listLatestEntries.execute(model, {\n where: {\n values: {\n code\n }\n },\n limit: 1\n });\n\n if (listResult.isFail()) {\n return Result.fail(new LanguagePersistenceError(listResult.error));\n }\n\n const { entries } = listResult.value;\n\n if (entries.length === 0) {\n return Result.fail(new LanguageNotFoundError(code));\n }\n\n const entry = entries[0];\n\n const language: Language = {\n id: entry.entryId,\n name: entry.values.name,\n code: entry.values.code,\n direction: entry.values.direction,\n isDefault: entry.values.isDefault,\n enabled: entry.values.enabled\n };\n\n return Result.ok(language);\n }\n}\n\nexport const GetLanguageByCodeRepository = RepositoryAbstraction.createImplementation({\n implementation: GetLanguageByCodeRepositoryImpl,\n dependencies: [GetModelUseCase, ListLatestEntriesUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,yEAAyE;AACzG,SAASC,wBAAwB,QAAQ,4EAA4E;AACrH,SAASC,2BAA2B,IAAIC,qBAAqB;AAC7D,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB,EAAEC,wBAAwB;AAGxD,MAAMC,+BAA+B,CAA4C;EAC7EC,WAAWA,CACCC,QAAmC,EACnCC,iBAAqD,EAC/D;IAAA,KAFUD,QAAmC,GAAnCA,QAAmC;IAAA,KACnCC,iBAAqD,GAArDA,iBAAqD;EAC9D;EAEH,MAAMC,OAAOA,CAACC,IAAY,EAAgC;IACtD,MAAMC,WAAW,GAAG,MAAM,IAAI,CAACJ,QAAQ,CAACE,OAAO,CAACP,iBAAiB,CAAC;IAClE,IAAIS,WAAW,CAACC,MAAM,CAAC,CAAC,EAAE;MACtB,OAAOf,MAAM,CAACgB,IAAI,CAAC,IAAIT,wBAAwB,CAACO,WAAW,CAACG,KAAK,CAAC,CAAC;IACvE;IAEA,MAAMC,KAAK,GAAGJ,WAAW,CAACK,KAAK;IAE/B,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACT,iBAAiB,CAACC,OAAO,CAACM,KAAK,EAAE;MAC3DG,KAAK,EAAE;QACHC,MAAM,EAAE;UACJT;QACJ;MACJ,CAAC;MACDU,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,IAAIH,UAAU,CAACL,MAAM,CAAC,CAAC,EAAE;MACrB,OAAOf,MAAM,CAACgB,IAAI,CAAC,IAAIT,wBAAwB,CAACa,UAAU,CAACH,KAAK,CAAC,CAAC;IACtE;IAEA,MAAM;MAAEO;IAAQ,CAAC,GAAGJ,UAAU,CAACD,KAAK;IAEpC,IAAIK,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE;MACtB,OAAOzB,MAAM,CAACgB,IAAI,CAAC,IAAIV,qBAAqB,CAACO,IAAI,CAAC,CAAC;IACvD;IAEA,MAAMa,KAAK,GAAGF,OAAO,CAAC,CAAC,CAAC;IAExB,MAAMG,QAAkB,GAAG;MACvBC,EAAE,EAAEF,KAAK,CAACG,OAAO;MACjBC,IAAI,EAAEJ,KAAK,CAACJ,MAAM,CAACQ,IAAI;MACvBjB,IAAI,EAAEa,KAAK,CAACJ,MAAM,CAACT,IAAI;MACvBkB,SAAS,EAAEL,KAAK,CAACJ,MAAM,CAACS,SAAS;MACjCC,SAAS,EAAEN,KAAK,CAACJ,MAAM,CAACU,SAAS;MACjCC,OAAO,EAAEP,KAAK,CAACJ,MAAM,CAACW;IAC1B,CAAC;IAED,OAAOjC,MAAM,CAACkC,EAAE,CAACP,QAAQ,CAAC;EAC9B;AACJ;AAEA,OAAO,MAAMxB,2BAA2B,GAAGC,qBAAqB,CAAC+B,oBAAoB,CAAC;EAClFC,cAAc,EAAE5B,+BAA+B;EAC/C6B,YAAY,EAAE,CAACpC,eAAe,EAAEC,wBAAwB;AAC5D,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { GetLanguageByCodeUseCase as UseCaseAbstraction, GetLanguageByCodeRepository } from "./abstractions.js";
|
|
2
|
+
declare class GetLanguageByCodeUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
3
|
+
private repository;
|
|
4
|
+
constructor(repository: GetLanguageByCodeRepository.Interface);
|
|
5
|
+
execute(code: string): UseCaseAbstraction.Return;
|
|
6
|
+
}
|
|
7
|
+
export declare const GetLanguageByCodeUseCase: import("@webiny/di").Implementation<typeof GetLanguageByCodeUseCaseImpl>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
+
import { GetLanguageByCodeUseCase as UseCaseAbstraction, GetLanguageByCodeRepository } from "./abstractions.js";
|
|
3
|
+
class GetLanguageByCodeUseCaseImpl {
|
|
4
|
+
constructor(repository) {
|
|
5
|
+
this.repository = repository;
|
|
6
|
+
}
|
|
7
|
+
async execute(code) {
|
|
8
|
+
return this.repository.execute(code);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export const GetLanguageByCodeUseCase = createImplementation({
|
|
12
|
+
abstraction: UseCaseAbstraction,
|
|
13
|
+
implementation: GetLanguageByCodeUseCaseImpl,
|
|
14
|
+
dependencies: [GetLanguageByCodeRepository]
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=GetLanguageByCodeUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createImplementation","GetLanguageByCodeUseCase","UseCaseAbstraction","GetLanguageByCodeRepository","GetLanguageByCodeUseCaseImpl","constructor","repository","execute","code","abstraction","implementation","dependencies"],"sources":["GetLanguageByCodeUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport {\n GetLanguageByCodeUseCase as UseCaseAbstraction,\n GetLanguageByCodeRepository\n} from \"./abstractions.js\";\n\nclass GetLanguageByCodeUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: GetLanguageByCodeRepository.Interface) {}\n\n async execute(code: string): UseCaseAbstraction.Return {\n return this.repository.execute(code);\n }\n}\n\nexport const GetLanguageByCodeUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetLanguageByCodeUseCaseImpl,\n dependencies: [GetLanguageByCodeRepository]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SACIC,wBAAwB,IAAIC,kBAAkB,EAC9CC,2BAA2B;AAG/B,MAAMC,4BAA4B,CAAyC;EACvEC,WAAWA,CAASC,UAAiD,EAAE;IAAA,KAAnDA,UAAiD,GAAjDA,UAAiD;EAAG;EAExE,MAAMC,OAAOA,CAACC,IAAY,EAA6B;IACnD,OAAO,IAAI,CAACF,UAAU,CAACC,OAAO,CAACC,IAAI,CAAC;EACxC;AACJ;AAEA,OAAO,MAAMP,wBAAwB,GAAGD,oBAAoB,CAAC;EACzDS,WAAW,EAAEP,kBAAkB;EAC/BQ,cAAc,EAAEN,4BAA4B;EAC5CO,YAAY,EAAE,CAACR,2BAA2B;AAC9C,CAAC,CAAC","ignoreList":[]}
|