@webiny/languages 6.6.0-alpha.0 → 6.6.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Languages.js +2 -2
- package/Languages.js.map +1 -1
- package/api/Extension.js +2 -0
- package/api/Extension.js.map +1 -1
- package/api/domain/LanguageModel.js +1 -1
- package/api/domain/LanguageModel.js.map +1 -1
- package/api/domain/errors.d.ts +4 -0
- package/api/domain/errors.js +8 -1
- package/api/domain/errors.js.map +1 -1
- package/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.d.ts +13 -0
- package/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.js +48 -0
- package/api/features/GetDefaultLanguage/GetDefaultLanguageRepository.js.map +1 -0
- package/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.d.ts +8 -0
- package/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.js +20 -0
- package/api/features/GetDefaultLanguage/GetDefaultLanguageUseCase.js.map +1 -0
- package/api/features/GetDefaultLanguage/abstractions.d.ts +33 -0
- package/api/features/GetDefaultLanguage/abstractions.js +6 -0
- package/api/features/GetDefaultLanguage/abstractions.js.map +1 -0
- package/api/features/GetDefaultLanguage/feature.d.ts +4 -0
- package/api/features/GetDefaultLanguage/feature.js +13 -0
- package/api/features/GetDefaultLanguage/feature.js.map +1 -0
- package/api/features/GetDefaultLanguage/index.d.ts +1 -0
- package/api/features/GetDefaultLanguage/index.js +1 -0
- package/exports/api/languages.d.ts +1 -0
- package/exports/api/languages.js +1 -0
- package/package.json +21 -22
package/Languages.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import react from "react";
|
|
2
2
|
import { Admin, Api } from "@webiny/project-aws";
|
|
3
|
-
import {
|
|
4
|
-
const Languages = ()=>/*#__PURE__*/ react.createElement(
|
|
3
|
+
import { FeatureFlag } from "@webiny/project";
|
|
4
|
+
const Languages = ()=>/*#__PURE__*/ react.createElement(FeatureFlag.CanUseMultiTenancy, null, /*#__PURE__*/ react.createElement(Api.Extension, {
|
|
5
5
|
src: import.meta.dirname + "/api/Extension.js"
|
|
6
6
|
}), /*#__PURE__*/ react.createElement(Admin.Extension, {
|
|
7
7
|
src: import.meta.dirname + "/admin/Extension.js"
|
package/Languages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Languages.js","sources":["../src/Languages.tsx"],"sourcesContent":["import React from \"react\";\nimport { Api, Admin } from \"@webiny/project-aws\";\nimport {
|
|
1
|
+
{"version":3,"file":"Languages.js","sources":["../src/Languages.tsx"],"sourcesContent":["import React from \"react\";\nimport { Api, Admin } from \"@webiny/project-aws\";\nimport { FeatureFlag } from \"@webiny/project\";\n\nexport const Languages = () => {\n return (\n <FeatureFlag.CanUseMultiTenancy>\n {/* Api extensions */}\n <Api.Extension src={import.meta.dirname + \"/api/Extension.js\"} />\n\n {/* Admin extensions */}\n <Admin.Extension src={import.meta.dirname + \"/admin/Extension.js\"} />\n </FeatureFlag.CanUseMultiTenancy>\n );\n};\n"],"names":["Languages","FeatureFlag","Api","Admin"],"mappings":";;;AAIO,MAAMA,YAAY,IACd,WAAP,GACI,oBAACC,YAAY,kBAAkB,sBAE3B,oBAACC,IAAI,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG;sBAG1C,oBAACC,MAAM,SAAS;QAAC,KAAK,YAAY,OAAO,GAAG"}
|
package/api/Extension.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import LanguageModel from "./domain/LanguageModel.js";
|
|
3
3
|
import { EnsureSingleDefaultLanguageFeature } from "./features/EnsureSingleDefaultLanguage/feature.js";
|
|
4
|
+
import { GetDefaultLanguageFeature } from "./features/GetDefaultLanguage/feature.js";
|
|
4
5
|
import { GetLanguageByCodeFeature } from "./features/GetLanguageByCode/feature.js";
|
|
5
6
|
import { ListLanguagesFeature } from "./features/ListLanguages/feature.js";
|
|
6
7
|
import { LanguagesGraphQLSchema } from "./graphql/LanguagesGraphQLSchema.js";
|
|
@@ -11,6 +12,7 @@ const Extension = createFeature({
|
|
|
11
12
|
register (container) {
|
|
12
13
|
container.register(LanguageModel);
|
|
13
14
|
EnsureSingleDefaultLanguageFeature.register(container);
|
|
15
|
+
GetDefaultLanguageFeature.register(container);
|
|
14
16
|
GetLanguageByCodeFeature.register(container);
|
|
15
17
|
ListLanguagesFeature.register(container);
|
|
16
18
|
AddCmsPermissionsFeature.register(container);
|
package/api/Extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/Extension.js","sources":["../../src/api/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"],"names":["Extension","createFeature","container","LanguageModel","EnsureSingleDefaultLanguageFeature","GetLanguageByCodeFeature","ListLanguagesFeature","AddCmsPermissionsFeature","LanguagesPermissionsFeature","LanguagesGraphQLSchema"],"mappings":"
|
|
1
|
+
{"version":3,"file":"api/Extension.js","sources":["../../src/api/Extension.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport LanguageModel from \"./domain/LanguageModel.js\";\nimport { EnsureSingleDefaultLanguageFeature } from \"./features/EnsureSingleDefaultLanguage/feature.js\";\nimport { GetDefaultLanguageFeature } from \"./features/GetDefaultLanguage/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 GetDefaultLanguageFeature.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"],"names":["Extension","createFeature","container","LanguageModel","EnsureSingleDefaultLanguageFeature","GetDefaultLanguageFeature","GetLanguageByCodeFeature","ListLanguagesFeature","AddCmsPermissionsFeature","LanguagesPermissionsFeature","LanguagesGraphQLSchema"],"mappings":";;;;;;;;;AAUO,MAAMA,YAAYC,cAAc;IACnC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QAGnBC,mCAAmC,QAAQ,CAACF;QAC5CG,0BAA0B,QAAQ,CAACH;QACnCI,yBAAyB,QAAQ,CAACJ;QAClCK,qBAAqB,QAAQ,CAACL;QAC9BM,yBAAyB,QAAQ,CAACN;QAClCO,4BAA4B,QAAQ,CAACP;QAGrCA,UAAU,QAAQ,CAACQ;IACvB;AACJ"}
|
|
@@ -13,7 +13,7 @@ class LanguageModelFactory {
|
|
|
13
13
|
model.fields((fields)=>({
|
|
14
14
|
name: fields.text().label("Name").description("The display name for this language (e.g., German, English, Arabic).").required().renderer("textInput"),
|
|
15
15
|
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"),
|
|
16
|
-
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("
|
|
16
|
+
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("select").required().predefinedValues([
|
|
17
17
|
{
|
|
18
18
|
value: "ltr",
|
|
19
19
|
label: "LTR"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/domain/LanguageModel.js","sources":["../../../src/api/domain/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(\"
|
|
1
|
+
{"version":3,"file":"api/domain/LanguageModel.js","sources":["../../../src/api/domain/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(\"select\")\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"],"names":["LanguageModelFactory","builder","model","LANGUAGE_MODEL_ID","fields","ModelFactory"],"mappings":";;AAGA,MAAMA;IACF,MAAM,QAAQC,OAA6B,EAAE;QACzC,MAAMC,QAAQD,QACT,MAAM,CAAC;YACJ,SAASE;YACT,MAAM;YACN,OAAO;QACX,GACC,WAAW,CAAC,4BACZ,YAAY,CAAC,QACb,IAAI,CAAC,gBACL,eAAe,CAAC,YAChB,aAAa,CAAC,aACd,IAAI,CAAC;YAAC;YAAqB;SAAe;QAE/CD,MACK,MAAM,CAACE,CAAAA,SAAW;gBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,WAAW,CACR,uEAEH,QAAQ,GACR,QAAQ,CAAC;gBACd,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,WAAW,CACR,wGAEH,QAAQ,GACR,QAAQ,CAAC;gBACd,WAAWA,OACN,IAAI,GACJ,KAAK,CAAC,aACN,WAAW,CACR,yHAEH,YAAY,CAAC,OACb,QAAQ,CAAC,UACT,QAAQ,GACR,gBAAgB,CAAC;oBACd;wBACI,OAAO;wBACP,OAAO;oBACX;oBACA;wBACI,OAAO;wBACP,OAAO;oBACX;iBACH;gBACL,WAAWA,OACN,OAAO,GACP,KAAK,CAAC,eACN,WAAW,CACR,6GAEH,YAAY,CAAC,OACb,QAAQ,CAAC;gBACd,SAASA,OACJ,OAAO,GACP,KAAK,CAAC,eACN,WAAW,CACR,+GAEH,YAAY,CAAC,OACb,QAAQ,CAAC;YAClB,IACC,MAAM,CAAC;YAAC;gBAAC;aAAO;YAAE;gBAAC;aAAO;YAAE;gBAAC;aAAY;YAAE;gBAAC;aAAY;YAAE;gBAAC;aAAU;SAAC;QAE3E,OAAO;YAACF;SAAM;IAClB;AACJ;AAEA,sBAAeG,aAAa,oBAAoB,CAAC;IAC7C,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
|
package/api/domain/errors.d.ts
CHANGED
|
@@ -5,6 +5,10 @@ export declare class LanguageNotFoundError extends BaseError<{
|
|
|
5
5
|
readonly code: "Languages/NotFound";
|
|
6
6
|
constructor(languageCode: string);
|
|
7
7
|
}
|
|
8
|
+
export declare class DefaultLanguageNotFoundError extends BaseError {
|
|
9
|
+
readonly code: "Languages/DefaultNotFound";
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
8
12
|
export declare class LanguagePersistenceError extends BaseError {
|
|
9
13
|
readonly code: "Languages/PersistenceError";
|
|
10
14
|
constructor(error: Error);
|
package/api/domain/errors.js
CHANGED
|
@@ -9,6 +9,13 @@ class LanguageNotFoundError extends BaseError {
|
|
|
9
9
|
}), this.code = "Languages/NotFound";
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
class DefaultLanguageNotFoundError extends BaseError {
|
|
13
|
+
constructor(){
|
|
14
|
+
super({
|
|
15
|
+
message: "No default language is configured."
|
|
16
|
+
}), this.code = "Languages/DefaultNotFound";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
12
19
|
class LanguagePersistenceError extends BaseError {
|
|
13
20
|
constructor(error){
|
|
14
21
|
super({
|
|
@@ -16,6 +23,6 @@ class LanguagePersistenceError extends BaseError {
|
|
|
16
23
|
}), this.code = "Languages/PersistenceError";
|
|
17
24
|
}
|
|
18
25
|
}
|
|
19
|
-
export { LanguageNotFoundError, LanguagePersistenceError };
|
|
26
|
+
export { DefaultLanguageNotFoundError, LanguageNotFoundError, LanguagePersistenceError };
|
|
20
27
|
|
|
21
28
|
//# sourceMappingURL=errors.js.map
|
package/api/domain/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/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"],"names":["LanguageNotFoundError","BaseError","languageCode","LanguagePersistenceError","error"],"mappings":";AAEO,MAAMA,8BAA8BC;IAGvC,YAAYC,YAAoB,CAAE;QAC9B,KAAK,CAAC;YACF,SAAS,CAAC,qBAAqB,EAAEA,aAAa,EAAE,CAAC;YACjD,MAAM;gBACF,MAAMA;YACV;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAEO,MAAMC,
|
|
1
|
+
{"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/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 DefaultLanguageNotFoundError extends BaseError {\n override readonly code = \"Languages/DefaultNotFound\" as const;\n\n constructor() {\n super({\n message: \"No default language is configured.\"\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"],"names":["LanguageNotFoundError","BaseError","languageCode","DefaultLanguageNotFoundError","LanguagePersistenceError","error"],"mappings":";AAEO,MAAMA,8BAA8BC;IAGvC,YAAYC,YAAoB,CAAE;QAC9B,KAAK,CAAC;YACF,SAAS,CAAC,qBAAqB,EAAEA,aAAa,EAAE,CAAC;YACjD,MAAM;gBACF,MAAMA;YACV;QACJ,SARc,IAAI,GAAG;IASzB;AACJ;AAEO,MAAMC,qCAAqCF;IAG9C,aAAc;QACV,KAAK,CAAC;YACF,SAAS;QACb,SALc,IAAI,GAAG;IAMzB;AACJ;AAEO,MAAMG,iCAAiCH;IAG1C,YAAYI,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;QAAC,SAHjB,IAAI,GAAG;IAIzB;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,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";
|
package/exports/api/languages.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/languages",
|
|
3
|
-
"version": "6.6.0-alpha.
|
|
3
|
+
"version": "6.6.0-alpha.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -15,34 +15,33 @@
|
|
|
15
15
|
"author": "Webiny Ltd.",
|
|
16
16
|
"license": "Webiny Enterprise",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@webiny/admin-ui": "6.6.0-alpha.
|
|
19
|
-
"@webiny/api-core": "6.6.0-alpha.
|
|
20
|
-
"@webiny/api-headless-cms": "6.6.0-alpha.
|
|
21
|
-
"@webiny/app": "6.6.0-alpha.
|
|
22
|
-
"@webiny/app-admin": "6.6.0-alpha.
|
|
23
|
-
"@webiny/app-headless-cms": "6.6.0-alpha.
|
|
24
|
-
"@webiny/feature": "6.6.0-alpha.
|
|
25
|
-
"@webiny/icons": "6.6.0-alpha.
|
|
26
|
-
"@webiny/project": "6.6.0-alpha.
|
|
27
|
-
"@webiny/project-aws": "6.6.0-alpha.
|
|
18
|
+
"@webiny/admin-ui": "6.6.0-alpha.1",
|
|
19
|
+
"@webiny/api-core": "6.6.0-alpha.1",
|
|
20
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.1",
|
|
21
|
+
"@webiny/app": "6.6.0-alpha.1",
|
|
22
|
+
"@webiny/app-admin": "6.6.0-alpha.1",
|
|
23
|
+
"@webiny/app-headless-cms": "6.6.0-alpha.1",
|
|
24
|
+
"@webiny/feature": "6.6.0-alpha.1",
|
|
25
|
+
"@webiny/icons": "6.6.0-alpha.1",
|
|
26
|
+
"@webiny/project": "6.6.0-alpha.1",
|
|
27
|
+
"@webiny/project-aws": "6.6.0-alpha.1",
|
|
28
28
|
"graphql": "16.14.2",
|
|
29
|
-
"mobx": "
|
|
29
|
+
"mobx": "7.0.3",
|
|
30
30
|
"react": "18.3.1",
|
|
31
31
|
"react-dom": "18.3.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@webiny/api-core-testing": "6.6.0-alpha.
|
|
35
|
-
"@webiny/api-graphql": "6.6.0-alpha.
|
|
36
|
-
"@webiny/build-tools": "6.6.0-alpha.
|
|
37
|
-
"@webiny/db-dynamodb": "6.6.0-alpha.
|
|
38
|
-
"@webiny/di": "1.0
|
|
39
|
-
"@webiny/event-handler-core": "6.6.0-alpha.
|
|
40
|
-
"@webiny/handler": "6.6.0-alpha.
|
|
41
|
-
"@webiny/
|
|
42
|
-
"@webiny/wcp": "6.6.0-alpha.0",
|
|
34
|
+
"@webiny/api-core-testing": "6.6.0-alpha.1",
|
|
35
|
+
"@webiny/api-graphql": "6.6.0-alpha.1",
|
|
36
|
+
"@webiny/build-tools": "6.6.0-alpha.1",
|
|
37
|
+
"@webiny/db-dynamodb": "6.6.0-alpha.1",
|
|
38
|
+
"@webiny/di": "1.1.0",
|
|
39
|
+
"@webiny/event-handler-core": "6.6.0-alpha.1",
|
|
40
|
+
"@webiny/handler": "6.6.0-alpha.1",
|
|
41
|
+
"@webiny/wcp": "6.6.0-alpha.1",
|
|
43
42
|
"rimraf": "6.1.3",
|
|
44
43
|
"typescript": "7.0.2",
|
|
45
|
-
"vitest": "4.1.
|
|
44
|
+
"vitest": "4.1.11"
|
|
46
45
|
},
|
|
47
46
|
"publishConfig": {
|
|
48
47
|
"access": "public"
|