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.11
to
1.0.12
+16
-0
CHANGELOG.md

@@ -24,2 +24,17 @@

## [1.0.12] - 2026-03-09
- **Added**
- Added public serialization coverage for base, role, permission, asset, and avatar entities.
- **Changed**
- Raised the minimum `@plasius/schema` dependency to `^1.2.6`.
- Marked persistence-only audit and storage fields as internal so `schema.serialize()` omits them from default public payloads.
- **Fixed**
- Prevented `partitionKey`, audit actor ids, and similar persistence metadata from being treated as client-safe entity fields by default.
- **Security**
- Reduced accidental leakage risk for internal entity metadata during API serialization.
## [1.0.11] - 2026-03-04

@@ -161,1 +176,2 @@

[1.0.11]: https://github.com/Plasius-LTD/entity-manager/releases/tag/v1.0.11
[1.0.12]: https://github.com/Plasius-LTD/entity-manager/releases/tag/v1.0.12
+12
-12

@@ -74,3 +74,3 @@ "use strict";

validated: import_schema.field.boolean().version("1.0").description("has this content been validated as safe for use").optional(),
validatedBy: import_schema.field.string().version("1.0").description("Who validated this content").optional(),
validatedBy: import_schema.field.string().internal().version("1.0").description("Who validated this content").optional(),
validatedAt: import_schema.field.string().version("1.0").description("When was this content validated?").optional()

@@ -340,3 +340,3 @@ };

// From TableEntity
partitionKey: import_schema12.field.string().immutable().required().description("Primary partition identifier, usually user ID.").version("1.0").validator(isValidAzureTableKey),
partitionKey: import_schema12.field.string().internal().immutable().required().description("Primary partition identifier, usually user ID.").version("1.0").validator(isValidAzureTableKey),
id: import_schema12.field.string().immutable().required().description("Row identifier within the partition.").version("1.0").validator(isValidAzureTableKey),

@@ -346,9 +346,9 @@ version: import_schema12.field.string().description("SemVer version string for the record.").version("1.0").system().validator(import_schema12.validateSemVer),

createdAt: import_schema12.field.string().immutable().required().description("Record creation timestamp.").version("1.0").as().validator(import_schema13.validateDateTimeISO),
createdBy: import_schema12.field.string().immutable().required().description("User ID who created the record.").version("1.0").validator(import_schema13.validateUserId),
createdBy: import_schema12.field.string().internal().immutable().required().description("User ID who created the record.").version("1.0").validator(import_schema13.validateUserId),
updatedAt: import_schema12.field.string().optional().description("Timestamp of the last update.").version("1.0").as().validator(import_schema13.validateDateTimeISO),
updatedBy: import_schema12.field.string().optional().description("User ID of the last editor.").version("1.0").validator(import_schema13.validateUserId),
updatedBy: import_schema12.field.string().internal().optional().description("User ID of the last editor.").version("1.0").validator(import_schema13.validateUserId),
isDeleted: import_schema12.field.boolean().description("Indicates whether this record was soft deleted.").version("1.0"),
deletedAt: import_schema12.field.string().optional().description("Timestamp when the entity was deleted.").version("1.0").as().validator(import_schema13.validateDateTimeISO),
deletedBy: import_schema12.field.string().optional().description("User ID of who deleted the record.").version("1.0").validator(import_schema13.validateUserId),
deletedReason: import_schema12.field.string().optional().description("Reason the record was deleted.").version("1.0").validator(import_schema12.validateSafeText)
deletedBy: import_schema12.field.string().internal().optional().description("User ID of who deleted the record.").version("1.0").validator(import_schema13.validateUserId),
deletedReason: import_schema12.field.string().internal().optional().description("Reason the record was deleted.").version("1.0").validator(import_schema12.validateSafeText)
};

@@ -433,6 +433,6 @@ function validateBaseEntitySchema(entity) {

granted: import_schema15.field.boolean().version("1.0").description("Has this permission been validated").optional(),
grantedBy: import_schema15.field.string().version("1.0").description("Which user/system granted the update to permissions").optional().validator(import_schema16.validateUserId),
grantedBy: import_schema15.field.string().internal().version("1.0").description("Which user/system granted the update to permissions").optional().validator(import_schema16.validateUserId),
grantedAt: import_schema15.field.string().version("1.0").description("Date/Time permission was granted").optional().validator(import_schema15.validateDateTimeISO),
revoked: import_schema15.field.boolean().version("1.0").description("Have the permissions been revoked").optional(),
revokedBy: import_schema15.field.string().version("1.0").description("Who revoked the permissions").optional().validator(import_schema16.validateUserId),
revokedBy: import_schema15.field.string().internal().version("1.0").description("Who revoked the permissions").optional().validator(import_schema16.validateUserId),
revokedAt: import_schema15.field.string().version("1.0").description("Date/Time permission was revoked").optional().validator(import_schema15.validateDateTimeISO)

@@ -469,5 +469,5 @@ };

activatedAt: import_schema17.field.string().version("1.0").description("When were the roles activated").optional().validator(import_schema17.validateDateTimeISO).as(),
activatedBy: import_schema17.field.string().version("1.0").description("Who activated the roles?").optional().validator(import_schema18.validateUserId),
activatedBy: import_schema17.field.string().internal().version("1.0").description("Who activated the roles?").optional().validator(import_schema18.validateUserId),
deactivatedAt: import_schema17.field.string().version("1.0").description("When were the roles deactivated for this user").optional().validator(import_schema17.validateDateTimeISO).as(),
deactivatedBy: import_schema17.field.string().version("1.0").description("Who deactivated the roles for this user?").optional().validator(import_schema18.validateUserId)
deactivatedBy: import_schema17.field.string().internal().version("1.0").description("Who deactivated the roles for this user?").optional().validator(import_schema18.validateUserId)
};

@@ -511,3 +511,3 @@ function validateRoleEntitySchema(entity) {

var userAvatarShape = {
partitionKey: import_schema19.field.string().description("Avatar partition key, typically 'domain'").validator(import_schema19.validateSafeText),
partitionKey: import_schema19.field.string().internal().description("Avatar partition key, typically 'domain'").validator(import_schema19.validateSafeText),
id: import_schema19.field.string().description("User ID").validator(import_schema19.validateSafeText),

@@ -521,3 +521,3 @@ filename: import_schema19.field.string().description("Original filename").validator(import_schema19.validateSafeText),

createdAt: import_schema19.field.string().description("Upload timestamp").validator(import_schema19.validateDateTimeISO).as(),
createdBy: import_schema19.field.string().description("User who uploaded the avatar").validator(import_schema19.validateUserId),
createdBy: import_schema19.field.string().internal().description("User who uploaded the avatar").validator(import_schema19.validateUserId),
version: import_schema19.field.number().description("Version of this avatar record")

@@ -524,0 +524,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/index.ts","../src/base.entity.ts","../src/Entities/asset.entity.ts","../src/Entities/audio.asset.entity.ts","../src/Entities/image.asset.entity.ts","../src/Entities/model.asset.entity.ts","../src/components/physics.ts","../src/components/shadow.ts","../src/components/animation.ts","../src/components/basecomponent.ts","../src/components/index.ts","../src/Entities/object.asset.entity.ts","../src/validators/asset.validator.ts","../src/validators/table.validator.ts","../src/validators/schema.validator.ts","../src/validators/featureflag.validator.ts","../src/validators/settings.validator.ts","../src/types.ts","../src/user/settings.entity.ts","../src/user/permissions.entity.ts","../src/user/role.entity.ts","../src/user/user.avatar.ts","../src/user/user.entity.ts","../src/user/user.name.ts","../src/user/feature.flag.entity.ts","../src/auth/authenticatedUser.ts","../src/translations/translatable.ts","../src/translations/supported.languages.ts"],"sourcesContent":["export {\n type BaseEntity,\n baseEntityShape,\n baseEntitySchema,\n} from \"./base.entity.js\";\n\nexport * from \"./user/index.js\";\nexport * from \"./Entities/index.js\";\nexport * from \"./components/index.js\";\nexport * from \"./types.js\";\nexport * from \"./validators/index.js\";\nexport * from \"./auth/index.js\";\nexport * from \"./translations/index.js\";\n\nimport { AssetEntity } from \"./Entities/asset.entity.js\";\nimport { AudioAssetEntity } from \"./Entities/audio.asset.entity.js\";\nimport { ImageAssetEntity } from \"./Entities/image.asset.entity.js\";\nimport { ModelAssetEntity } from \"./Entities/model.asset.entity.js\";\nimport { ObjectAssetEntity } from \"./Entities/object.asset.entity.js\";\n\nexport type AnyAssetEntity =\n | AssetEntity\n | AudioAssetEntity\n | ImageAssetEntity\n | ModelAssetEntity\n | ObjectAssetEntity;","import {\n createSchema,\n field,\n validateSafeText,\n validateSemVer,\n} from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { isValidAzureTableKey, isValidEntityType } from \"./validators/index.js\";\nimport { validateDateTimeISO, validateUserId } from \"@plasius/schema\";\nimport { EntityTypes } from \"./types.js\";\n\nexport const baseEntityShape: SchemaShape = {\n // From TableEntity\n partitionKey: field\n .string()\n .immutable()\n .required()\n .description(\"Primary partition identifier, usually user ID.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n id: field\n .string()\n .immutable()\n .required()\n .description(\"Row identifier within the partition.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n version: field\n .string()\n .description(\"SemVer version string for the record.\")\n .version(\"1.0\")\n .system()\n .validator(validateSemVer),\n\n entityType: field\n .string()\n .version(\"1.0\")\n .description(\"The derived type of this entity.\")\n .immutable()\n .system()\n .enum([...Object.values(EntityTypes)])\n .validator(isValidEntityType),\n\n createdAt: field\n .string()\n .immutable()\n .required()\n .description(\"Record creation timestamp.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n createdBy: field\n .string()\n .immutable()\n .required()\n .description(\"User ID who created the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n updatedAt: field\n .string()\n .optional()\n .description(\"Timestamp of the last update.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n updatedBy: field\n .string()\n .optional()\n .description(\"User ID of the last editor.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n isDeleted: field\n .boolean()\n .description(\"Indicates whether this record was soft deleted.\")\n .version(\"1.0\"),\n\n deletedAt: field\n .string()\n .optional()\n .description(\"Timestamp when the entity was deleted.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n deletedBy: field\n .string()\n .optional()\n .description(\"User ID of who deleted the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n deletedReason: field\n .string()\n .optional()\n .description(\"Reason the record was deleted.\")\n .version(\"1.0\")\n .validator(validateSafeText),\n};\n\n// Add schema-level validator\nfunction validateBaseEntitySchema(\n entity: Infer<typeof baseEntityShape>\n): boolean {\n const hasDateValue = (value: unknown) => {\n if (value instanceof Date) return !Number.isNaN(value.getTime());\n if (typeof value === \"string\") return value.trim() !== \"\";\n return false;\n };\n\n const hasTextValue = (value: unknown) =>\n typeof value === \"string\" && value.trim() !== \"\";\n\n if (entity.isDeleted) {\n if (!hasDateValue(entity.deletedAt))\n return false;\n if (!hasTextValue(entity.deletedBy)) return false;\n if (!hasTextValue(entity.deletedReason))\n return false;\n } else {\n if (hasDateValue(entity.deletedAt))\n return false;\n if (hasTextValue(entity.deletedBy)) return false;\n if (hasTextValue(entity.deletedReason))\n return false;\n }\n return true;\n}\n\nexport const baseEntitySchema = createSchema(baseEntityShape, \"baseEntity\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n schemaValidator: validateBaseEntitySchema,\n});\nexport type BaseEntity = Infer<typeof baseEntitySchema> & {\n id: string;\n partitionKey: string;\n};\n","import { field, createSchema } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport const assetEntityShape: SchemaShape = {\n cacheable: field.boolean()\n .version(\"1.0\")\n .description(\"Is this asset safe to store in local cache?\"),\n\n userUploaded: field.boolean()\n .version(\"1.0\")\n .description(\"User uploaded from their machine, verification of ownership required.\")\n .optional(),\n\n userCreated: field.boolean()\n .version(\"1.0\")\n .description(\"User created using local tools, verification of ownership not required.\")\n .optional(),\n\n validated: field.boolean()\n .version(\"1.0\")\n .description(\"has this content been validated as safe for use\")\n .optional(),\n\n validatedBy: field.string()\n .version(\"1.0\")\n .description(\"Who validated this content\")\n .optional(),\n\n validatedAt: field.string()\n .version(\"1.0\")\n .description(\"When was this content validated?\")\n .optional(),\n};\n\nexport const assetEntitySchema = createSchema(\n assetEntityShape,\n \"AssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type AssetEntity = Infer<typeof assetEntitySchema> & BaseEntity;\n","import { AssetEntity } from \"./asset.entity.js\";\nimport { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AudioChannel {\n LEFT = \"left\",\n RIGHT = \"right\",\n FRONT = \"front\",\n REAR = \"rear\",\n ALL = \"all\",\n DYNAMIC = \"dynamic\", // used for location based audio\n}\n\nconst audioAssetEntityShape: SchemaShape = {\n duration: field\n .number()\n .version(\"1.0\")\n .description(\"Audio clip duration\")\n .optional(),\n\n repeats: field\n .boolean()\n .version(\"1.0\")\n .description(\"Does this clip repeat?\")\n .optional(),\n\n channel: field\n .string()\n .version(\"1.0\")\n .description(\"Where to play the clip, positional or dynamic\")\n .optional()\n .enum([...Object.values(AudioChannel)]),\n};\n\nexport const audioAssetEntitySchema = createSchema(\n audioAssetEntityShape,\n \"AudioAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\",\n }\n);\nexport type AudioAssetEntity = Infer<typeof audioAssetEntitySchema> & AssetEntity;\n","import { createSchema, field, validateUrl } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\nconst imageAssetEntityShape: SchemaShape = {\n url: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\")\n .as<URL>()\n .validator(validateUrl),\n\n thumbnailUrl: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional()\n .as<URL>()\n .validator(validateUrl),\n\n width: field\n .number()\n .version(\"1.0\")\n .description(\"Width of the image in pixels\")\n .optional(),\n\n height: field\n .number()\n .version(\"1.0\")\n .description(\"Height of the image in pixels\")\n .optional(),\n};\n\nexport const imageAssetEntitySchema = createSchema(\n imageAssetEntityShape,\n \"ImageAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type ImageAssetEntity = Infer<typeof imageAssetEntitySchema> & AssetEntity;\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\nimport { ComponentTypes } from \"../components/index.js\";\n\nexport enum ModelAssetFormat {\n GLTF = \"gltf\",\n GLB = \"glb\",\n OBJ = \"obj\",\n FBX = \"fbx\",\n USDZ = \"usdz\",\n PLY = \"ply\",\n STL = \"stl\",\n}\n\nexport const modelAssetEntityShape: SchemaShape = {\n url: field.string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\"),\n\n thumbnailUrl: field.string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional(),\n\n format: field.string()\n .version(\"1.0\")\n .description(\"Format of the model asset\")\n .optional()\n .enum([...Object.values(ModelAssetFormat)]),\n\n size: field.number()\n .version(\"1.0\")\n .description(\"Size of the model asset in bytes\")\n .optional(),\n\n components: field.array(\n field.object({\n type: field.string()\n .description(\"Type of the component\")\n .version(\"1.0\")\n .enum([...Object.values(ComponentTypes)]),\n config: field.object({})\n .optional()\n .description(\"Configuration for the component\")\n .version(\"1.0\"),\n })\n )\n .version(\"1.0\")\n .description(\"List of components attached to this model asset\")\n .optional(),\n};\n\nexport const modelAssetEntitySchema = createSchema(\n modelAssetEntityShape,\n \"ModelAssetEntity\",\n { version:\"1.0\",\n piiEnforcement: \"strict\" ,\n table: \"assets\" }\n);\n\nexport type ModelAssetEntity = Infer<typeof modelAssetEntitySchema> & AssetEntity;","import { createComponentSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nexport enum PhysicsShape {\n BOX = \"box\",\n SPHERE = \"sphere\",\n MESH = \"mesh\",\n CAPSULE = \"capsule\",\n CYLINDER = \"cylinder\",\n CONVEX_HULL = \"convex_hull\",\n}\n\nexport const physicsComponentShape : SchemaShape = {\n enabled: field.boolean()\n .optional()\n .description(\"Is physics enabled for this entity?\")\n .version(\"1.0\"),\n\n shape: field.string()\n .enum([...Object.values(PhysicsShape)])\n .optional()\n .description(\"The shape of the physics collider.\")\n .version(\"1.0\"),\n\n mass: field.number()\n .optional()\n .description(\"The mass of the entity in kg.\")\n .version(\"1.0\"),\n};\n\nexport const physicsComponentSchema = createComponentSchema(\n physicsComponentShape,\n \"PhysicsComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type PhysicsComponent = Infer<typeof physicsComponentSchema> & BaseComponent;","import {\n field,\n createComponentSchema,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport {type BaseComponent } from \"./basecomponent.js\";\n\nexport const shadowComponentShape : SchemaShape = {\n casts: field.boolean()\n .optional()\n .description(\"Whether this entity casts shadows\"),\n\n receives: field.boolean()\n .optional()\n .description(\"Whether this entity receives shadows\"),\n};\n\nexport const shadowComponentSchema = createComponentSchema(\n shadowComponentShape,\n \"ShadowComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type ShadowComponent = Infer<typeof shadowComponentSchema> & BaseComponent;","import {\n createComponentSchema,\n field,\n Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nconst animationComponentShape : SchemaShape = {\n animated: field.boolean()\n .optional()\n .description(\"Is this entity animated?\")\n .version(\"1.0\"),\n\n availableAnimations: field.array(field.string())\n .optional()\n .description(\"List of available animations for this entity\")\n .version(\"1.0\"),\n};\n\nexport const animationComponentSchema = createComponentSchema(\n animationComponentShape,\n \"AnimationComponent\",\n \"1.0\",\n \"components\"\n);\nexport type AnimationComponent = Infer<typeof animationComponentSchema> & BaseComponent;\n","import { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport const baseComponentShape: SchemaShape = {\n name: field\n .string()\n .version(\"1.0\")\n .description(\"The name of the component\")\n .optional(),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"A brief description of the component\")\n .optional(),\n};\n\nexport const baseComponentSchema = createSchema(baseComponentShape, \"BaseComponent\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n});\n\nexport type BaseComponent = Infer<typeof baseComponentSchema> & BaseEntity;\n","export { type PhysicsComponent, physicsComponentSchema } from \"./physics.js\";\nexport { type ShadowComponent, shadowComponentSchema } from \"./shadow.js\";\nexport {\n type AnimationComponent,\n animationComponentSchema,\n} from \"./animation.js\";\n\nexport * from \"./basecomponent.js\"\n\nexport enum ComponentTypes {\n PHYSICS = \"physics\",\n ANIMATION = \"animation\",\n SHADOW = \"shadow\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\n\nexport const objectAssetEntityShape : SchemaShape = {\n // ...TODO\n type: field.string().required()\n};\n\nexport const objectAssetEntitySchema = createSchema(\n objectAssetEntityShape,\n \"objectAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"objects\"\n }\n);\nexport type ObjectAssetEntity = Infer<typeof objectAssetEntitySchema> & AssetEntity;\n","import {\n assetEntitySchema,\n imageAssetEntitySchema,\n audioAssetEntitySchema,\n modelAssetEntitySchema,\n objectAssetEntitySchema,\n} from \"../Entities/index.js\";\nimport type { EntityTypes } from \"../types.js\";\n\nexport function validateAssetSchema(asset: { type: keyof EntityTypes }): void {\n const typeValidators = {\n AssetEntity: assetEntitySchema,\n ImageAssetEntity: imageAssetEntitySchema,\n AudioAssetEntity: audioAssetEntitySchema,\n ModelAssetEntity: modelAssetEntitySchema,\n ObjectAssetEntity: objectAssetEntitySchema,\n };\n\n const validator = typeValidators[asset.type as keyof typeof typeValidators];\n if (!validator) {\n throw new Error(\"Unsupported asset type\");\n }\n if (!validator.validate(asset)) {\n throw new Error(`Invalid ${asset.type as string} format`);\n }\n}\n","export function isValidAzureTableKey(value: string): boolean {\n if (typeof value !== \"string\") return false;\n if (value.length === 0) return false;\n if (value.length > 1024) return false;\n if (/[/\\\\#?]/.test(value)) return false;\n if (/^\\s|\\s$/.test(value)) return false;\n return true;\n}\n","import { getSchemaForType } from \"@plasius/schema\";\n\nexport function isValidEntityType(entityType: string): boolean {\n return !!getSchemaForType(entityType);\n}\n","/**\n * Validates that a feature flag value is an allowed type and format.\n * Allowed:\n * - boolean: true / false\n * - number: 0..1000 (example) — you can tune this\n * - string: safe identifier /^[a-zA-Z0-9._-]{1,64}$/\n *\n * Global Standard: OWASP Safe String + Feature Flag best practice (LaunchDarkly, Unleash)\n */\nexport function validateFeatureFlagValue(value: unknown): boolean {\n if (typeof value === \"boolean\") return true;\n\n if (typeof value === \"number\") {\n // Example clamp — you can tune these limits\n return value >= 0 && value <= 1000;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n\n // Allow booleans as strings\n if (trimmed === \"true\" || trimmed === \"false\") return true;\n\n // Allow numeric strings — e.g. \"42\", \"3.14\"\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) return true;\n\n // Allow safe identifiers — variants, modes, named states\n if (/^[a-zA-Z0-9._-]{1,64}$/.test(trimmed)) return true;\n\n // Reject anything else\n return false;\n }\n\n // Reject all other types\n return false;\n}\n","import { validateSafeText, validateDateTimeISO } from \"@plasius/schema\";\n\n/**\n * Validates that a settings value is an allowed type:\n * - string (safe)\n * - number\n * - boolean\n * - ISO date string\n * - array of allowed types\n * - object of allowed types (optional - shallow)\n */\nexport function validateSettingValue(value: unknown): boolean {\n if (typeof value === \"string\") {\n // Allow safe string (reuse your validateSafeText or ISO date validator)\n return validateSafeText(value) || validateDateTimeISO(value);\n }\n\n if (typeof value === \"number\") return true;\n if (typeof value === \"boolean\") return true;\n\n if (Array.isArray(value)) {\n // Recursively validate array items\n return value.every(validateSettingValue);\n }\n\n if (typeof value === \"object\" && value !== null) {\n // Optionally allow shallow object of valid items\n return Object.values(value).every(validateSettingValue);\n }\n\n // Everything else rejected\n return false;\n}\n","export enum EntityTypes {\n Asset = \"asset\",\n AudioAsset = \"audioAsset\",\n ImageAsset = \"imageAsset\",\n ModelAsset = \"modelAsset\",\n ObjectAsset = \"objectAsset\",\n BaseEntity = \"baseEntity\",\n SettingsEntity = \"settingsEntity\",\n PermissionsEntity = \"permissionsEntity\",\n RoleEntity = \"roleEntity\",\n UserEntity = \"userEntity\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape, FieldBuilder } from \"@plasius/schema\";\nimport { type BaseEntity } from \"../base.entity.js\";\nimport { validateSettingValue } from \"../validators/index.js\";\n\nconst settingsEntityShape: SchemaShape = {\n settings: field\n .object<Record<string, FieldBuilder<unknown>>>({} as SchemaShape)\n .version(\"1.0\")\n .description(\"List of key-value settings assigned for the user.\")\n .validator((value) => {\n if (typeof value !== \"object\" || value === null) return false;\n return Object.values(value).every(validateSettingValue);\n })\n .as<Record<string, unknown>>(),\n};\n\nexport const settingsEntitySchema = createSchema(\n settingsEntityShape,\n \"settingsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"settings\",\n }\n);\nexport type SettingsEntity = Infer<typeof settingsEntitySchema> & BaseEntity;\n","import {\n field,\n createSchema,\n validateDateTimeISO,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateUserId } from \"@plasius/schema\";\n\nexport enum Scope {\n READ = \"read\",\n WRITE = \"write\",\n DELETE = \"delete\",\n CREATE = \"create\",\n UPDATE = \"update\",\n EXECUTE = \"execute\",\n MANAGE = \"manage\",\n ADMIN = \"admin\",\n VIEW = \"view\",\n EDIT = \"edit\",\n SHARE = \"share\",\n DOWNLOAD = \"download\",\n UPLOAD = \"upload\",\n PUBLISH = \"publish\",\n SUBSCRIBE = \"subscribe\",\n UNPUBLISH = \"unpublish\",\n UNSUBSCRIBE = \"unsubscribe\",\n APPROVE = \"approve\",\n REJECT = \"reject\",\n ARCHIVE = \"archive\",\n RESTORE = \"restore\",\n DELETE_PERMANENTLY = \"delete_permanently\",\n LIST = \"list\",\n}\n\nconst permissionsEntityShape: SchemaShape = {\n scopes: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"An array of permission scopes defined by the Scope enum.\")\n .immutable()\n .enum([...Object.values(Scope)]),\n\n granted: field\n .boolean()\n .version(\"1.0\")\n .description(\"Has this permission been validated\")\n .optional(),\n\n grantedBy: field\n .string()\n .version(\"1.0\")\n .description(\"Which user/system granted the update to permissions\")\n .optional()\n .validator(validateUserId),\n\n grantedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was granted\")\n .optional()\n .validator(validateDateTimeISO),\n\n revoked: field\n .boolean()\n .version(\"1.0\")\n .description(\"Have the permissions been revoked\")\n .optional(),\n\n revokedBy: field\n .string()\n .version(\"1.0\")\n .description(\"Who revoked the permissions\")\n .optional()\n .validator(validateUserId),\n\n revokedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was revoked\")\n .optional()\n .validator(validateDateTimeISO),\n};\n\nexport const permissionsEntitySchema = createSchema(\n permissionsEntityShape,\n \"permissionsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"permissions\",\n }\n);\nexport type PermissionsEntity = Infer<typeof permissionsEntityShape> &\n BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { createSchema, field, SchemaShape, validateDateTimeISO } from \"@plasius/schema\";\nimport { type Infer, validateUserId } from \"@plasius/schema\";\n\nexport enum Role {\n ADMIN = \"admin\",\n USER = \"user\",\n GUEST = \"guest\",\n MODERATOR = \"moderator\",\n CONTRIBUTOR = \"contributor\",\n VIEWER = \"viewer\",\n EDITOR = \"editor\",\n OWNER = \"owner\",\n MEMBER = \"member\",\n}\n\nconst roleEntityShape: SchemaShape = {\n roles: field.array(field.string())\n .version(\"1.0\")\n .description(\"Assigned roles for the user\")\n .immutable()\n .enum([...Object.values(Role)]),\n\n active: field.boolean()\n .version(\"1.0\")\n .description(\"Have the roles been activated?\"),\n\n activatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles activated\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n activatedBy: field.string()\n .version(\"1.0\")\n .description(\"Who activated the roles?\")\n .optional()\n .validator(validateUserId),\n\n deactivatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles deactivated for this user\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n deactivatedBy: field.string()\n .version(\"1.0\")\n .description(\"Who deactivated the roles for this user?\")\n .optional()\n .validator(validateUserId),\n};\n\n// Add schema-level validator\nfunction validateRoleEntitySchema(\n entity: Infer<typeof roleEntityShape>\n): boolean {\n if (entity.active) {\n // If active, activatedBy must be set\n if (!entity.activatedBy || (entity.activatedBy as string).trim() === \"\") {\n return false;\n }\n } else {\n // If inactive, deactivatedBy must be set\n if (\n !entity.deactivatedBy ||\n (entity.deactivatedBy as string).trim() === \"\"\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport const roleEntitySchema = createSchema(\n roleEntityShape,\n \"roleEntity\",\n { version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"roles\",\n schemaValidator: validateRoleEntitySchema }\n);\n\nexport type RoleEntity = Infer<typeof roleEntitySchema> & BaseEntity;\n","import {\n createSchema,\n field,\n validateUserId,\n validateSafeText,\n validateUrl,\n validateDateTimeISO,\n type Infer,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport enum AvatarMimeType {\n PNG = \"image/png\",\n JPEG = \"image/jpeg\",\n JPG = \"image/jpg\",\n GIF = \"image/gif\",\n WEBP = \"image/webp\",\n SVG = \"image/svg+xml\",\n BMP = \"image/bmp\",\n AVIF = \"image/avif\",\n}\n\nexport const userAvatarShape = {\n partitionKey: field\n .string()\n .description(\"Avatar partition key, typically 'domain'\")\n .validator(validateSafeText),\n\n id: field.string().description(\"User ID\").validator(validateSafeText),\n\n filename: field\n .string()\n .description(\"Original filename\")\n .validator(validateSafeText),\n\n contentType: field\n .string()\n .description(\"MIME type of the avatar\")\n .validator(validateSafeText)\n .enum([...Object.values(AvatarMimeType)]),\n\n url: field\n .string()\n .description(\"Public or signed URL to the avatar image\")\n .validator(validateUrl),\n\n size: field.number().description(\"Size of the file in bytes\"),\n\n width: field.number().description(\"Width of the image in pixels\"),\n\n height: field.number().description(\"Height of the image in pixels\"),\n\n createdAt: field\n .string()\n .description(\"Upload timestamp\")\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n createdBy: field\n .string()\n .description(\"User who uploaded the avatar\")\n .validator(validateUserId),\n\n version: field.number().description(\"Version of this avatar record\"),\n};\n\nexport const userAvatarSchema = createSchema(userAvatarShape, \"userAvatar\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"avatars\",\n});\n\nexport type UserAvatarEntity = Infer<typeof userAvatarSchema> & BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { UserAvatarEntity, userAvatarShape } from \"./user.avatar.js\";\nimport {\n createSchema,\n field,\n validateEmail,\n type Infer,\n} from \"@plasius/schema\";\nimport { UserName, userNameShape } from \"./user.name.js\";\n\nexport enum UserEmailPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n CUSTOM = \"custom\",\n PROMOTIONAL = \"promotional\",\n TRANSACTIONAL = \"transactional\",\n UPDATES = \"updates\",\n NEWSLETTER = \"newsletter\",\n MARKETING = \"marketing\",\n SECURITY = \"security\",\n ACCOUNT = \"account\",\n PRIVACY = \"privacy\",\n}\n\nexport enum UserNotificationPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n}\n\nexport const userEntitySchema = createSchema(\n {\n email: field\n .string()\n .description(\"User's email address\")\n .version(\"1.0\")\n .immutable()\n .validator(validateEmail)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n name: field\n .object(userNameShape)\n .description(\"Structured user name including display preferences\")\n .version(\"1.0\")\n .as<UserName>(),\n\n emailPreferences: field\n .array(\n field\n .string()\n .enum([...Object.values(UserEmailPreferences)])\n .as<UserEmailPreferences>()\n )\n .description(\"List of email categories the user wants to receive\")\n .version(\"1.0\")\n .optional()\n .as<UserEmailPreferences[]>(),\n\n notificationPreferences: field\n .string()\n .description(\"General notification preference\")\n .version(\"1.0\")\n .optional()\n .enum([...Object.values(UserNotificationPreferences)]),\n\n avatar: field\n .object(userAvatarShape)\n .description(\"Users avatar\")\n .version(\"1.0\")\n .optional()\n .as<UserAvatarEntity | undefined>(),\n },\n \"userEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"users\",\n }\n);\nexport type UserEntity = Infer<typeof userEntitySchema> & BaseEntity;\n","import { createSchema, field, type Infer, validateName } from \"@plasius/schema\";\n\nexport enum PreferredDisplayOrder {\n FIRST_NAME = \"first_name\",\n LAST_NAME = \"last_name\",\n MIDDLE_NAME = \"middle_name\",\n DISPLAY_NAME = \"display_name\",\n}\n\nexport const userNameShape = {\n firstName: field\n .string()\n .description(\"User's first name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n middleName: field\n .string()\n .description(\"User's middle name\")\n .version(\"1.0\")\n .optional()\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n lastName: field\n .string()\n .description(\"User's last name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n displayName: field\n .string()\n .description(\"User's display name (may differ from legal name)\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n preferredDisplayOrder: field\n .string()\n .description(\"Preferred order for displaying the user's name\")\n .version(\"1.0\")\n .enum([...Object.values(PreferredDisplayOrder)]),\n};\n\nfunction validateUserNameSchema(\n userName: Infer<typeof userNameShape>\n): boolean {\n const hasDisplayName =\n !!userName.displayName &&\n (userName.displayName).trim().length > 0;\n const hasFirstName =\n !!userName.firstName && (userName.firstName).trim().length > 0;\n const hasLastName =\n !!userName.lastName && (userName.lastName).trim().length > 0;\n\n // Rule: must have at least one displayable name\n return hasDisplayName || hasFirstName || hasLastName;\n}\n\nexport const userNameSchema = createSchema(userNameShape, \"userName\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"\",\n schemaValidator: validateUserNameSchema,\n});\n\nexport type UserName = Infer<typeof userNameSchema>;\n","import { createSchema, field, validatePercentage, validateSafeText } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateFeatureFlagValue } from \"../validators/index.js\";\nimport { validateUserIdArray } from \"@plasius/schema\";\n\nexport const featureFlagEntityShape: SchemaShape = {\n defaultValue: field\n .string()\n .version(\"1.0\")\n .description(\"Default value of the feature flag (ON/OFF or variant)\")\n .validator(validateFeatureFlagValue),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"Description of the feature flag\")\n .validator(validateSafeText),\n\n rolloutPercentage: field\n .number()\n .version(\"1.0\")\n .description(\"Percentage rollout (0-100), optional\")\n .validator(validatePercentage)\n .optional(),\n\n targetedValue: field\n .string()\n .version(\"1.0\")\n .description(\"Value to serve to explicitly targeted users or groups.\")\n .validator(validateFeatureFlagValue),\n\n targetedUsers: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Specific user IDs targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .validator(validateUserIdArray)\n .optional(),\n\n targetedGroups: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Groups targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .optional(),\n};\n\nexport const featureFlagEntitySchema = createSchema(\n featureFlagEntityShape,\n \"featureFlagEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"featureFlag\",\n }\n);\n\nexport type FeatureFlagEntity = Infer<typeof featureFlagEntitySchema> &\n BaseEntity;\n","import { createSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AuthProvider {\n GOOGLE = \"google\",\n APPLE = \"apple\",\n MICROSOFT = \"microsoft\",\n NONE = \"none\",\n}\n\nexport const authenticatedUserShape: SchemaShape = {\n sub: field.string().description(\"Unique user identifier\").version(\"1.0\"),\n\n name: field.string().description(\"User's full name\").version(\"1.0\").PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n email: field\n .string()\n .optional()\n .description(\"User's email address\")\n .version(\"1.0\")\n .PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n groups: field\n .array(\n field.string().optional().description(\"User group\").version(\"1.0\").PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n })\n )\n .optional()\n .description(\"List of user groups\")\n .version(\"1.0\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n }),\n\n provider: field\n .string()\n .enum([...Object.values(AuthProvider)])\n .description(\"Authentication provider used by the user\"),\n};\n\nexport const authenticatedUserSchema = createSchema(\n authenticatedUserShape,\n \"AuthenticatedUser\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"authenticatedUsers\",\n }\n);\n\nexport type AuthenticatedUser = Infer<typeof authenticatedUserSchema>;\n","import {\n Infer,\n createSchema,\n field,\n validateRichText,\n validateSafeText,\n} from \"@plasius/schema\";\n\nexport const translatableSchema = createSchema(\n {\n index: field\n .string()\n .required()\n .immutable()\n .description(\"Unique string index for the translation\"),\n text: field.string().optional().validator(validateRichText),\n translated: field.string().required().validator(validateRichText),\n context: field.string().optional().validator(validateSafeText),\n },\n \"translatable\",\n {\n version: \"\",\n piiEnforcement: \"none\",\n table: \"translatable\",\n }\n);\n\nexport type Translatable = Infer<typeof translatableSchema>;\n","import { createSchema, field, Infer } from \"@plasius/schema\";\n\nexport const supportedLanguagesSchema = createSchema(\n {\n code: field\n .string()\n .description(\"Language code, e.g. 'en', 'fr-FR'\")\n .immutable(),\n label: field\n .string()\n .description(\"Human-readable name for the language\")\n .immutable(),\n direction: field\n .string()\n .enum([\"ltr\", \"rtl\"])\n .description(\"Text direction\")\n .immutable(),\n },\n \"supportedLanguages\"\n);\nexport type SupportedLanguage = Infer<typeof supportedLanguagesSchema>;\n"],"mappings":"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","names":["import_schema","import_schema","AudioChannel","import_schema","import_schema","import_schema","PhysicsShape","import_schema","import_schema","import_schema","ComponentTypes","ModelAssetFormat","import_schema","import_schema","import_schema","import_schema","EntityTypes","import_schema","import_schema","Scope","import_schema","Role","import_schema","AvatarMimeType","import_schema","import_schema","PreferredDisplayOrder","UserEmailPreferences","UserNotificationPreferences","import_schema","import_schema","import_schema","AuthProvider","import_schema","import_schema"]}
{"version":3,"sources":["../src/index.ts","../src/base.entity.ts","../src/Entities/asset.entity.ts","../src/Entities/audio.asset.entity.ts","../src/Entities/image.asset.entity.ts","../src/Entities/model.asset.entity.ts","../src/components/physics.ts","../src/components/shadow.ts","../src/components/animation.ts","../src/components/basecomponent.ts","../src/components/index.ts","../src/Entities/object.asset.entity.ts","../src/validators/asset.validator.ts","../src/validators/table.validator.ts","../src/validators/schema.validator.ts","../src/validators/featureflag.validator.ts","../src/validators/settings.validator.ts","../src/types.ts","../src/user/settings.entity.ts","../src/user/permissions.entity.ts","../src/user/role.entity.ts","../src/user/user.avatar.ts","../src/user/user.entity.ts","../src/user/user.name.ts","../src/user/feature.flag.entity.ts","../src/auth/authenticatedUser.ts","../src/translations/translatable.ts","../src/translations/supported.languages.ts"],"sourcesContent":["export {\n type BaseEntity,\n baseEntityShape,\n baseEntitySchema,\n} from \"./base.entity.js\";\n\nexport * from \"./user/index.js\";\nexport * from \"./Entities/index.js\";\nexport * from \"./components/index.js\";\nexport * from \"./types.js\";\nexport * from \"./validators/index.js\";\nexport * from \"./auth/index.js\";\nexport * from \"./translations/index.js\";\n\nimport { AssetEntity } from \"./Entities/asset.entity.js\";\nimport { AudioAssetEntity } from \"./Entities/audio.asset.entity.js\";\nimport { ImageAssetEntity } from \"./Entities/image.asset.entity.js\";\nimport { ModelAssetEntity } from \"./Entities/model.asset.entity.js\";\nimport { ObjectAssetEntity } from \"./Entities/object.asset.entity.js\";\n\nexport type AnyAssetEntity =\n | AssetEntity\n | AudioAssetEntity\n | ImageAssetEntity\n | ModelAssetEntity\n | ObjectAssetEntity;","import {\n createSchema,\n field,\n validateSafeText,\n validateSemVer,\n} from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { isValidAzureTableKey, isValidEntityType } from \"./validators/index.js\";\nimport { validateDateTimeISO, validateUserId } from \"@plasius/schema\";\nimport { EntityTypes } from \"./types.js\";\n\nexport const baseEntityShape: SchemaShape = {\n // From TableEntity\n partitionKey: field\n .string()\n .internal()\n .immutable()\n .required()\n .description(\"Primary partition identifier, usually user ID.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n id: field\n .string()\n .immutable()\n .required()\n .description(\"Row identifier within the partition.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n version: field\n .string()\n .description(\"SemVer version string for the record.\")\n .version(\"1.0\")\n .system()\n .validator(validateSemVer),\n\n entityType: field\n .string()\n .version(\"1.0\")\n .description(\"The derived type of this entity.\")\n .immutable()\n .system()\n .enum([...Object.values(EntityTypes)])\n .validator(isValidEntityType),\n\n createdAt: field\n .string()\n .immutable()\n .required()\n .description(\"Record creation timestamp.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n createdBy: field\n .string()\n .internal()\n .immutable()\n .required()\n .description(\"User ID who created the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n updatedAt: field\n .string()\n .optional()\n .description(\"Timestamp of the last update.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n updatedBy: field\n .string()\n .internal()\n .optional()\n .description(\"User ID of the last editor.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n isDeleted: field\n .boolean()\n .description(\"Indicates whether this record was soft deleted.\")\n .version(\"1.0\"),\n\n deletedAt: field\n .string()\n .optional()\n .description(\"Timestamp when the entity was deleted.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n deletedBy: field\n .string()\n .internal()\n .optional()\n .description(\"User ID of who deleted the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n deletedReason: field\n .string()\n .internal()\n .optional()\n .description(\"Reason the record was deleted.\")\n .version(\"1.0\")\n .validator(validateSafeText),\n};\n\n// Add schema-level validator\nfunction validateBaseEntitySchema(\n entity: Infer<typeof baseEntityShape>\n): boolean {\n const hasDateValue = (value: unknown) => {\n if (value instanceof Date) return !Number.isNaN(value.getTime());\n if (typeof value === \"string\") return value.trim() !== \"\";\n return false;\n };\n\n const hasTextValue = (value: unknown) =>\n typeof value === \"string\" && value.trim() !== \"\";\n\n if (entity.isDeleted) {\n if (!hasDateValue(entity.deletedAt))\n return false;\n if (!hasTextValue(entity.deletedBy)) return false;\n if (!hasTextValue(entity.deletedReason))\n return false;\n } else {\n if (hasDateValue(entity.deletedAt))\n return false;\n if (hasTextValue(entity.deletedBy)) return false;\n if (hasTextValue(entity.deletedReason))\n return false;\n }\n return true;\n}\n\nexport const baseEntitySchema = createSchema(baseEntityShape, \"baseEntity\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n schemaValidator: validateBaseEntitySchema,\n});\nexport type BaseEntity = Infer<typeof baseEntitySchema> & {\n id: string;\n partitionKey: string;\n};\n","import { field, createSchema } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport const assetEntityShape: SchemaShape = {\n cacheable: field.boolean()\n .version(\"1.0\")\n .description(\"Is this asset safe to store in local cache?\"),\n\n userUploaded: field.boolean()\n .version(\"1.0\")\n .description(\"User uploaded from their machine, verification of ownership required.\")\n .optional(),\n\n userCreated: field.boolean()\n .version(\"1.0\")\n .description(\"User created using local tools, verification of ownership not required.\")\n .optional(),\n\n validated: field.boolean()\n .version(\"1.0\")\n .description(\"has this content been validated as safe for use\")\n .optional(),\n\n validatedBy: field.string()\n .internal()\n .version(\"1.0\")\n .description(\"Who validated this content\")\n .optional(),\n\n validatedAt: field.string()\n .version(\"1.0\")\n .description(\"When was this content validated?\")\n .optional(),\n};\n\nexport const assetEntitySchema = createSchema(\n assetEntityShape,\n \"AssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type AssetEntity = Infer<typeof assetEntitySchema> & BaseEntity;\n","import { AssetEntity } from \"./asset.entity.js\";\nimport { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AudioChannel {\n LEFT = \"left\",\n RIGHT = \"right\",\n FRONT = \"front\",\n REAR = \"rear\",\n ALL = \"all\",\n DYNAMIC = \"dynamic\", // used for location based audio\n}\n\nconst audioAssetEntityShape: SchemaShape = {\n duration: field\n .number()\n .version(\"1.0\")\n .description(\"Audio clip duration\")\n .optional(),\n\n repeats: field\n .boolean()\n .version(\"1.0\")\n .description(\"Does this clip repeat?\")\n .optional(),\n\n channel: field\n .string()\n .version(\"1.0\")\n .description(\"Where to play the clip, positional or dynamic\")\n .optional()\n .enum([...Object.values(AudioChannel)]),\n};\n\nexport const audioAssetEntitySchema = createSchema(\n audioAssetEntityShape,\n \"AudioAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\",\n }\n);\nexport type AudioAssetEntity = Infer<typeof audioAssetEntitySchema> & AssetEntity;\n","import { createSchema, field, validateUrl } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\nconst imageAssetEntityShape: SchemaShape = {\n url: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\")\n .as<URL>()\n .validator(validateUrl),\n\n thumbnailUrl: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional()\n .as<URL>()\n .validator(validateUrl),\n\n width: field\n .number()\n .version(\"1.0\")\n .description(\"Width of the image in pixels\")\n .optional(),\n\n height: field\n .number()\n .version(\"1.0\")\n .description(\"Height of the image in pixels\")\n .optional(),\n};\n\nexport const imageAssetEntitySchema = createSchema(\n imageAssetEntityShape,\n \"ImageAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type ImageAssetEntity = Infer<typeof imageAssetEntitySchema> & AssetEntity;\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\nimport { ComponentTypes } from \"../components/index.js\";\n\nexport enum ModelAssetFormat {\n GLTF = \"gltf\",\n GLB = \"glb\",\n OBJ = \"obj\",\n FBX = \"fbx\",\n USDZ = \"usdz\",\n PLY = \"ply\",\n STL = \"stl\",\n}\n\nexport const modelAssetEntityShape: SchemaShape = {\n url: field.string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\"),\n\n thumbnailUrl: field.string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional(),\n\n format: field.string()\n .version(\"1.0\")\n .description(\"Format of the model asset\")\n .optional()\n .enum([...Object.values(ModelAssetFormat)]),\n\n size: field.number()\n .version(\"1.0\")\n .description(\"Size of the model asset in bytes\")\n .optional(),\n\n components: field.array(\n field.object({\n type: field.string()\n .description(\"Type of the component\")\n .version(\"1.0\")\n .enum([...Object.values(ComponentTypes)]),\n config: field.object({})\n .optional()\n .description(\"Configuration for the component\")\n .version(\"1.0\"),\n })\n )\n .version(\"1.0\")\n .description(\"List of components attached to this model asset\")\n .optional(),\n};\n\nexport const modelAssetEntitySchema = createSchema(\n modelAssetEntityShape,\n \"ModelAssetEntity\",\n { version:\"1.0\",\n piiEnforcement: \"strict\" ,\n table: \"assets\" }\n);\n\nexport type ModelAssetEntity = Infer<typeof modelAssetEntitySchema> & AssetEntity;","import { createComponentSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nexport enum PhysicsShape {\n BOX = \"box\",\n SPHERE = \"sphere\",\n MESH = \"mesh\",\n CAPSULE = \"capsule\",\n CYLINDER = \"cylinder\",\n CONVEX_HULL = \"convex_hull\",\n}\n\nexport const physicsComponentShape : SchemaShape = {\n enabled: field.boolean()\n .optional()\n .description(\"Is physics enabled for this entity?\")\n .version(\"1.0\"),\n\n shape: field.string()\n .enum([...Object.values(PhysicsShape)])\n .optional()\n .description(\"The shape of the physics collider.\")\n .version(\"1.0\"),\n\n mass: field.number()\n .optional()\n .description(\"The mass of the entity in kg.\")\n .version(\"1.0\"),\n};\n\nexport const physicsComponentSchema = createComponentSchema(\n physicsComponentShape,\n \"PhysicsComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type PhysicsComponent = Infer<typeof physicsComponentSchema> & BaseComponent;","import {\n field,\n createComponentSchema,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport {type BaseComponent } from \"./basecomponent.js\";\n\nexport const shadowComponentShape : SchemaShape = {\n casts: field.boolean()\n .optional()\n .description(\"Whether this entity casts shadows\"),\n\n receives: field.boolean()\n .optional()\n .description(\"Whether this entity receives shadows\"),\n};\n\nexport const shadowComponentSchema = createComponentSchema(\n shadowComponentShape,\n \"ShadowComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type ShadowComponent = Infer<typeof shadowComponentSchema> & BaseComponent;","import {\n createComponentSchema,\n field,\n Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nconst animationComponentShape : SchemaShape = {\n animated: field.boolean()\n .optional()\n .description(\"Is this entity animated?\")\n .version(\"1.0\"),\n\n availableAnimations: field.array(field.string())\n .optional()\n .description(\"List of available animations for this entity\")\n .version(\"1.0\"),\n};\n\nexport const animationComponentSchema = createComponentSchema(\n animationComponentShape,\n \"AnimationComponent\",\n \"1.0\",\n \"components\"\n);\nexport type AnimationComponent = Infer<typeof animationComponentSchema> & BaseComponent;\n","import { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport const baseComponentShape: SchemaShape = {\n name: field\n .string()\n .version(\"1.0\")\n .description(\"The name of the component\")\n .optional(),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"A brief description of the component\")\n .optional(),\n};\n\nexport const baseComponentSchema = createSchema(baseComponentShape, \"BaseComponent\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n});\n\nexport type BaseComponent = Infer<typeof baseComponentSchema> & BaseEntity;\n","export { type PhysicsComponent, physicsComponentSchema } from \"./physics.js\";\nexport { type ShadowComponent, shadowComponentSchema } from \"./shadow.js\";\nexport {\n type AnimationComponent,\n animationComponentSchema,\n} from \"./animation.js\";\n\nexport * from \"./basecomponent.js\"\n\nexport enum ComponentTypes {\n PHYSICS = \"physics\",\n ANIMATION = \"animation\",\n SHADOW = \"shadow\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\n\nexport const objectAssetEntityShape : SchemaShape = {\n // ...TODO\n type: field.string().required()\n};\n\nexport const objectAssetEntitySchema = createSchema(\n objectAssetEntityShape,\n \"objectAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"objects\"\n }\n);\nexport type ObjectAssetEntity = Infer<typeof objectAssetEntitySchema> & AssetEntity;\n","import {\n assetEntitySchema,\n imageAssetEntitySchema,\n audioAssetEntitySchema,\n modelAssetEntitySchema,\n objectAssetEntitySchema,\n} from \"../Entities/index.js\";\nimport type { EntityTypes } from \"../types.js\";\n\nexport function validateAssetSchema(asset: { type: keyof EntityTypes }): void {\n const typeValidators = {\n AssetEntity: assetEntitySchema,\n ImageAssetEntity: imageAssetEntitySchema,\n AudioAssetEntity: audioAssetEntitySchema,\n ModelAssetEntity: modelAssetEntitySchema,\n ObjectAssetEntity: objectAssetEntitySchema,\n };\n\n const validator = typeValidators[asset.type as keyof typeof typeValidators];\n if (!validator) {\n throw new Error(\"Unsupported asset type\");\n }\n if (!validator.validate(asset)) {\n throw new Error(`Invalid ${asset.type as string} format`);\n }\n}\n","export function isValidAzureTableKey(value: string): boolean {\n if (typeof value !== \"string\") return false;\n if (value.length === 0) return false;\n if (value.length > 1024) return false;\n if (/[/\\\\#?]/.test(value)) return false;\n if (/^\\s|\\s$/.test(value)) return false;\n return true;\n}\n","import { getSchemaForType } from \"@plasius/schema\";\n\nexport function isValidEntityType(entityType: string): boolean {\n return !!getSchemaForType(entityType);\n}\n","/**\n * Validates that a feature flag value is an allowed type and format.\n * Allowed:\n * - boolean: true / false\n * - number: 0..1000 (example) — you can tune this\n * - string: safe identifier /^[a-zA-Z0-9._-]{1,64}$/\n *\n * Global Standard: OWASP Safe String + Feature Flag best practice (LaunchDarkly, Unleash)\n */\nexport function validateFeatureFlagValue(value: unknown): boolean {\n if (typeof value === \"boolean\") return true;\n\n if (typeof value === \"number\") {\n // Example clamp — you can tune these limits\n return value >= 0 && value <= 1000;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n\n // Allow booleans as strings\n if (trimmed === \"true\" || trimmed === \"false\") return true;\n\n // Allow numeric strings — e.g. \"42\", \"3.14\"\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) return true;\n\n // Allow safe identifiers — variants, modes, named states\n if (/^[a-zA-Z0-9._-]{1,64}$/.test(trimmed)) return true;\n\n // Reject anything else\n return false;\n }\n\n // Reject all other types\n return false;\n}\n","import { validateSafeText, validateDateTimeISO } from \"@plasius/schema\";\n\n/**\n * Validates that a settings value is an allowed type:\n * - string (safe)\n * - number\n * - boolean\n * - ISO date string\n * - array of allowed types\n * - object of allowed types (optional - shallow)\n */\nexport function validateSettingValue(value: unknown): boolean {\n if (typeof value === \"string\") {\n // Allow safe string (reuse your validateSafeText or ISO date validator)\n return validateSafeText(value) || validateDateTimeISO(value);\n }\n\n if (typeof value === \"number\") return true;\n if (typeof value === \"boolean\") return true;\n\n if (Array.isArray(value)) {\n // Recursively validate array items\n return value.every(validateSettingValue);\n }\n\n if (typeof value === \"object\" && value !== null) {\n // Optionally allow shallow object of valid items\n return Object.values(value).every(validateSettingValue);\n }\n\n // Everything else rejected\n return false;\n}\n","export enum EntityTypes {\n Asset = \"asset\",\n AudioAsset = \"audioAsset\",\n ImageAsset = \"imageAsset\",\n ModelAsset = \"modelAsset\",\n ObjectAsset = \"objectAsset\",\n BaseEntity = \"baseEntity\",\n SettingsEntity = \"settingsEntity\",\n PermissionsEntity = \"permissionsEntity\",\n RoleEntity = \"roleEntity\",\n UserEntity = \"userEntity\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape, FieldBuilder } from \"@plasius/schema\";\nimport { type BaseEntity } from \"../base.entity.js\";\nimport { validateSettingValue } from \"../validators/index.js\";\n\nconst settingsEntityShape: SchemaShape = {\n settings: field\n .object<Record<string, FieldBuilder<unknown>>>({} as SchemaShape)\n .version(\"1.0\")\n .description(\"List of key-value settings assigned for the user.\")\n .validator((value) => {\n if (typeof value !== \"object\" || value === null) return false;\n return Object.values(value).every(validateSettingValue);\n })\n .as<Record<string, unknown>>(),\n};\n\nexport const settingsEntitySchema = createSchema(\n settingsEntityShape,\n \"settingsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"settings\",\n }\n);\nexport type SettingsEntity = Infer<typeof settingsEntitySchema> & BaseEntity;\n","import {\n field,\n createSchema,\n validateDateTimeISO,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateUserId } from \"@plasius/schema\";\n\nexport enum Scope {\n READ = \"read\",\n WRITE = \"write\",\n DELETE = \"delete\",\n CREATE = \"create\",\n UPDATE = \"update\",\n EXECUTE = \"execute\",\n MANAGE = \"manage\",\n ADMIN = \"admin\",\n VIEW = \"view\",\n EDIT = \"edit\",\n SHARE = \"share\",\n DOWNLOAD = \"download\",\n UPLOAD = \"upload\",\n PUBLISH = \"publish\",\n SUBSCRIBE = \"subscribe\",\n UNPUBLISH = \"unpublish\",\n UNSUBSCRIBE = \"unsubscribe\",\n APPROVE = \"approve\",\n REJECT = \"reject\",\n ARCHIVE = \"archive\",\n RESTORE = \"restore\",\n DELETE_PERMANENTLY = \"delete_permanently\",\n LIST = \"list\",\n}\n\nconst permissionsEntityShape: SchemaShape = {\n scopes: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"An array of permission scopes defined by the Scope enum.\")\n .immutable()\n .enum([...Object.values(Scope)]),\n\n granted: field\n .boolean()\n .version(\"1.0\")\n .description(\"Has this permission been validated\")\n .optional(),\n\n grantedBy: field\n .string()\n .internal()\n .version(\"1.0\")\n .description(\"Which user/system granted the update to permissions\")\n .optional()\n .validator(validateUserId),\n\n grantedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was granted\")\n .optional()\n .validator(validateDateTimeISO),\n\n revoked: field\n .boolean()\n .version(\"1.0\")\n .description(\"Have the permissions been revoked\")\n .optional(),\n\n revokedBy: field\n .string()\n .internal()\n .version(\"1.0\")\n .description(\"Who revoked the permissions\")\n .optional()\n .validator(validateUserId),\n\n revokedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was revoked\")\n .optional()\n .validator(validateDateTimeISO),\n};\n\nexport const permissionsEntitySchema = createSchema(\n permissionsEntityShape,\n \"permissionsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"permissions\",\n }\n);\nexport type PermissionsEntity = Infer<typeof permissionsEntityShape> &\n BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { createSchema, field, SchemaShape, validateDateTimeISO } from \"@plasius/schema\";\nimport { type Infer, validateUserId } from \"@plasius/schema\";\n\nexport enum Role {\n ADMIN = \"admin\",\n USER = \"user\",\n GUEST = \"guest\",\n MODERATOR = \"moderator\",\n CONTRIBUTOR = \"contributor\",\n VIEWER = \"viewer\",\n EDITOR = \"editor\",\n OWNER = \"owner\",\n MEMBER = \"member\",\n}\n\nconst roleEntityShape: SchemaShape = {\n roles: field.array(field.string())\n .version(\"1.0\")\n .description(\"Assigned roles for the user\")\n .immutable()\n .enum([...Object.values(Role)]),\n\n active: field.boolean()\n .version(\"1.0\")\n .description(\"Have the roles been activated?\"),\n\n activatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles activated\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n activatedBy: field.string()\n .internal()\n .version(\"1.0\")\n .description(\"Who activated the roles?\")\n .optional()\n .validator(validateUserId),\n\n deactivatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles deactivated for this user\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n deactivatedBy: field.string()\n .internal()\n .version(\"1.0\")\n .description(\"Who deactivated the roles for this user?\")\n .optional()\n .validator(validateUserId),\n};\n\n// Add schema-level validator\nfunction validateRoleEntitySchema(\n entity: Infer<typeof roleEntityShape>\n): boolean {\n if (entity.active) {\n // If active, activatedBy must be set\n if (!entity.activatedBy || (entity.activatedBy as string).trim() === \"\") {\n return false;\n }\n } else {\n // If inactive, deactivatedBy must be set\n if (\n !entity.deactivatedBy ||\n (entity.deactivatedBy as string).trim() === \"\"\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport const roleEntitySchema = createSchema(\n roleEntityShape,\n \"roleEntity\",\n { version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"roles\",\n schemaValidator: validateRoleEntitySchema }\n);\n\nexport type RoleEntity = Infer<typeof roleEntitySchema> & BaseEntity;\n","import {\n createSchema,\n field,\n validateUserId,\n validateSafeText,\n validateUrl,\n validateDateTimeISO,\n type Infer,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport enum AvatarMimeType {\n PNG = \"image/png\",\n JPEG = \"image/jpeg\",\n JPG = \"image/jpg\",\n GIF = \"image/gif\",\n WEBP = \"image/webp\",\n SVG = \"image/svg+xml\",\n BMP = \"image/bmp\",\n AVIF = \"image/avif\",\n}\n\nexport const userAvatarShape = {\n partitionKey: field\n .string()\n .internal()\n .description(\"Avatar partition key, typically 'domain'\")\n .validator(validateSafeText),\n\n id: field.string().description(\"User ID\").validator(validateSafeText),\n\n filename: field\n .string()\n .description(\"Original filename\")\n .validator(validateSafeText),\n\n contentType: field\n .string()\n .description(\"MIME type of the avatar\")\n .validator(validateSafeText)\n .enum([...Object.values(AvatarMimeType)]),\n\n url: field\n .string()\n .description(\"Public or signed URL to the avatar image\")\n .validator(validateUrl),\n\n size: field.number().description(\"Size of the file in bytes\"),\n\n width: field.number().description(\"Width of the image in pixels\"),\n\n height: field.number().description(\"Height of the image in pixels\"),\n\n createdAt: field\n .string()\n .description(\"Upload timestamp\")\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n createdBy: field\n .string()\n .internal()\n .description(\"User who uploaded the avatar\")\n .validator(validateUserId),\n\n version: field.number().description(\"Version of this avatar record\"),\n};\n\nexport const userAvatarSchema = createSchema(userAvatarShape, \"userAvatar\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"avatars\",\n});\n\nexport type UserAvatarEntity = Infer<typeof userAvatarSchema> & BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { UserAvatarEntity, userAvatarShape } from \"./user.avatar.js\";\nimport {\n createSchema,\n field,\n validateEmail,\n type Infer,\n} from \"@plasius/schema\";\nimport { UserName, userNameShape } from \"./user.name.js\";\n\nexport enum UserEmailPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n CUSTOM = \"custom\",\n PROMOTIONAL = \"promotional\",\n TRANSACTIONAL = \"transactional\",\n UPDATES = \"updates\",\n NEWSLETTER = \"newsletter\",\n MARKETING = \"marketing\",\n SECURITY = \"security\",\n ACCOUNT = \"account\",\n PRIVACY = \"privacy\",\n}\n\nexport enum UserNotificationPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n}\n\nexport const userEntitySchema = createSchema(\n {\n email: field\n .string()\n .description(\"User's email address\")\n .version(\"1.0\")\n .immutable()\n .validator(validateEmail)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n name: field\n .object(userNameShape)\n .description(\"Structured user name including display preferences\")\n .version(\"1.0\")\n .as<UserName>(),\n\n emailPreferences: field\n .array(\n field\n .string()\n .enum([...Object.values(UserEmailPreferences)])\n .as<UserEmailPreferences>()\n )\n .description(\"List of email categories the user wants to receive\")\n .version(\"1.0\")\n .optional()\n .as<UserEmailPreferences[]>(),\n\n notificationPreferences: field\n .string()\n .description(\"General notification preference\")\n .version(\"1.0\")\n .optional()\n .enum([...Object.values(UserNotificationPreferences)]),\n\n avatar: field\n .object(userAvatarShape)\n .description(\"Users avatar\")\n .version(\"1.0\")\n .optional()\n .as<UserAvatarEntity | undefined>(),\n },\n \"userEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"users\",\n }\n);\nexport type UserEntity = Infer<typeof userEntitySchema> & BaseEntity;\n","import { createSchema, field, type Infer, validateName } from \"@plasius/schema\";\n\nexport enum PreferredDisplayOrder {\n FIRST_NAME = \"first_name\",\n LAST_NAME = \"last_name\",\n MIDDLE_NAME = \"middle_name\",\n DISPLAY_NAME = \"display_name\",\n}\n\nexport const userNameShape = {\n firstName: field\n .string()\n .description(\"User's first name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n middleName: field\n .string()\n .description(\"User's middle name\")\n .version(\"1.0\")\n .optional()\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n lastName: field\n .string()\n .description(\"User's last name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n displayName: field\n .string()\n .description(\"User's display name (may differ from legal name)\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n preferredDisplayOrder: field\n .string()\n .description(\"Preferred order for displaying the user's name\")\n .version(\"1.0\")\n .enum([...Object.values(PreferredDisplayOrder)]),\n};\n\nfunction validateUserNameSchema(\n userName: Infer<typeof userNameShape>\n): boolean {\n const hasDisplayName =\n !!userName.displayName &&\n (userName.displayName).trim().length > 0;\n const hasFirstName =\n !!userName.firstName && (userName.firstName).trim().length > 0;\n const hasLastName =\n !!userName.lastName && (userName.lastName).trim().length > 0;\n\n // Rule: must have at least one displayable name\n return hasDisplayName || hasFirstName || hasLastName;\n}\n\nexport const userNameSchema = createSchema(userNameShape, \"userName\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"\",\n schemaValidator: validateUserNameSchema,\n});\n\nexport type UserName = Infer<typeof userNameSchema>;\n","import { createSchema, field, validatePercentage, validateSafeText } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateFeatureFlagValue } from \"../validators/index.js\";\nimport { validateUserIdArray } from \"@plasius/schema\";\n\nexport const featureFlagEntityShape: SchemaShape = {\n defaultValue: field\n .string()\n .version(\"1.0\")\n .description(\"Default value of the feature flag (ON/OFF or variant)\")\n .validator(validateFeatureFlagValue),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"Description of the feature flag\")\n .validator(validateSafeText),\n\n rolloutPercentage: field\n .number()\n .version(\"1.0\")\n .description(\"Percentage rollout (0-100), optional\")\n .validator(validatePercentage)\n .optional(),\n\n targetedValue: field\n .string()\n .version(\"1.0\")\n .description(\"Value to serve to explicitly targeted users or groups.\")\n .validator(validateFeatureFlagValue),\n\n targetedUsers: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Specific user IDs targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .validator(validateUserIdArray)\n .optional(),\n\n targetedGroups: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Groups targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .optional(),\n};\n\nexport const featureFlagEntitySchema = createSchema(\n featureFlagEntityShape,\n \"featureFlagEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"featureFlag\",\n }\n);\n\nexport type FeatureFlagEntity = Infer<typeof featureFlagEntitySchema> &\n BaseEntity;\n","import { createSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AuthProvider {\n GOOGLE = \"google\",\n APPLE = \"apple\",\n MICROSOFT = \"microsoft\",\n NONE = \"none\",\n}\n\nexport const authenticatedUserShape: SchemaShape = {\n sub: field.string().description(\"Unique user identifier\").version(\"1.0\"),\n\n name: field.string().description(\"User's full name\").version(\"1.0\").PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n email: field\n .string()\n .optional()\n .description(\"User's email address\")\n .version(\"1.0\")\n .PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n groups: field\n .array(\n field.string().optional().description(\"User group\").version(\"1.0\").PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n })\n )\n .optional()\n .description(\"List of user groups\")\n .version(\"1.0\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n }),\n\n provider: field\n .string()\n .enum([...Object.values(AuthProvider)])\n .description(\"Authentication provider used by the user\"),\n};\n\nexport const authenticatedUserSchema = createSchema(\n authenticatedUserShape,\n \"AuthenticatedUser\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"authenticatedUsers\",\n }\n);\n\nexport type AuthenticatedUser = Infer<typeof authenticatedUserSchema>;\n","import {\n Infer,\n createSchema,\n field,\n validateRichText,\n validateSafeText,\n} from \"@plasius/schema\";\n\nexport const translatableSchema = createSchema(\n {\n index: field\n .string()\n .required()\n .immutable()\n .description(\"Unique string index for the translation\"),\n text: field.string().optional().validator(validateRichText),\n translated: field.string().required().validator(validateRichText),\n context: field.string().optional().validator(validateSafeText),\n },\n \"translatable\",\n {\n version: \"\",\n piiEnforcement: \"none\",\n table: \"translatable\",\n }\n);\n\nexport type Translatable = Infer<typeof translatableSchema>;\n","import { createSchema, field, Infer } from \"@plasius/schema\";\n\nexport const supportedLanguagesSchema = createSchema(\n {\n code: field\n .string()\n .description(\"Language code, e.g. 'en', 'fr-FR'\")\n .immutable(),\n label: field\n .string()\n .description(\"Human-readable name for the language\")\n .immutable(),\n direction: field\n .string()\n .enum([\"ltr\", \"rtl\"])\n .description(\"Text direction\")\n .immutable(),\n },\n \"supportedLanguages\"\n);\nexport type SupportedLanguage = Infer<typeof supportedLanguagesSchema>;\n"],"mappings":"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","names":["import_schema","import_schema","AudioChannel","import_schema","import_schema","import_schema","PhysicsShape","import_schema","import_schema","import_schema","ComponentTypes","ModelAssetFormat","import_schema","import_schema","import_schema","import_schema","EntityTypes","import_schema","import_schema","Scope","import_schema","Role","import_schema","AvatarMimeType","import_schema","import_schema","PreferredDisplayOrder","UserEmailPreferences","UserNotificationPreferences","import_schema","import_schema","import_schema","AuthProvider","import_schema","import_schema"]}

@@ -126,2 +126,3 @@ import * as _plasius_schema from '@plasius/schema';

validateComposition: unknown;
serialize: unknown;
tableName?: unknown;

@@ -128,0 +129,0 @@ prepareForRead: unknown;

@@ -126,2 +126,3 @@ import * as _plasius_schema from '@plasius/schema';

validateComposition: unknown;
serialize: unknown;
tableName?: unknown;

@@ -128,0 +129,0 @@ prepareForRead: unknown;

@@ -16,3 +16,3 @@ // src/base.entity.ts

validated: field.boolean().version("1.0").description("has this content been validated as safe for use").optional(),
validatedBy: field.string().version("1.0").description("Who validated this content").optional(),
validatedBy: field.string().internal().version("1.0").description("Who validated this content").optional(),
validatedAt: field.string().version("1.0").description("When was this content validated?").optional()

@@ -288,3 +288,3 @@ };

// From TableEntity
partitionKey: field10.string().immutable().required().description("Primary partition identifier, usually user ID.").version("1.0").validator(isValidAzureTableKey),
partitionKey: field10.string().internal().immutable().required().description("Primary partition identifier, usually user ID.").version("1.0").validator(isValidAzureTableKey),
id: field10.string().immutable().required().description("Row identifier within the partition.").version("1.0").validator(isValidAzureTableKey),

@@ -294,9 +294,9 @@ version: field10.string().description("SemVer version string for the record.").version("1.0").system().validator(validateSemVer),

createdAt: field10.string().immutable().required().description("Record creation timestamp.").version("1.0").as().validator(validateDateTimeISO2),
createdBy: field10.string().immutable().required().description("User ID who created the record.").version("1.0").validator(validateUserId),
createdBy: field10.string().internal().immutable().required().description("User ID who created the record.").version("1.0").validator(validateUserId),
updatedAt: field10.string().optional().description("Timestamp of the last update.").version("1.0").as().validator(validateDateTimeISO2),
updatedBy: field10.string().optional().description("User ID of the last editor.").version("1.0").validator(validateUserId),
updatedBy: field10.string().internal().optional().description("User ID of the last editor.").version("1.0").validator(validateUserId),
isDeleted: field10.boolean().description("Indicates whether this record was soft deleted.").version("1.0"),
deletedAt: field10.string().optional().description("Timestamp when the entity was deleted.").version("1.0").as().validator(validateDateTimeISO2),
deletedBy: field10.string().optional().description("User ID of who deleted the record.").version("1.0").validator(validateUserId),
deletedReason: field10.string().optional().description("Reason the record was deleted.").version("1.0").validator(validateSafeText2)
deletedBy: field10.string().internal().optional().description("User ID of who deleted the record.").version("1.0").validator(validateUserId),
deletedReason: field10.string().internal().optional().description("Reason the record was deleted.").version("1.0").validator(validateSafeText2)
};

@@ -385,6 +385,6 @@ function validateBaseEntitySchema(entity) {

granted: field12.boolean().version("1.0").description("Has this permission been validated").optional(),
grantedBy: field12.string().version("1.0").description("Which user/system granted the update to permissions").optional().validator(validateUserId2),
grantedBy: field12.string().internal().version("1.0").description("Which user/system granted the update to permissions").optional().validator(validateUserId2),
grantedAt: field12.string().version("1.0").description("Date/Time permission was granted").optional().validator(validateDateTimeISO3),
revoked: field12.boolean().version("1.0").description("Have the permissions been revoked").optional(),
revokedBy: field12.string().version("1.0").description("Who revoked the permissions").optional().validator(validateUserId2),
revokedBy: field12.string().internal().version("1.0").description("Who revoked the permissions").optional().validator(validateUserId2),
revokedAt: field12.string().version("1.0").description("Date/Time permission was revoked").optional().validator(validateDateTimeISO3)

@@ -421,5 +421,5 @@ };

activatedAt: field13.string().version("1.0").description("When were the roles activated").optional().validator(validateDateTimeISO4).as(),
activatedBy: field13.string().version("1.0").description("Who activated the roles?").optional().validator(validateUserId3),
activatedBy: field13.string().internal().version("1.0").description("Who activated the roles?").optional().validator(validateUserId3),
deactivatedAt: field13.string().version("1.0").description("When were the roles deactivated for this user").optional().validator(validateDateTimeISO4).as(),
deactivatedBy: field13.string().version("1.0").description("Who deactivated the roles for this user?").optional().validator(validateUserId3)
deactivatedBy: field13.string().internal().version("1.0").description("Who deactivated the roles for this user?").optional().validator(validateUserId3)
};

@@ -470,3 +470,3 @@ function validateRoleEntitySchema(entity) {

var userAvatarShape = {
partitionKey: field14.string().description("Avatar partition key, typically 'domain'").validator(validateSafeText3),
partitionKey: field14.string().internal().description("Avatar partition key, typically 'domain'").validator(validateSafeText3),
id: field14.string().description("User ID").validator(validateSafeText3),

@@ -480,3 +480,3 @@ filename: field14.string().description("Original filename").validator(validateSafeText3),

createdAt: field14.string().description("Upload timestamp").validator(validateDateTimeISO5).as(),
createdBy: field14.string().description("User who uploaded the avatar").validator(validateUserId4),
createdBy: field14.string().internal().description("User who uploaded the avatar").validator(validateUserId4),
version: field14.number().description("Version of this avatar record")

@@ -483,0 +483,0 @@ };

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/base.entity.ts","../src/Entities/asset.entity.ts","../src/Entities/audio.asset.entity.ts","../src/Entities/image.asset.entity.ts","../src/Entities/model.asset.entity.ts","../src/components/physics.ts","../src/components/shadow.ts","../src/components/animation.ts","../src/components/basecomponent.ts","../src/components/index.ts","../src/Entities/object.asset.entity.ts","../src/validators/asset.validator.ts","../src/validators/table.validator.ts","../src/validators/schema.validator.ts","../src/validators/featureflag.validator.ts","../src/validators/settings.validator.ts","../src/types.ts","../src/user/settings.entity.ts","../src/user/permissions.entity.ts","../src/user/role.entity.ts","../src/user/user.avatar.ts","../src/user/user.entity.ts","../src/user/user.name.ts","../src/user/feature.flag.entity.ts","../src/auth/authenticatedUser.ts","../src/translations/translatable.ts","../src/translations/supported.languages.ts"],"sourcesContent":["import {\n createSchema,\n field,\n validateSafeText,\n validateSemVer,\n} from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { isValidAzureTableKey, isValidEntityType } from \"./validators/index.js\";\nimport { validateDateTimeISO, validateUserId } from \"@plasius/schema\";\nimport { EntityTypes } from \"./types.js\";\n\nexport const baseEntityShape: SchemaShape = {\n // From TableEntity\n partitionKey: field\n .string()\n .immutable()\n .required()\n .description(\"Primary partition identifier, usually user ID.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n id: field\n .string()\n .immutable()\n .required()\n .description(\"Row identifier within the partition.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n version: field\n .string()\n .description(\"SemVer version string for the record.\")\n .version(\"1.0\")\n .system()\n .validator(validateSemVer),\n\n entityType: field\n .string()\n .version(\"1.0\")\n .description(\"The derived type of this entity.\")\n .immutable()\n .system()\n .enum([...Object.values(EntityTypes)])\n .validator(isValidEntityType),\n\n createdAt: field\n .string()\n .immutable()\n .required()\n .description(\"Record creation timestamp.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n createdBy: field\n .string()\n .immutable()\n .required()\n .description(\"User ID who created the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n updatedAt: field\n .string()\n .optional()\n .description(\"Timestamp of the last update.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n updatedBy: field\n .string()\n .optional()\n .description(\"User ID of the last editor.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n isDeleted: field\n .boolean()\n .description(\"Indicates whether this record was soft deleted.\")\n .version(\"1.0\"),\n\n deletedAt: field\n .string()\n .optional()\n .description(\"Timestamp when the entity was deleted.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n deletedBy: field\n .string()\n .optional()\n .description(\"User ID of who deleted the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n deletedReason: field\n .string()\n .optional()\n .description(\"Reason the record was deleted.\")\n .version(\"1.0\")\n .validator(validateSafeText),\n};\n\n// Add schema-level validator\nfunction validateBaseEntitySchema(\n entity: Infer<typeof baseEntityShape>\n): boolean {\n const hasDateValue = (value: unknown) => {\n if (value instanceof Date) return !Number.isNaN(value.getTime());\n if (typeof value === \"string\") return value.trim() !== \"\";\n return false;\n };\n\n const hasTextValue = (value: unknown) =>\n typeof value === \"string\" && value.trim() !== \"\";\n\n if (entity.isDeleted) {\n if (!hasDateValue(entity.deletedAt))\n return false;\n if (!hasTextValue(entity.deletedBy)) return false;\n if (!hasTextValue(entity.deletedReason))\n return false;\n } else {\n if (hasDateValue(entity.deletedAt))\n return false;\n if (hasTextValue(entity.deletedBy)) return false;\n if (hasTextValue(entity.deletedReason))\n return false;\n }\n return true;\n}\n\nexport const baseEntitySchema = createSchema(baseEntityShape, \"baseEntity\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n schemaValidator: validateBaseEntitySchema,\n});\nexport type BaseEntity = Infer<typeof baseEntitySchema> & {\n id: string;\n partitionKey: string;\n};\n","import { field, createSchema } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport const assetEntityShape: SchemaShape = {\n cacheable: field.boolean()\n .version(\"1.0\")\n .description(\"Is this asset safe to store in local cache?\"),\n\n userUploaded: field.boolean()\n .version(\"1.0\")\n .description(\"User uploaded from their machine, verification of ownership required.\")\n .optional(),\n\n userCreated: field.boolean()\n .version(\"1.0\")\n .description(\"User created using local tools, verification of ownership not required.\")\n .optional(),\n\n validated: field.boolean()\n .version(\"1.0\")\n .description(\"has this content been validated as safe for use\")\n .optional(),\n\n validatedBy: field.string()\n .version(\"1.0\")\n .description(\"Who validated this content\")\n .optional(),\n\n validatedAt: field.string()\n .version(\"1.0\")\n .description(\"When was this content validated?\")\n .optional(),\n};\n\nexport const assetEntitySchema = createSchema(\n assetEntityShape,\n \"AssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type AssetEntity = Infer<typeof assetEntitySchema> & BaseEntity;\n","import { AssetEntity } from \"./asset.entity.js\";\nimport { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AudioChannel {\n LEFT = \"left\",\n RIGHT = \"right\",\n FRONT = \"front\",\n REAR = \"rear\",\n ALL = \"all\",\n DYNAMIC = \"dynamic\", // used for location based audio\n}\n\nconst audioAssetEntityShape: SchemaShape = {\n duration: field\n .number()\n .version(\"1.0\")\n .description(\"Audio clip duration\")\n .optional(),\n\n repeats: field\n .boolean()\n .version(\"1.0\")\n .description(\"Does this clip repeat?\")\n .optional(),\n\n channel: field\n .string()\n .version(\"1.0\")\n .description(\"Where to play the clip, positional or dynamic\")\n .optional()\n .enum([...Object.values(AudioChannel)]),\n};\n\nexport const audioAssetEntitySchema = createSchema(\n audioAssetEntityShape,\n \"AudioAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\",\n }\n);\nexport type AudioAssetEntity = Infer<typeof audioAssetEntitySchema> & AssetEntity;\n","import { createSchema, field, validateUrl } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\nconst imageAssetEntityShape: SchemaShape = {\n url: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\")\n .as<URL>()\n .validator(validateUrl),\n\n thumbnailUrl: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional()\n .as<URL>()\n .validator(validateUrl),\n\n width: field\n .number()\n .version(\"1.0\")\n .description(\"Width of the image in pixels\")\n .optional(),\n\n height: field\n .number()\n .version(\"1.0\")\n .description(\"Height of the image in pixels\")\n .optional(),\n};\n\nexport const imageAssetEntitySchema = createSchema(\n imageAssetEntityShape,\n \"ImageAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type ImageAssetEntity = Infer<typeof imageAssetEntitySchema> & AssetEntity;\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\nimport { ComponentTypes } from \"../components/index.js\";\n\nexport enum ModelAssetFormat {\n GLTF = \"gltf\",\n GLB = \"glb\",\n OBJ = \"obj\",\n FBX = \"fbx\",\n USDZ = \"usdz\",\n PLY = \"ply\",\n STL = \"stl\",\n}\n\nexport const modelAssetEntityShape: SchemaShape = {\n url: field.string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\"),\n\n thumbnailUrl: field.string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional(),\n\n format: field.string()\n .version(\"1.0\")\n .description(\"Format of the model asset\")\n .optional()\n .enum([...Object.values(ModelAssetFormat)]),\n\n size: field.number()\n .version(\"1.0\")\n .description(\"Size of the model asset in bytes\")\n .optional(),\n\n components: field.array(\n field.object({\n type: field.string()\n .description(\"Type of the component\")\n .version(\"1.0\")\n .enum([...Object.values(ComponentTypes)]),\n config: field.object({})\n .optional()\n .description(\"Configuration for the component\")\n .version(\"1.0\"),\n })\n )\n .version(\"1.0\")\n .description(\"List of components attached to this model asset\")\n .optional(),\n};\n\nexport const modelAssetEntitySchema = createSchema(\n modelAssetEntityShape,\n \"ModelAssetEntity\",\n { version:\"1.0\",\n piiEnforcement: \"strict\" ,\n table: \"assets\" }\n);\n\nexport type ModelAssetEntity = Infer<typeof modelAssetEntitySchema> & AssetEntity;","import { createComponentSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nexport enum PhysicsShape {\n BOX = \"box\",\n SPHERE = \"sphere\",\n MESH = \"mesh\",\n CAPSULE = \"capsule\",\n CYLINDER = \"cylinder\",\n CONVEX_HULL = \"convex_hull\",\n}\n\nexport const physicsComponentShape : SchemaShape = {\n enabled: field.boolean()\n .optional()\n .description(\"Is physics enabled for this entity?\")\n .version(\"1.0\"),\n\n shape: field.string()\n .enum([...Object.values(PhysicsShape)])\n .optional()\n .description(\"The shape of the physics collider.\")\n .version(\"1.0\"),\n\n mass: field.number()\n .optional()\n .description(\"The mass of the entity in kg.\")\n .version(\"1.0\"),\n};\n\nexport const physicsComponentSchema = createComponentSchema(\n physicsComponentShape,\n \"PhysicsComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type PhysicsComponent = Infer<typeof physicsComponentSchema> & BaseComponent;","import {\n field,\n createComponentSchema,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport {type BaseComponent } from \"./basecomponent.js\";\n\nexport const shadowComponentShape : SchemaShape = {\n casts: field.boolean()\n .optional()\n .description(\"Whether this entity casts shadows\"),\n\n receives: field.boolean()\n .optional()\n .description(\"Whether this entity receives shadows\"),\n};\n\nexport const shadowComponentSchema = createComponentSchema(\n shadowComponentShape,\n \"ShadowComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type ShadowComponent = Infer<typeof shadowComponentSchema> & BaseComponent;","import {\n createComponentSchema,\n field,\n Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nconst animationComponentShape : SchemaShape = {\n animated: field.boolean()\n .optional()\n .description(\"Is this entity animated?\")\n .version(\"1.0\"),\n\n availableAnimations: field.array(field.string())\n .optional()\n .description(\"List of available animations for this entity\")\n .version(\"1.0\"),\n};\n\nexport const animationComponentSchema = createComponentSchema(\n animationComponentShape,\n \"AnimationComponent\",\n \"1.0\",\n \"components\"\n);\nexport type AnimationComponent = Infer<typeof animationComponentSchema> & BaseComponent;\n","import { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport const baseComponentShape: SchemaShape = {\n name: field\n .string()\n .version(\"1.0\")\n .description(\"The name of the component\")\n .optional(),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"A brief description of the component\")\n .optional(),\n};\n\nexport const baseComponentSchema = createSchema(baseComponentShape, \"BaseComponent\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n});\n\nexport type BaseComponent = Infer<typeof baseComponentSchema> & BaseEntity;\n","export { type PhysicsComponent, physicsComponentSchema } from \"./physics.js\";\nexport { type ShadowComponent, shadowComponentSchema } from \"./shadow.js\";\nexport {\n type AnimationComponent,\n animationComponentSchema,\n} from \"./animation.js\";\n\nexport * from \"./basecomponent.js\"\n\nexport enum ComponentTypes {\n PHYSICS = \"physics\",\n ANIMATION = \"animation\",\n SHADOW = \"shadow\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\n\nexport const objectAssetEntityShape : SchemaShape = {\n // ...TODO\n type: field.string().required()\n};\n\nexport const objectAssetEntitySchema = createSchema(\n objectAssetEntityShape,\n \"objectAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"objects\"\n }\n);\nexport type ObjectAssetEntity = Infer<typeof objectAssetEntitySchema> & AssetEntity;\n","import {\n assetEntitySchema,\n imageAssetEntitySchema,\n audioAssetEntitySchema,\n modelAssetEntitySchema,\n objectAssetEntitySchema,\n} from \"../Entities/index.js\";\nimport type { EntityTypes } from \"../types.js\";\n\nexport function validateAssetSchema(asset: { type: keyof EntityTypes }): void {\n const typeValidators = {\n AssetEntity: assetEntitySchema,\n ImageAssetEntity: imageAssetEntitySchema,\n AudioAssetEntity: audioAssetEntitySchema,\n ModelAssetEntity: modelAssetEntitySchema,\n ObjectAssetEntity: objectAssetEntitySchema,\n };\n\n const validator = typeValidators[asset.type as keyof typeof typeValidators];\n if (!validator) {\n throw new Error(\"Unsupported asset type\");\n }\n if (!validator.validate(asset)) {\n throw new Error(`Invalid ${asset.type as string} format`);\n }\n}\n","export function isValidAzureTableKey(value: string): boolean {\n if (typeof value !== \"string\") return false;\n if (value.length === 0) return false;\n if (value.length > 1024) return false;\n if (/[/\\\\#?]/.test(value)) return false;\n if (/^\\s|\\s$/.test(value)) return false;\n return true;\n}\n","import { getSchemaForType } from \"@plasius/schema\";\n\nexport function isValidEntityType(entityType: string): boolean {\n return !!getSchemaForType(entityType);\n}\n","/**\n * Validates that a feature flag value is an allowed type and format.\n * Allowed:\n * - boolean: true / false\n * - number: 0..1000 (example) — you can tune this\n * - string: safe identifier /^[a-zA-Z0-9._-]{1,64}$/\n *\n * Global Standard: OWASP Safe String + Feature Flag best practice (LaunchDarkly, Unleash)\n */\nexport function validateFeatureFlagValue(value: unknown): boolean {\n if (typeof value === \"boolean\") return true;\n\n if (typeof value === \"number\") {\n // Example clamp — you can tune these limits\n return value >= 0 && value <= 1000;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n\n // Allow booleans as strings\n if (trimmed === \"true\" || trimmed === \"false\") return true;\n\n // Allow numeric strings — e.g. \"42\", \"3.14\"\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) return true;\n\n // Allow safe identifiers — variants, modes, named states\n if (/^[a-zA-Z0-9._-]{1,64}$/.test(trimmed)) return true;\n\n // Reject anything else\n return false;\n }\n\n // Reject all other types\n return false;\n}\n","import { validateSafeText, validateDateTimeISO } from \"@plasius/schema\";\n\n/**\n * Validates that a settings value is an allowed type:\n * - string (safe)\n * - number\n * - boolean\n * - ISO date string\n * - array of allowed types\n * - object of allowed types (optional - shallow)\n */\nexport function validateSettingValue(value: unknown): boolean {\n if (typeof value === \"string\") {\n // Allow safe string (reuse your validateSafeText or ISO date validator)\n return validateSafeText(value) || validateDateTimeISO(value);\n }\n\n if (typeof value === \"number\") return true;\n if (typeof value === \"boolean\") return true;\n\n if (Array.isArray(value)) {\n // Recursively validate array items\n return value.every(validateSettingValue);\n }\n\n if (typeof value === \"object\" && value !== null) {\n // Optionally allow shallow object of valid items\n return Object.values(value).every(validateSettingValue);\n }\n\n // Everything else rejected\n return false;\n}\n","export enum EntityTypes {\n Asset = \"asset\",\n AudioAsset = \"audioAsset\",\n ImageAsset = \"imageAsset\",\n ModelAsset = \"modelAsset\",\n ObjectAsset = \"objectAsset\",\n BaseEntity = \"baseEntity\",\n SettingsEntity = \"settingsEntity\",\n PermissionsEntity = \"permissionsEntity\",\n RoleEntity = \"roleEntity\",\n UserEntity = \"userEntity\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape, FieldBuilder } from \"@plasius/schema\";\nimport { type BaseEntity } from \"../base.entity.js\";\nimport { validateSettingValue } from \"../validators/index.js\";\n\nconst settingsEntityShape: SchemaShape = {\n settings: field\n .object<Record<string, FieldBuilder<unknown>>>({} as SchemaShape)\n .version(\"1.0\")\n .description(\"List of key-value settings assigned for the user.\")\n .validator((value) => {\n if (typeof value !== \"object\" || value === null) return false;\n return Object.values(value).every(validateSettingValue);\n })\n .as<Record<string, unknown>>(),\n};\n\nexport const settingsEntitySchema = createSchema(\n settingsEntityShape,\n \"settingsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"settings\",\n }\n);\nexport type SettingsEntity = Infer<typeof settingsEntitySchema> & BaseEntity;\n","import {\n field,\n createSchema,\n validateDateTimeISO,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateUserId } from \"@plasius/schema\";\n\nexport enum Scope {\n READ = \"read\",\n WRITE = \"write\",\n DELETE = \"delete\",\n CREATE = \"create\",\n UPDATE = \"update\",\n EXECUTE = \"execute\",\n MANAGE = \"manage\",\n ADMIN = \"admin\",\n VIEW = \"view\",\n EDIT = \"edit\",\n SHARE = \"share\",\n DOWNLOAD = \"download\",\n UPLOAD = \"upload\",\n PUBLISH = \"publish\",\n SUBSCRIBE = \"subscribe\",\n UNPUBLISH = \"unpublish\",\n UNSUBSCRIBE = \"unsubscribe\",\n APPROVE = \"approve\",\n REJECT = \"reject\",\n ARCHIVE = \"archive\",\n RESTORE = \"restore\",\n DELETE_PERMANENTLY = \"delete_permanently\",\n LIST = \"list\",\n}\n\nconst permissionsEntityShape: SchemaShape = {\n scopes: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"An array of permission scopes defined by the Scope enum.\")\n .immutable()\n .enum([...Object.values(Scope)]),\n\n granted: field\n .boolean()\n .version(\"1.0\")\n .description(\"Has this permission been validated\")\n .optional(),\n\n grantedBy: field\n .string()\n .version(\"1.0\")\n .description(\"Which user/system granted the update to permissions\")\n .optional()\n .validator(validateUserId),\n\n grantedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was granted\")\n .optional()\n .validator(validateDateTimeISO),\n\n revoked: field\n .boolean()\n .version(\"1.0\")\n .description(\"Have the permissions been revoked\")\n .optional(),\n\n revokedBy: field\n .string()\n .version(\"1.0\")\n .description(\"Who revoked the permissions\")\n .optional()\n .validator(validateUserId),\n\n revokedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was revoked\")\n .optional()\n .validator(validateDateTimeISO),\n};\n\nexport const permissionsEntitySchema = createSchema(\n permissionsEntityShape,\n \"permissionsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"permissions\",\n }\n);\nexport type PermissionsEntity = Infer<typeof permissionsEntityShape> &\n BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { createSchema, field, SchemaShape, validateDateTimeISO } from \"@plasius/schema\";\nimport { type Infer, validateUserId } from \"@plasius/schema\";\n\nexport enum Role {\n ADMIN = \"admin\",\n USER = \"user\",\n GUEST = \"guest\",\n MODERATOR = \"moderator\",\n CONTRIBUTOR = \"contributor\",\n VIEWER = \"viewer\",\n EDITOR = \"editor\",\n OWNER = \"owner\",\n MEMBER = \"member\",\n}\n\nconst roleEntityShape: SchemaShape = {\n roles: field.array(field.string())\n .version(\"1.0\")\n .description(\"Assigned roles for the user\")\n .immutable()\n .enum([...Object.values(Role)]),\n\n active: field.boolean()\n .version(\"1.0\")\n .description(\"Have the roles been activated?\"),\n\n activatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles activated\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n activatedBy: field.string()\n .version(\"1.0\")\n .description(\"Who activated the roles?\")\n .optional()\n .validator(validateUserId),\n\n deactivatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles deactivated for this user\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n deactivatedBy: field.string()\n .version(\"1.0\")\n .description(\"Who deactivated the roles for this user?\")\n .optional()\n .validator(validateUserId),\n};\n\n// Add schema-level validator\nfunction validateRoleEntitySchema(\n entity: Infer<typeof roleEntityShape>\n): boolean {\n if (entity.active) {\n // If active, activatedBy must be set\n if (!entity.activatedBy || (entity.activatedBy as string).trim() === \"\") {\n return false;\n }\n } else {\n // If inactive, deactivatedBy must be set\n if (\n !entity.deactivatedBy ||\n (entity.deactivatedBy as string).trim() === \"\"\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport const roleEntitySchema = createSchema(\n roleEntityShape,\n \"roleEntity\",\n { version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"roles\",\n schemaValidator: validateRoleEntitySchema }\n);\n\nexport type RoleEntity = Infer<typeof roleEntitySchema> & BaseEntity;\n","import {\n createSchema,\n field,\n validateUserId,\n validateSafeText,\n validateUrl,\n validateDateTimeISO,\n type Infer,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport enum AvatarMimeType {\n PNG = \"image/png\",\n JPEG = \"image/jpeg\",\n JPG = \"image/jpg\",\n GIF = \"image/gif\",\n WEBP = \"image/webp\",\n SVG = \"image/svg+xml\",\n BMP = \"image/bmp\",\n AVIF = \"image/avif\",\n}\n\nexport const userAvatarShape = {\n partitionKey: field\n .string()\n .description(\"Avatar partition key, typically 'domain'\")\n .validator(validateSafeText),\n\n id: field.string().description(\"User ID\").validator(validateSafeText),\n\n filename: field\n .string()\n .description(\"Original filename\")\n .validator(validateSafeText),\n\n contentType: field\n .string()\n .description(\"MIME type of the avatar\")\n .validator(validateSafeText)\n .enum([...Object.values(AvatarMimeType)]),\n\n url: field\n .string()\n .description(\"Public or signed URL to the avatar image\")\n .validator(validateUrl),\n\n size: field.number().description(\"Size of the file in bytes\"),\n\n width: field.number().description(\"Width of the image in pixels\"),\n\n height: field.number().description(\"Height of the image in pixels\"),\n\n createdAt: field\n .string()\n .description(\"Upload timestamp\")\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n createdBy: field\n .string()\n .description(\"User who uploaded the avatar\")\n .validator(validateUserId),\n\n version: field.number().description(\"Version of this avatar record\"),\n};\n\nexport const userAvatarSchema = createSchema(userAvatarShape, \"userAvatar\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"avatars\",\n});\n\nexport type UserAvatarEntity = Infer<typeof userAvatarSchema> & BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { UserAvatarEntity, userAvatarShape } from \"./user.avatar.js\";\nimport {\n createSchema,\n field,\n validateEmail,\n type Infer,\n} from \"@plasius/schema\";\nimport { UserName, userNameShape } from \"./user.name.js\";\n\nexport enum UserEmailPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n CUSTOM = \"custom\",\n PROMOTIONAL = \"promotional\",\n TRANSACTIONAL = \"transactional\",\n UPDATES = \"updates\",\n NEWSLETTER = \"newsletter\",\n MARKETING = \"marketing\",\n SECURITY = \"security\",\n ACCOUNT = \"account\",\n PRIVACY = \"privacy\",\n}\n\nexport enum UserNotificationPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n}\n\nexport const userEntitySchema = createSchema(\n {\n email: field\n .string()\n .description(\"User's email address\")\n .version(\"1.0\")\n .immutable()\n .validator(validateEmail)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n name: field\n .object(userNameShape)\n .description(\"Structured user name including display preferences\")\n .version(\"1.0\")\n .as<UserName>(),\n\n emailPreferences: field\n .array(\n field\n .string()\n .enum([...Object.values(UserEmailPreferences)])\n .as<UserEmailPreferences>()\n )\n .description(\"List of email categories the user wants to receive\")\n .version(\"1.0\")\n .optional()\n .as<UserEmailPreferences[]>(),\n\n notificationPreferences: field\n .string()\n .description(\"General notification preference\")\n .version(\"1.0\")\n .optional()\n .enum([...Object.values(UserNotificationPreferences)]),\n\n avatar: field\n .object(userAvatarShape)\n .description(\"Users avatar\")\n .version(\"1.0\")\n .optional()\n .as<UserAvatarEntity | undefined>(),\n },\n \"userEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"users\",\n }\n);\nexport type UserEntity = Infer<typeof userEntitySchema> & BaseEntity;\n","import { createSchema, field, type Infer, validateName } from \"@plasius/schema\";\n\nexport enum PreferredDisplayOrder {\n FIRST_NAME = \"first_name\",\n LAST_NAME = \"last_name\",\n MIDDLE_NAME = \"middle_name\",\n DISPLAY_NAME = \"display_name\",\n}\n\nexport const userNameShape = {\n firstName: field\n .string()\n .description(\"User's first name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n middleName: field\n .string()\n .description(\"User's middle name\")\n .version(\"1.0\")\n .optional()\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n lastName: field\n .string()\n .description(\"User's last name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n displayName: field\n .string()\n .description(\"User's display name (may differ from legal name)\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n preferredDisplayOrder: field\n .string()\n .description(\"Preferred order for displaying the user's name\")\n .version(\"1.0\")\n .enum([...Object.values(PreferredDisplayOrder)]),\n};\n\nfunction validateUserNameSchema(\n userName: Infer<typeof userNameShape>\n): boolean {\n const hasDisplayName =\n !!userName.displayName &&\n (userName.displayName).trim().length > 0;\n const hasFirstName =\n !!userName.firstName && (userName.firstName).trim().length > 0;\n const hasLastName =\n !!userName.lastName && (userName.lastName).trim().length > 0;\n\n // Rule: must have at least one displayable name\n return hasDisplayName || hasFirstName || hasLastName;\n}\n\nexport const userNameSchema = createSchema(userNameShape, \"userName\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"\",\n schemaValidator: validateUserNameSchema,\n});\n\nexport type UserName = Infer<typeof userNameSchema>;\n","import { createSchema, field, validatePercentage, validateSafeText } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateFeatureFlagValue } from \"../validators/index.js\";\nimport { validateUserIdArray } from \"@plasius/schema\";\n\nexport const featureFlagEntityShape: SchemaShape = {\n defaultValue: field\n .string()\n .version(\"1.0\")\n .description(\"Default value of the feature flag (ON/OFF or variant)\")\n .validator(validateFeatureFlagValue),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"Description of the feature flag\")\n .validator(validateSafeText),\n\n rolloutPercentage: field\n .number()\n .version(\"1.0\")\n .description(\"Percentage rollout (0-100), optional\")\n .validator(validatePercentage)\n .optional(),\n\n targetedValue: field\n .string()\n .version(\"1.0\")\n .description(\"Value to serve to explicitly targeted users or groups.\")\n .validator(validateFeatureFlagValue),\n\n targetedUsers: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Specific user IDs targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .validator(validateUserIdArray)\n .optional(),\n\n targetedGroups: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Groups targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .optional(),\n};\n\nexport const featureFlagEntitySchema = createSchema(\n featureFlagEntityShape,\n \"featureFlagEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"featureFlag\",\n }\n);\n\nexport type FeatureFlagEntity = Infer<typeof featureFlagEntitySchema> &\n BaseEntity;\n","import { createSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AuthProvider {\n GOOGLE = \"google\",\n APPLE = \"apple\",\n MICROSOFT = \"microsoft\",\n NONE = \"none\",\n}\n\nexport const authenticatedUserShape: SchemaShape = {\n sub: field.string().description(\"Unique user identifier\").version(\"1.0\"),\n\n name: field.string().description(\"User's full name\").version(\"1.0\").PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n email: field\n .string()\n .optional()\n .description(\"User's email address\")\n .version(\"1.0\")\n .PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n groups: field\n .array(\n field.string().optional().description(\"User group\").version(\"1.0\").PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n })\n )\n .optional()\n .description(\"List of user groups\")\n .version(\"1.0\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n }),\n\n provider: field\n .string()\n .enum([...Object.values(AuthProvider)])\n .description(\"Authentication provider used by the user\"),\n};\n\nexport const authenticatedUserSchema = createSchema(\n authenticatedUserShape,\n \"AuthenticatedUser\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"authenticatedUsers\",\n }\n);\n\nexport type AuthenticatedUser = Infer<typeof authenticatedUserSchema>;\n","import {\n Infer,\n createSchema,\n field,\n validateRichText,\n validateSafeText,\n} from \"@plasius/schema\";\n\nexport const translatableSchema = createSchema(\n {\n index: field\n .string()\n .required()\n .immutable()\n .description(\"Unique string index for the translation\"),\n text: field.string().optional().validator(validateRichText),\n translated: field.string().required().validator(validateRichText),\n context: field.string().optional().validator(validateSafeText),\n },\n \"translatable\",\n {\n version: \"\",\n piiEnforcement: \"none\",\n table: \"translatable\",\n }\n);\n\nexport type Translatable = Infer<typeof translatableSchema>;\n","import { createSchema, field, Infer } from \"@plasius/schema\";\n\nexport const supportedLanguagesSchema = createSchema(\n {\n code: field\n .string()\n .description(\"Language code, e.g. 'en', 'fr-FR'\")\n .immutable(),\n label: field\n .string()\n .description(\"Human-readable name for the language\")\n .immutable(),\n direction: field\n .string()\n .enum([\"ltr\", \"rtl\"])\n .description(\"Text direction\")\n .immutable(),\n },\n \"supportedLanguages\"\n);\nexport type SupportedLanguage = Infer<typeof supportedLanguagesSchema>;\n"],"mappings":"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","names":["createSchema","field","validateSafeText","field","createSchema","AudioChannel","createSchema","field","createSchema","field","field","PhysicsShape","field","createComponentSchema","createComponentSchema","field","field","createSchema","ComponentTypes","ModelAssetFormat","field","createSchema","createSchema","field","validateDateTimeISO","EntityTypes","field","validateDateTimeISO","validateSafeText","createSchema","createSchema","field","field","createSchema","field","createSchema","validateDateTimeISO","validateUserId","Scope","createSchema","field","validateDateTimeISO","validateUserId","Role","createSchema","field","validateUserId","validateSafeText","validateUrl","validateDateTimeISO","AvatarMimeType","createSchema","field","createSchema","field","PreferredDisplayOrder","UserEmailPreferences","UserNotificationPreferences","createSchema","field","createSchema","field","validateSafeText","field","validateSafeText","createSchema","createSchema","field","AuthProvider","createSchema","field","validateSafeText","createSchema","field"]}
{"version":3,"sources":["../src/base.entity.ts","../src/Entities/asset.entity.ts","../src/Entities/audio.asset.entity.ts","../src/Entities/image.asset.entity.ts","../src/Entities/model.asset.entity.ts","../src/components/physics.ts","../src/components/shadow.ts","../src/components/animation.ts","../src/components/basecomponent.ts","../src/components/index.ts","../src/Entities/object.asset.entity.ts","../src/validators/asset.validator.ts","../src/validators/table.validator.ts","../src/validators/schema.validator.ts","../src/validators/featureflag.validator.ts","../src/validators/settings.validator.ts","../src/types.ts","../src/user/settings.entity.ts","../src/user/permissions.entity.ts","../src/user/role.entity.ts","../src/user/user.avatar.ts","../src/user/user.entity.ts","../src/user/user.name.ts","../src/user/feature.flag.entity.ts","../src/auth/authenticatedUser.ts","../src/translations/translatable.ts","../src/translations/supported.languages.ts"],"sourcesContent":["import {\n createSchema,\n field,\n validateSafeText,\n validateSemVer,\n} from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { isValidAzureTableKey, isValidEntityType } from \"./validators/index.js\";\nimport { validateDateTimeISO, validateUserId } from \"@plasius/schema\";\nimport { EntityTypes } from \"./types.js\";\n\nexport const baseEntityShape: SchemaShape = {\n // From TableEntity\n partitionKey: field\n .string()\n .internal()\n .immutable()\n .required()\n .description(\"Primary partition identifier, usually user ID.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n id: field\n .string()\n .immutable()\n .required()\n .description(\"Row identifier within the partition.\")\n .version(\"1.0\")\n .validator(isValidAzureTableKey),\n\n version: field\n .string()\n .description(\"SemVer version string for the record.\")\n .version(\"1.0\")\n .system()\n .validator(validateSemVer),\n\n entityType: field\n .string()\n .version(\"1.0\")\n .description(\"The derived type of this entity.\")\n .immutable()\n .system()\n .enum([...Object.values(EntityTypes)])\n .validator(isValidEntityType),\n\n createdAt: field\n .string()\n .immutable()\n .required()\n .description(\"Record creation timestamp.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n createdBy: field\n .string()\n .internal()\n .immutable()\n .required()\n .description(\"User ID who created the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n updatedAt: field\n .string()\n .optional()\n .description(\"Timestamp of the last update.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n updatedBy: field\n .string()\n .internal()\n .optional()\n .description(\"User ID of the last editor.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n isDeleted: field\n .boolean()\n .description(\"Indicates whether this record was soft deleted.\")\n .version(\"1.0\"),\n\n deletedAt: field\n .string()\n .optional()\n .description(\"Timestamp when the entity was deleted.\")\n .version(\"1.0\")\n .as<Date>()\n .validator(validateDateTimeISO),\n\n deletedBy: field\n .string()\n .internal()\n .optional()\n .description(\"User ID of who deleted the record.\")\n .version(\"1.0\")\n .validator(validateUserId),\n\n deletedReason: field\n .string()\n .internal()\n .optional()\n .description(\"Reason the record was deleted.\")\n .version(\"1.0\")\n .validator(validateSafeText),\n};\n\n// Add schema-level validator\nfunction validateBaseEntitySchema(\n entity: Infer<typeof baseEntityShape>\n): boolean {\n const hasDateValue = (value: unknown) => {\n if (value instanceof Date) return !Number.isNaN(value.getTime());\n if (typeof value === \"string\") return value.trim() !== \"\";\n return false;\n };\n\n const hasTextValue = (value: unknown) =>\n typeof value === \"string\" && value.trim() !== \"\";\n\n if (entity.isDeleted) {\n if (!hasDateValue(entity.deletedAt))\n return false;\n if (!hasTextValue(entity.deletedBy)) return false;\n if (!hasTextValue(entity.deletedReason))\n return false;\n } else {\n if (hasDateValue(entity.deletedAt))\n return false;\n if (hasTextValue(entity.deletedBy)) return false;\n if (hasTextValue(entity.deletedReason))\n return false;\n }\n return true;\n}\n\nexport const baseEntitySchema = createSchema(baseEntityShape, \"baseEntity\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n schemaValidator: validateBaseEntitySchema,\n});\nexport type BaseEntity = Infer<typeof baseEntitySchema> & {\n id: string;\n partitionKey: string;\n};\n","import { field, createSchema } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport const assetEntityShape: SchemaShape = {\n cacheable: field.boolean()\n .version(\"1.0\")\n .description(\"Is this asset safe to store in local cache?\"),\n\n userUploaded: field.boolean()\n .version(\"1.0\")\n .description(\"User uploaded from their machine, verification of ownership required.\")\n .optional(),\n\n userCreated: field.boolean()\n .version(\"1.0\")\n .description(\"User created using local tools, verification of ownership not required.\")\n .optional(),\n\n validated: field.boolean()\n .version(\"1.0\")\n .description(\"has this content been validated as safe for use\")\n .optional(),\n\n validatedBy: field.string()\n .internal()\n .version(\"1.0\")\n .description(\"Who validated this content\")\n .optional(),\n\n validatedAt: field.string()\n .version(\"1.0\")\n .description(\"When was this content validated?\")\n .optional(),\n};\n\nexport const assetEntitySchema = createSchema(\n assetEntityShape,\n \"AssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type AssetEntity = Infer<typeof assetEntitySchema> & BaseEntity;\n","import { AssetEntity } from \"./asset.entity.js\";\nimport { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AudioChannel {\n LEFT = \"left\",\n RIGHT = \"right\",\n FRONT = \"front\",\n REAR = \"rear\",\n ALL = \"all\",\n DYNAMIC = \"dynamic\", // used for location based audio\n}\n\nconst audioAssetEntityShape: SchemaShape = {\n duration: field\n .number()\n .version(\"1.0\")\n .description(\"Audio clip duration\")\n .optional(),\n\n repeats: field\n .boolean()\n .version(\"1.0\")\n .description(\"Does this clip repeat?\")\n .optional(),\n\n channel: field\n .string()\n .version(\"1.0\")\n .description(\"Where to play the clip, positional or dynamic\")\n .optional()\n .enum([...Object.values(AudioChannel)]),\n};\n\nexport const audioAssetEntitySchema = createSchema(\n audioAssetEntityShape,\n \"AudioAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\",\n }\n);\nexport type AudioAssetEntity = Infer<typeof audioAssetEntitySchema> & AssetEntity;\n","import { createSchema, field, validateUrl } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\nconst imageAssetEntityShape: SchemaShape = {\n url: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\")\n .as<URL>()\n .validator(validateUrl),\n\n thumbnailUrl: field\n .string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional()\n .as<URL>()\n .validator(validateUrl),\n\n width: field\n .number()\n .version(\"1.0\")\n .description(\"Width of the image in pixels\")\n .optional(),\n\n height: field\n .number()\n .version(\"1.0\")\n .description(\"Height of the image in pixels\")\n .optional(),\n};\n\nexport const imageAssetEntitySchema = createSchema(\n imageAssetEntityShape,\n \"ImageAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"assets\"\n }\n);\nexport type ImageAssetEntity = Infer<typeof imageAssetEntitySchema> & AssetEntity;\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\nimport { ComponentTypes } from \"../components/index.js\";\n\nexport enum ModelAssetFormat {\n GLTF = \"gltf\",\n GLB = \"glb\",\n OBJ = \"obj\",\n FBX = \"fbx\",\n USDZ = \"usdz\",\n PLY = \"ply\",\n STL = \"stl\",\n}\n\nexport const modelAssetEntityShape: SchemaShape = {\n url: field.string()\n .version(\"1.0\")\n .description(\"URL of the blob or file storage containing the asset\"),\n\n thumbnailUrl: field.string()\n .version(\"1.0\")\n .description(\"URL of the thumbnail image for the asset\")\n .optional(),\n\n format: field.string()\n .version(\"1.0\")\n .description(\"Format of the model asset\")\n .optional()\n .enum([...Object.values(ModelAssetFormat)]),\n\n size: field.number()\n .version(\"1.0\")\n .description(\"Size of the model asset in bytes\")\n .optional(),\n\n components: field.array(\n field.object({\n type: field.string()\n .description(\"Type of the component\")\n .version(\"1.0\")\n .enum([...Object.values(ComponentTypes)]),\n config: field.object({})\n .optional()\n .description(\"Configuration for the component\")\n .version(\"1.0\"),\n })\n )\n .version(\"1.0\")\n .description(\"List of components attached to this model asset\")\n .optional(),\n};\n\nexport const modelAssetEntitySchema = createSchema(\n modelAssetEntityShape,\n \"ModelAssetEntity\",\n { version:\"1.0\",\n piiEnforcement: \"strict\" ,\n table: \"assets\" }\n);\n\nexport type ModelAssetEntity = Infer<typeof modelAssetEntitySchema> & AssetEntity;","import { createComponentSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nexport enum PhysicsShape {\n BOX = \"box\",\n SPHERE = \"sphere\",\n MESH = \"mesh\",\n CAPSULE = \"capsule\",\n CYLINDER = \"cylinder\",\n CONVEX_HULL = \"convex_hull\",\n}\n\nexport const physicsComponentShape : SchemaShape = {\n enabled: field.boolean()\n .optional()\n .description(\"Is physics enabled for this entity?\")\n .version(\"1.0\"),\n\n shape: field.string()\n .enum([...Object.values(PhysicsShape)])\n .optional()\n .description(\"The shape of the physics collider.\")\n .version(\"1.0\"),\n\n mass: field.number()\n .optional()\n .description(\"The mass of the entity in kg.\")\n .version(\"1.0\"),\n};\n\nexport const physicsComponentSchema = createComponentSchema(\n physicsComponentShape,\n \"PhysicsComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type PhysicsComponent = Infer<typeof physicsComponentSchema> & BaseComponent;","import {\n field,\n createComponentSchema,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport {type BaseComponent } from \"./basecomponent.js\";\n\nexport const shadowComponentShape : SchemaShape = {\n casts: field.boolean()\n .optional()\n .description(\"Whether this entity casts shadows\"),\n\n receives: field.boolean()\n .optional()\n .description(\"Whether this entity receives shadows\"),\n};\n\nexport const shadowComponentSchema = createComponentSchema(\n shadowComponentShape,\n \"ShadowComponent\",\n \"1.0\",\n \"components\"\n);\n\nexport type ShadowComponent = Infer<typeof shadowComponentSchema> & BaseComponent;","import {\n createComponentSchema,\n field,\n Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { type BaseComponent } from \"./basecomponent.js\";\n\nconst animationComponentShape : SchemaShape = {\n animated: field.boolean()\n .optional()\n .description(\"Is this entity animated?\")\n .version(\"1.0\"),\n\n availableAnimations: field.array(field.string())\n .optional()\n .description(\"List of available animations for this entity\")\n .version(\"1.0\"),\n};\n\nexport const animationComponentSchema = createComponentSchema(\n animationComponentShape,\n \"AnimationComponent\",\n \"1.0\",\n \"components\"\n);\nexport type AnimationComponent = Infer<typeof animationComponentSchema> & BaseComponent;\n","import { field, createSchema } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport const baseComponentShape: SchemaShape = {\n name: field\n .string()\n .version(\"1.0\")\n .description(\"The name of the component\")\n .optional(),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"A brief description of the component\")\n .optional(),\n};\n\nexport const baseComponentSchema = createSchema(baseComponentShape, \"BaseComponent\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n});\n\nexport type BaseComponent = Infer<typeof baseComponentSchema> & BaseEntity;\n","export { type PhysicsComponent, physicsComponentSchema } from \"./physics.js\";\nexport { type ShadowComponent, shadowComponentSchema } from \"./shadow.js\";\nexport {\n type AnimationComponent,\n animationComponentSchema,\n} from \"./animation.js\";\n\nexport * from \"./basecomponent.js\"\n\nexport enum ComponentTypes {\n PHYSICS = \"physics\",\n ANIMATION = \"animation\",\n SHADOW = \"shadow\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { AssetEntity } from \"./asset.entity.js\";\n\n\nexport const objectAssetEntityShape : SchemaShape = {\n // ...TODO\n type: field.string().required()\n};\n\nexport const objectAssetEntitySchema = createSchema(\n objectAssetEntityShape,\n \"objectAssetEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"objects\"\n }\n);\nexport type ObjectAssetEntity = Infer<typeof objectAssetEntitySchema> & AssetEntity;\n","import {\n assetEntitySchema,\n imageAssetEntitySchema,\n audioAssetEntitySchema,\n modelAssetEntitySchema,\n objectAssetEntitySchema,\n} from \"../Entities/index.js\";\nimport type { EntityTypes } from \"../types.js\";\n\nexport function validateAssetSchema(asset: { type: keyof EntityTypes }): void {\n const typeValidators = {\n AssetEntity: assetEntitySchema,\n ImageAssetEntity: imageAssetEntitySchema,\n AudioAssetEntity: audioAssetEntitySchema,\n ModelAssetEntity: modelAssetEntitySchema,\n ObjectAssetEntity: objectAssetEntitySchema,\n };\n\n const validator = typeValidators[asset.type as keyof typeof typeValidators];\n if (!validator) {\n throw new Error(\"Unsupported asset type\");\n }\n if (!validator.validate(asset)) {\n throw new Error(`Invalid ${asset.type as string} format`);\n }\n}\n","export function isValidAzureTableKey(value: string): boolean {\n if (typeof value !== \"string\") return false;\n if (value.length === 0) return false;\n if (value.length > 1024) return false;\n if (/[/\\\\#?]/.test(value)) return false;\n if (/^\\s|\\s$/.test(value)) return false;\n return true;\n}\n","import { getSchemaForType } from \"@plasius/schema\";\n\nexport function isValidEntityType(entityType: string): boolean {\n return !!getSchemaForType(entityType);\n}\n","/**\n * Validates that a feature flag value is an allowed type and format.\n * Allowed:\n * - boolean: true / false\n * - number: 0..1000 (example) — you can tune this\n * - string: safe identifier /^[a-zA-Z0-9._-]{1,64}$/\n *\n * Global Standard: OWASP Safe String + Feature Flag best practice (LaunchDarkly, Unleash)\n */\nexport function validateFeatureFlagValue(value: unknown): boolean {\n if (typeof value === \"boolean\") return true;\n\n if (typeof value === \"number\") {\n // Example clamp — you can tune these limits\n return value >= 0 && value <= 1000;\n }\n\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n\n // Allow booleans as strings\n if (trimmed === \"true\" || trimmed === \"false\") return true;\n\n // Allow numeric strings — e.g. \"42\", \"3.14\"\n if (/^\\d+(\\.\\d+)?$/.test(trimmed)) return true;\n\n // Allow safe identifiers — variants, modes, named states\n if (/^[a-zA-Z0-9._-]{1,64}$/.test(trimmed)) return true;\n\n // Reject anything else\n return false;\n }\n\n // Reject all other types\n return false;\n}\n","import { validateSafeText, validateDateTimeISO } from \"@plasius/schema\";\n\n/**\n * Validates that a settings value is an allowed type:\n * - string (safe)\n * - number\n * - boolean\n * - ISO date string\n * - array of allowed types\n * - object of allowed types (optional - shallow)\n */\nexport function validateSettingValue(value: unknown): boolean {\n if (typeof value === \"string\") {\n // Allow safe string (reuse your validateSafeText or ISO date validator)\n return validateSafeText(value) || validateDateTimeISO(value);\n }\n\n if (typeof value === \"number\") return true;\n if (typeof value === \"boolean\") return true;\n\n if (Array.isArray(value)) {\n // Recursively validate array items\n return value.every(validateSettingValue);\n }\n\n if (typeof value === \"object\" && value !== null) {\n // Optionally allow shallow object of valid items\n return Object.values(value).every(validateSettingValue);\n }\n\n // Everything else rejected\n return false;\n}\n","export enum EntityTypes {\n Asset = \"asset\",\n AudioAsset = \"audioAsset\",\n ImageAsset = \"imageAsset\",\n ModelAsset = \"modelAsset\",\n ObjectAsset = \"objectAsset\",\n BaseEntity = \"baseEntity\",\n SettingsEntity = \"settingsEntity\",\n PermissionsEntity = \"permissionsEntity\",\n RoleEntity = \"roleEntity\",\n UserEntity = \"userEntity\",\n}\n","import { createSchema, field } from \"@plasius/schema\";\nimport type { Infer, SchemaShape, FieldBuilder } from \"@plasius/schema\";\nimport { type BaseEntity } from \"../base.entity.js\";\nimport { validateSettingValue } from \"../validators/index.js\";\n\nconst settingsEntityShape: SchemaShape = {\n settings: field\n .object<Record<string, FieldBuilder<unknown>>>({} as SchemaShape)\n .version(\"1.0\")\n .description(\"List of key-value settings assigned for the user.\")\n .validator((value) => {\n if (typeof value !== \"object\" || value === null) return false;\n return Object.values(value).every(validateSettingValue);\n })\n .as<Record<string, unknown>>(),\n};\n\nexport const settingsEntitySchema = createSchema(\n settingsEntityShape,\n \"settingsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"settings\",\n }\n);\nexport type SettingsEntity = Infer<typeof settingsEntitySchema> & BaseEntity;\n","import {\n field,\n createSchema,\n validateDateTimeISO,\n type Infer,\n SchemaShape,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateUserId } from \"@plasius/schema\";\n\nexport enum Scope {\n READ = \"read\",\n WRITE = \"write\",\n DELETE = \"delete\",\n CREATE = \"create\",\n UPDATE = \"update\",\n EXECUTE = \"execute\",\n MANAGE = \"manage\",\n ADMIN = \"admin\",\n VIEW = \"view\",\n EDIT = \"edit\",\n SHARE = \"share\",\n DOWNLOAD = \"download\",\n UPLOAD = \"upload\",\n PUBLISH = \"publish\",\n SUBSCRIBE = \"subscribe\",\n UNPUBLISH = \"unpublish\",\n UNSUBSCRIBE = \"unsubscribe\",\n APPROVE = \"approve\",\n REJECT = \"reject\",\n ARCHIVE = \"archive\",\n RESTORE = \"restore\",\n DELETE_PERMANENTLY = \"delete_permanently\",\n LIST = \"list\",\n}\n\nconst permissionsEntityShape: SchemaShape = {\n scopes: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"An array of permission scopes defined by the Scope enum.\")\n .immutable()\n .enum([...Object.values(Scope)]),\n\n granted: field\n .boolean()\n .version(\"1.0\")\n .description(\"Has this permission been validated\")\n .optional(),\n\n grantedBy: field\n .string()\n .internal()\n .version(\"1.0\")\n .description(\"Which user/system granted the update to permissions\")\n .optional()\n .validator(validateUserId),\n\n grantedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was granted\")\n .optional()\n .validator(validateDateTimeISO),\n\n revoked: field\n .boolean()\n .version(\"1.0\")\n .description(\"Have the permissions been revoked\")\n .optional(),\n\n revokedBy: field\n .string()\n .internal()\n .version(\"1.0\")\n .description(\"Who revoked the permissions\")\n .optional()\n .validator(validateUserId),\n\n revokedAt: field\n .string()\n .version(\"1.0\")\n .description(\"Date/Time permission was revoked\")\n .optional()\n .validator(validateDateTimeISO),\n};\n\nexport const permissionsEntitySchema = createSchema(\n permissionsEntityShape,\n \"permissionsEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"permissions\",\n }\n);\nexport type PermissionsEntity = Infer<typeof permissionsEntityShape> &\n BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { createSchema, field, SchemaShape, validateDateTimeISO } from \"@plasius/schema\";\nimport { type Infer, validateUserId } from \"@plasius/schema\";\n\nexport enum Role {\n ADMIN = \"admin\",\n USER = \"user\",\n GUEST = \"guest\",\n MODERATOR = \"moderator\",\n CONTRIBUTOR = \"contributor\",\n VIEWER = \"viewer\",\n EDITOR = \"editor\",\n OWNER = \"owner\",\n MEMBER = \"member\",\n}\n\nconst roleEntityShape: SchemaShape = {\n roles: field.array(field.string())\n .version(\"1.0\")\n .description(\"Assigned roles for the user\")\n .immutable()\n .enum([...Object.values(Role)]),\n\n active: field.boolean()\n .version(\"1.0\")\n .description(\"Have the roles been activated?\"),\n\n activatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles activated\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n activatedBy: field.string()\n .internal()\n .version(\"1.0\")\n .description(\"Who activated the roles?\")\n .optional()\n .validator(validateUserId),\n\n deactivatedAt: field.string()\n .version(\"1.0\")\n .description(\"When were the roles deactivated for this user\")\n .optional()\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n deactivatedBy: field.string()\n .internal()\n .version(\"1.0\")\n .description(\"Who deactivated the roles for this user?\")\n .optional()\n .validator(validateUserId),\n};\n\n// Add schema-level validator\nfunction validateRoleEntitySchema(\n entity: Infer<typeof roleEntityShape>\n): boolean {\n if (entity.active) {\n // If active, activatedBy must be set\n if (!entity.activatedBy || (entity.activatedBy as string).trim() === \"\") {\n return false;\n }\n } else {\n // If inactive, deactivatedBy must be set\n if (\n !entity.deactivatedBy ||\n (entity.deactivatedBy as string).trim() === \"\"\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport const roleEntitySchema = createSchema(\n roleEntityShape,\n \"roleEntity\",\n { version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"roles\",\n schemaValidator: validateRoleEntitySchema }\n);\n\nexport type RoleEntity = Infer<typeof roleEntitySchema> & BaseEntity;\n","import {\n createSchema,\n field,\n validateUserId,\n validateSafeText,\n validateUrl,\n validateDateTimeISO,\n type Infer,\n} from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\n\nexport enum AvatarMimeType {\n PNG = \"image/png\",\n JPEG = \"image/jpeg\",\n JPG = \"image/jpg\",\n GIF = \"image/gif\",\n WEBP = \"image/webp\",\n SVG = \"image/svg+xml\",\n BMP = \"image/bmp\",\n AVIF = \"image/avif\",\n}\n\nexport const userAvatarShape = {\n partitionKey: field\n .string()\n .internal()\n .description(\"Avatar partition key, typically 'domain'\")\n .validator(validateSafeText),\n\n id: field.string().description(\"User ID\").validator(validateSafeText),\n\n filename: field\n .string()\n .description(\"Original filename\")\n .validator(validateSafeText),\n\n contentType: field\n .string()\n .description(\"MIME type of the avatar\")\n .validator(validateSafeText)\n .enum([...Object.values(AvatarMimeType)]),\n\n url: field\n .string()\n .description(\"Public or signed URL to the avatar image\")\n .validator(validateUrl),\n\n size: field.number().description(\"Size of the file in bytes\"),\n\n width: field.number().description(\"Width of the image in pixels\"),\n\n height: field.number().description(\"Height of the image in pixels\"),\n\n createdAt: field\n .string()\n .description(\"Upload timestamp\")\n .validator(validateDateTimeISO)\n .as<Date>(),\n\n createdBy: field\n .string()\n .internal()\n .description(\"User who uploaded the avatar\")\n .validator(validateUserId),\n\n version: field.number().description(\"Version of this avatar record\"),\n};\n\nexport const userAvatarSchema = createSchema(userAvatarShape, \"userAvatar\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"avatars\",\n});\n\nexport type UserAvatarEntity = Infer<typeof userAvatarSchema> & BaseEntity;\n","import { BaseEntity } from \"../base.entity.js\";\nimport { UserAvatarEntity, userAvatarShape } from \"./user.avatar.js\";\nimport {\n createSchema,\n field,\n validateEmail,\n type Infer,\n} from \"@plasius/schema\";\nimport { UserName, userNameShape } from \"./user.name.js\";\n\nexport enum UserEmailPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n CUSTOM = \"custom\",\n PROMOTIONAL = \"promotional\",\n TRANSACTIONAL = \"transactional\",\n UPDATES = \"updates\",\n NEWSLETTER = \"newsletter\",\n MARKETING = \"marketing\",\n SECURITY = \"security\",\n ACCOUNT = \"account\",\n PRIVACY = \"privacy\",\n}\n\nexport enum UserNotificationPreferences {\n ALL = \"all\",\n NONE = \"none\",\n IMPORTANT = \"important\",\n}\n\nexport const userEntitySchema = createSchema(\n {\n email: field\n .string()\n .description(\"User's email address\")\n .version(\"1.0\")\n .immutable()\n .validator(validateEmail)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n name: field\n .object(userNameShape)\n .description(\"Structured user name including display preferences\")\n .version(\"1.0\")\n .as<UserName>(),\n\n emailPreferences: field\n .array(\n field\n .string()\n .enum([...Object.values(UserEmailPreferences)])\n .as<UserEmailPreferences>()\n )\n .description(\"List of email categories the user wants to receive\")\n .version(\"1.0\")\n .optional()\n .as<UserEmailPreferences[]>(),\n\n notificationPreferences: field\n .string()\n .description(\"General notification preference\")\n .version(\"1.0\")\n .optional()\n .enum([...Object.values(UserNotificationPreferences)]),\n\n avatar: field\n .object(userAvatarShape)\n .description(\"Users avatar\")\n .version(\"1.0\")\n .optional()\n .as<UserAvatarEntity | undefined>(),\n },\n \"userEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"users\",\n }\n);\nexport type UserEntity = Infer<typeof userEntitySchema> & BaseEntity;\n","import { createSchema, field, type Infer, validateName } from \"@plasius/schema\";\n\nexport enum PreferredDisplayOrder {\n FIRST_NAME = \"first_name\",\n LAST_NAME = \"last_name\",\n MIDDLE_NAME = \"middle_name\",\n DISPLAY_NAME = \"display_name\",\n}\n\nexport const userNameShape = {\n firstName: field\n .string()\n .description(\"User's first name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n middleName: field\n .string()\n .description(\"User's middle name\")\n .version(\"1.0\")\n .optional()\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n lastName: field\n .string()\n .description(\"User's last name\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n displayName: field\n .string()\n .description(\"User's display name (may differ from legal name)\")\n .version(\"1.0\")\n .validator(validateName)\n .PID({\n classification: \"high\",\n logHandling: \"redact\",\n action: \"encrypt\",\n }),\n\n preferredDisplayOrder: field\n .string()\n .description(\"Preferred order for displaying the user's name\")\n .version(\"1.0\")\n .enum([...Object.values(PreferredDisplayOrder)]),\n};\n\nfunction validateUserNameSchema(\n userName: Infer<typeof userNameShape>\n): boolean {\n const hasDisplayName =\n !!userName.displayName &&\n (userName.displayName).trim().length > 0;\n const hasFirstName =\n !!userName.firstName && (userName.firstName).trim().length > 0;\n const hasLastName =\n !!userName.lastName && (userName.lastName).trim().length > 0;\n\n // Rule: must have at least one displayable name\n return hasDisplayName || hasFirstName || hasLastName;\n}\n\nexport const userNameSchema = createSchema(userNameShape, \"userName\", {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"\",\n schemaValidator: validateUserNameSchema,\n});\n\nexport type UserName = Infer<typeof userNameSchema>;\n","import { createSchema, field, validatePercentage, validateSafeText } from \"@plasius/schema\";\nimport type { Infer, SchemaShape } from \"@plasius/schema\";\nimport { BaseEntity } from \"../base.entity.js\";\nimport { validateFeatureFlagValue } from \"../validators/index.js\";\nimport { validateUserIdArray } from \"@plasius/schema\";\n\nexport const featureFlagEntityShape: SchemaShape = {\n defaultValue: field\n .string()\n .version(\"1.0\")\n .description(\"Default value of the feature flag (ON/OFF or variant)\")\n .validator(validateFeatureFlagValue),\n\n description: field\n .string()\n .version(\"1.0\")\n .description(\"Description of the feature flag\")\n .validator(validateSafeText),\n\n rolloutPercentage: field\n .number()\n .version(\"1.0\")\n .description(\"Percentage rollout (0-100), optional\")\n .validator(validatePercentage)\n .optional(),\n\n targetedValue: field\n .string()\n .version(\"1.0\")\n .description(\"Value to serve to explicitly targeted users or groups.\")\n .validator(validateFeatureFlagValue),\n\n targetedUsers: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Specific user IDs targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .validator(validateUserIdArray)\n .optional(),\n\n targetedGroups: field\n .array(field.string())\n .version(\"1.0\")\n .description(\"Groups targeted, optional\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"targeted feature flagging\",\n })\n .optional(),\n};\n\nexport const featureFlagEntitySchema = createSchema(\n featureFlagEntityShape,\n \"featureFlagEntity\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"featureFlag\",\n }\n);\n\nexport type FeatureFlagEntity = Infer<typeof featureFlagEntitySchema> &\n BaseEntity;\n","import { createSchema, field, Infer, SchemaShape } from \"@plasius/schema\";\n\nexport enum AuthProvider {\n GOOGLE = \"google\",\n APPLE = \"apple\",\n MICROSOFT = \"microsoft\",\n NONE = \"none\",\n}\n\nexport const authenticatedUserShape: SchemaShape = {\n sub: field.string().description(\"Unique user identifier\").version(\"1.0\"),\n\n name: field.string().description(\"User's full name\").version(\"1.0\").PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n email: field\n .string()\n .optional()\n .description(\"User's email address\")\n .version(\"1.0\")\n .PID({\n classification: \"high\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"user identification\",\n }),\n\n groups: field\n .array(\n field.string().optional().description(\"User group\").version(\"1.0\").PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n })\n )\n .optional()\n .description(\"List of user groups\")\n .version(\"1.0\")\n .PID({\n classification: \"low\",\n action: \"encrypt\",\n logHandling: \"pseudonym\",\n purpose: \"group membership\",\n }),\n\n provider: field\n .string()\n .enum([...Object.values(AuthProvider)])\n .description(\"Authentication provider used by the user\"),\n};\n\nexport const authenticatedUserSchema = createSchema(\n authenticatedUserShape,\n \"AuthenticatedUser\",\n {\n version: \"1.0.0\",\n piiEnforcement: \"strict\",\n table: \"authenticatedUsers\",\n }\n);\n\nexport type AuthenticatedUser = Infer<typeof authenticatedUserSchema>;\n","import {\n Infer,\n createSchema,\n field,\n validateRichText,\n validateSafeText,\n} from \"@plasius/schema\";\n\nexport const translatableSchema = createSchema(\n {\n index: field\n .string()\n .required()\n .immutable()\n .description(\"Unique string index for the translation\"),\n text: field.string().optional().validator(validateRichText),\n translated: field.string().required().validator(validateRichText),\n context: field.string().optional().validator(validateSafeText),\n },\n \"translatable\",\n {\n version: \"\",\n piiEnforcement: \"none\",\n table: \"translatable\",\n }\n);\n\nexport type Translatable = Infer<typeof translatableSchema>;\n","import { createSchema, field, Infer } from \"@plasius/schema\";\n\nexport const supportedLanguagesSchema = createSchema(\n {\n code: field\n .string()\n .description(\"Language code, e.g. 'en', 'fr-FR'\")\n .immutable(),\n label: field\n .string()\n .description(\"Human-readable name for the language\")\n .immutable(),\n direction: field\n .string()\n .enum([\"ltr\", \"rtl\"])\n .description(\"Text direction\")\n .immutable(),\n },\n \"supportedLanguages\"\n);\nexport type SupportedLanguage = Infer<typeof supportedLanguagesSchema>;\n"],"mappings":"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","names":["createSchema","field","validateSafeText","field","createSchema","AudioChannel","createSchema","field","createSchema","field","field","PhysicsShape","field","createComponentSchema","createComponentSchema","field","field","createSchema","ComponentTypes","ModelAssetFormat","field","createSchema","createSchema","field","validateDateTimeISO","EntityTypes","field","validateDateTimeISO","validateSafeText","createSchema","createSchema","field","field","createSchema","field","createSchema","validateDateTimeISO","validateUserId","Scope","createSchema","field","validateDateTimeISO","validateUserId","Role","createSchema","field","validateUserId","validateSafeText","validateUrl","validateDateTimeISO","AvatarMimeType","createSchema","field","createSchema","field","PreferredDisplayOrder","UserEmailPreferences","UserNotificationPreferences","createSchema","field","createSchema","field","validateSafeText","field","validateSafeText","createSchema","createSchema","field","AuthProvider","createSchema","field","validateSafeText","createSchema","field"]}
{
"name": "@plasius/entity-manager",
"version": "1.0.11",
"version": "1.0.12",
"description": "Entity definition & validation helpers for Plasius ecosystem",

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

"dependencies": {
"@plasius/schema": "^1.2.4"
"@plasius/schema": "^1.2.6"
},

@@ -22,0 +22,0 @@ "exports": {

@@ -60,2 +60,3 @@ # @plasius/entity-manager

- Required fields include `partitionKey`, `id`, `entityType`, `createdAt`, `createdBy`, and `isDeleted` (plus system `type` and `version`).
- Persistence-only fields such as `partitionKey`, `createdBy`, `updatedBy`, `deletedBy`, and `deletedReason` are marked internal and are omitted by default when calling `schema.serialize(...)`.

@@ -85,2 +86,27 @@ ### User and permissions

## Public Serialization
Entity schemas validate the full persisted entity shape, including internal audit and storage metadata.
When returning data to clients, prefer `schema.serialize(entity)` so only public fields are included by default.
```ts
import { baseEntitySchema } from "@plasius/entity-manager";
const payload = baseEntitySchema.serialize({
type: "baseEntity",
version: "1.0.0",
entityType: "baseEntity",
partitionKey: "tenant-a",
id: "row-1",
createdAt: new Date().toISOString(),
createdBy: "user-1",
isDeleted: false,
});
// partitionKey and createdBy are omitted from the serialized payload.
console.log(payload);
```
---
## Key Documentation

@@ -87,0 +113,0 @@

@@ -16,2 +16,3 @@ import {

.string()
.internal()
.immutable()

@@ -58,2 +59,3 @@ .required()

.string()
.internal()
.immutable()

@@ -75,2 +77,3 @@ .required()

.string()
.internal()
.optional()

@@ -96,2 +99,3 @@ .description("User ID of the last editor.")

.string()
.internal()
.optional()

@@ -104,2 +108,3 @@ .description("User ID of who deleted the record.")

.string()
.internal()
.optional()

@@ -106,0 +111,0 @@ .description("Reason the record was deleted.")

@@ -26,2 +26,3 @@ import { field, createSchema } from "@plasius/schema";

validatedBy: field.string()
.internal()
.version("1.0")

@@ -28,0 +29,0 @@ .description("Who validated this content")

@@ -53,2 +53,3 @@ import {

.string()
.internal()
.version("1.0")

@@ -74,2 +75,3 @@ .description("Which user/system granted the update to permissions")

.string()
.internal()
.version("1.0")

@@ -76,0 +78,0 @@ .description("Who revoked the permissions")

@@ -36,2 +36,3 @@ import { BaseEntity } from "../base.entity.js";

activatedBy: field.string()
.internal()
.version("1.0")

@@ -50,2 +51,3 @@ .description("Who activated the roles?")

deactivatedBy: field.string()
.internal()
.version("1.0")

@@ -52,0 +54,0 @@ .description("Who deactivated the roles for this user?")

@@ -26,2 +26,3 @@ import {

.string()
.internal()
.description("Avatar partition key, typically 'domain'")

@@ -62,2 +63,3 @@ .validator(validateSafeText),

.string()
.internal()
.description("User who uploaded the avatar")

@@ -64,0 +66,0 @@ .validator(validateUserId),