@webiny/languages 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/Languages.js +10 -10
  2. package/Languages.js.map +1 -1
  3. package/admin/Extension.js +21 -25
  4. package/admin/Extension.js.map +1 -1
  5. package/admin/GenericCell.js +7 -12
  6. package/admin/GenericCell.js.map +1 -1
  7. package/admin/LanguageEntryList.js +31 -30
  8. package/admin/LanguageEntryList.js.map +1 -1
  9. package/admin/PermissionsSchema.js +5 -4
  10. package/admin/PermissionsSchema.js.map +1 -1
  11. package/admin/SecurityPermission.js +11 -14
  12. package/admin/SecurityPermission.js.map +1 -1
  13. package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.js +14 -11
  14. package/admin/features/listLanguages/LanguageEntryAfterCreateHandler.js.map +1 -1
  15. package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js +12 -11
  16. package/admin/features/listLanguages/LanguageEntryAfterDeleteHandler.js.map +1 -1
  17. package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js +16 -17
  18. package/admin/features/listLanguages/LanguageEntryAfterUpdateHandler.js.map +1 -1
  19. package/admin/features/listLanguages/ListLanguagesGateway.js +18 -17
  20. package/admin/features/listLanguages/ListLanguagesGateway.js.map +1 -1
  21. package/admin/features/listLanguages/ListLanguagesRepository.js +23 -23
  22. package/admin/features/listLanguages/ListLanguagesRepository.js.map +1 -1
  23. package/admin/features/listLanguages/ListLanguagesUseCase.js +13 -10
  24. package/admin/features/listLanguages/ListLanguagesUseCase.js.map +1 -1
  25. package/admin/features/listLanguages/abstractions.d.ts +1 -1
  26. package/admin/features/listLanguages/abstractions.js +5 -27
  27. package/admin/features/listLanguages/abstractions.js.map +1 -1
  28. package/admin/features/listLanguages/feature.d.ts +1 -1
  29. package/admin/features/listLanguages/feature.js +23 -22
  30. package/admin/features/listLanguages/feature.js.map +1 -1
  31. package/admin/features/listLanguages/index.js +0 -2
  32. package/admin/features/listLanguages/toLanguageDto.js +10 -9
  33. package/admin/features/listLanguages/toLanguageDto.js.map +1 -1
  34. package/admin/presentation/hooks/useLanguages.js +20 -19
  35. package/admin/presentation/hooks/useLanguages.js.map +1 -1
  36. package/api/Extension.js +14 -15
  37. package/api/Extension.js.map +1 -1
  38. package/api/domain/Language.js +0 -3
  39. package/api/domain/LanguageModel.js +49 -24
  40. package/api/domain/LanguageModel.js.map +1 -1
  41. package/api/domain/errors.d.ts +4 -0
  42. package/api/domain/errors.js +23 -17
  43. package/api/domain/errors.js.map +1 -1
  44. package/api/domain/permissionsSchema.js +5 -4
  45. package/api/domain/permissionsSchema.js.map +1 -1
  46. package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +1 -1
  47. package/api/features/AddCmsPermissions/AddCmsPermissions.js +41 -32
  48. package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -1
  49. package/api/features/AddCmsPermissions/feature.js +6 -5
  50. package/api/features/AddCmsPermissions/feature.js.map +1 -1
  51. package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js +36 -46
  52. package/api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js.map +1 -1
  53. package/api/features/EnsureSingleDefaultLanguage/feature.js +6 -5
  54. package/api/features/EnsureSingleDefaultLanguage/feature.js.map +1 -1
  55. package/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.d.ts +13 -0
  56. package/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.js +48 -0
  57. package/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.js.map +1 -0
  58. package/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.d.ts +8 -0
  59. package/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.js +20 -0
  60. package/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.js.map +1 -0
  61. package/api/features/GetDefaultLanguage/abstractions.d.ts +33 -0
  62. package/api/features/GetDefaultLanguage/abstractions.js +6 -0
  63. package/api/features/GetDefaultLanguage/abstractions.js.map +1 -0
  64. package/api/features/GetDefaultLanguage/feature.d.ts +4 -0
  65. package/api/features/GetDefaultLanguage/feature.js +13 -0
  66. package/api/features/GetDefaultLanguage/feature.js.map +1 -0
  67. package/api/features/GetDefaultLanguage/index.d.ts +1 -0
  68. package/api/features/GetDefaultLanguage/index.js +1 -0
  69. package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.js +36 -40
  70. package/api/features/GetLanguageByCode/GetLanguageByCodeRepository.js.map +1 -1
  71. package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.js +14 -11
  72. package/api/features/GetLanguageByCode/GetLanguageByCodeUseCase.js.map +1 -1
  73. package/api/features/GetLanguageByCode/abstractions.js +3 -13
  74. package/api/features/GetLanguageByCode/abstractions.js.map +1 -1
  75. package/api/features/GetLanguageByCode/feature.js +7 -6
  76. package/api/features/GetLanguageByCode/feature.js.map +1 -1
  77. package/api/features/GetLanguageByCode/index.js +0 -2
  78. package/api/features/ListLanguages/ListLanguagesRepository.js +36 -34
  79. package/api/features/ListLanguages/ListLanguagesRepository.js.map +1 -1
  80. package/api/features/ListLanguages/ListLanguagesUseCase.js +14 -11
  81. package/api/features/ListLanguages/ListLanguagesUseCase.js.map +1 -1
  82. package/api/features/ListLanguages/abstractions.js +3 -13
  83. package/api/features/ListLanguages/abstractions.js.map +1 -1
  84. package/api/features/ListLanguages/feature.js +7 -6
  85. package/api/features/ListLanguages/feature.js.map +1 -1
  86. package/api/features/ListLanguages/index.js +0 -2
  87. package/api/features/Permissions/abstractions.js +2 -1
  88. package/api/features/Permissions/abstractions.js.map +1 -1
  89. package/api/features/Permissions/feature.js +2 -1
  90. package/api/features/Permissions/feature.js.map +1 -1
  91. package/api/graphql/LanguagesGraphQLSchema.d.ts +3 -2
  92. package/api/graphql/LanguagesGraphQLSchema.js +29 -32
  93. package/api/graphql/LanguagesGraphQLSchema.js.map +1 -1
  94. package/exports/admin/languages.js +0 -2
  95. package/exports/api/languages.d.ts +1 -0
  96. package/exports/api/languages.js +1 -2
  97. package/index.js +0 -2
  98. package/package.json +27 -24
  99. package/shared/constants.js +2 -1
  100. package/shared/constants.js.map +1 -1
  101. package/admin/features/listLanguages/index.js.map +0 -1
  102. package/api/domain/Language.js.map +0 -1
  103. package/api/features/GetLanguageByCode/index.js.map +0 -1
  104. package/api/features/ListLanguages/index.js.map +0 -1
  105. package/exports/admin/languages.js.map +0 -1
  106. package/exports/api/languages.js.map +0 -1
  107. package/index.js.map +0 -1
@@ -1,40 +1,49 @@
1
1
  import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
2
2
  import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
3
3
  class AddCmsPermissions {
4
- execute(permission) {
5
- if (!permission.name.startsWith("languages.")) {
6
- return permission;
4
+ execute(permission) {
5
+ if (!permission.name.startsWith("languages.")) return permission;
6
+ const isReadOnly = "languages.*" === permission.name && "r" === permission.rwd;
7
+ return [
8
+ permission,
9
+ {
10
+ name: "cms.endpoint.manage",
11
+ _src: "languages"
12
+ },
13
+ {
14
+ name: "cms.contentModel",
15
+ own: false,
16
+ rwd: "r",
17
+ pw: "",
18
+ models: [
19
+ LANGUAGE_MODEL_ID
20
+ ],
21
+ _src: "languages"
22
+ },
23
+ {
24
+ name: "cms.contentModelGroup",
25
+ own: false,
26
+ rwd: "r",
27
+ pw: "",
28
+ groups: [
29
+ "hidden"
30
+ ],
31
+ _src: "languages"
32
+ },
33
+ {
34
+ name: "cms.contentEntry",
35
+ own: false,
36
+ rwd: isReadOnly ? "r" : "rwd",
37
+ pw: "",
38
+ _src: "languages"
39
+ }
40
+ ];
7
41
  }
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
42
  }
35
- export default PermissionTransformer.createImplementation({
36
- implementation: AddCmsPermissions,
37
- dependencies: []
43
+ const AddCmsPermissions_AddCmsPermissions = PermissionTransformer.createImplementation({
44
+ implementation: AddCmsPermissions,
45
+ dependencies: []
38
46
  });
47
+ export default AddCmsPermissions_AddCmsPermissions;
39
48
 
40
49
  //# sourceMappingURL=AddCmsPermissions.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"api/features/AddCmsPermissions/AddCmsPermissions.js","sources":["../../../../src/api/features/AddCmsPermissions/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"],"names":["AddCmsPermissions","permission","isReadOnly","LANGUAGE_MODEL_ID","PermissionTransformer"],"mappings":";;AAGA,MAAMA;IACF,QAAQC,UAA4C,EAAE;QAClD,IAAI,CAACA,WAAW,IAAI,CAAC,UAAU,CAAC,eAC5B,OAAOA;QAGX,MAAMC,aAAaD,AAAoB,kBAApBA,WAAW,IAAI,IAAsBA,AAAmB,QAAnBA,WAAW,GAAG;QAEtE,OAAO;YACHA;YACA;gBACI,MAAM;gBACN,MAAM;YACV;YACA;gBACI,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,QAAQ;oBAACE;iBAAkB;gBAC3B,MAAM;YACV;YACA;gBACI,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,QAAQ;oBAAC;iBAAS;gBAClB,MAAM;YACV;YACA;gBACI,MAAM;gBACN,KAAK;gBACL,KAAKD,aAAa,MAAM;gBACxB,IAAI;gBACJ,MAAM;YACV;SACH;IACL;AACJ;AAEA,4CAAeE,sBAAsB,oBAAoB,CAAC;IACtD,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import AddCmsPermissions from "./AddCmsPermissions.js";
3
- export const AddCmsPermissionsFeature = createFeature({
4
- name: "Languages/AddCmsPermissions",
5
- register(container) {
6
- container.register(AddCmsPermissions);
7
- }
3
+ const AddCmsPermissionsFeature = createFeature({
4
+ name: "Languages/AddCmsPermissions",
5
+ register (container) {
6
+ container.register(AddCmsPermissions);
7
+ }
8
8
  });
9
+ export { AddCmsPermissionsFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"api/features/AddCmsPermissions/feature.js","sources":["../../../../src/api/features/AddCmsPermissions/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"],"names":["AddCmsPermissionsFeature","createFeature","container","AddCmsPermissions"],"mappings":";;AAGO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -4,55 +4,45 @@ import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/cont
4
4
  import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
5
5
  import { UpdateEntryRepository } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/abstractions.js";
6
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;
7
+ constructor(getModel, listLatestEntries, updateEntry){
8
+ this.getModel = getModel;
9
+ this.listLatestEntries = listLatestEntries;
10
+ this.updateEntry = updateEntry;
19
11
  }
20
- if (!entry.values.isDefault) {
21
- return;
12
+ async handle(event) {
13
+ const { entry, model } = event.payload;
14
+ if (model.modelId !== LANGUAGE_MODEL_ID) return;
15
+ if (!entry.values.isDefault) return;
16
+ const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);
17
+ if (modelResult.isFail()) return;
18
+ const languageModel = modelResult.value;
19
+ const listResult = await this.listLatestEntries.execute(languageModel, {
20
+ where: {
21
+ entryId_not: entry.entryId,
22
+ values: {
23
+ isDefault: true
24
+ }
25
+ }
26
+ });
27
+ if (listResult.isFail()) return;
28
+ const { entries } = listResult.value;
29
+ for (const other of entries)await this.updateEntry.execute(languageModel, {
30
+ ...other,
31
+ values: {
32
+ ...other.values,
33
+ isDefault: false
34
+ }
35
+ });
22
36
  }
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
37
  }
53
- export default EntryAfterUpdateEventHandler.createImplementation({
54
- implementation: UnsetDefaultLanguagesHandler,
55
- dependencies: [GetModelUseCase, ListLatestEntriesUseCase, UpdateEntryRepository]
38
+ const EnsureSingleDefaultLanguage_UnsetDefaultLanguagesHandler = EntryAfterUpdateEventHandler.createImplementation({
39
+ implementation: UnsetDefaultLanguagesHandler,
40
+ dependencies: [
41
+ GetModelUseCase,
42
+ ListLatestEntriesUseCase,
43
+ UpdateEntryRepository
44
+ ]
56
45
  });
46
+ export default EnsureSingleDefaultLanguage_UnsetDefaultLanguagesHandler;
57
47
 
58
48
  //# sourceMappingURL=UnsetDefaultLanguagesHandler.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"api/features/EnsureSingleDefaultLanguage/UnsetDefaultLanguagesHandler.js","sources":["../../../../src/api/features/EnsureSingleDefaultLanguage/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"],"names":["UnsetDefaultLanguagesHandler","getModel","listLatestEntries","updateEntry","event","entry","model","LANGUAGE_MODEL_ID","modelResult","languageModel","listResult","entries","other","EntryAfterUpdateEventHandler","GetModelUseCase","ListLatestEntriesUseCase","UpdateEntryRepository"],"mappings":";;;;;AAMA,MAAMA;IACF,YACYC,QAAmC,EACnCC,iBAAqD,EACrDC,WAA4C,CACtD;aAHUF,QAAQ,GAARA;aACAC,iBAAiB,GAAjBA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,OAAOC,KAAyC,EAAiB;QACnE,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGF,MAAM,OAAO;QAEtC,IAAIE,MAAM,OAAO,KAAKC,mBAClB;QAGJ,IAAI,CAACF,MAAM,MAAM,CAAC,SAAS,EACvB;QAGJ,MAAMG,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACD;QAChD,IAAIC,YAAY,MAAM,IAClB;QAGJ,MAAMC,gBAAgBD,YAAY,KAAK;QAEvC,MAAME,aAAa,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACD,eAAe;YACnE,OAAO;gBACH,aAAaJ,MAAM,OAAO;gBAC1B,QAAQ;oBACJ,WAAW;gBACf;YACJ;QACJ;QAEA,IAAIK,WAAW,MAAM,IACjB;QAGJ,MAAM,EAAEC,OAAO,EAAE,GAAGD,WAAW,KAAK;QAEpC,KAAK,MAAME,SAASD,QAChB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACF,eAAe;YAC1C,GAAGG,KAAK;YACR,QAAQ;gBACJ,GAAGA,MAAM,MAAM;gBACf,WAAW;YACf;QACJ;IAER;AACJ;AAEA,iEAAeC,6BAA6B,oBAAoB,CAAC;IAC7D,gBAAgBb;IAChB,cAAc;QAACc;QAAiBC;QAA0BC;KAAsB;AACpF"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import UnsetDefaultLanguagesHandler from "./UnsetDefaultLanguagesHandler.js";
3
- export const EnsureSingleDefaultLanguageFeature = createFeature({
4
- name: "Languages/EnsureSingleDefaultLanguage",
5
- register(container) {
6
- container.register(UnsetDefaultLanguagesHandler);
7
- }
3
+ const EnsureSingleDefaultLanguageFeature = createFeature({
4
+ name: "Languages/EnsureSingleDefaultLanguage",
5
+ register (container) {
6
+ container.register(UnsetDefaultLanguagesHandler);
7
+ }
8
8
  });
9
+ export { EnsureSingleDefaultLanguageFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"api/features/EnsureSingleDefaultLanguage/feature.js","sources":["../../../../src/api/features/EnsureSingleDefaultLanguage/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"],"names":["EnsureSingleDefaultLanguageFeature","createFeature","container","UnsetDefaultLanguagesHandler"],"mappings":";;AAGO,MAAMA,qCAAqCC,cAAc;IAC5D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -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 { GetDefaultLanguageRepository as RepositoryAbstraction } from "./abstractions.js";
4
+ declare class GetDefaultLanguageRepositoryImpl implements RepositoryAbstraction.Interface {
5
+ private getModel;
6
+ private listLatestEntries;
7
+ constructor(getModel: GetModelUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface);
8
+ execute(): RepositoryAbstraction.Return;
9
+ }
10
+ export declare const GetDefaultLanguageRepository: typeof GetDefaultLanguageRepositoryImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetDefaultLanguageRepository>;
12
+ };
13
+ export {};
@@ -0,0 +1,48 @@
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 { GetDefaultLanguageRepository } from "./abstractions.js";
5
+ import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
6
+ import { DefaultLanguageNotFoundError, LanguagePersistenceError } from "../../domain/errors.js";
7
+ class GetDefaultLanguageRepositoryImpl {
8
+ constructor(getModel, listLatestEntries){
9
+ this.getModel = getModel;
10
+ this.listLatestEntries = listLatestEntries;
11
+ }
12
+ async execute() {
13
+ const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);
14
+ if (modelResult.isFail()) return Result.fail(new LanguagePersistenceError(modelResult.error));
15
+ const model = modelResult.value;
16
+ const listResult = await this.listLatestEntries.execute(model, {
17
+ where: {
18
+ values: {
19
+ isDefault: true
20
+ }
21
+ },
22
+ limit: 1
23
+ });
24
+ if (listResult.isFail()) return Result.fail(new LanguagePersistenceError(listResult.error));
25
+ const { entries } = listResult.value;
26
+ if (0 === entries.length) return Result.fail(new DefaultLanguageNotFoundError());
27
+ const entry = entries[0];
28
+ const language = {
29
+ id: entry.entryId,
30
+ name: entry.values.name,
31
+ code: entry.values.code,
32
+ direction: entry.values.direction,
33
+ isDefault: entry.values.isDefault,
34
+ enabled: entry.values.enabled
35
+ };
36
+ return Result.ok(language);
37
+ }
38
+ }
39
+ const GetDefaultLanguageRepository_GetDefaultLanguageRepository = GetDefaultLanguageRepository.createImplementation({
40
+ implementation: GetDefaultLanguageRepositoryImpl,
41
+ dependencies: [
42
+ GetModelUseCase,
43
+ ListLatestEntriesUseCase
44
+ ]
45
+ });
46
+ export { GetDefaultLanguageRepository_GetDefaultLanguageRepository as GetDefaultLanguageRepository };
47
+
48
+ //# sourceMappingURL=GetDefaultLanguageRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetDefaultLanguage/GetDefaultLanguageRepository.js","sources":["../../../../src/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.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 { GetDefaultLanguageRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { LANGUAGE_MODEL_ID } from \"~/shared/constants.js\";\nimport { DefaultLanguageNotFoundError, LanguagePersistenceError } from \"~/api/domain/errors.js\";\nimport type { Language } from \"~/api/domain/Language.js\";\n\nclass GetDefaultLanguageRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private getModel: GetModelUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface\n ) {}\n\n async execute(): 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 isDefault: true\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 DefaultLanguageNotFoundError());\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 GetDefaultLanguageRepository = RepositoryAbstraction.createImplementation({\n implementation: GetDefaultLanguageRepositoryImpl,\n dependencies: [GetModelUseCase, ListLatestEntriesUseCase]\n});\n"],"names":["GetDefaultLanguageRepositoryImpl","getModel","listLatestEntries","modelResult","LANGUAGE_MODEL_ID","Result","LanguagePersistenceError","model","listResult","entries","DefaultLanguageNotFoundError","entry","language","GetDefaultLanguageRepository","RepositoryAbstraction","GetModelUseCase","ListLatestEntriesUseCase"],"mappings":";;;;;;AAQA,MAAMA;IACF,YACYC,QAAmC,EACnCC,iBAAqD,CAC/D;aAFUD,QAAQ,GAARA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAM,UAAwC;QAC1C,MAAMC,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAChD,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CAAC,IAAIC,yBAAyBH,YAAY,KAAK;QAGrE,MAAMI,QAAQJ,YAAY,KAAK;QAE/B,MAAMK,aAAa,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACD,OAAO;YAC3D,OAAO;gBACH,QAAQ;oBACJ,WAAW;gBACf;YACJ;YACA,OAAO;QACX;QAEA,IAAIC,WAAW,MAAM,IACjB,OAAOH,OAAO,IAAI,CAAC,IAAIC,yBAAyBE,WAAW,KAAK;QAGpE,MAAM,EAAEC,OAAO,EAAE,GAAGD,WAAW,KAAK;QAEpC,IAAIC,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAOJ,OAAO,IAAI,CAAC,IAAIK;QAG3B,MAAMC,QAAQF,OAAO,CAAC,EAAE;QAExB,MAAMG,WAAqB;YACvB,IAAID,MAAM,OAAO;YACjB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,WAAWA,MAAM,MAAM,CAAC,SAAS;YACjC,WAAWA,MAAM,MAAM,CAAC,SAAS;YACjC,SAASA,MAAM,MAAM,CAAC,OAAO;QACjC;QAEA,OAAON,OAAO,EAAE,CAACO;IACrB;AACJ;AAEO,MAAMC,4DAA+BC,6BAAAA,oBAA0C,CAAC;IACnF,gBAAgBd;IAChB,cAAc;QAACe;QAAiBC;KAAyB;AAC7D"}
@@ -0,0 +1,8 @@
1
+ import { GetDefaultLanguageUseCase as UseCaseAbstraction, GetDefaultLanguageRepository } from "./abstractions.js";
2
+ declare class GetDefaultLanguageUseCaseImpl implements UseCaseAbstraction.Interface {
3
+ private repository;
4
+ constructor(repository: GetDefaultLanguageRepository.Interface);
5
+ execute(): UseCaseAbstraction.Return;
6
+ }
7
+ export declare const GetDefaultLanguageUseCase: import("@webiny/di").Implementation<typeof GetDefaultLanguageUseCaseImpl>;
8
+ export {};
@@ -0,0 +1,20 @@
1
+ import { createImplementation } from "@webiny/feature/api";
2
+ import { GetDefaultLanguageRepository, GetDefaultLanguageUseCase } from "./abstractions.js";
3
+ class GetDefaultLanguageUseCaseImpl {
4
+ constructor(repository){
5
+ this.repository = repository;
6
+ }
7
+ async execute() {
8
+ return this.repository.execute();
9
+ }
10
+ }
11
+ const GetDefaultLanguageUseCase_GetDefaultLanguageUseCase = createImplementation({
12
+ abstraction: GetDefaultLanguageUseCase,
13
+ implementation: GetDefaultLanguageUseCaseImpl,
14
+ dependencies: [
15
+ GetDefaultLanguageRepository
16
+ ]
17
+ });
18
+ export { GetDefaultLanguageUseCase_GetDefaultLanguageUseCase as GetDefaultLanguageUseCase };
19
+
20
+ //# sourceMappingURL=GetDefaultLanguageUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.js","sources":["../../../../src/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport {\n GetDefaultLanguageUseCase as UseCaseAbstraction,\n GetDefaultLanguageRepository\n} from \"./abstractions.js\";\n\nclass GetDefaultLanguageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: GetDefaultLanguageRepository.Interface) {}\n\n async execute(): UseCaseAbstraction.Return {\n return this.repository.execute();\n }\n}\n\nexport const GetDefaultLanguageUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: GetDefaultLanguageUseCaseImpl,\n dependencies: [GetDefaultLanguageRepository]\n});\n"],"names":["GetDefaultLanguageUseCaseImpl","repository","GetDefaultLanguageUseCase","createImplementation","UseCaseAbstraction","GetDefaultLanguageRepository"],"mappings":";;AAMA,MAAMA;IACF,YAAoBC,UAAkD,CAAE;aAApDA,UAAU,GAAVA;IAAqD;IAEzE,MAAM,UAAqC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO;IAClC;AACJ;AAEO,MAAMC,sDAA4BC,qBAAqB;IAC1D,aAAaC;IACb,gBAAgBJ;IAChB,cAAc;QAACK;KAA6B;AAChD"}
@@ -0,0 +1,33 @@
1
+ import { type Result } from "@webiny/feature/api";
2
+ import type { Language } from "../../../api/domain/Language.js";
3
+ import type { DefaultLanguageNotFoundError, LanguagePersistenceError } from "../../../api/domain/errors.js";
4
+ export interface IGetDefaultLanguageRepository {
5
+ execute(): Promise<Result<Language, RepositoryError>>;
6
+ }
7
+ export interface IGetDefaultLanguageRepositoryErrors {
8
+ notFound: DefaultLanguageNotFoundError;
9
+ persistence: LanguagePersistenceError;
10
+ }
11
+ type RepositoryError = IGetDefaultLanguageRepositoryErrors[keyof IGetDefaultLanguageRepositoryErrors];
12
+ export declare const GetDefaultLanguageRepository: import("@webiny/di").Abstraction<IGetDefaultLanguageRepository>;
13
+ export declare namespace GetDefaultLanguageRepository {
14
+ type Interface = IGetDefaultLanguageRepository;
15
+ type Return = Promise<Result<Language, RepositoryError>>;
16
+ type Error = RepositoryError;
17
+ }
18
+ export interface IGetDefaultLanguageUseCase {
19
+ execute(): Promise<Result<Language, UseCaseError>>;
20
+ }
21
+ export interface IGetDefaultLanguageUseCaseErrors {
22
+ notFound: DefaultLanguageNotFoundError;
23
+ persistence: LanguagePersistenceError;
24
+ }
25
+ type UseCaseError = IGetDefaultLanguageUseCaseErrors[keyof IGetDefaultLanguageUseCaseErrors];
26
+ /** Get the default language. */
27
+ export declare const GetDefaultLanguageUseCase: import("@webiny/di").Abstraction<IGetDefaultLanguageUseCase>;
28
+ export declare namespace GetDefaultLanguageUseCase {
29
+ type Interface = IGetDefaultLanguageUseCase;
30
+ type Return = Promise<Result<Language, UseCaseError>>;
31
+ type Error = UseCaseError;
32
+ }
33
+ export {};
@@ -0,0 +1,6 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const GetDefaultLanguageRepository = createAbstraction("Languages/GetDefaultLanguageRepository");
3
+ const GetDefaultLanguageUseCase = createAbstraction("Languages/GetDefaultLanguageUseCase");
4
+ export { GetDefaultLanguageRepository, GetDefaultLanguageUseCase };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetDefaultLanguage/abstractions.js","sources":["../../../../src/api/features/GetDefaultLanguage/abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { Language } from \"~/api/domain/Language.js\";\nimport type {\n DefaultLanguageNotFoundError,\n LanguagePersistenceError\n} from \"~/api/domain/errors.js\";\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IGetDefaultLanguageRepository {\n execute(): Promise<Result<Language, RepositoryError>>;\n}\n\nexport interface IGetDefaultLanguageRepositoryErrors {\n notFound: DefaultLanguageNotFoundError;\n persistence: LanguagePersistenceError;\n}\n\ntype RepositoryError =\n IGetDefaultLanguageRepositoryErrors[keyof IGetDefaultLanguageRepositoryErrors];\n\nexport const GetDefaultLanguageRepository = createAbstraction<IGetDefaultLanguageRepository>(\n \"Languages/GetDefaultLanguageRepository\"\n);\n\nexport namespace GetDefaultLanguageRepository {\n export type Interface = IGetDefaultLanguageRepository;\n export type Return = Promise<Result<Language, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IGetDefaultLanguageUseCase {\n execute(): Promise<Result<Language, UseCaseError>>;\n}\n\nexport interface IGetDefaultLanguageUseCaseErrors {\n notFound: DefaultLanguageNotFoundError;\n persistence: LanguagePersistenceError;\n}\n\ntype UseCaseError = IGetDefaultLanguageUseCaseErrors[keyof IGetDefaultLanguageUseCaseErrors];\n\n/** Get the default language. */\nexport const GetDefaultLanguageUseCase = createAbstraction<IGetDefaultLanguageUseCase>(\n \"Languages/GetDefaultLanguageUseCase\"\n);\n\nexport namespace GetDefaultLanguageUseCase {\n export type Interface = IGetDefaultLanguageUseCase;\n export type Return = Promise<Result<Language, UseCaseError>>;\n export type Error = UseCaseError;\n}\n"],"names":["GetDefaultLanguageRepository","createAbstraction","GetDefaultLanguageUseCase"],"mappings":";AAuBO,MAAMA,+BAA+BC,kBACxC;AAyBG,MAAMC,4BAA4BD,kBACrC"}
@@ -0,0 +1,4 @@
1
+ export declare const GetDefaultLanguageFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,13 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { GetDefaultLanguageRepository } from "./GetDefaultLanguageRepository.js";
3
+ import { GetDefaultLanguageUseCase } from "./GetDefaultLanguageUseCase.js";
4
+ const GetDefaultLanguageFeature = createFeature({
5
+ name: "Languages/GetDefaultLanguage",
6
+ register (container) {
7
+ container.register(GetDefaultLanguageRepository).inSingletonScope();
8
+ container.register(GetDefaultLanguageUseCase);
9
+ }
10
+ });
11
+ export { GetDefaultLanguageFeature };
12
+
13
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/GetDefaultLanguage/feature.js","sources":["../../../../src/api/features/GetDefaultLanguage/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetDefaultLanguageRepository } from \"./GetDefaultLanguageRepository.js\";\nimport { GetDefaultLanguageUseCase } from \"./GetDefaultLanguageUseCase.js\";\n\nexport const GetDefaultLanguageFeature = createFeature({\n name: \"Languages/GetDefaultLanguage\",\n register(container) {\n container.register(GetDefaultLanguageRepository).inSingletonScope();\n container.register(GetDefaultLanguageUseCase);\n }\n});\n"],"names":["GetDefaultLanguageFeature","createFeature","container","GetDefaultLanguageRepository","GetDefaultLanguageUseCase"],"mappings":";;;AAIO,MAAMA,4BAA4BC,cAAc;IACnD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,8BAA8B,gBAAgB;QACjED,UAAU,QAAQ,CAACE;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export { GetDefaultLanguageUseCase } from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export { GetDefaultLanguageUseCase } from "./abstractions.js";
@@ -1,52 +1,48 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js";
3
3
  import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
4
- import { GetLanguageByCodeRepository as RepositoryAbstraction } from "./abstractions.js";
4
+ import { GetLanguageByCodeRepository } from "./abstractions.js";
5
5
  import { LANGUAGE_MODEL_ID } from "../../../shared/constants.js";
6
6
  import { LanguageNotFoundError, LanguagePersistenceError } from "../../domain/errors.js";
7
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));
8
+ constructor(getModel, listLatestEntries){
9
+ this.getModel = getModel;
10
+ this.listLatestEntries = listLatestEntries;
16
11
  }
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));
12
+ async execute(code) {
13
+ const modelResult = await this.getModel.execute(LANGUAGE_MODEL_ID);
14
+ if (modelResult.isFail()) return Result.fail(new LanguagePersistenceError(modelResult.error));
15
+ const model = modelResult.value;
16
+ const listResult = await this.listLatestEntries.execute(model, {
17
+ where: {
18
+ values: {
19
+ code
20
+ }
21
+ },
22
+ limit: 1
23
+ });
24
+ if (listResult.isFail()) return Result.fail(new LanguagePersistenceError(listResult.error));
25
+ const { entries } = listResult.value;
26
+ if (0 === entries.length) return Result.fail(new LanguageNotFoundError(code));
27
+ const entry = entries[0];
28
+ const language = {
29
+ id: entry.entryId,
30
+ name: entry.values.name,
31
+ code: entry.values.code,
32
+ direction: entry.values.direction,
33
+ isDefault: entry.values.isDefault,
34
+ enabled: entry.values.enabled
35
+ };
36
+ return Result.ok(language);
28
37
  }
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
38
  }
47
- export const GetLanguageByCodeRepository = RepositoryAbstraction.createImplementation({
48
- implementation: GetLanguageByCodeRepositoryImpl,
49
- dependencies: [GetModelUseCase, ListLatestEntriesUseCase]
39
+ const GetLanguageByCodeRepository_GetLanguageByCodeRepository = GetLanguageByCodeRepository.createImplementation({
40
+ implementation: GetLanguageByCodeRepositoryImpl,
41
+ dependencies: [
42
+ GetModelUseCase,
43
+ ListLatestEntriesUseCase
44
+ ]
50
45
  });
46
+ export { GetLanguageByCodeRepository_GetLanguageByCodeRepository as GetLanguageByCodeRepository };
51
47
 
52
48
  //# sourceMappingURL=GetLanguageByCodeRepository.js.map
@@ -1 +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":[]}
1
+ {"version":3,"file":"api/features/GetLanguageByCode/GetLanguageByCodeRepository.js","sources":["../../../../src/api/features/GetLanguageByCode/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"],"names":["GetLanguageByCodeRepositoryImpl","getModel","listLatestEntries","code","modelResult","LANGUAGE_MODEL_ID","Result","LanguagePersistenceError","model","listResult","entries","LanguageNotFoundError","entry","language","GetLanguageByCodeRepository","RepositoryAbstraction","GetModelUseCase","ListLatestEntriesUseCase"],"mappings":";;;;;;AAQA,MAAMA;IACF,YACYC,QAAmC,EACnCC,iBAAqD,CAC/D;aAFUD,QAAQ,GAARA;aACAC,iBAAiB,GAAjBA;IACT;IAEH,MAAM,QAAQC,IAAY,EAAgC;QACtD,MAAMC,cAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACC;QAChD,IAAID,YAAY,MAAM,IAClB,OAAOE,OAAO,IAAI,CAAC,IAAIC,yBAAyBH,YAAY,KAAK;QAGrE,MAAMI,QAAQJ,YAAY,KAAK;QAE/B,MAAMK,aAAa,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACD,OAAO;YAC3D,OAAO;gBACH,QAAQ;oBACJL;gBACJ;YACJ;YACA,OAAO;QACX;QAEA,IAAIM,WAAW,MAAM,IACjB,OAAOH,OAAO,IAAI,CAAC,IAAIC,yBAAyBE,WAAW,KAAK;QAGpE,MAAM,EAAEC,OAAO,EAAE,GAAGD,WAAW,KAAK;QAEpC,IAAIC,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAOJ,OAAO,IAAI,CAAC,IAAIK,sBAAsBR;QAGjD,MAAMS,QAAQF,OAAO,CAAC,EAAE;QAExB,MAAMG,WAAqB;YACvB,IAAID,MAAM,OAAO;YACjB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,MAAMA,MAAM,MAAM,CAAC,IAAI;YACvB,WAAWA,MAAM,MAAM,CAAC,SAAS;YACjC,WAAWA,MAAM,MAAM,CAAC,SAAS;YACjC,SAASA,MAAM,MAAM,CAAC,OAAO;QACjC;QAEA,OAAON,OAAO,EAAE,CAACO;IACrB;AACJ;AAEO,MAAMC,0DAA8BC,4BAAAA,oBAA0C,CAAC;IAClF,gBAAgBf;IAChB,cAAc;QAACgB;QAAiBC;KAAyB;AAC7D"}
@@ -1,17 +1,20 @@
1
1
  import { createImplementation } from "@webiny/feature/api";
2
- import { GetLanguageByCodeUseCase as UseCaseAbstraction, GetLanguageByCodeRepository } from "./abstractions.js";
2
+ import { GetLanguageByCodeRepository, GetLanguageByCodeUseCase } from "./abstractions.js";
3
3
  class GetLanguageByCodeUseCaseImpl {
4
- constructor(repository) {
5
- this.repository = repository;
6
- }
7
- async execute(code) {
8
- return this.repository.execute(code);
9
- }
4
+ constructor(repository){
5
+ this.repository = repository;
6
+ }
7
+ async execute(code) {
8
+ return this.repository.execute(code);
9
+ }
10
10
  }
11
- export const GetLanguageByCodeUseCase = createImplementation({
12
- abstraction: UseCaseAbstraction,
13
- implementation: GetLanguageByCodeUseCaseImpl,
14
- dependencies: [GetLanguageByCodeRepository]
11
+ const GetLanguageByCodeUseCase_GetLanguageByCodeUseCase = createImplementation({
12
+ abstraction: GetLanguageByCodeUseCase,
13
+ implementation: GetLanguageByCodeUseCaseImpl,
14
+ dependencies: [
15
+ GetLanguageByCodeRepository
16
+ ]
15
17
  });
18
+ export { GetLanguageByCodeUseCase_GetLanguageByCodeUseCase as GetLanguageByCodeUseCase };
16
19
 
17
20
  //# sourceMappingURL=GetLanguageByCodeUseCase.js.map