Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@plasius/entity-manager

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@plasius/entity-manager - npm Package Compare versions

Comparing version
1.0.17
to
1.0.19
+99
src/user/profile.validation.translations.ts
import { createI18n } from "@plasius/translations";
import type { TranslationArgs, TranslationDictionary } from "@plasius/translations";
import type { EditableUserProfileFieldName } from "./profile.validation.js";
export const editableUserProfileFieldTranslationKeys = {
"name.firstName": "entityManager.profile.field.firstName",
"name.middleName": "entityManager.profile.field.middleName",
"name.lastName": "entityManager.profile.field.lastName",
"name.displayName": "entityManager.profile.field.displayName",
"name.preferredDisplayOrder": "entityManager.profile.field.preferredDisplayOrder",
email: "entityManager.profile.field.email",
emailPreferences: "entityManager.profile.field.emailPreferences",
} as const satisfies Record<EditableUserProfileFieldName, string>;
export const editableUserProfileValidationTranslationKeys = {
emailInvalid: "entityManager.profile.validation.emailInvalid",
immutable: "entityManager.profile.validation.immutable",
invalidType: "entityManager.profile.validation.invalidType",
invalidValue: "entityManager.profile.validation.invalidValue",
nameUnsupportedCharacters:
"entityManager.profile.validation.nameUnsupportedCharacters",
profanity: "entityManager.profile.validation.profanity",
required: "entityManager.profile.validation.required",
tooLong: "entityManager.profile.validation.tooLong",
} as const;
export type EditableUserProfileFieldTranslationKey =
(typeof editableUserProfileFieldTranslationKeys)[keyof typeof editableUserProfileFieldTranslationKeys];
export type EditableUserProfileValidationTranslationKey =
(typeof editableUserProfileValidationTranslationKeys)[keyof typeof editableUserProfileValidationTranslationKeys];
export type EditableUserProfileTranslationKey =
| EditableUserProfileFieldTranslationKey
| EditableUserProfileValidationTranslationKey;
export type EditableUserProfileTranslate = (
key: EditableUserProfileTranslationKey,
args?: TranslationArgs,
) => string | undefined;
export const entityManagerEnGbTranslations = {
[editableUserProfileFieldTranslationKeys["name.firstName"]]: "First name",
[editableUserProfileFieldTranslationKeys["name.middleName"]]: "Middle name",
[editableUserProfileFieldTranslationKeys["name.lastName"]]: "Last name",
[editableUserProfileFieldTranslationKeys["name.displayName"]]: "Display name",
[editableUserProfileFieldTranslationKeys["name.preferredDisplayOrder"]]:
"Preferred name display",
[editableUserProfileFieldTranslationKeys.email]: "Email",
[editableUserProfileFieldTranslationKeys.emailPreferences]: "Email preferences",
[editableUserProfileValidationTranslationKeys.emailInvalid]:
"{field} must be a valid email address.",
[editableUserProfileValidationTranslationKeys.immutable]: "{field} cannot be changed.",
[editableUserProfileValidationTranslationKeys.invalidType]:
"{field} has an invalid type.",
[editableUserProfileValidationTranslationKeys.invalidValue]:
"{field} has an invalid value.",
[editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters]:
"{field} contains unsupported characters.",
[editableUserProfileValidationTranslationKeys.profanity]:
"{field} contains blocked language.",
[editableUserProfileValidationTranslationKeys.required]: "{field} is required.",
[editableUserProfileValidationTranslationKeys.tooLong]:
"{field} must be {maxLength} characters or fewer.",
} satisfies TranslationDictionary;
export const entityManagerTranslations = {
"en-GB": entityManagerEnGbTranslations,
} satisfies Partial<Record<string, TranslationDictionary>>;
const entityManagerI18n = createI18n({
language: "en-GB",
fallback: "en-GB",
translations: entityManagerTranslations,
});
export function translateEditableUserProfileValidationText(
key: EditableUserProfileTranslationKey,
args?: TranslationArgs,
translate?: EditableUserProfileTranslate,
): string {
const translated = translate?.(key, args);
if (translated && translated !== key) {
return translated;
}
return entityManagerI18n.t(key, args);
}
export function translateEditableUserProfileFieldLabel(
field: EditableUserProfileFieldName,
translate?: EditableUserProfileTranslate,
): string {
return translateEditableUserProfileValidationText(
editableUserProfileFieldTranslationKeys[field],
undefined,
translate,
);
}
+3
-2

@@ -13,8 +13,9 @@

- **Added**
- (placeholder)
- Added editable profile validation translation keys, `en-GB` defaults, and helper exports backed by `@plasius/translations`.
- **Changed**
- (placeholder)
- Editable profile validation messages now resolve default English text through the package translation dictionary while preserving existing message strings.
- **Fixed**
- Restored the package CD workflow so protected `main` releases are prepared by PR and published without direct branch pushes.
- (placeholder)

@@ -21,0 +22,0 @@

+147
-42

@@ -43,3 +43,7 @@ "use strict";

baseEntityShape: () => baseEntityShape,
editableUserProfileFieldTranslationKeys: () => editableUserProfileFieldTranslationKeys,
editableUserProfileSchema: () => editableUserProfileSchema,
editableUserProfileValidationTranslationKeys: () => editableUserProfileValidationTranslationKeys,
entityManagerEnGbTranslations: () => entityManagerEnGbTranslations,
entityManagerTranslations: () => entityManagerTranslations,
featureFlagEntitySchema: () => featureFlagEntitySchema,

@@ -60,2 +64,4 @@ featureFlagEntityShape: () => featureFlagEntityShape,

translatableSchema: () => translatableSchema,
translateEditableUserProfileFieldLabel: () => translateEditableUserProfileFieldLabel,
translateEditableUserProfileValidationText: () => translateEditableUserProfileValidationText,
userAvatarSchema: () => userAvatarSchema,

@@ -664,2 +670,65 @@ userEntitySchema: () => userEntitySchema,

var import_schema24 = require("@plasius/schema");
// src/user/profile.validation.translations.ts
var import_translations = require("@plasius/translations");
var editableUserProfileFieldTranslationKeys = {
"name.firstName": "entityManager.profile.field.firstName",
"name.middleName": "entityManager.profile.field.middleName",
"name.lastName": "entityManager.profile.field.lastName",
"name.displayName": "entityManager.profile.field.displayName",
"name.preferredDisplayOrder": "entityManager.profile.field.preferredDisplayOrder",
email: "entityManager.profile.field.email",
emailPreferences: "entityManager.profile.field.emailPreferences"
};
var editableUserProfileValidationTranslationKeys = {
emailInvalid: "entityManager.profile.validation.emailInvalid",
immutable: "entityManager.profile.validation.immutable",
invalidType: "entityManager.profile.validation.invalidType",
invalidValue: "entityManager.profile.validation.invalidValue",
nameUnsupportedCharacters: "entityManager.profile.validation.nameUnsupportedCharacters",
profanity: "entityManager.profile.validation.profanity",
required: "entityManager.profile.validation.required",
tooLong: "entityManager.profile.validation.tooLong"
};
var entityManagerEnGbTranslations = {
[editableUserProfileFieldTranslationKeys["name.firstName"]]: "First name",
[editableUserProfileFieldTranslationKeys["name.middleName"]]: "Middle name",
[editableUserProfileFieldTranslationKeys["name.lastName"]]: "Last name",
[editableUserProfileFieldTranslationKeys["name.displayName"]]: "Display name",
[editableUserProfileFieldTranslationKeys["name.preferredDisplayOrder"]]: "Preferred name display",
[editableUserProfileFieldTranslationKeys.email]: "Email",
[editableUserProfileFieldTranslationKeys.emailPreferences]: "Email preferences",
[editableUserProfileValidationTranslationKeys.emailInvalid]: "{field} must be a valid email address.",
[editableUserProfileValidationTranslationKeys.immutable]: "{field} cannot be changed.",
[editableUserProfileValidationTranslationKeys.invalidType]: "{field} has an invalid type.",
[editableUserProfileValidationTranslationKeys.invalidValue]: "{field} has an invalid value.",
[editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters]: "{field} contains unsupported characters.",
[editableUserProfileValidationTranslationKeys.profanity]: "{field} contains blocked language.",
[editableUserProfileValidationTranslationKeys.required]: "{field} is required.",
[editableUserProfileValidationTranslationKeys.tooLong]: "{field} must be {maxLength} characters or fewer."
};
var entityManagerTranslations = {
"en-GB": entityManagerEnGbTranslations
};
var entityManagerI18n = (0, import_translations.createI18n)({
language: "en-GB",
fallback: "en-GB",
translations: entityManagerTranslations
});
function translateEditableUserProfileValidationText(key, args, translate) {
const translated = translate?.(key, args);
if (translated && translated !== key) {
return translated;
}
return entityManagerI18n.t(key, args);
}
function translateEditableUserProfileFieldLabel(field22, translate) {
return translateEditableUserProfileValidationText(
editableUserProfileFieldTranslationKeys[field22],
void 0,
translate
);
}
// src/user/profile.validation.ts
var PROFILE_PROFANITY_LEXICON = {

@@ -694,16 +763,11 @@ en: [

]);
var EDITABLE_PROFILE_FIELD_LABELS = {
"name.firstName": "First name",
"name.middleName": "Middle name",
"name.lastName": "Last name",
"name.displayName": "Display name",
"name.preferredDisplayOrder": "Preferred name display",
email: "Email",
emailPreferences: "Email preferences"
};
function toIssue(path, code, message) {
function toIssue(fieldName, code, messageKey, args = {}) {
const fieldLabel = translateEditableUserProfileFieldLabel(fieldName);
return {
path,
path: fieldName,
code,
message
message: translateEditableUserProfileValidationText(messageKey, {
field: fieldLabel,
...args
})
};

@@ -732,5 +796,10 @@ }

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.required,
path: field22,
code: `${field22}.required`,
message: `${EDITABLE_PROFILE_FIELD_LABELS[field22]} is required.`
message: translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.required,
{ field: translateEditableUserProfileFieldLabel(field22) }
)
};

@@ -741,5 +810,10 @@ }

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.immutable,
path: field22,
code: `${field22}.immutable`,
message: `${EDITABLE_PROFILE_FIELD_LABELS[field22]} cannot be changed.`
message: translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.immutable,
{ field: translateEditableUserProfileFieldLabel(field22) }
)
};

@@ -750,2 +824,4 @@ }

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.invalidType,
path: field22,

@@ -758,2 +834,4 @@ code: `${field22}.invalid_type`,

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.invalidValue,
path: field22,

@@ -764,7 +842,34 @@ code: `${field22}.invalid_value`,

}
function messageKeyForProfileValidationIssue(field22, code) {
if (code.endsWith(".required")) {
return editableUserProfileValidationTranslationKeys.required;
}
if (code.endsWith(".immutable")) {
return editableUserProfileValidationTranslationKeys.immutable;
}
if (code.endsWith(".invalid_type")) {
return editableUserProfileValidationTranslationKeys.invalidType;
}
if (code.endsWith(".invalid_value")) {
return editableUserProfileValidationTranslationKeys.invalidValue;
}
if (code.endsWith(".too_long")) {
return editableUserProfileValidationTranslationKeys.tooLong;
}
if (code.endsWith(".invalid_format")) {
return field22 === "email" ? editableUserProfileValidationTranslationKeys.emailInvalid : editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters;
}
if (code.endsWith(".profanity")) {
return editableUserProfileValidationTranslationKeys.profanity;
}
return void 0;
}
function normalizeValidationIssue(issue) {
const field22 = isEditableUserProfileFieldName(issue.path) ? issue.path : void 0;
const messageKey = messageKeyForProfileValidationIssue(field22, issue.code);
return {
...issue,
field: field22
field: field22,
fieldKey: field22 ? editableUserProfileFieldTranslationKeys[field22] : void 0,
messageKey
};

@@ -792,5 +897,5 @@ }

return toIssue(
rule.path,
`${rule.path}.required`,
`${rule.label} is required.`
rule.field,
`${rule.field}.required`,
editableUserProfileValidationTranslationKeys.required
);

@@ -800,5 +905,6 @@ }

return toIssue(
rule.path,
`${rule.path}.too_long`,
`${rule.label} must be ${rule.maxLength} characters or fewer.`
rule.field,
`${rule.field}.too_long`,
editableUserProfileValidationTranslationKeys.tooLong,
{ maxLength: rule.maxLength }
);

@@ -808,5 +914,5 @@ }

return toIssue(
rule.path,
`${rule.path}.invalid_format`,
`${rule.label} contains unsupported characters.`
rule.field,
`${rule.field}.invalid_format`,
editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters
);

@@ -816,5 +922,5 @@ }

return toIssue(
rule.path,
`${rule.path}.invalid_format`,
`${rule.label} must be a valid email address.`
rule.field,
`${rule.field}.invalid_format`,
editableUserProfileValidationTranslationKeys.emailInvalid
);

@@ -825,5 +931,5 @@ }

return toIssue(
rule.path,
`${rule.path}.profanity`,
`${rule.label} contains blocked language.`
rule.field,
`${rule.field}.profanity`,
editableUserProfileValidationTranslationKeys.profanity
);

@@ -836,4 +942,3 @@ }

(value) => validateProfileTextField(value, {
path: "name.firstName",
label: "First name",
field: "name.firstName",
maxLength: 64,

@@ -846,4 +951,3 @@ required: true,

(value) => validateProfileTextField(value, {
path: "name.middleName",
label: "Middle name",
field: "name.middleName",
maxLength: 64,

@@ -856,4 +960,3 @@ required: false,

(value) => validateProfileTextField(value, {
path: "name.lastName",
label: "Last name",
field: "name.lastName",
maxLength: 64,

@@ -866,4 +969,3 @@ required: true,

(value) => validateProfileTextField(value, {
path: "name.displayName",
label: "Display name",
field: "name.displayName",
maxLength: 80,

@@ -880,4 +982,3 @@ required: true,

(value) => validateProfileTextField(value, {
path: "email",
label: "Email",
field: "email",
maxLength: 254,

@@ -930,4 +1031,2 @@ required: true,

fieldErrors[issue.field] ??= issue.message;
} else {
formErrors.push(issue.message);
}

@@ -1039,3 +1138,7 @@ }

baseEntityShape,
editableUserProfileFieldTranslationKeys,
editableUserProfileSchema,
editableUserProfileValidationTranslationKeys,
entityManagerEnGbTranslations,
entityManagerTranslations,
featureFlagEntitySchema,

@@ -1056,2 +1159,4 @@ featureFlagEntityShape,

translatableSchema,
translateEditableUserProfileFieldLabel,
translateEditableUserProfileValidationText,
userAvatarSchema,

@@ -1058,0 +1163,0 @@ userEntitySchema,

import * as _plasius_schema from '@plasius/schema';
import { Infer, SchemaShape, ValidationIssue, ValidationResult } from '@plasius/schema';
import { TranslationArgs } from '@plasius/translations';

@@ -163,2 +164,64 @@ declare const baseEntityShape: SchemaShape;

declare const editableUserProfileFieldTranslationKeys: {
readonly "name.firstName": "entityManager.profile.field.firstName";
readonly "name.middleName": "entityManager.profile.field.middleName";
readonly "name.lastName": "entityManager.profile.field.lastName";
readonly "name.displayName": "entityManager.profile.field.displayName";
readonly "name.preferredDisplayOrder": "entityManager.profile.field.preferredDisplayOrder";
readonly email: "entityManager.profile.field.email";
readonly emailPreferences: "entityManager.profile.field.emailPreferences";
};
declare const editableUserProfileValidationTranslationKeys: {
readonly emailInvalid: "entityManager.profile.validation.emailInvalid";
readonly immutable: "entityManager.profile.validation.immutable";
readonly invalidType: "entityManager.profile.validation.invalidType";
readonly invalidValue: "entityManager.profile.validation.invalidValue";
readonly nameUnsupportedCharacters: "entityManager.profile.validation.nameUnsupportedCharacters";
readonly profanity: "entityManager.profile.validation.profanity";
readonly required: "entityManager.profile.validation.required";
readonly tooLong: "entityManager.profile.validation.tooLong";
};
type EditableUserProfileFieldTranslationKey = (typeof editableUserProfileFieldTranslationKeys)[keyof typeof editableUserProfileFieldTranslationKeys];
type EditableUserProfileValidationTranslationKey = (typeof editableUserProfileValidationTranslationKeys)[keyof typeof editableUserProfileValidationTranslationKeys];
type EditableUserProfileTranslationKey = EditableUserProfileFieldTranslationKey | EditableUserProfileValidationTranslationKey;
type EditableUserProfileTranslate = (key: EditableUserProfileTranslationKey, args?: TranslationArgs) => string | undefined;
declare const entityManagerEnGbTranslations: {
"entityManager.profile.field.firstName": string;
"entityManager.profile.field.middleName": string;
"entityManager.profile.field.lastName": string;
"entityManager.profile.field.displayName": string;
"entityManager.profile.field.preferredDisplayOrder": string;
"entityManager.profile.field.email": string;
"entityManager.profile.field.emailPreferences": string;
"entityManager.profile.validation.emailInvalid": string;
"entityManager.profile.validation.immutable": string;
"entityManager.profile.validation.invalidType": string;
"entityManager.profile.validation.invalidValue": string;
"entityManager.profile.validation.nameUnsupportedCharacters": string;
"entityManager.profile.validation.profanity": string;
"entityManager.profile.validation.required": string;
"entityManager.profile.validation.tooLong": string;
};
declare const entityManagerTranslations: {
"en-GB": {
"entityManager.profile.field.firstName": string;
"entityManager.profile.field.middleName": string;
"entityManager.profile.field.lastName": string;
"entityManager.profile.field.displayName": string;
"entityManager.profile.field.preferredDisplayOrder": string;
"entityManager.profile.field.email": string;
"entityManager.profile.field.emailPreferences": string;
"entityManager.profile.validation.emailInvalid": string;
"entityManager.profile.validation.immutable": string;
"entityManager.profile.validation.invalidType": string;
"entityManager.profile.validation.invalidValue": string;
"entityManager.profile.validation.nameUnsupportedCharacters": string;
"entityManager.profile.validation.profanity": string;
"entityManager.profile.validation.required": string;
"entityManager.profile.validation.tooLong": string;
};
};
declare function translateEditableUserProfileValidationText(key: EditableUserProfileTranslationKey, args?: TranslationArgs, translate?: EditableUserProfileTranslate): string;
declare function translateEditableUserProfileFieldLabel(field: EditableUserProfileFieldName, translate?: EditableUserProfileTranslate): string;
declare const PROFILE_PROFANITY_SUPPORTED_LOCALES: readonly string[];

@@ -170,2 +233,4 @@ declare const PROFILE_DEFAULT_PROFANITY_LOCALE = "en";

field?: EditableUserProfileFieldName;
fieldKey?: EditableUserProfileFieldTranslationKey;
messageKey?: EditableUserProfileValidationTranslationKey;
}

@@ -302,2 +367,2 @@ declare const editableUserProfileSchema: _plasius_schema.Schema<{

export { type AnimationComponent, type AnyAssetEntity, type AssetEntity, type AudioAssetEntity, AuthProvider, type AuthenticatedUser, type BaseComponent, type BaseEntity, ComponentTypes, type EditableUserProfile, type EditableUserProfileFieldErrors, type EditableUserProfileFieldName, type EditableUserProfileValidationIssue, EntityTypes, type FeatureFlagEntity, type ImageAssetEntity, type ModelAssetEntity, type ObjectAssetEntity, PROFILE_DEFAULT_PROFANITY_LOCALE, PROFILE_PROFANITY_SUPPORTED_LOCALES, type PermissionsEntity, type PhysicsComponent, PreferredDisplayOrder, Role, type RoleEntity, Scope, type SettingsEntity, type ShadowComponent, type SupportedLanguage, type Translatable, type UserAvatarEntity, UserEmailPreferences, type UserEntity, type UserName, UserNotificationPreferences, animationComponentSchema, assetEntitySchema, assetEntityShape, audioAssetEntitySchema, authenticatedUserSchema, authenticatedUserShape, baseComponentSchema, baseComponentShape, baseEntitySchema, baseEntityShape, editableUserProfileSchema, featureFlagEntitySchema, featureFlagEntityShape, imageAssetEntitySchema, isValidAzureTableKey, isValidEntityType, mapEditableUserProfileValidationErrors, modelAssetEntitySchema, objectAssetEntitySchema, permissionsEntitySchema, physicsComponentSchema, roleEntitySchema, settingsEntitySchema, shadowComponentSchema, supportedLanguagesSchema, translatableSchema, userAvatarSchema, userEntitySchema, userNameSchema, validateAssetSchema, validateEditableUserProfile, validateFeatureFlagValue, validateSettingValue };
export { type AnimationComponent, type AnyAssetEntity, type AssetEntity, type AudioAssetEntity, AuthProvider, type AuthenticatedUser, type BaseComponent, type BaseEntity, ComponentTypes, type EditableUserProfile, type EditableUserProfileFieldErrors, type EditableUserProfileFieldName, type EditableUserProfileFieldTranslationKey, type EditableUserProfileTranslate, type EditableUserProfileTranslationKey, type EditableUserProfileValidationIssue, type EditableUserProfileValidationTranslationKey, EntityTypes, type FeatureFlagEntity, type ImageAssetEntity, type ModelAssetEntity, type ObjectAssetEntity, PROFILE_DEFAULT_PROFANITY_LOCALE, PROFILE_PROFANITY_SUPPORTED_LOCALES, type PermissionsEntity, type PhysicsComponent, PreferredDisplayOrder, Role, type RoleEntity, Scope, type SettingsEntity, type ShadowComponent, type SupportedLanguage, type Translatable, type UserAvatarEntity, UserEmailPreferences, type UserEntity, type UserName, UserNotificationPreferences, animationComponentSchema, assetEntitySchema, assetEntityShape, audioAssetEntitySchema, authenticatedUserSchema, authenticatedUserShape, baseComponentSchema, baseComponentShape, baseEntitySchema, baseEntityShape, editableUserProfileFieldTranslationKeys, editableUserProfileSchema, editableUserProfileValidationTranslationKeys, entityManagerEnGbTranslations, entityManagerTranslations, featureFlagEntitySchema, featureFlagEntityShape, imageAssetEntitySchema, isValidAzureTableKey, isValidEntityType, mapEditableUserProfileValidationErrors, modelAssetEntitySchema, objectAssetEntitySchema, permissionsEntitySchema, physicsComponentSchema, roleEntitySchema, settingsEntitySchema, shadowComponentSchema, supportedLanguagesSchema, translatableSchema, translateEditableUserProfileFieldLabel, translateEditableUserProfileValidationText, userAvatarSchema, userEntitySchema, userNameSchema, validateAssetSchema, validateEditableUserProfile, validateFeatureFlagValue, validateSettingValue };
import * as _plasius_schema from '@plasius/schema';
import { Infer, SchemaShape, ValidationIssue, ValidationResult } from '@plasius/schema';
import { TranslationArgs } from '@plasius/translations';

@@ -163,2 +164,64 @@ declare const baseEntityShape: SchemaShape;

declare const editableUserProfileFieldTranslationKeys: {
readonly "name.firstName": "entityManager.profile.field.firstName";
readonly "name.middleName": "entityManager.profile.field.middleName";
readonly "name.lastName": "entityManager.profile.field.lastName";
readonly "name.displayName": "entityManager.profile.field.displayName";
readonly "name.preferredDisplayOrder": "entityManager.profile.field.preferredDisplayOrder";
readonly email: "entityManager.profile.field.email";
readonly emailPreferences: "entityManager.profile.field.emailPreferences";
};
declare const editableUserProfileValidationTranslationKeys: {
readonly emailInvalid: "entityManager.profile.validation.emailInvalid";
readonly immutable: "entityManager.profile.validation.immutable";
readonly invalidType: "entityManager.profile.validation.invalidType";
readonly invalidValue: "entityManager.profile.validation.invalidValue";
readonly nameUnsupportedCharacters: "entityManager.profile.validation.nameUnsupportedCharacters";
readonly profanity: "entityManager.profile.validation.profanity";
readonly required: "entityManager.profile.validation.required";
readonly tooLong: "entityManager.profile.validation.tooLong";
};
type EditableUserProfileFieldTranslationKey = (typeof editableUserProfileFieldTranslationKeys)[keyof typeof editableUserProfileFieldTranslationKeys];
type EditableUserProfileValidationTranslationKey = (typeof editableUserProfileValidationTranslationKeys)[keyof typeof editableUserProfileValidationTranslationKeys];
type EditableUserProfileTranslationKey = EditableUserProfileFieldTranslationKey | EditableUserProfileValidationTranslationKey;
type EditableUserProfileTranslate = (key: EditableUserProfileTranslationKey, args?: TranslationArgs) => string | undefined;
declare const entityManagerEnGbTranslations: {
"entityManager.profile.field.firstName": string;
"entityManager.profile.field.middleName": string;
"entityManager.profile.field.lastName": string;
"entityManager.profile.field.displayName": string;
"entityManager.profile.field.preferredDisplayOrder": string;
"entityManager.profile.field.email": string;
"entityManager.profile.field.emailPreferences": string;
"entityManager.profile.validation.emailInvalid": string;
"entityManager.profile.validation.immutable": string;
"entityManager.profile.validation.invalidType": string;
"entityManager.profile.validation.invalidValue": string;
"entityManager.profile.validation.nameUnsupportedCharacters": string;
"entityManager.profile.validation.profanity": string;
"entityManager.profile.validation.required": string;
"entityManager.profile.validation.tooLong": string;
};
declare const entityManagerTranslations: {
"en-GB": {
"entityManager.profile.field.firstName": string;
"entityManager.profile.field.middleName": string;
"entityManager.profile.field.lastName": string;
"entityManager.profile.field.displayName": string;
"entityManager.profile.field.preferredDisplayOrder": string;
"entityManager.profile.field.email": string;
"entityManager.profile.field.emailPreferences": string;
"entityManager.profile.validation.emailInvalid": string;
"entityManager.profile.validation.immutable": string;
"entityManager.profile.validation.invalidType": string;
"entityManager.profile.validation.invalidValue": string;
"entityManager.profile.validation.nameUnsupportedCharacters": string;
"entityManager.profile.validation.profanity": string;
"entityManager.profile.validation.required": string;
"entityManager.profile.validation.tooLong": string;
};
};
declare function translateEditableUserProfileValidationText(key: EditableUserProfileTranslationKey, args?: TranslationArgs, translate?: EditableUserProfileTranslate): string;
declare function translateEditableUserProfileFieldLabel(field: EditableUserProfileFieldName, translate?: EditableUserProfileTranslate): string;
declare const PROFILE_PROFANITY_SUPPORTED_LOCALES: readonly string[];

@@ -170,2 +233,4 @@ declare const PROFILE_DEFAULT_PROFANITY_LOCALE = "en";

field?: EditableUserProfileFieldName;
fieldKey?: EditableUserProfileFieldTranslationKey;
messageKey?: EditableUserProfileValidationTranslationKey;
}

@@ -302,2 +367,2 @@ declare const editableUserProfileSchema: _plasius_schema.Schema<{

export { type AnimationComponent, type AnyAssetEntity, type AssetEntity, type AudioAssetEntity, AuthProvider, type AuthenticatedUser, type BaseComponent, type BaseEntity, ComponentTypes, type EditableUserProfile, type EditableUserProfileFieldErrors, type EditableUserProfileFieldName, type EditableUserProfileValidationIssue, EntityTypes, type FeatureFlagEntity, type ImageAssetEntity, type ModelAssetEntity, type ObjectAssetEntity, PROFILE_DEFAULT_PROFANITY_LOCALE, PROFILE_PROFANITY_SUPPORTED_LOCALES, type PermissionsEntity, type PhysicsComponent, PreferredDisplayOrder, Role, type RoleEntity, Scope, type SettingsEntity, type ShadowComponent, type SupportedLanguage, type Translatable, type UserAvatarEntity, UserEmailPreferences, type UserEntity, type UserName, UserNotificationPreferences, animationComponentSchema, assetEntitySchema, assetEntityShape, audioAssetEntitySchema, authenticatedUserSchema, authenticatedUserShape, baseComponentSchema, baseComponentShape, baseEntitySchema, baseEntityShape, editableUserProfileSchema, featureFlagEntitySchema, featureFlagEntityShape, imageAssetEntitySchema, isValidAzureTableKey, isValidEntityType, mapEditableUserProfileValidationErrors, modelAssetEntitySchema, objectAssetEntitySchema, permissionsEntitySchema, physicsComponentSchema, roleEntitySchema, settingsEntitySchema, shadowComponentSchema, supportedLanguagesSchema, translatableSchema, userAvatarSchema, userEntitySchema, userNameSchema, validateAssetSchema, validateEditableUserProfile, validateFeatureFlagValue, validateSettingValue };
export { type AnimationComponent, type AnyAssetEntity, type AssetEntity, type AudioAssetEntity, AuthProvider, type AuthenticatedUser, type BaseComponent, type BaseEntity, ComponentTypes, type EditableUserProfile, type EditableUserProfileFieldErrors, type EditableUserProfileFieldName, type EditableUserProfileFieldTranslationKey, type EditableUserProfileTranslate, type EditableUserProfileTranslationKey, type EditableUserProfileValidationIssue, type EditableUserProfileValidationTranslationKey, EntityTypes, type FeatureFlagEntity, type ImageAssetEntity, type ModelAssetEntity, type ObjectAssetEntity, PROFILE_DEFAULT_PROFANITY_LOCALE, PROFILE_PROFANITY_SUPPORTED_LOCALES, type PermissionsEntity, type PhysicsComponent, PreferredDisplayOrder, Role, type RoleEntity, Scope, type SettingsEntity, type ShadowComponent, type SupportedLanguage, type Translatable, type UserAvatarEntity, UserEmailPreferences, type UserEntity, type UserName, UserNotificationPreferences, animationComponentSchema, assetEntitySchema, assetEntityShape, audioAssetEntitySchema, authenticatedUserSchema, authenticatedUserShape, baseComponentSchema, baseComponentShape, baseEntitySchema, baseEntityShape, editableUserProfileFieldTranslationKeys, editableUserProfileSchema, editableUserProfileValidationTranslationKeys, entityManagerEnGbTranslations, entityManagerTranslations, featureFlagEntitySchema, featureFlagEntityShape, imageAssetEntitySchema, isValidAzureTableKey, isValidEntityType, mapEditableUserProfileValidationErrors, modelAssetEntitySchema, objectAssetEntitySchema, permissionsEntitySchema, physicsComponentSchema, roleEntitySchema, settingsEntitySchema, shadowComponentSchema, supportedLanguagesSchema, translatableSchema, translateEditableUserProfileFieldLabel, translateEditableUserProfileValidationText, userAvatarSchema, userEntitySchema, userNameSchema, validateAssetSchema, validateEditableUserProfile, validateFeatureFlagValue, validateSettingValue };

@@ -625,2 +625,65 @@ // src/base.entity.ts

} from "@plasius/schema";
// src/user/profile.validation.translations.ts
import { createI18n } from "@plasius/translations";
var editableUserProfileFieldTranslationKeys = {
"name.firstName": "entityManager.profile.field.firstName",
"name.middleName": "entityManager.profile.field.middleName",
"name.lastName": "entityManager.profile.field.lastName",
"name.displayName": "entityManager.profile.field.displayName",
"name.preferredDisplayOrder": "entityManager.profile.field.preferredDisplayOrder",
email: "entityManager.profile.field.email",
emailPreferences: "entityManager.profile.field.emailPreferences"
};
var editableUserProfileValidationTranslationKeys = {
emailInvalid: "entityManager.profile.validation.emailInvalid",
immutable: "entityManager.profile.validation.immutable",
invalidType: "entityManager.profile.validation.invalidType",
invalidValue: "entityManager.profile.validation.invalidValue",
nameUnsupportedCharacters: "entityManager.profile.validation.nameUnsupportedCharacters",
profanity: "entityManager.profile.validation.profanity",
required: "entityManager.profile.validation.required",
tooLong: "entityManager.profile.validation.tooLong"
};
var entityManagerEnGbTranslations = {
[editableUserProfileFieldTranslationKeys["name.firstName"]]: "First name",
[editableUserProfileFieldTranslationKeys["name.middleName"]]: "Middle name",
[editableUserProfileFieldTranslationKeys["name.lastName"]]: "Last name",
[editableUserProfileFieldTranslationKeys["name.displayName"]]: "Display name",
[editableUserProfileFieldTranslationKeys["name.preferredDisplayOrder"]]: "Preferred name display",
[editableUserProfileFieldTranslationKeys.email]: "Email",
[editableUserProfileFieldTranslationKeys.emailPreferences]: "Email preferences",
[editableUserProfileValidationTranslationKeys.emailInvalid]: "{field} must be a valid email address.",
[editableUserProfileValidationTranslationKeys.immutable]: "{field} cannot be changed.",
[editableUserProfileValidationTranslationKeys.invalidType]: "{field} has an invalid type.",
[editableUserProfileValidationTranslationKeys.invalidValue]: "{field} has an invalid value.",
[editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters]: "{field} contains unsupported characters.",
[editableUserProfileValidationTranslationKeys.profanity]: "{field} contains blocked language.",
[editableUserProfileValidationTranslationKeys.required]: "{field} is required.",
[editableUserProfileValidationTranslationKeys.tooLong]: "{field} must be {maxLength} characters or fewer."
};
var entityManagerTranslations = {
"en-GB": entityManagerEnGbTranslations
};
var entityManagerI18n = createI18n({
language: "en-GB",
fallback: "en-GB",
translations: entityManagerTranslations
});
function translateEditableUserProfileValidationText(key, args, translate) {
const translated = translate?.(key, args);
if (translated && translated !== key) {
return translated;
}
return entityManagerI18n.t(key, args);
}
function translateEditableUserProfileFieldLabel(field22, translate) {
return translateEditableUserProfileValidationText(
editableUserProfileFieldTranslationKeys[field22],
void 0,
translate
);
}
// src/user/profile.validation.ts
var PROFILE_PROFANITY_LEXICON = {

@@ -655,16 +718,11 @@ en: [

]);
var EDITABLE_PROFILE_FIELD_LABELS = {
"name.firstName": "First name",
"name.middleName": "Middle name",
"name.lastName": "Last name",
"name.displayName": "Display name",
"name.preferredDisplayOrder": "Preferred name display",
email: "Email",
emailPreferences: "Email preferences"
};
function toIssue(path, code, message) {
function toIssue(fieldName, code, messageKey, args = {}) {
const fieldLabel = translateEditableUserProfileFieldLabel(fieldName);
return {
path,
path: fieldName,
code,
message
message: translateEditableUserProfileValidationText(messageKey, {
field: fieldLabel,
...args
})
};

@@ -693,5 +751,10 @@ }

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.required,
path: field22,
code: `${field22}.required`,
message: `${EDITABLE_PROFILE_FIELD_LABELS[field22]} is required.`
message: translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.required,
{ field: translateEditableUserProfileFieldLabel(field22) }
)
};

@@ -702,5 +765,10 @@ }

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.immutable,
path: field22,
code: `${field22}.immutable`,
message: `${EDITABLE_PROFILE_FIELD_LABELS[field22]} cannot be changed.`
message: translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.immutable,
{ field: translateEditableUserProfileFieldLabel(field22) }
)
};

@@ -711,2 +779,4 @@ }

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.invalidType,
path: field22,

@@ -719,2 +789,4 @@ code: `${field22}.invalid_type`,

field: field22,
fieldKey: editableUserProfileFieldTranslationKeys[field22],
messageKey: editableUserProfileValidationTranslationKeys.invalidValue,
path: field22,

@@ -725,7 +797,34 @@ code: `${field22}.invalid_value`,

}
function messageKeyForProfileValidationIssue(field22, code) {
if (code.endsWith(".required")) {
return editableUserProfileValidationTranslationKeys.required;
}
if (code.endsWith(".immutable")) {
return editableUserProfileValidationTranslationKeys.immutable;
}
if (code.endsWith(".invalid_type")) {
return editableUserProfileValidationTranslationKeys.invalidType;
}
if (code.endsWith(".invalid_value")) {
return editableUserProfileValidationTranslationKeys.invalidValue;
}
if (code.endsWith(".too_long")) {
return editableUserProfileValidationTranslationKeys.tooLong;
}
if (code.endsWith(".invalid_format")) {
return field22 === "email" ? editableUserProfileValidationTranslationKeys.emailInvalid : editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters;
}
if (code.endsWith(".profanity")) {
return editableUserProfileValidationTranslationKeys.profanity;
}
return void 0;
}
function normalizeValidationIssue(issue) {
const field22 = isEditableUserProfileFieldName(issue.path) ? issue.path : void 0;
const messageKey = messageKeyForProfileValidationIssue(field22, issue.code);
return {
...issue,
field: field22
field: field22,
fieldKey: field22 ? editableUserProfileFieldTranslationKeys[field22] : void 0,
messageKey
};

@@ -753,5 +852,5 @@ }

return toIssue(
rule.path,
`${rule.path}.required`,
`${rule.label} is required.`
rule.field,
`${rule.field}.required`,
editableUserProfileValidationTranslationKeys.required
);

@@ -761,5 +860,6 @@ }

return toIssue(
rule.path,
`${rule.path}.too_long`,
`${rule.label} must be ${rule.maxLength} characters or fewer.`
rule.field,
`${rule.field}.too_long`,
editableUserProfileValidationTranslationKeys.tooLong,
{ maxLength: rule.maxLength }
);

@@ -769,5 +869,5 @@ }

return toIssue(
rule.path,
`${rule.path}.invalid_format`,
`${rule.label} contains unsupported characters.`
rule.field,
`${rule.field}.invalid_format`,
editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters
);

@@ -777,5 +877,5 @@ }

return toIssue(
rule.path,
`${rule.path}.invalid_format`,
`${rule.label} must be a valid email address.`
rule.field,
`${rule.field}.invalid_format`,
editableUserProfileValidationTranslationKeys.emailInvalid
);

@@ -786,5 +886,5 @@ }

return toIssue(
rule.path,
`${rule.path}.profanity`,
`${rule.label} contains blocked language.`
rule.field,
`${rule.field}.profanity`,
editableUserProfileValidationTranslationKeys.profanity
);

@@ -797,4 +897,3 @@ }

(value) => validateProfileTextField(value, {
path: "name.firstName",
label: "First name",
field: "name.firstName",
maxLength: 64,

@@ -807,4 +906,3 @@ required: true,

(value) => validateProfileTextField(value, {
path: "name.middleName",
label: "Middle name",
field: "name.middleName",
maxLength: 64,

@@ -817,4 +915,3 @@ required: false,

(value) => validateProfileTextField(value, {
path: "name.lastName",
label: "Last name",
field: "name.lastName",
maxLength: 64,

@@ -827,4 +924,3 @@ required: true,

(value) => validateProfileTextField(value, {
path: "name.displayName",
label: "Display name",
field: "name.displayName",
maxLength: 80,

@@ -841,4 +937,3 @@ required: true,

(value) => validateProfileTextField(value, {
path: "email",
label: "Email",
field: "email",
maxLength: 254,

@@ -891,4 +986,2 @@ required: true,

fieldErrors[issue.field] ??= issue.message;
} else {
formErrors.push(issue.message);
}

@@ -1004,3 +1097,7 @@ }

baseEntityShape,
editableUserProfileFieldTranslationKeys,
editableUserProfileSchema,
editableUserProfileValidationTranslationKeys,
entityManagerEnGbTranslations,
entityManagerTranslations,
featureFlagEntitySchema,

@@ -1021,2 +1118,4 @@ featureFlagEntityShape,

translatableSchema,
translateEditableUserProfileFieldLabel,
translateEditableUserProfileValidationText,
userAvatarSchema,

@@ -1023,0 +1122,0 @@ userEntitySchema,

{
"name": "@plasius/entity-manager",
"version": "1.0.17",
"version": "1.0.19",
"description": "Entity definition & validation helpers for Plasius ecosystem",

@@ -19,3 +19,5 @@ "type": "module",

"dependencies": {
"@plasius/schema": "^1.2.11"
"@plasius/schema": "^1.2.11",
"@plasius/translations": "^1.0.17",
"react": "^19.2.6"
},

@@ -59,2 +61,3 @@ "exports": {

"@types/node": "^25.7.0",
"@types/react": "^19.2.15",
"@typescript-eslint/eslint-plugin": "^8.59.3",

@@ -61,0 +64,0 @@ "@typescript-eslint/parser": "^8.59.3",

@@ -53,2 +53,26 @@ # @plasius/entity-manager

### Editable Profile Validation Translations
Editable profile validation issues expose stable field and message keys with
`en-GB` defaults resolved through `@plasius/translations`.
```ts
import {
editableUserProfileValidationTranslationKeys,
mapEditableUserProfileValidationErrors,
translateEditableUserProfileValidationText,
validateEditableUserProfile,
} from "@plasius/entity-manager";
const validation = validateEditableUserProfile(profile);
const mapped = mapEditableUserProfileValidationErrors(validation);
const message = translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.required,
{ field: "First name" },
);
console.log(mapped.issues[0]?.fieldKey, mapped.issues[0]?.messageKey, message);
```
---

@@ -65,2 +89,7 @@

- `userEntitySchema`, `userNameSchema`, `userAvatarSchema`
- Editable profile validation helpers and translation keys:
`validateEditableUserProfile`, `mapEditableUserProfileValidationErrors`,
`editableUserProfileFieldTranslationKeys`,
`editableUserProfileValidationTranslationKeys`,
`entityManagerEnGbTranslations`, `translateEditableUserProfileValidationText`
- `settingsEntitySchema`, `permissionsEntitySchema`, `featureFlagEntitySchema`, `roleEntitySchema`

@@ -67,0 +96,0 @@ - Enums: `PreferredDisplayOrder`, `UserEmailPreferences`, `UserNotificationPreferences`, `Role`, `Scope`

@@ -41,1 +41,2 @@ export {

} from "./profile.validation.js";
export * from "./profile.validation.translations.js";

@@ -13,2 +13,10 @@ import {

import { PreferredDisplayOrder } from "./user.name.js";
import {
editableUserProfileFieldTranslationKeys,
editableUserProfileValidationTranslationKeys,
translateEditableUserProfileFieldLabel,
translateEditableUserProfileValidationText,
type EditableUserProfileFieldTranslationKey,
type EditableUserProfileValidationTranslationKey,
} from "./profile.validation.translations.js";

@@ -53,2 +61,4 @@ const PROFILE_PROFANITY_LEXICON = {

field?: EditableUserProfileFieldName;
fieldKey?: EditableUserProfileFieldTranslationKey;
messageKey?: EditableUserProfileValidationTranslationKey;
}

@@ -66,15 +76,4 @@

const EDITABLE_PROFILE_FIELD_LABELS: Record<EditableUserProfileFieldName, string> = {
"name.firstName": "First name",
"name.middleName": "Middle name",
"name.lastName": "Last name",
"name.displayName": "Display name",
"name.preferredDisplayOrder": "Preferred name display",
email: "Email",
emailPreferences: "Email preferences",
};
type ProfileTextFieldRule = {
path: string;
label: string;
field: EditableUserProfileFieldName;
maxLength: number;

@@ -86,10 +85,16 @@ required: boolean;

function toIssue(
path: string,
fieldName: EditableUserProfileFieldName,
code: string,
message: string,
messageKey: EditableUserProfileValidationTranslationKey,
args: Record<string, string | number | boolean> = {},
): ValidationIssueInput {
const fieldLabel = translateEditableUserProfileFieldLabel(fieldName);
return {
path,
path: fieldName,
code,
message,
message: translateEditableUserProfileValidationText(messageKey, {
field: fieldLabel,
...args,
}),
};

@@ -130,5 +135,10 @@ }

field,
fieldKey: editableUserProfileFieldTranslationKeys[field],
messageKey: editableUserProfileValidationTranslationKeys.required,
path: field,
code: `${field}.required`,
message: `${EDITABLE_PROFILE_FIELD_LABELS[field]} is required.`,
message: translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.required,
{ field: translateEditableUserProfileFieldLabel(field) },
),
};

@@ -140,5 +150,10 @@ }

field,
fieldKey: editableUserProfileFieldTranslationKeys[field],
messageKey: editableUserProfileValidationTranslationKeys.immutable,
path: field,
code: `${field}.immutable`,
message: `${EDITABLE_PROFILE_FIELD_LABELS[field]} cannot be changed.`,
message: translateEditableUserProfileValidationText(
editableUserProfileValidationTranslationKeys.immutable,
{ field: translateEditableUserProfileFieldLabel(field) },
),
};

@@ -150,2 +165,4 @@ }

field,
fieldKey: editableUserProfileFieldTranslationKeys[field],
messageKey: editableUserProfileValidationTranslationKeys.invalidType,
path: field,

@@ -159,2 +176,4 @@ code: `${field}.invalid_type`,

field,
fieldKey: editableUserProfileFieldTranslationKeys[field],
messageKey: editableUserProfileValidationTranslationKeys.invalidValue,
path: field,

@@ -166,2 +185,33 @@ code: `${field}.invalid_value`,

function messageKeyForProfileValidationIssue(
field: EditableUserProfileFieldName | undefined,
code: string,
): EditableUserProfileValidationTranslationKey | undefined {
if (code.endsWith(".required")) {
return editableUserProfileValidationTranslationKeys.required;
}
if (code.endsWith(".immutable")) {
return editableUserProfileValidationTranslationKeys.immutable;
}
if (code.endsWith(".invalid_type")) {
return editableUserProfileValidationTranslationKeys.invalidType;
}
if (code.endsWith(".invalid_value")) {
return editableUserProfileValidationTranslationKeys.invalidValue;
}
if (code.endsWith(".too_long")) {
return editableUserProfileValidationTranslationKeys.tooLong;
}
if (code.endsWith(".invalid_format")) {
return field === "email"
? editableUserProfileValidationTranslationKeys.emailInvalid
: editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters;
}
if (code.endsWith(".profanity")) {
return editableUserProfileValidationTranslationKeys.profanity;
}
return undefined;
}
function normalizeValidationIssue(

@@ -173,2 +223,3 @@ issue: ValidationIssue,

: undefined;
const messageKey = messageKeyForProfileValidationIssue(field, issue.code);

@@ -178,2 +229,4 @@ return {

field,
fieldKey: field ? editableUserProfileFieldTranslationKeys[field] : undefined,
messageKey,
};

@@ -212,5 +265,5 @@ }

return toIssue(
rule.path,
`${rule.path}.required`,
`${rule.label} is required.`,
rule.field,
`${rule.field}.required`,
editableUserProfileValidationTranslationKeys.required,
);

@@ -221,5 +274,6 @@ }

return toIssue(
rule.path,
`${rule.path}.too_long`,
`${rule.label} must be ${rule.maxLength} characters or fewer.`,
rule.field,
`${rule.field}.too_long`,
editableUserProfileValidationTranslationKeys.tooLong,
{ maxLength: rule.maxLength },
);

@@ -230,5 +284,5 @@ }

return toIssue(
rule.path,
`${rule.path}.invalid_format`,
`${rule.label} contains unsupported characters.`,
rule.field,
`${rule.field}.invalid_format`,
editableUserProfileValidationTranslationKeys.nameUnsupportedCharacters,
);

@@ -239,5 +293,5 @@ }

return toIssue(
rule.path,
`${rule.path}.invalid_format`,
`${rule.label} must be a valid email address.`,
rule.field,
`${rule.field}.invalid_format`,
editableUserProfileValidationTranslationKeys.emailInvalid,
);

@@ -249,5 +303,5 @@ }

return toIssue(
rule.path,
`${rule.path}.profanity`,
`${rule.label} contains blocked language.`,
rule.field,
`${rule.field}.profanity`,
editableUserProfileValidationTranslationKeys.profanity,
);

@@ -264,4 +318,3 @@ }

validateProfileTextField(value, {
path: "name.firstName",
label: "First name",
field: "name.firstName",
maxLength: 64,

@@ -278,4 +331,3 @@ required: true,

validateProfileTextField(value, {
path: "name.middleName",
label: "Middle name",
field: "name.middleName",
maxLength: 64,

@@ -291,4 +343,3 @@ required: false,

validateProfileTextField(value, {
path: "name.lastName",
label: "Last name",
field: "name.lastName",
maxLength: 64,

@@ -304,4 +355,3 @@ required: true,

validateProfileTextField(value, {
path: "name.displayName",
label: "Display name",
field: "name.displayName",
maxLength: 80,

@@ -324,4 +374,3 @@ required: true,

validateProfileTextField(value, {
path: "email",
label: "Email",
field: "email",
maxLength: 254,

@@ -399,4 +448,2 @@ required: true,

fieldErrors[issue.field] ??= issue.message;
} else {
formErrors.push(issue.message);
}

@@ -403,0 +450,0 @@ }

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display