@api-client/core 0.20.2 → 0.20.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/src/modeling/Semantics.d.ts +0 -252
- package/build/src/modeling/Semantics.d.ts.map +1 -1
- package/build/src/modeling/Semantics.js +0 -356
- package/build/src/modeling/Semantics.js.map +1 -1
- package/build/src/modeling/ai/tools/Semantic.tools.d.ts +0 -3
- package/build/src/modeling/ai/tools/Semantic.tools.d.ts.map +1 -1
- package/build/src/modeling/types.d.ts +50 -0
- package/build/src/modeling/types.d.ts.map +1 -1
- package/build/src/modeling/types.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/src/modeling/Semantics.ts +40 -520
- package/src/modeling/types.ts +52 -0
- package/tests/unit/modeling/client_ip_address_semantic.spec.ts +0 -22
- package/tests/unit/modeling/semantics.spec.ts +0 -65
- package/tests/unit/modeling/username_semantic.spec.ts +0 -32
- package/build/src/runtime/modeling/Semantics.d.ts +0 -84
- package/build/src/runtime/modeling/Semantics.d.ts.map +0 -1
- package/build/src/runtime/modeling/Semantics.js +0 -124
- package/build/src/runtime/modeling/Semantics.js.map +0 -1
- package/src/runtime/modeling/Semantics.ts +0 -196
- package/tests/unit/modeling/semantic_runtime.spec.ts +0 -113
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Semantics.js","sourceRoot":"","sources":["../../../src/modeling/Semantics.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-redeclare */\n/* eslint-disable max-len */\nimport type { DomainPropertyType } from './DataFormat.js'\n\n/**\n * Defines the names for all available data semantics.\n * Using a string enum makes it easy to add or remove semantics in a single place.\n */\nexport enum SemanticType {\n //\n // Entity-Level Semantics\n //\n\n /**\n * Designates a Data Entity that represents users of the system.\n */\n User = 'Semantic#User',\n /**\n * Designates a Data Entity that represents a physical address.\n */\n Address = 'Semantic#Address',\n\n //\n // Property-Level Semantics\n //\n\n /**\n * Annotates the field as the user password.\n * The runtime should treat this field with special care,\n * ensuring it is encrypted and not exposed in API responses.\n */\n Password = 'Semantic#Password',\n /**\n * Annotates the field as the username for user authentication.\n * This identifies which field should be used for login purposes.\n * Can be applied to dedicated username fields or email fields that serve as usernames.\n * The runtime uses this for authentication, password reset, and user lookup operations.\n */\n Username = 'Semantic#Username',\n /**\n * Designates a Data Property as the `createdAt` timestamp of an entity.\n * This is used to track when the entity was first created.\n */\n CreatedTimestamp = 'Semantic#CreatedTimestamp',\n /**\n * Designates a Data Property as the `updatedAt` timestamp of an entity.\n * This is used to track when the entity was last modified.\n */\n UpdatedTimestamp = 'Semantic#UpdatedTimestamp',\n /**\n * Designates a Data Property as the `deletedAt` timestamp of an entity.\n * This is used to track when the entity was soft-deleted.\n * Soft-deletion means the entity is not physically removed from the database,\n * but marked as deleted for logical deletion purposes.\n */\n DeletedTimestamp = 'Semantic#DeletedTimestamp',\n /**\n * Designates a Data Property as a boolean flag indicating whether the entity is deleted.\n * This is used for soft-deletion, where the entity is not physically removed from the database,\n * but marked as deleted.\n */\n DeletedFlag = 'Semantic#DeletedFlag',\n /**\n * Designates a Data Property as a public identifier for a resource (the slug).\n * This is often used in URLs to provide a user-friendly way to access the resource.\n * For example, a blog post might have a public unique name like \"my-first-post\".\n * The runtime automatically generates a URL-safe string from another field (like a title).\n * By default, slugs are generated to be unique, but the configuration allows for duplicates\n * in scenarios where uniqueness is handled by a combination of fields (e.g., year and slug).\n */\n PublicUniqueName = 'Semantic#PublicUniqueName',\n /**\n * A semantic that describes a title of an article, blog post, and so on. This semantic is used with\n * the `PublicUniqueName` to determine which field is responsible for the slug generation. However,\n * we may add more automation related to the `title` property in the future.\n */\n Title = 'Semantic#Title',\n /**\n * A semantic that describes a name of a person or pet. This semantic is used with\n * the `PublicUniqueName` to determine which field is responsible for the slug generation. However,\n * we may add more automation related to the `name` property in the future.\n */\n Name = 'Semantic#Name',\n /**\n * Designates a Data Property as the `role` of a user within the system.\n * This is used to define the user's permissions and access levels.\n * For example, a user with the role of \"admin\" would have elevated permissions\n * compared to a user with the role of \"guest\".\n * Roles are defined on the entity as enums, or as a string property with a controlled vocabulary.\n */\n UserRole = 'Semantic#UserRole',\n /**\n * A text or enum field to represent the state of a record (e.g., `draft`, `published`, `pending_review`, `archived`).\n *\n * Defined behaviors:\n * - State-Based Filtering: Automatically prevents public users from seeing records in a draft state.\n * - State Transitions: In principle, the runtime should prevent the user from skipping some states.\n * For example, when the record is in the `draft` state, it cannot be moved to the `archived` state without publishing it first. However,\n * we do not have enough customer feedback to design this functionality correctly right now, so\n * it serves as a placeholder semantic annotation.\n */\n Status = 'Semantic#Status',\n\n /**\n * Annotates an integer field that automatically increments.\n * The runtime automatically increments this number on every update, providing a simple way\n * to track changes and implement optimistic locking to prevent mid-air collisions.\n */\n Version = 'Semantic#Version',\n\n /**\n * Annotates a field that holds a reference to an image data via an URL.\n * The application + runtime should validate that the input is a well-formed URL.\n */\n ImageURL = 'Semantic#ImageURL',\n\n /**\n * Annotates a field that holds a reference to a file object via an URL. Ity is distinct from the\n * `ImageURL` semantic as it implicitly states that the target is non-image, binary data (an attachment, for example).\n */\n FileURL = 'Semantic#FileURL',\n\n /**\n * Annotates the field as a markdown-interpreted field.\n * When an object is created, the runtime performs additional sanitization to prevent XSS attacks.\n *\n * The annotation describes whether the data should be translated to the HTML output when\n * record is read or the original MD content should be returned.\n */\n Markdown = 'Semantic#Markdown',\n\n /**\n * Annotates the field as containing HTML content.\n * The runtime performs sanitization to prevent XSS attacks and validates HTML structure.\n *\n * The annotation describes whether the data should be rendered as HTML output when\n * record is read or the original HTML content should be returned.\n */\n HTML = 'Semantic#HTML',\n\n /**\n * Annotates a field that holds geospatial coordinate data (latitude/longitude).\n * The runtime automatically generates API capabilities for location-based queries,\n * such as \"find all restaurants within a 5-mile radius.\"\n *\n * The field should contain coordinate data in a standard format:\n * - \"40.7128,-74.0060\" (lat,lon)\n * - \"POINT(-74.0060 40.7128)\" (PostGIS format)\n * - \"40.7128°N, 74.0060°W\" (degree format)\n *\n * Defined behaviors:\n * - Spatial Indexing: The runtime automatically creates spatial indexes for efficient location-based queries\n * - Distance Queries: Enables API endpoints for finding records within specified distances\n * - Coordinate Validation: Validates that the input follows proper coordinate format\n * - PostGIS Integration: When using PostgreSQL, automatically maps to PostGIS geometry types\n */\n GeospatialCoordinates = 'Semantic#GeospatialCoordinates',\n\n /**\n * Annotates a field as an email address with validation and verification options.\n */\n Email = 'Semantic#Email',\n /**\n * Annotates a field as a phone number with validation and formatting options.\n */\n Phone = 'Semantic#Phone',\n /**\n * Annotates a field as a monetary value with currency support and precision control.\n * Can store simple decimal amounts or complex objects with amount and currency.\n *\n * As a semantic, it provides flexibility by annotating a base `number` or `string` type,\n * allowing for different storage strategies (e.g., decimal, integer cents, or a JSON object)\n * while maintaining a consistent API for currency operations.\n */\n Currency = 'Semantic#Currency',\n /**\n * Annotates a field as a URL with validation and allowed protocols.\n */\n URL = 'Semantic#URL',\n /**\n * Annotates a field as a Stock Keeping Unit (SKU).\n * Enforces uniqueness at the database level, critical for product catalogs.\n * Provides automatic validation and formatting for product identification codes.\n */\n SKU = 'Semantic#SKU',\n /**\n * Annotates a field as a long-form description.\n */\n Description = 'Semantic#Description',\n /**\n * Annotates a field as a short summary.\n */\n Summary = 'Semantic#Summary',\n /**\n * Annotates a field as a calculated value based on a formula.\n */\n Calculated = 'Semantic#Calculated',\n /**\n * Annotates a field as derived from other fields.\n */\n Derived = 'Semantic#Derived',\n /**\n * Annotates a field that should automatically receive the client's IP address.\n * when creating or updating records, providing audit trail and geolocation capabilities.\n */\n ClientIPAddress = 'Semantic#ClientIPAddress',\n /**\n * Designates a Data Property as the street address (e.g., \"123 Main St\").\n */\n StreetAddress = 'Semantic#StreetAddress',\n /**\n * This is a single semantic used for any additional lines (Unit, Suite, Apartment, Floor).\n */\n StreetAddressSupplemental = 'Semantic#StreetAddressSupplemental',\n /**\n * Designates a Data Property as the city or locality.\n */\n City = 'Semantic#City',\n /**\n * Designates a Data Property as the postal or zip code.\n */\n PostalCode = 'Semantic#PostalCode',\n /**\n * Designates a Data Property as the country.\n */\n Country = 'Semantic#Country',\n /**\n * Designates a Data Property as the state, province, or region.\n */\n Region = 'Semantic#Region',\n\n //\n // Association-Level Semantics\n //\n\n /**\n * Designates an association that links a resource to a \"User\" entity instance.\n * This is used to indicate ownership of the resource for access control purposes.\n * For example, a blog post might have a resource owner identifier that points to the user who created it.\n *\n * Defined behaviors:\n * - Automatic Ownership: When a new record is created, this field is automatically populated with the ID of the authenticated user. It also creates a foreign relationship to the `User` semantic object.\n * - Scoped Access: The runtime automatically filters list and read operations to show only records where the Owner matches the current user. update and delete operations are similarly restricted.\n */\n ResourceOwnerIdentifier = 'Semantic#ResourceOwnerIdentifier',\n /**\n * Annotates an association as supporting tag functionality.\n * Applied to associations between entities to enable tagging behavior.\n * For example, a Product-Category association with Tags semantic enables product tagging.\n */\n Tags = 'Semantic#Tags',\n /**\n * Annotates an association as supporting category functionality.\n * Applied to associations between entities to enable categorization behavior.\n * For example, a Product-Category association with Categories semantic enables product categorization.\n */\n Categories = 'Semantic#Categories',\n}\n\n/**\n * Defines the scope at which a semantic can be applied.\n */\nexport enum SemanticScope {\n /**\n * The semantic applies to an entire Data Entity.\n * This is used for semantics that provide context or constraints at the entity level.\n */\n Entity = 'Entity',\n /**\n * The semantic applies to a single Data Property.\n * This is used for semantics that provide context or constraints at the property level.\n */\n Property = 'Property',\n /**\n * The semantic applies to an Association between Data Entities.\n * This is used for semantics that provide context or constraints at the association level.\n */\n Association = 'Association',\n}\n\n/**\n * Defines categories for organizing semantics in the UI.\n */\nexport enum SemanticCategory {\n /**\n * User management, authentication, and access control\n */\n Identity = 'Identity & Authentication',\n /**\n * Timestamps, versioning, and record lifecycle\n */\n Lifecycle = 'Timestamps & Versioning',\n /**\n * Text content, media, and rich content types\n */\n Content = 'Content & Media',\n /**\n * Business-specific data like pricing, inventory, status\n */\n Business = 'Business Data',\n /**\n * Organization, categorization, and tagging\n */\n Organization = 'Classification & Organization',\n /**\n * Location and geographical data\n */\n Location = 'Location & Geography',\n /**\n * Contact information and communication\n */\n Contact = 'Contact Information',\n /**\n * Calculated and derived values\n */\n Computed = 'Computed Values',\n}\n\n/**\n * Defines when a semantic should execute in relation to database operations.\n */\nexport enum SemanticTiming {\n /**\n * Execute before the database operation (validation, preprocessing)\n */\n Before = 'Before',\n /**\n * Execute after the database operation (cleanup, notifications, derived values)\n */\n After = 'After',\n /**\n * Execute both before and after the operation\n */\n Both = 'Both',\n /**\n * No automatic execution (manual/on-demand only)\n */\n None = 'None',\n}\n\n/**\n * Defines which database operations can trigger a semantic.\n */\nexport enum SemanticOperation {\n Create = 'Create',\n Read = 'Read',\n Update = 'Update',\n Delete = 'Delete',\n /**\n * Special operation for list operations\n */\n List = 'List',\n /**\n * Special operation for search operations\n */\n Search = 'Search',\n}\n\n/**\n * Defines the execution mode for a semantic.\n */\nexport enum SemanticExecutionMode {\n /**\n * Execute synchronously as part of the main operation\n */\n Synchronous = 'Synchronous',\n /**\n * Execute asynchronously after the main operation\n */\n Asynchronous = 'Asynchronous',\n /**\n * Execute in background/queue (fire and forget)\n */\n Background = 'Background',\n}\n\n/**\n * Defines validation strategies for semantics.\n */\nexport enum SemanticValidationStrategy {\n /**\n * Fail the operation if semantic validation fails\n */\n Strict = 'Strict',\n /**\n * Log warnings but continue operation\n */\n Warning = 'Warning',\n /**\n * Skip validation entirely\n */\n Skip = 'Skip',\n}\n\n/**\n * Defines caching strategies for computed semantics.\n */\nexport enum SemanticCacheStrategy {\n /**\n * No caching - always compute\n */\n None = 'None',\n /**\n * Cache until dependent fields change\n */\n Dependency = 'Dependency',\n /**\n * Cache with TTL expiration\n */\n TimeToLive = 'TimeToLive',\n /**\n * Cache until manually invalidated\n */\n Manual = 'Manual',\n}\n\n/**\n * Configuration for when and how a semantic should execute at runtime.\n */\nexport interface SemanticRuntimeConfig {\n /**\n * When the semantic should execute relative to the database operation.\n */\n timing: SemanticTiming\n /**\n * Which database operations should trigger this semantic.\n */\n operations: SemanticOperation[]\n /**\n * Priority order for execution when multiple semantics apply.\n * Lower numbers execute first. Default is 100.\n */\n priority?: number\n /**\n * Whether this semantic can be disabled at the entity/property level.\n */\n canDisable?: boolean\n /**\n * How the semantic should execute (sync/async/background).\n * Default is Synchronous.\n * @default Synchronous\n */\n executionMode?: SemanticExecutionMode\n /**\n * Validation strategy when semantic processing fails.\n * Default is Strict.\n * @default Strict\n */\n validationStrategy?: SemanticValidationStrategy\n /**\n * Maximum execution time in milliseconds before timeout.\n * Default is 5000ms for sync, 30000ms for async.\n * @default 5000 for sync, 30000 for async\n */\n timeoutMs?: number\n /**\n * Number of retry attempts on failure.\n * Default is 0 (no retries).\n * @default 0\n */\n retryAttempts?: number\n /**\n * Dependencies on other semantics that must execute first.\n * Uses semantic IDs.\n */\n dependencies?: SemanticType[]\n /**\n * Fields that this semantic depends on for computation.\n * Used for cache invalidation and optimization.\n */\n dependentFields?: string[]\n /**\n * Caching strategy for computed/derived values.\n */\n cacheStrategy?: SemanticCacheStrategy\n /**\n * Cache TTL in seconds (only used with TimeToLive strategy).\n */\n cacheTtlSeconds?: number\n /**\n * Whether this semantic should run in transactions.\n * Default is true.\n */\n transactional?: boolean\n /**\n * Rate limiting configuration for expensive operations.\n */\n rateLimit?: SemanticRateLimit\n /**\n * Conditional execution based on data or context.\n */\n conditions?: SemanticCondition[]\n /**\n * Audit and logging configuration.\n */\n audit?: SemanticAudit\n}\n\nexport interface SemanticRateLimit {\n /**\n * Maximum executions per time window.\n */\n maxExecutions: number\n /**\n * Time window in seconds.\n */\n windowSeconds: number\n /**\n * Strategy when rate limit is exceeded.\n */\n strategy: 'queue' | 'drop' | 'error'\n}\n\nexport interface SemanticCondition {\n /**\n * JEXL expression that must evaluate to true for execution.\n * Has access to entity data, user context, and semantic field references.\n *\n * Available context variables:\n * - `entity`: The entity data being processed\n * - `user`: Current user context (if authenticated)\n * - `operation`: The current operation (Create, Update, etc.)\n * - `semantics`: Object with semantic field accessors\n *\n * Semantic field references use dot notation:\n * - `semantics.CreatedTimestamp` - field with CreatedTimestamp semantic\n * - `semantics.Password` - field with Password semantic\n * - `semantics.User` - entity with User semantic (for associations)\n *\n * @example\n * // Only set timestamp if not already provided\n * \"semantics.CreatedTimestamp == null\"\n *\n * @example\n * // Only apply to authenticated users\n * \"user != null && user.authenticated == true\"\n *\n * @example\n * // Only hash password if it's a plain text (not already hashed)\n * \"entity[semantics.Password] != null && !entity[semantics.Password].startsWith('$')\"\n *\n * @example\n * // Only generate slug if title exists\n * \"entity[semantics.Title] != null && entity[semantics.Title].length > 0\"\n */\n expression: string\n /**\n * Description of when this semantic should run.\n */\n description: string\n}\n\nexport interface SemanticAudit {\n /**\n * Whether to log semantic execution.\n */\n logExecution: boolean\n /**\n * Whether to log input/output data.\n */\n logData: boolean\n /**\n * Retention period for audit logs in days.\n */\n retentionDays: number\n}\n\n/**\n * A base interface for all Data Semantics, containing common properties.\n * A semantic is an annotation applied to a Data Entity, Property, or Association\n * to provide additional context or constraints.\n * This interface is extended by more specific semantic types.\n */\ninterface BaseDataSemantic {\n /**\n * A unique identifier for the semantic definition.\n */\n id: SemanticType\n /**\n * A human-readable name for the semantic.\n */\n displayName: string\n /**\n * A description of the semantic's purpose and impact.\n */\n description: string\n /**\n * Specifies whether the semantic applies to an Entity, Property, or Association.\n */\n scope: SemanticScope\n /**\n * The category this semantic belongs to for UI organization.\n */\n category: SemanticCategory\n /**\n * Whether the semantic has a configuration or additional options.\n * This is used to determine if the semantic requires additional setup or configuration.\n */\n hasConfig: boolean\n /**\n * Runtime execution configuration for this semantic.\n */\n runtime: SemanticRuntimeConfig\n}\n\n/**\n * Represents a semantic that can be applied to an entire Data Entity.\n */\nexport interface EntitySemantic extends BaseDataSemantic {\n scope: SemanticScope.Entity\n}\n\n/**\n * Represents a semantic that can be applied to a single property.\n */\nexport interface PropertySemantic extends BaseDataSemantic {\n scope: SemanticScope.Property\n /**\n * Optional array of data types this semantic can be applied to.\n * Enforces constraints, e.g., DeletedTimestamp on a DateTime property.\n */\n applicableDataTypes?: DomainPropertyType[]\n}\n\n/**\n * Represents a semantic that can be applied to an association between entities.\n */\nexport interface AssociationSemantic extends BaseDataSemantic {\n scope: SemanticScope.Association\n}\n\n/**\n * A type guard to check if a semantic is an EntitySemantic.\n */\nexport const isEntitySemantic = (semantic: DataSemantic): semantic is EntitySemantic =>\n semantic.scope === SemanticScope.Entity\n\n/**\n * A type guard to check if a semantic is a PropertySemantic.\n */\nexport const isPropertySemantic = (semantic: DataSemantic): semantic is PropertySemantic =>\n semantic.scope === SemanticScope.Property\n\n/**\n * A type guard to check if a semantic is a AssociationSemantic.\n */\nexport const isAssociationSemantic = (semantic: DataSemantic): semantic is AssociationSemantic =>\n semantic.scope === SemanticScope.Association\n\n/**\n * Union type for any kind of data semantic\n */\nexport type DataSemantic = EntitySemantic | PropertySemantic | AssociationSemantic\n\n/**\n * A map to store the definitions of all available data semantics.\n * This acts as a central registry for the application.\n */\nexport const DataSemantics: Record<SemanticType, DataSemantic> = {\n //\n // Identity & Authentication\n //\n\n [SemanticType.User]: {\n id: SemanticType.User,\n displayName: 'User Entity',\n scope: SemanticScope.Entity,\n description: 'System users and accounts',\n category: SemanticCategory.Identity,\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Password]: {\n id: SemanticType.Password,\n displayName: 'User Password',\n scope: SemanticScope.Property,\n description: 'Secure password field',\n category: SemanticCategory.Identity,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 10, // High priority for security\n canDisable: false, // Security semantics cannot be disabled\n timeoutMs: 2000, // Allow time for hashing\n conditions: [\n {\n expression: 'entity[semantics.Password] != null && entity[semantics.Password].length > 0',\n description: 'Only process when password field has a value',\n },\n ],\n },\n },\n [SemanticType.Username]: {\n id: SemanticType.Username,\n displayName: 'Username',\n scope: SemanticScope.Property,\n description: 'User authentication identifier',\n category: SemanticCategory.Identity,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update, SemanticOperation.Read],\n priority: 15, // High priority for authentication\n canDisable: false, // Security semantics cannot be disabled\n timeoutMs: 100, // Fast operation\n },\n },\n [SemanticType.UserRole]: {\n id: SemanticType.UserRole,\n displayName: 'User Role Field',\n scope: SemanticScope.Property,\n description: 'User permissions and access level',\n category: SemanticCategory.Identity,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [\n SemanticOperation.Create,\n SemanticOperation.Read,\n SemanticOperation.Update,\n SemanticOperation.Delete,\n SemanticOperation.List,\n ],\n priority: 20,\n },\n },\n [SemanticType.ResourceOwnerIdentifier]: {\n id: SemanticType.ResourceOwnerIdentifier,\n displayName: 'Resource Owner Identifier',\n scope: SemanticScope.Association,\n description: 'Links record to owner user',\n category: SemanticCategory.Identity,\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [\n SemanticOperation.Create,\n SemanticOperation.Read,\n SemanticOperation.Update,\n SemanticOperation.Delete,\n SemanticOperation.List,\n ],\n priority: 5, // Very high priority for access control\n canDisable: false,\n },\n },\n\n //\n // Timestamps & Versioning\n //\n\n [SemanticType.CreatedTimestamp]: {\n id: SemanticType.CreatedTimestamp,\n displayName: 'Creation Timestamp',\n scope: SemanticScope.Property,\n description: 'When record was created',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['datetime'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create],\n priority: 90,\n timeoutMs: 100, // Very fast operation\n conditions: [\n {\n expression: 'entity[semantics.CreatedTimestamp] == null',\n description: 'Only set timestamp if not already provided',\n },\n ],\n },\n },\n [SemanticType.UpdatedTimestamp]: {\n id: SemanticType.UpdatedTimestamp,\n displayName: 'Update Timestamp',\n scope: SemanticScope.Property,\n description: 'When record was last modified',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['datetime'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Update],\n priority: 90,\n },\n },\n [SemanticType.DeletedTimestamp]: {\n id: SemanticType.DeletedTimestamp,\n displayName: 'Soft Delete Timestamp',\n scope: SemanticScope.Property,\n description: 'When record was marked deleted',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['datetime'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Delete],\n priority: 80,\n },\n },\n [SemanticType.DeletedFlag]: {\n id: SemanticType.DeletedFlag,\n displayName: 'Soft Delete Flag',\n scope: SemanticScope.Property,\n description: 'Mark record as deleted',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['boolean'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Delete, SemanticOperation.Read, SemanticOperation.List],\n priority: 80,\n },\n },\n\n //\n // Contact & Address\n //\n\n [SemanticType.Address]: {\n id: SemanticType.Address,\n displayName: 'Address Entity',\n scope: SemanticScope.Entity,\n description: 'Physical address entity',\n category: SemanticCategory.Contact,\n // For now, the Address won't have configuration, but future-wise:\n // - autoGeocode (boolean): If true, the runtime automatically generates latitude and longitude for the record whenever the address properties change.\n // - validationProvider (enum): Options like None, GoogleMaps, or Loqate. This determines if the API returns an error for non-existent addresses.\n // - strictness (enum): Lax (accept anything) vs. Strict (reject if not deliverable).\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.StreetAddress]: {\n id: SemanticType.StreetAddress,\n displayName: 'Street Address',\n scope: SemanticScope.Property,\n description: 'Street address line',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.StreetAddressSupplemental]: {\n id: SemanticType.StreetAddressSupplemental,\n displayName: 'Street Address Supplemental',\n scope: SemanticScope.Property,\n description: 'Supplemental street address line (e.g., Unit, Suite, Apartment, Floor)',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.City]: {\n id: SemanticType.City,\n displayName: 'City',\n scope: SemanticScope.Property,\n description: 'City or locality',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.PostalCode]: {\n id: SemanticType.PostalCode,\n displayName: 'Postal Code',\n scope: SemanticScope.Property,\n description: 'Postal or zip code',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Country]: {\n id: SemanticType.Country,\n displayName: 'Country',\n scope: SemanticScope.Property,\n description: 'Country name or code',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Region]: {\n id: SemanticType.Region,\n displayName: 'Region',\n scope: SemanticScope.Property,\n description: 'State, province, or region',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n\n [SemanticType.Version]: {\n id: SemanticType.Version,\n displayName: 'Version Number',\n scope: SemanticScope.Property,\n description: 'Auto-incrementing version counter',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['number'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Update],\n priority: 85,\n },\n },\n\n //\n // Content & Media\n //\n\n [SemanticType.Title]: {\n id: SemanticType.Title,\n displayName: 'Record Title',\n scope: SemanticScope.Property,\n description: 'Main title or heading',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Name]: {\n id: SemanticType.Name,\n displayName: 'Name',\n scope: SemanticScope.Property,\n description: 'A person or pet name',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Description]: {\n id: SemanticType.Description,\n displayName: 'Description',\n scope: SemanticScope.Property,\n description: 'Detailed description text',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Summary]: {\n id: SemanticType.Summary,\n displayName: 'Summary',\n scope: SemanticScope.Property,\n description: 'Brief summary text',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.None,\n operations: [],\n },\n },\n [SemanticType.Markdown]: {\n id: SemanticType.Markdown,\n displayName: 'Markdown Content',\n scope: SemanticScope.Property,\n description: 'Formatted text content',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 50, // Process before storage\n },\n },\n [SemanticType.HTML]: {\n id: SemanticType.HTML,\n displayName: 'HTML Content',\n scope: SemanticScope.Property,\n description: 'Rich HTML content',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 50, // Process before storage for sanitization\n },\n },\n [SemanticType.ImageURL]: {\n id: SemanticType.ImageURL,\n displayName: 'Image URL',\n scope: SemanticScope.Property,\n description: 'Link to image file',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 60, // Validate URLs before storage\n },\n },\n [SemanticType.FileURL]: {\n id: SemanticType.FileURL,\n displayName: 'File URL',\n scope: SemanticScope.Property,\n description: 'Link to file attachment',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 60, // Validate URLs before storage\n },\n },\n\n //\n // Business Data\n //\n\n [SemanticType.Status]: {\n id: SemanticType.Status,\n displayName: 'Record Status',\n scope: SemanticScope.Property,\n description: 'Current state of record',\n category: SemanticCategory.Business,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Both,\n operations: [SemanticOperation.Create, SemanticOperation.Update, SemanticOperation.Read, SemanticOperation.List],\n priority: 30, // Validate state transitions before, filter by state after\n },\n },\n [SemanticType.Currency]: {\n id: SemanticType.Currency,\n displayName: 'Currency',\n scope: SemanticScope.Property,\n description: 'Monetary value with currency',\n category: SemanticCategory.Business,\n applicableDataTypes: ['number', 'string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 70, // Validate currency format and precision\n },\n },\n [SemanticType.SKU]: {\n id: SemanticType.SKU,\n displayName: 'SKU',\n scope: SemanticScope.Property,\n description: 'Product identification code',\n category: SemanticCategory.Business,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 25, // High priority for uniqueness validation\n },\n },\n\n //\n // Contact Information\n //\n\n [SemanticType.Email]: {\n id: SemanticType.Email,\n displayName: 'Email',\n scope: SemanticScope.Property,\n description: 'Email address',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 40, // Validate email format\n },\n },\n [SemanticType.Phone]: {\n id: SemanticType.Phone,\n displayName: 'Phone',\n scope: SemanticScope.Property,\n description: 'Phone number',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 40, // Validate phone format\n },\n },\n [SemanticType.URL]: {\n id: SemanticType.URL,\n displayName: 'URL',\n scope: SemanticScope.Property,\n description: 'Web address or link',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 40, // Validate URL format\n },\n },\n [SemanticType.ClientIPAddress]: {\n id: SemanticType.ClientIPAddress,\n displayName: 'Client IP Address',\n scope: SemanticScope.Property,\n description: 'Automatically populated client IP address',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 95, // Low priority, populate after other validations\n timeoutMs: 100, // Very fast operation\n conditions: [\n {\n expression: 'entity[semantics.ClientIPAddress] == null',\n description: 'Only set IP address if not already provided',\n },\n ],\n },\n },\n\n //\n // Classification & Organization\n //\n\n [SemanticType.PublicUniqueName]: {\n id: SemanticType.PublicUniqueName,\n displayName: 'Public Unique Name (Slug)',\n scope: SemanticScope.Property,\n description: 'URL-friendly unique identifier',\n category: SemanticCategory.Organization,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Before,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 30, // Generate slug from title, validate uniqueness\n timeoutMs: 1000,\n conditions: [\n {\n expression: 'entity[semantics.PublicUniqueName] == null || entity[semantics.PublicUniqueName].length == 0',\n description: 'Only generate slug if not already provided',\n },\n // Let's not guess which field is marked as slug source in the `PublicUniqueName` configuration.\n // {\n // expression: 'entity[semantics.Title] != null && entity[semantics.Title].length > 0',\n // description: 'Only generate slug if title field exists and has content',\n // },\n ],\n },\n },\n [SemanticType.Tags]: {\n id: SemanticType.Tags,\n displayName: 'Tags',\n scope: SemanticScope.Association,\n description: 'Enable tagging functionality',\n category: SemanticCategory.Organization,\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.After,\n operations: [SemanticOperation.Create, SemanticOperation.Update, SemanticOperation.Delete],\n priority: 200, // Process after main operation\n },\n },\n [SemanticType.Categories]: {\n id: SemanticType.Categories,\n displayName: 'Categories',\n scope: SemanticScope.Association,\n description: 'Enable categorization functionality',\n category: SemanticCategory.Organization,\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.After,\n operations: [SemanticOperation.Create, SemanticOperation.Update, SemanticOperation.Delete],\n priority: 200, // Process after main operation\n },\n },\n\n //\n // Location & Geography\n //\n\n [SemanticType.GeospatialCoordinates]: {\n id: SemanticType.GeospatialCoordinates,\n displayName: 'Geospatial Coordinates',\n scope: SemanticScope.Property,\n description: 'Location coordinates',\n category: SemanticCategory.Location,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Both,\n operations: [SemanticOperation.Create, SemanticOperation.Update, SemanticOperation.Read, SemanticOperation.List],\n priority: 60, // Validate coordinates before, enable spatial queries after\n },\n },\n\n //\n // Computed Values\n //\n\n // Calculated field can be added to any data type as we can compute any value.\n [SemanticType.Calculated]: {\n id: SemanticType.Calculated,\n displayName: 'Calculated',\n scope: SemanticScope.Property,\n description: 'Auto-calculated field value',\n category: SemanticCategory.Computed,\n applicableDataTypes: ['string', 'number', 'boolean', 'date', 'datetime', 'time', 'binary'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.Both,\n operations: [SemanticOperation.Create, SemanticOperation.Update, SemanticOperation.Read],\n priority: 150, // Calculate after other validations, recalculate on read if needed\n },\n },\n [SemanticType.Derived]: {\n id: SemanticType.Derived,\n displayName: 'Derived',\n scope: SemanticScope.Property,\n description: 'Value derived from other fields',\n category: SemanticCategory.Computed,\n applicableDataTypes: ['string'],\n hasConfig: true,\n runtime: {\n timing: SemanticTiming.After,\n operations: [SemanticOperation.Create, SemanticOperation.Update],\n priority: 180, // Derive after all other processing\n },\n },\n}\n\n/**\n * Get all semantics that should run for a specific operation and timing\n */\nexport function getSemanticsForOperation(\n semantics: AppliedDataSemantic[],\n operation: SemanticOperation,\n timing: SemanticTiming\n): AppliedDataSemantic[] {\n return semantics\n .filter((semantic) => {\n const definition = DataSemantics[semantic.id]\n if (!definition?.runtime) {\n return false\n }\n\n const { timing: semanticTiming, operations } = definition.runtime\n\n // Check if timing matches\n const timingMatches = semanticTiming === timing || semanticTiming === SemanticTiming.Both\n\n // Check if operation is included\n const operationMatches = operations.includes(operation)\n\n return timingMatches && operationMatches\n })\n .sort((a, b) => {\n // Sort by priority (lower number = higher priority)\n const priorityA = DataSemantics[a.id]?.runtime?.priority ?? 100\n const priorityB = DataSemantics[b.id]?.runtime?.priority ?? 100\n return priorityA - priorityB\n })\n}\n\n/**\n * Check if a specific semantic can be disabled at runtime\n */\nexport function canSemanticBeDisabled(semanticType: SemanticType): boolean {\n const definition = DataSemantics[semanticType]\n return definition?.runtime?.canDisable !== false // Default to true if not specified\n}\n\nexport function getSemanticsByCategory(): Record<SemanticCategory, DataSemantic[]>\nexport function getSemanticsByCategory(scope: SemanticScope.Entity): Record<SemanticCategory, EntitySemantic[]>\nexport function getSemanticsByCategory(scope: SemanticScope.Property): Record<SemanticCategory, PropertySemantic[]>\nexport function getSemanticsByCategory(\n scope: SemanticScope.Association\n): Record<SemanticCategory, AssociationSemantic[]>\n\n/**\n * Helper function to get all semantics grouped by category.\n * Useful for organizing semantics in UI dropdowns and forms.\n *\n * @param scope Optional scope to filter semantics by (Entity, Property, Association)\n */\nexport function getSemanticsByCategory(scope?: SemanticScope): Record<SemanticCategory, DataSemantic[]> {\n const result: Record<SemanticCategory, DataSemantic[]> = {\n [SemanticCategory.Identity]: [],\n [SemanticCategory.Lifecycle]: [],\n [SemanticCategory.Content]: [],\n [SemanticCategory.Business]: [],\n [SemanticCategory.Contact]: [],\n [SemanticCategory.Organization]: [],\n [SemanticCategory.Location]: [],\n [SemanticCategory.Computed]: [],\n }\n\n Object.values(DataSemantics).forEach((semantic) => {\n // If a scope is provided, filter semantics by that scope\n if (scope && semantic.scope !== scope) {\n return\n }\n result[semantic.category].push(semantic)\n })\n\n return result\n}\n\n/**\n * Helper function to get semantics for a specific category.\n * @param category The category to filter by\n * @returns Array of semantics in the specified category\n */\nexport const getSemanticsByCategoryType = (category: SemanticCategory): DataSemantic[] => {\n return Object.values(DataSemantics).filter((semantic) => semantic.category === category)\n}\n\n/**\n * Represents the application of a data semantic to a specific\n * entity or property within a user's data model.\n */\nexport interface AppliedDataSemantic {\n /**\n * The unique identifier of the semantic being applied.\n */\n id: SemanticType\n\n /**\n * Optional configuration or values specific to this application.\n */\n config?: Record<string, unknown>\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Semantics.js","sourceRoot":"","sources":["../../../src/modeling/Semantics.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,CAAN,IAAY,YAyPX;AAzPD,WAAY,YAAY;IACtB,EAAE;IACF,yBAAyB;IACzB,EAAE;IAEF;;OAEG;IACH,sCAAsB,CAAA;IACtB;;OAEG;IACH,4CAA4B,CAAA;IAE5B,EAAE;IACF,2BAA2B;IAC3B,EAAE;IAEF;;;;OAIG;IACH,8CAA8B,CAAA;IAC9B;;;;;OAKG;IACH,8CAA8B,CAAA;IAC9B;;;OAGG;IACH,8DAA8C,CAAA;IAC9C;;;OAGG;IACH,8DAA8C,CAAA;IAC9C;;;;;OAKG;IACH,8DAA8C,CAAA;IAC9C;;;;OAIG;IACH,oDAAoC,CAAA;IACpC;;;;;;;OAOG;IACH,8DAA8C,CAAA;IAC9C;;;;OAIG;IACH,wCAAwB,CAAA;IACxB;;;;OAIG;IACH,sCAAsB,CAAA;IACtB;;;;;;OAMG;IACH,8CAA8B,CAAA;IAC9B;;;;;;;;;OASG;IACH,0CAA0B,CAAA;IAE1B;;;;OAIG;IACH,4CAA4B,CAAA;IAE5B;;;OAGG;IACH,8CAA8B,CAAA;IAE9B;;;OAGG;IACH,4CAA4B,CAAA;IAE5B;;;;;;OAMG;IACH,8CAA8B,CAAA;IAE9B;;;;;;OAMG;IACH,sCAAsB,CAAA;IAEtB;;;;;;;;;;;;;;;OAeG;IACH,wEAAwD,CAAA;IAExD;;OAEG;IACH,wCAAwB,CAAA;IACxB;;OAEG;IACH,wCAAwB,CAAA;IACxB;;;;;;;OAOG;IACH,8CAA8B,CAAA;IAC9B;;OAEG;IACH,oCAAoB,CAAA;IACpB;;;;OAIG;IACH,oCAAoB,CAAA;IACpB;;OAEG;IACH,oDAAoC,CAAA;IACpC;;OAEG;IACH,4CAA4B,CAAA;IAC5B;;OAEG;IACH,kDAAkC,CAAA;IAClC;;OAEG;IACH,4CAA4B,CAAA;IAC5B;;;OAGG;IACH,4DAA4C,CAAA;IAC5C;;OAEG;IACH,wDAAwC,CAAA;IACxC;;OAEG;IACH,gFAAgE,CAAA;IAChE;;OAEG;IACH,sCAAsB,CAAA;IACtB;;OAEG;IACH,kDAAkC,CAAA;IAClC;;OAEG;IACH,4CAA4B,CAAA;IAC5B;;OAEG;IACH,0CAA0B,CAAA;IAE1B,EAAE;IACF,8BAA8B;IAC9B,EAAE;IAEF;;;;;;;;OAQG;IACH,4EAA4D,CAAA;IAC5D;;;;OAIG;IACH,sCAAsB,CAAA;IACtB;;;;OAIG;IACH,kDAAkC,CAAA;AACpC,CAAC,EAzPW,YAAY,KAAZ,YAAY,QAyPvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAgBX;AAhBD,WAAY,aAAa;IACvB;;;OAGG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,sCAAqB,CAAA;IACrB;;;OAGG;IACH,4CAA2B,CAAA;AAC7B,CAAC,EAhBW,aAAa,KAAb,aAAa,QAgBxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBAiCX;AAjCD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,0DAAsC,CAAA;IACtC;;OAEG;IACH,yDAAqC,CAAA;IACrC;;OAEG;IACH,+CAA2B,CAAA;IAC3B;;OAEG;IACH,8CAA0B,CAAA;IAC1B;;OAEG;IACH,kEAA8C,CAAA;IAC9C;;OAEG;IACH,qDAAiC,CAAA;IACjC;;OAEG;IACH,mDAA+B,CAAA;IAC/B;;OAEG;IACH,gDAA4B,CAAA;AAC9B,CAAC,EAjCW,gBAAgB,KAAhB,gBAAgB,QAiC3B;AA8DD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAsB,EAA8B,EAAE,CACrF,QAAQ,CAAC,KAAK,KAAK,aAAa,CAAC,MAAM,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAsB,EAAgC,EAAE,CACzF,QAAQ,CAAC,KAAK,KAAK,aAAa,CAAC,QAAQ,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAsB,EAAmC,EAAE,CAC/F,QAAQ,CAAC,KAAK,KAAK,aAAa,CAAC,WAAW,CAAA;AAO9C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAuC;IAC/D,EAAE;IACF,4BAA4B;IAC5B,EAAE;IAEF,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACnB,EAAE,EAAE,YAAY,CAAC,IAAI;QACrB,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,EAAE,EAAE,YAAY,CAAC,QAAQ;QACzB,WAAW,EAAE,eAAe;QAC5B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,EAAE,EAAE,YAAY,CAAC,QAAQ;QACzB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,EAAE,EAAE,YAAY,CAAC,QAAQ;QACzB,WAAW,EAAE,iBAAiB;QAC9B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE;QACtC,EAAE,EAAE,YAAY,CAAC,uBAAuB;QACxC,WAAW,EAAE,2BAA2B;QACxC,KAAK,EAAE,aAAa,CAAC,WAAW;QAChC,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,SAAS,EAAE,KAAK;KACjB;IAED,EAAE;IACF,0BAA0B;IAC1B,EAAE;IAEF,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;QAC/B,EAAE,EAAE,YAAY,CAAC,gBAAgB;QACjC,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,gBAAgB,CAAC,SAAS;QACpC,mBAAmB,EAAE,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;QAC/B,EAAE,EAAE,YAAY,CAAC,gBAAgB;QACjC,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,+BAA+B;QAC5C,QAAQ,EAAE,gBAAgB,CAAC,SAAS;QACpC,mBAAmB,EAAE,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;QAC/B,EAAE,EAAE,YAAY,CAAC,gBAAgB;QACjC,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,gBAAgB,CAAC,SAAS;QACpC,mBAAmB,EAAE,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;QAC1B,EAAE,EAAE,YAAY,CAAC,WAAW;QAC5B,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,gBAAgB,CAAC,SAAS;QACpC,mBAAmB,EAAE,CAAC,SAAS,CAAC;QAChC,SAAS,EAAE,KAAK;KACjB;IAED,EAAE;IACF,oBAAoB;IACpB,EAAE;IAEF,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,YAAY,CAAC,OAAO;QACxB,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,kEAAkE;QAClE,uJAAuJ;QACvJ,kJAAkJ;QAClJ,sFAAsF;QACtF,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;QAC5B,EAAE,EAAE,YAAY,CAAC,aAAa;QAC9B,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE;QACxC,EAAE,EAAE,YAAY,CAAC,yBAAyB;QAC1C,WAAW,EAAE,6BAA6B;QAC1C,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,wEAAwE;QACrF,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACnB,EAAE,EAAE,YAAY,CAAC,IAAI;QACrB,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,kBAAkB;QAC/B,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACzB,EAAE,EAAE,YAAY,CAAC,UAAU;QAC3B,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,YAAY,CAAC,OAAO;QACxB,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACrB,EAAE,EAAE,YAAY,CAAC,MAAM;QACvB,WAAW,EAAE,QAAQ;QACrB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,4BAA4B;QACzC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IAED,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,YAAY,CAAC,OAAO;QACxB,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,gBAAgB,CAAC,SAAS;QACpC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IAED,EAAE;IACF,kBAAkB;IAClB,EAAE;IAEF,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACpB,EAAE,EAAE,YAAY,CAAC,KAAK;QACtB,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACnB,EAAE,EAAE,YAAY,CAAC,IAAI;QACrB,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;QAC1B,EAAE,EAAE,YAAY,CAAC,WAAW;QAC5B,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,YAAY,CAAC,OAAO;QACxB,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,EAAE,EAAE,YAAY,CAAC,QAAQ;QACzB,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACnB,EAAE,EAAE,YAAY,CAAC,IAAI;QACrB,WAAW,EAAE,cAAc;QAC3B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,EAAE,EAAE,YAAY,CAAC,QAAQ;QACzB,WAAW,EAAE,WAAW;QACxB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IACD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,YAAY,CAAC,OAAO;QACxB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IAED,EAAE;IACF,gBAAgB;IAChB,EAAE;IAEF,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACrB,EAAE,EAAE,YAAY,CAAC,MAAM;QACvB,WAAW,EAAE,eAAe;QAC5B,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;QACvB,EAAE,EAAE,YAAY,CAAC,QAAQ;QACzB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACzC,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;QAClB,EAAE,EAAE,YAAY,CAAC,GAAG;QACpB,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IAED,EAAE;IACF,sBAAsB;IACtB,EAAE;IAEF,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACpB,EAAE,EAAE,YAAY,CAAC,KAAK;QACtB,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,eAAe;QAC5B,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACpB,EAAE,EAAE,YAAY,CAAC,KAAK;QACtB,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;QAClB,EAAE,EAAE,YAAY,CAAC,GAAG;QACpB,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;QAC9B,EAAE,EAAE,YAAY,CAAC,eAAe;QAChC,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,gBAAgB,CAAC,OAAO;QAClC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,KAAK;KACjB;IAED,EAAE;IACF,gCAAgC;IAChC,EAAE;IAEF,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;QAC/B,EAAE,EAAE,YAAY,CAAC,gBAAgB;QACjC,WAAW,EAAE,2BAA2B;QACxC,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,gBAAgB,CAAC,YAAY;QACvC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QACnB,EAAE,EAAE,YAAY,CAAC,IAAI;QACrB,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,aAAa,CAAC,WAAW;QAChC,WAAW,EAAE,8BAA8B;QAC3C,QAAQ,EAAE,gBAAgB,CAAC,YAAY;QACvC,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACzB,EAAE,EAAE,YAAY,CAAC,UAAU;QAC3B,WAAW,EAAE,YAAY;QACzB,KAAK,EAAE,aAAa,CAAC,WAAW;QAChC,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,gBAAgB,CAAC,YAAY;QACvC,SAAS,EAAE,IAAI;KAChB;IAED,EAAE;IACF,uBAAuB;IACvB,EAAE;IAEF,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE;QACpC,EAAE,EAAE,YAAY,CAAC,qBAAqB;QACtC,WAAW,EAAE,wBAAwB;QACrC,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;IAED,EAAE;IACF,kBAAkB;IAClB,EAAE;IAEF,8EAA8E;IAC9E,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;QACzB,EAAE,EAAE,YAAY,CAAC,UAAU;QAC3B,WAAW,EAAE,YAAY;QACzB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,6BAA6B;QAC1C,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC1F,SAAS,EAAE,IAAI;KAChB;IACD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;QACtB,EAAE,EAAE,YAAY,CAAC,OAAO;QACxB,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,aAAa,CAAC,QAAQ;QAC7B,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,mBAAmB,EAAE,CAAC,QAAQ,CAAC;QAC/B,SAAS,EAAE,IAAI;KAChB;CACF,CAAA;AAkDD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,MAAM,MAAM,GAA6C;QACvD,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE;QAC/B,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE;QAChC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE;QAC9B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE;QAC/B,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE;QAC9B,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE;QACnC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE;QAC/B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE;KAChC,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChD,yDAAyD;QACzD,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAA0B,EAAkB,EAAE;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;AAC1F,CAAC,CAAA","sourcesContent":["/* eslint-disable no-redeclare */\n/* eslint-disable max-len */\nimport type { DomainPropertyType } from './DataFormat.js'\n\n/**\n * Defines the names for all available data semantics.\n * Using a string enum makes it easy to add or remove semantics in a single place.\n */\nexport enum SemanticType {\n //\n // Entity-Level Semantics\n //\n\n /**\n * Designates a Data Entity that represents users of the system.\n */\n User = 'Semantic#User',\n /**\n * Designates a Data Entity that represents a physical address.\n */\n Address = 'Semantic#Address',\n\n //\n // Property-Level Semantics\n //\n\n /**\n * Annotates the field as the user password.\n * The runtime should treat this field with special care,\n * ensuring it is encrypted and not exposed in API responses.\n */\n Password = 'Semantic#Password',\n /**\n * Annotates the field as the username for user authentication.\n * This identifies which field should be used for login purposes.\n * Can be applied to dedicated username fields or email fields that serve as usernames.\n * The runtime uses this for authentication, password reset, and user lookup operations.\n */\n Username = 'Semantic#Username',\n /**\n * Designates a Data Property as the `createdAt` timestamp of an entity.\n * This is used to track when the entity was first created.\n */\n CreatedTimestamp = 'Semantic#CreatedTimestamp',\n /**\n * Designates a Data Property as the `updatedAt` timestamp of an entity.\n * This is used to track when the entity was last modified.\n */\n UpdatedTimestamp = 'Semantic#UpdatedTimestamp',\n /**\n * Designates a Data Property as the `deletedAt` timestamp of an entity.\n * This is used to track when the entity was soft-deleted.\n * Soft-deletion means the entity is not physically removed from the database,\n * but marked as deleted for logical deletion purposes.\n */\n DeletedTimestamp = 'Semantic#DeletedTimestamp',\n /**\n * Designates a Data Property as a boolean flag indicating whether the entity is deleted.\n * This is used for soft-deletion, where the entity is not physically removed from the database,\n * but marked as deleted.\n */\n DeletedFlag = 'Semantic#DeletedFlag',\n /**\n * Designates a Data Property as a public identifier for a resource (the slug).\n * This is often used in URLs to provide a user-friendly way to access the resource.\n * For example, a blog post might have a public unique name like \"my-first-post\".\n * The runtime automatically generates a URL-safe string from another field (like a title).\n * By default, slugs are generated to be unique, but the configuration allows for duplicates\n * in scenarios where uniqueness is handled by a combination of fields (e.g., year and slug).\n */\n PublicUniqueName = 'Semantic#PublicUniqueName',\n /**\n * A semantic that describes a title of an article, blog post, and so on. This semantic is used with\n * the `PublicUniqueName` to determine which field is responsible for the slug generation. However,\n * we may add more automation related to the `title` property in the future.\n */\n Title = 'Semantic#Title',\n /**\n * A semantic that describes a name of a person or pet. This semantic is used with\n * the `PublicUniqueName` to determine which field is responsible for the slug generation. However,\n * we may add more automation related to the `name` property in the future.\n */\n Name = 'Semantic#Name',\n /**\n * Designates a Data Property as the `role` of a user within the system.\n * This is used to define the user's permissions and access levels.\n * For example, a user with the role of \"admin\" would have elevated permissions\n * compared to a user with the role of \"guest\".\n * Roles are defined on the entity as enums, or as a string property with a controlled vocabulary.\n */\n UserRole = 'Semantic#UserRole',\n /**\n * A text or enum field to represent the state of a record (e.g., `draft`, `published`, `pending_review`, `archived`).\n *\n * Defined behaviors:\n * - State-Based Filtering: Automatically prevents public users from seeing records in a draft state.\n * - State Transitions: In principle, the runtime should prevent the user from skipping some states.\n * For example, when the record is in the `draft` state, it cannot be moved to the `archived` state without publishing it first. However,\n * we do not have enough customer feedback to design this functionality correctly right now, so\n * it serves as a placeholder semantic annotation.\n */\n Status = 'Semantic#Status',\n\n /**\n * Annotates an integer field that automatically increments.\n * The runtime automatically increments this number on every update, providing a simple way\n * to track changes and implement optimistic locking to prevent mid-air collisions.\n */\n Version = 'Semantic#Version',\n\n /**\n * Annotates a field that holds a reference to an image data via an URL.\n * The application + runtime should validate that the input is a well-formed URL.\n */\n ImageURL = 'Semantic#ImageURL',\n\n /**\n * Annotates a field that holds a reference to a file object via an URL. Ity is distinct from the\n * `ImageURL` semantic as it implicitly states that the target is non-image, binary data (an attachment, for example).\n */\n FileURL = 'Semantic#FileURL',\n\n /**\n * Annotates the field as a markdown-interpreted field.\n * When an object is created, the runtime performs additional sanitization to prevent XSS attacks.\n *\n * The annotation describes whether the data should be translated to the HTML output when\n * record is read or the original MD content should be returned.\n */\n Markdown = 'Semantic#Markdown',\n\n /**\n * Annotates the field as containing HTML content.\n * The runtime performs sanitization to prevent XSS attacks and validates HTML structure.\n *\n * The annotation describes whether the data should be rendered as HTML output when\n * record is read or the original HTML content should be returned.\n */\n HTML = 'Semantic#HTML',\n\n /**\n * Annotates a field that holds geospatial coordinate data (latitude/longitude).\n * The runtime automatically generates API capabilities for location-based queries,\n * such as \"find all restaurants within a 5-mile radius.\"\n *\n * The field should contain coordinate data in a standard format:\n * - \"40.7128,-74.0060\" (lat,lon)\n * - \"POINT(-74.0060 40.7128)\" (PostGIS format)\n * - \"40.7128°N, 74.0060°W\" (degree format)\n *\n * Defined behaviors:\n * - Spatial Indexing: The runtime automatically creates spatial indexes for efficient location-based queries\n * - Distance Queries: Enables API endpoints for finding records within specified distances\n * - Coordinate Validation: Validates that the input follows proper coordinate format\n * - PostGIS Integration: When using PostgreSQL, automatically maps to PostGIS geometry types\n */\n GeospatialCoordinates = 'Semantic#GeospatialCoordinates',\n\n /**\n * Annotates a field as an email address with validation and verification options.\n */\n Email = 'Semantic#Email',\n /**\n * Annotates a field as a phone number with validation and formatting options.\n */\n Phone = 'Semantic#Phone',\n /**\n * Annotates a field as a monetary value with currency support and precision control.\n * Can store simple decimal amounts or complex objects with amount and currency.\n *\n * As a semantic, it provides flexibility by annotating a base `number` or `string` type,\n * allowing for different storage strategies (e.g., decimal, integer cents, or a JSON object)\n * while maintaining a consistent API for currency operations.\n */\n Currency = 'Semantic#Currency',\n /**\n * Annotates a field as a URL with validation and allowed protocols.\n */\n URL = 'Semantic#URL',\n /**\n * Annotates a field as a Stock Keeping Unit (SKU).\n * Enforces uniqueness at the database level, critical for product catalogs.\n * Provides automatic validation and formatting for product identification codes.\n */\n SKU = 'Semantic#SKU',\n /**\n * Annotates a field as a long-form description.\n */\n Description = 'Semantic#Description',\n /**\n * Annotates a field as a short summary.\n */\n Summary = 'Semantic#Summary',\n /**\n * Annotates a field as a calculated value based on a formula.\n */\n Calculated = 'Semantic#Calculated',\n /**\n * Annotates a field as derived from other fields.\n */\n Derived = 'Semantic#Derived',\n /**\n * Annotates a field that should automatically receive the client's IP address.\n * when creating or updating records, providing audit trail and geolocation capabilities.\n */\n ClientIPAddress = 'Semantic#ClientIPAddress',\n /**\n * Designates a Data Property as the street address (e.g., \"123 Main St\").\n */\n StreetAddress = 'Semantic#StreetAddress',\n /**\n * This is a single semantic used for any additional lines (Unit, Suite, Apartment, Floor).\n */\n StreetAddressSupplemental = 'Semantic#StreetAddressSupplemental',\n /**\n * Designates a Data Property as the city or locality.\n */\n City = 'Semantic#City',\n /**\n * Designates a Data Property as the postal or zip code.\n */\n PostalCode = 'Semantic#PostalCode',\n /**\n * Designates a Data Property as the country.\n */\n Country = 'Semantic#Country',\n /**\n * Designates a Data Property as the state, province, or region.\n */\n Region = 'Semantic#Region',\n\n //\n // Association-Level Semantics\n //\n\n /**\n * Designates an association that links a resource to a \"User\" entity instance.\n * This is used to indicate ownership of the resource for access control purposes.\n * For example, a blog post might have a resource owner identifier that points to the user who created it.\n *\n * Defined behaviors:\n * - Automatic Ownership: When a new record is created, this field is automatically populated with the ID of the authenticated user. It also creates a foreign relationship to the `User` semantic object.\n * - Scoped Access: The runtime automatically filters list and read operations to show only records where the Owner matches the current user. update and delete operations are similarly restricted.\n */\n ResourceOwnerIdentifier = 'Semantic#ResourceOwnerIdentifier',\n /**\n * Annotates an association as supporting tag functionality.\n * Applied to associations between entities to enable tagging behavior.\n * For example, a Product-Category association with Tags semantic enables product tagging.\n */\n Tags = 'Semantic#Tags',\n /**\n * Annotates an association as supporting category functionality.\n * Applied to associations between entities to enable categorization behavior.\n * For example, a Product-Category association with Categories semantic enables product categorization.\n */\n Categories = 'Semantic#Categories',\n}\n\n/**\n * Defines the scope at which a semantic can be applied.\n */\nexport enum SemanticScope {\n /**\n * The semantic applies to an entire Data Entity.\n * This is used for semantics that provide context or constraints at the entity level.\n */\n Entity = 'Entity',\n /**\n * The semantic applies to a single Data Property.\n * This is used for semantics that provide context or constraints at the property level.\n */\n Property = 'Property',\n /**\n * The semantic applies to an Association between Data Entities.\n * This is used for semantics that provide context or constraints at the association level.\n */\n Association = 'Association',\n}\n\n/**\n * Defines categories for organizing semantics in the UI.\n */\nexport enum SemanticCategory {\n /**\n * User management, authentication, and access control\n */\n Identity = 'Identity & Authentication',\n /**\n * Timestamps, versioning, and record lifecycle\n */\n Lifecycle = 'Timestamps & Versioning',\n /**\n * Text content, media, and rich content types\n */\n Content = 'Content & Media',\n /**\n * Business-specific data like pricing, inventory, status\n */\n Business = 'Business Data',\n /**\n * Organization, categorization, and tagging\n */\n Organization = 'Classification & Organization',\n /**\n * Location and geographical data\n */\n Location = 'Location & Geography',\n /**\n * Contact information and communication\n */\n Contact = 'Contact Information',\n /**\n * Calculated and derived values\n */\n Computed = 'Computed Values',\n}\n\n/**\n * A base interface for all Data Semantics, containing common properties.\n * A semantic is an annotation applied to a Data Entity, Property, or Association\n * to provide additional context or constraints.\n * This interface is extended by more specific semantic types.\n */\ninterface BaseDataSemantic {\n /**\n * A unique identifier for the semantic definition.\n */\n id: SemanticType\n /**\n * A human-readable name for the semantic.\n */\n displayName: string\n /**\n * A description of the semantic's purpose and impact.\n */\n description: string\n /**\n * Specifies whether the semantic applies to an Entity, Property, or Association.\n */\n scope: SemanticScope\n /**\n * The category this semantic belongs to for UI organization.\n */\n category: SemanticCategory\n /**\n * Whether the semantic has a configuration or additional options.\n * This is used to determine if the semantic requires additional setup or configuration.\n */\n hasConfig: boolean\n}\n\n/**\n * Represents a semantic that can be applied to an entire Data Entity.\n */\nexport interface EntitySemantic extends BaseDataSemantic {\n scope: SemanticScope.Entity\n}\n\n/**\n * Represents a semantic that can be applied to a single property.\n */\nexport interface PropertySemantic extends BaseDataSemantic {\n scope: SemanticScope.Property\n /**\n * Optional array of data types this semantic can be applied to.\n * Enforces constraints, e.g., DeletedTimestamp on a DateTime property.\n */\n applicableDataTypes?: DomainPropertyType[]\n}\n\n/**\n * Represents a semantic that can be applied to an association between entities.\n */\nexport interface AssociationSemantic extends BaseDataSemantic {\n scope: SemanticScope.Association\n}\n\n/**\n * A type guard to check if a semantic is an EntitySemantic.\n */\nexport const isEntitySemantic = (semantic: DataSemantic): semantic is EntitySemantic =>\n semantic.scope === SemanticScope.Entity\n\n/**\n * A type guard to check if a semantic is a PropertySemantic.\n */\nexport const isPropertySemantic = (semantic: DataSemantic): semantic is PropertySemantic =>\n semantic.scope === SemanticScope.Property\n\n/**\n * A type guard to check if a semantic is a AssociationSemantic.\n */\nexport const isAssociationSemantic = (semantic: DataSemantic): semantic is AssociationSemantic =>\n semantic.scope === SemanticScope.Association\n\n/**\n * Union type for any kind of data semantic\n */\nexport type DataSemantic = EntitySemantic | PropertySemantic | AssociationSemantic\n\n/**\n * A map to store the definitions of all available data semantics.\n * This acts as a central registry for the application.\n */\nexport const DataSemantics: Record<SemanticType, DataSemantic> = {\n //\n // Identity & Authentication\n //\n\n [SemanticType.User]: {\n id: SemanticType.User,\n displayName: 'User Entity',\n scope: SemanticScope.Entity,\n description: 'System users and accounts',\n category: SemanticCategory.Identity,\n hasConfig: false,\n },\n [SemanticType.Password]: {\n id: SemanticType.Password,\n displayName: 'User Password',\n scope: SemanticScope.Property,\n description: 'Secure password field',\n category: SemanticCategory.Identity,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.Username]: {\n id: SemanticType.Username,\n displayName: 'Username',\n scope: SemanticScope.Property,\n description: 'User authentication identifier',\n category: SemanticCategory.Identity,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.UserRole]: {\n id: SemanticType.UserRole,\n displayName: 'User Role Field',\n scope: SemanticScope.Property,\n description: 'User permissions and access level',\n category: SemanticCategory.Identity,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.ResourceOwnerIdentifier]: {\n id: SemanticType.ResourceOwnerIdentifier,\n displayName: 'Resource Owner Identifier',\n scope: SemanticScope.Association,\n description: 'Links record to owner user',\n category: SemanticCategory.Identity,\n hasConfig: false,\n },\n\n //\n // Timestamps & Versioning\n //\n\n [SemanticType.CreatedTimestamp]: {\n id: SemanticType.CreatedTimestamp,\n displayName: 'Creation Timestamp',\n scope: SemanticScope.Property,\n description: 'When record was created',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['datetime'],\n hasConfig: false,\n },\n [SemanticType.UpdatedTimestamp]: {\n id: SemanticType.UpdatedTimestamp,\n displayName: 'Update Timestamp',\n scope: SemanticScope.Property,\n description: 'When record was last modified',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['datetime'],\n hasConfig: false,\n },\n [SemanticType.DeletedTimestamp]: {\n id: SemanticType.DeletedTimestamp,\n displayName: 'Soft Delete Timestamp',\n scope: SemanticScope.Property,\n description: 'When record was marked deleted',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['datetime'],\n hasConfig: false,\n },\n [SemanticType.DeletedFlag]: {\n id: SemanticType.DeletedFlag,\n displayName: 'Soft Delete Flag',\n scope: SemanticScope.Property,\n description: 'Mark record as deleted',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['boolean'],\n hasConfig: false,\n },\n\n //\n // Contact & Address\n //\n\n [SemanticType.Address]: {\n id: SemanticType.Address,\n displayName: 'Address Entity',\n scope: SemanticScope.Entity,\n description: 'Physical address entity',\n category: SemanticCategory.Contact,\n // For now, the Address won't have configuration, but future-wise:\n // - autoGeocode (boolean): If true, the runtime automatically generates latitude and longitude for the record whenever the address properties change.\n // - validationProvider (enum): Options like None, GoogleMaps, or Loqate. This determines if the API returns an error for non-existent addresses.\n // - strictness (enum): Lax (accept anything) vs. Strict (reject if not deliverable).\n hasConfig: false,\n },\n [SemanticType.StreetAddress]: {\n id: SemanticType.StreetAddress,\n displayName: 'Street Address',\n scope: SemanticScope.Property,\n description: 'Street address line',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.StreetAddressSupplemental]: {\n id: SemanticType.StreetAddressSupplemental,\n displayName: 'Street Address Supplemental',\n scope: SemanticScope.Property,\n description: 'Supplemental street address line (e.g., Unit, Suite, Apartment, Floor)',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.City]: {\n id: SemanticType.City,\n displayName: 'City',\n scope: SemanticScope.Property,\n description: 'City or locality',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.PostalCode]: {\n id: SemanticType.PostalCode,\n displayName: 'Postal Code',\n scope: SemanticScope.Property,\n description: 'Postal or zip code',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.Country]: {\n id: SemanticType.Country,\n displayName: 'Country',\n scope: SemanticScope.Property,\n description: 'Country name or code',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.Region]: {\n id: SemanticType.Region,\n displayName: 'Region',\n scope: SemanticScope.Property,\n description: 'State, province, or region',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n\n [SemanticType.Version]: {\n id: SemanticType.Version,\n displayName: 'Version Number',\n scope: SemanticScope.Property,\n description: 'Auto-incrementing version counter',\n category: SemanticCategory.Lifecycle,\n applicableDataTypes: ['number'],\n hasConfig: false,\n },\n\n //\n // Content & Media\n //\n\n [SemanticType.Title]: {\n id: SemanticType.Title,\n displayName: 'Record Title',\n scope: SemanticScope.Property,\n description: 'Main title or heading',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.Name]: {\n id: SemanticType.Name,\n displayName: 'Name',\n scope: SemanticScope.Property,\n description: 'A person or pet name',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.Description]: {\n id: SemanticType.Description,\n displayName: 'Description',\n scope: SemanticScope.Property,\n description: 'Detailed description text',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.Summary]: {\n id: SemanticType.Summary,\n displayName: 'Summary',\n scope: SemanticScope.Property,\n description: 'Brief summary text',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.Markdown]: {\n id: SemanticType.Markdown,\n displayName: 'Markdown Content',\n scope: SemanticScope.Property,\n description: 'Formatted text content',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.HTML]: {\n id: SemanticType.HTML,\n displayName: 'HTML Content',\n scope: SemanticScope.Property,\n description: 'Rich HTML content',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.ImageURL]: {\n id: SemanticType.ImageURL,\n displayName: 'Image URL',\n scope: SemanticScope.Property,\n description: 'Link to image file',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n [SemanticType.FileURL]: {\n id: SemanticType.FileURL,\n displayName: 'File URL',\n scope: SemanticScope.Property,\n description: 'Link to file attachment',\n category: SemanticCategory.Content,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n\n //\n // Business Data\n //\n\n [SemanticType.Status]: {\n id: SemanticType.Status,\n displayName: 'Record Status',\n scope: SemanticScope.Property,\n description: 'Current state of record',\n category: SemanticCategory.Business,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.Currency]: {\n id: SemanticType.Currency,\n displayName: 'Currency',\n scope: SemanticScope.Property,\n description: 'Monetary value with currency',\n category: SemanticCategory.Business,\n applicableDataTypes: ['number', 'string'],\n hasConfig: true,\n },\n [SemanticType.SKU]: {\n id: SemanticType.SKU,\n displayName: 'SKU',\n scope: SemanticScope.Property,\n description: 'Product identification code',\n category: SemanticCategory.Business,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n\n //\n // Contact Information\n //\n\n [SemanticType.Email]: {\n id: SemanticType.Email,\n displayName: 'Email',\n scope: SemanticScope.Property,\n description: 'Email address',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.Phone]: {\n id: SemanticType.Phone,\n displayName: 'Phone',\n scope: SemanticScope.Property,\n description: 'Phone number',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.URL]: {\n id: SemanticType.URL,\n displayName: 'URL',\n scope: SemanticScope.Property,\n description: 'Web address or link',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.ClientIPAddress]: {\n id: SemanticType.ClientIPAddress,\n displayName: 'Client IP Address',\n scope: SemanticScope.Property,\n description: 'Automatically populated client IP address',\n category: SemanticCategory.Contact,\n applicableDataTypes: ['string'],\n hasConfig: false,\n },\n\n //\n // Classification & Organization\n //\n\n [SemanticType.PublicUniqueName]: {\n id: SemanticType.PublicUniqueName,\n displayName: 'Public Unique Name (Slug)',\n scope: SemanticScope.Property,\n description: 'URL-friendly unique identifier',\n category: SemanticCategory.Organization,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n [SemanticType.Tags]: {\n id: SemanticType.Tags,\n displayName: 'Tags',\n scope: SemanticScope.Association,\n description: 'Enable tagging functionality',\n category: SemanticCategory.Organization,\n hasConfig: true,\n },\n [SemanticType.Categories]: {\n id: SemanticType.Categories,\n displayName: 'Categories',\n scope: SemanticScope.Association,\n description: 'Enable categorization functionality',\n category: SemanticCategory.Organization,\n hasConfig: true,\n },\n\n //\n // Location & Geography\n //\n\n [SemanticType.GeospatialCoordinates]: {\n id: SemanticType.GeospatialCoordinates,\n displayName: 'Geospatial Coordinates',\n scope: SemanticScope.Property,\n description: 'Location coordinates',\n category: SemanticCategory.Location,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n\n //\n // Computed Values\n //\n\n // Calculated field can be added to any data type as we can compute any value.\n [SemanticType.Calculated]: {\n id: SemanticType.Calculated,\n displayName: 'Calculated',\n scope: SemanticScope.Property,\n description: 'Auto-calculated field value',\n category: SemanticCategory.Computed,\n applicableDataTypes: ['string', 'number', 'boolean', 'date', 'datetime', 'time', 'binary'],\n hasConfig: true,\n },\n [SemanticType.Derived]: {\n id: SemanticType.Derived,\n displayName: 'Derived',\n scope: SemanticScope.Property,\n description: 'Value derived from other fields',\n category: SemanticCategory.Computed,\n applicableDataTypes: ['string'],\n hasConfig: true,\n },\n}\n\n// /**\n// * Get all semantics that should run for a specific operation and timing\n// */\n// export function getSemanticsForOperation(\n// semantics: AppliedDataSemantic[],\n// operation: SemanticOperation,\n// timing: SemanticTiming\n// ): AppliedDataSemantic[] {\n// return semantics\n// .filter((semantic) => {\n// const definition = DataSemantics[semantic.id]\n// if (!definition?.runtime) {\n// return false\n// }\n\n// const { timing: semanticTiming, operations } = definition.runtime\n\n// // Check if timing matches\n// const timingMatches = semanticTiming === timing || semanticTiming === SemanticTiming.Both\n\n// // Check if operation is included\n// const operationMatches = operations.includes(operation)\n\n// return timingMatches && operationMatches\n// })\n// .sort((a, b) => {\n// // Sort by priority (lower number = higher priority)\n// const priorityA = DataSemantics[a.id]?.runtime?.priority ?? 100\n// const priorityB = DataSemantics[b.id]?.runtime?.priority ?? 100\n// return priorityA - priorityB\n// })\n// }\n\n// /**\n// * Check if a specific semantic can be disabled at runtime\n// */\n// export function canSemanticBeDisabled(semanticType: SemanticType): boolean {\n// const definition = DataSemantics[semanticType]\n// return definition?.runtime?.canDisable !== false // Default to true if not specified\n// }\n\nexport function getSemanticsByCategory(): Record<SemanticCategory, DataSemantic[]>\nexport function getSemanticsByCategory(scope: SemanticScope.Entity): Record<SemanticCategory, EntitySemantic[]>\nexport function getSemanticsByCategory(scope: SemanticScope.Property): Record<SemanticCategory, PropertySemantic[]>\nexport function getSemanticsByCategory(\n scope: SemanticScope.Association\n): Record<SemanticCategory, AssociationSemantic[]>\n\n/**\n * Helper function to get all semantics grouped by category.\n * Useful for organizing semantics in UI dropdowns and forms.\n *\n * @param scope Optional scope to filter semantics by (Entity, Property, Association)\n */\nexport function getSemanticsByCategory(scope?: SemanticScope): Record<SemanticCategory, DataSemantic[]> {\n const result: Record<SemanticCategory, DataSemantic[]> = {\n [SemanticCategory.Identity]: [],\n [SemanticCategory.Lifecycle]: [],\n [SemanticCategory.Content]: [],\n [SemanticCategory.Business]: [],\n [SemanticCategory.Contact]: [],\n [SemanticCategory.Organization]: [],\n [SemanticCategory.Location]: [],\n [SemanticCategory.Computed]: [],\n }\n\n Object.values(DataSemantics).forEach((semantic) => {\n // If a scope is provided, filter semantics by that scope\n if (scope && semantic.scope !== scope) {\n return\n }\n result[semantic.category].push(semantic)\n })\n\n return result\n}\n\n/**\n * Helper function to get semantics for a specific category.\n * @param category The category to filter by\n * @returns Array of semantics in the specified category\n */\nexport const getSemanticsByCategoryType = (category: SemanticCategory): DataSemantic[] => {\n return Object.values(DataSemantics).filter((semantic) => semantic.category === category)\n}\n\n/**\n * Represents the application of a data semantic to a specific\n * entity or property within a user's data model.\n */\nexport interface AppliedDataSemantic {\n /**\n * The unique identifier of the semantic being applied.\n */\n id: SemanticType\n\n /**\n * Optional configuration or values specific to this application.\n */\n config?: Record<string, unknown>\n}\n"]}
|
|
@@ -24,7 +24,6 @@ export declare function get_semantic_details(config: ToolConfig, { semanticId }:
|
|
|
24
24
|
description: string;
|
|
25
25
|
category: import("../../Semantics.js").SemanticCategory;
|
|
26
26
|
hasConfig: boolean;
|
|
27
|
-
runtime: import("../../Semantics.js").SemanticRuntimeConfig;
|
|
28
27
|
} | {
|
|
29
28
|
configSchema: unknown;
|
|
30
29
|
scope: import("../../Semantics.js").SemanticScope.Property;
|
|
@@ -34,7 +33,6 @@ export declare function get_semantic_details(config: ToolConfig, { semanticId }:
|
|
|
34
33
|
description: string;
|
|
35
34
|
category: import("../../Semantics.js").SemanticCategory;
|
|
36
35
|
hasConfig: boolean;
|
|
37
|
-
runtime: import("../../Semantics.js").SemanticRuntimeConfig;
|
|
38
36
|
} | {
|
|
39
37
|
configSchema: unknown;
|
|
40
38
|
scope: import("../../Semantics.js").SemanticScope.Association;
|
|
@@ -43,6 +41,5 @@ export declare function get_semantic_details(config: ToolConfig, { semanticId }:
|
|
|
43
41
|
description: string;
|
|
44
42
|
category: import("../../Semantics.js").SemanticCategory;
|
|
45
43
|
hasConfig: boolean;
|
|
46
|
-
runtime: import("../../Semantics.js").SemanticRuntimeConfig;
|
|
47
44
|
}>;
|
|
48
45
|
//# sourceMappingURL=Semantic.tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Semantic.tools.d.ts","sourceRoot":"","sources":["../../../../../src/modeling/ai/tools/Semantic.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU;;;;;;;IAUhD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"Semantic.tools.d.ts","sourceRoot":"","sources":["../../../../../src/modeling/ai/tools/Semantic.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU;;;;;;;IAUhD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;GAerG"}
|
|
@@ -112,6 +112,56 @@ export interface SchemaDefaultValue {
|
|
|
112
112
|
* It is always a string and it has to be casted to the property's data type.
|
|
113
113
|
*/
|
|
114
114
|
value: string | FunctionValue;
|
|
115
|
+
/**
|
|
116
|
+
* When the `value` is a function, the `config` property is used to configure the function.
|
|
117
|
+
* The type of the config depends on the function and the property data type.
|
|
118
|
+
*/
|
|
119
|
+
config?: FunctionGeneratorConfig;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A union of all possible function generator configurations.
|
|
123
|
+
*/
|
|
124
|
+
export type FunctionGeneratorConfig = StringDefaultRandomGenerator;
|
|
125
|
+
/**
|
|
126
|
+
* Configuration for the `random` function for string properties.
|
|
127
|
+
*/
|
|
128
|
+
export interface StringDefaultRandomGenerator {
|
|
129
|
+
/**
|
|
130
|
+
* When set the `max` and `min` are used.
|
|
131
|
+
* Otherwise a random string of fixed length (the `fixed` property) is generated.
|
|
132
|
+
*/
|
|
133
|
+
varyingLength?: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* The minimum length of the random string.
|
|
136
|
+
*
|
|
137
|
+
* When not specified, it defaults to `10`.
|
|
138
|
+
* The `varyingLength` must be `true` to use this property.
|
|
139
|
+
*/
|
|
140
|
+
min?: number;
|
|
141
|
+
/**
|
|
142
|
+
* The maximum length of the random string.
|
|
143
|
+
*
|
|
144
|
+
* When not specified, it defaults to `30`.
|
|
145
|
+
* The `varyingLength` must be `true` to use this property.
|
|
146
|
+
*/
|
|
147
|
+
max?: number;
|
|
148
|
+
/**
|
|
149
|
+
* The fixed length of the random string.
|
|
150
|
+
*
|
|
151
|
+
* When not specified, it defaults to `10`.
|
|
152
|
+
* The `varyingLength` must be `false` to use this property.
|
|
153
|
+
*/
|
|
154
|
+
fixed?: number;
|
|
155
|
+
/**
|
|
156
|
+
* The prefix to add to the random string.
|
|
157
|
+
* The prefix adds to the length of the random string.
|
|
158
|
+
*/
|
|
159
|
+
prefix?: string;
|
|
160
|
+
/**
|
|
161
|
+
* The suffix to add to the random string.
|
|
162
|
+
* The suffix adds to the length of the random string.
|
|
163
|
+
*/
|
|
164
|
+
suffix?: string;
|
|
115
165
|
}
|
|
116
166
|
/**
|
|
117
167
|
* A general schema definition for a property.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modeling/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAA;CAC5C;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,CAAA;AAEnH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAA;AAClD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,CAAA;AAC3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAA;AACjC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAA;AACrC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAA;AACjC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,GAAG,aAAa,CAAA;AAEjH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,EAAE,SAAS,GAAG,UAAU,CAAA;IAC5B;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modeling/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAA;CAC5C;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,iBAAiB,CAAA;AAEnH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAA;AAClD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,CAAA;AAC3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAA;AACjC;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAA;AACrC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,CAAA;AACjC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,GAAG,aAAa,CAAA;AAEjH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,EAAE,SAAS,GAAG,UAAU,CAAA;IAC5B;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,aAAa,CAAA;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,4BAA4B,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAA;AAClF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;AAEzE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,sBAAsB,GAC9B,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,QAAQ,GACR,UAAU,GACV,OAAO,CAAA;AAEX;;;GAGG;AACH,UAAU,gBAAgB;IACxB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,QAAQ,CAAA;IACd;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAA;IACxB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,KAAK,CAAA;IACX;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B;;OAEG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAE5B;;OAEG;IACH,GAAG,CAAC,EAAE,gBAAgB,CAAA;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,uBAAwB,SAAQ,0BAA0B;IACzE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA8B,SAAQ,2BAA2B;IAChF,QAAQ,EAAE,kBAAkB,CAAA;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAAA;AAElE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,iBAAiB,CAAA;IAC9B;;;;;;;;;;;;;;;OAeG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,MAAM,EAAE,iBAAiB,CAAA;IACzB;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,eAAe,CAAA;IAExB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;IAE7B;;OAEG;IACH,OAAO,EAAE,YAAY,EAAE,CAAA;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,+BAA+B,CAAA;IAE9C;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,WAAW,EAAE,iBAAiB,CAAA;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,IAAI,EAAE,QAAQ,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,IAAI,EAAE,QAAQ,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,EAAE,CAAA;CAC7D;AAED,MAAM,MAAM,iBAAiB,GACzB,OAAO,mBAAmB,GAC1B,OAAO,gBAAgB,GACvB,OAAO,eAAe,GACtB,OAAO,kBAAkB,GACzB,OAAO,qBAAqB,GAC5B,OAAO,cAAc,CAAA;AAEzB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,IAAI,EAAE,iBAAiB,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IACtC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAA;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,cAAc,CAAA;IACpH;;OAEG;IACH,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,KAAK,EAAE,eAAe,CAAA;IACtB;;OAEG;IACH,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC9B;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,OAAO,mBAAmB,GAC1B,OAAO,eAAe,GACtB,OAAO,gBAAgB,GACvB,OAAO,kBAAkB,GACzB,OAAO,qBAAqB,CAAA;AAEhC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAEvB;;OAEG;IACH,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAEhC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAE/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,mBAAmB,CAAA;IAEzB;;OAEG;IACH,aAAa,EAAE,CAAC,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC,EAAE,CAAA;IAEzD;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;IACtC;;OAEG;IACH,OAAO,EAAE,yBAAyB,CAAA;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAA;CAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modeling/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { GraphJson } from '@api-client/graph/graph/types.js'\nimport type { Graph } from '@api-client/graph/graph/Graph.js'\nimport type { DomainAssociation } from './DomainAssociation.js'\nimport type { DomainEntity } from './DomainEntity.js'\nimport type { DomainModel } from './DomainModel.js'\nimport type { DomainNamespace } from './DomainNamespace.js'\nimport type { DomainProperty } from './DomainProperty.js'\nimport type {\n DomainNamespaceKind,\n DomainEntityKind,\n DomainModelKind,\n DomainPropertyKind,\n DomainAssociationKind,\n DataDomainKind,\n ExposedEntityKind,\n} from '../models/kinds.js'\nimport type { DataDomain } from './DataDomain.js'\nimport { AccessRuleSchema } from './rules/AccessRule.js'\nimport { RateLimitingConfigurationSchema } from './rules/RateLimitingConfiguration.js'\nimport { ActionSchema } from './actions/Action.js'\n\nexport interface DataDomainRemoveOptions {\n /**\n * When true, the object will be forcibly removed.\n * The resolution defined in the `ImpactResolution` class will be applied.\n *\n * For example, when removing an entity that is a parent to another entity, it will\n * removed itself as a parent from the child entity.\n *\n * Note, this option should only be used when the DomainImpactAnalysis has been performed\n * and the user was informed of the impact.\n */\n force?: boolean\n}\n\nexport interface DomainGraphEdge {\n /**\n * Indicates that the edge is to or from a foreign domain.\n */\n foreign?: boolean\n /**\n * The key of the foreign domain. Always set with the `foreign` property.\n */\n domain?: string\n /**\n * The type of the edge.\n * - `association` The edge is to an association object.\n * - When coming **from** an entity (the `v` property), that entity owns the association.\n * - When coming **to** an entity (the `w` property), that entity is the target of the association.\n * An association can have multiple targets.\n * - `property` The edge is to a property object. Can only be created between an entity and a property.\n * - The **from** (`v`) is the entity.\n * - The **to** (`w`) is the property.\n * - `parent` The edge is to a parent object.\n * - The **from** (`v`) is the child entity.\n * - The **to** (`w`) is the parent entity.\n */\n type: 'association' | 'property' | 'parent'\n}\n\nexport type DomainGraphNodeType = DomainNamespace | DomainModel | DomainEntity | DomainProperty | DomainAssociation\n\n/**\n * An interface that describes the data domain dependency.\n */\nexport interface ForeignDomainDependency {\n /**\n * The system registered key of the foreign domain.\n */\n key: string\n /**\n * The version of the foreign domain used in this domain.\n */\n version: string\n}\n\nexport interface AssociationTarget {\n /**\n * The key of the target entity.\n */\n key: string\n /**\n * The key of the target data domain.\n * This is only set when the target is in a different data domain.\n */\n domain?: string\n}\n\n/**\n * The list of functions supported for string properties.\n */\nexport type StringFunctions = 'random' | 'uuid-v4'\n/**\n * The list of functions supported for number properties.\n */\nexport type NumberFunctions = 'incremental'\n/**\n * The list of functions supported for date properties.\n */\nexport type DateFunctions = 'now'\n/**\n * The list of functions supported for datetime properties.\n */\nexport type DateTimeFunctions = 'now'\n/**\n * The list of functions supported for time properties.\n */\nexport type TimeFunctions = 'now'\n/**\n * The list of all functions that can be used as default values for properties.\n */\nexport type FunctionValue = StringFunctions | NumberFunctions | DateFunctions | DateTimeFunctions | TimeFunctions\n\n/**\n * Describes the default value set on a property schema.\n */\nexport interface SchemaDefaultValue {\n /**\n * The type of the default value.\n *\n * - `literal` The `value` should be used as-is.\n * - `function` The value represents the name of the function to be used.\n */\n type: 'literal' | 'function'\n /**\n * The actual value type depends on the `type`.\n * It is always a string and it has to be casted to the property's data type.\n */\n value: string | FunctionValue\n}\n\n/**\n * A general schema definition for a property.\n * This is propagated to all bindings (when they support these properties).\n */\nexport interface PropertySchema {\n /**\n * The minimum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMinimum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n minimum?: number\n /**\n * The maximum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMaximum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n maximum?: number\n /**\n * When set, the minimum value is exclusive.\n *\n * - When `false`: value ≥ minimum.\n * - When `true`: value > minimum.\n */\n exclusiveMinimum?: boolean\n /**\n * When set, the exclusiveMaximum value is exclusive.\n *\n * - When `false`: value ≤ maximum.\n * - When `true`: value < minimum.\n */\n exclusiveMaximum?: boolean\n /**\n * The multiplier value for a number scalar.\n *\n * Examples:\n * - if `1` then every integer is allowed\n * - if `2` than every even number is allowed\n * - if `0.5` than every number dividable by `0.5` is allowed\n */\n multipleOf?: number\n /**\n * The enum values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n enum?: string[]\n /**\n * The default value for the property.\n * This is always encoded as a string. The actual type is defined in the `dataType` property.\n */\n defaultValue?: SchemaDefaultValue\n /**\n * The example values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n examples?: string[]\n /**\n * The pattern to use with a string scalar.\n */\n pattern?: string\n}\n\n/**\n * The shortcut type for the data domain graph.\n */\nexport type DataDomainGraph = Graph<unknown, DomainGraphNodeType, DomainGraphEdge>\n/**\n * The serialized version of the data domain graph.\n */\nexport type SerializedGraph = GraphJson<unknown, object, DomainGraphEdge>\n\n/**\n * Represents a standardized, machine-readable error response body\n * as defined by RFC 7807 for HTTP APIs.\n */\nexport interface ProblemDetails {\n /**\n * A URI that identifies the specific problem type. Should resolve to human-readable docs.\n * e.g., \"https://docs.apinow.app/errors/validation-failed\"\n */\n type: string\n\n /**\n * A short, human-readable summary of the problem type.\n * e.g., \"Validation Error\"\n */\n title: string\n\n /**\n * The HTTP status code generated by the origin server for this problem.\n */\n status?: number\n\n /**\n * A human-readable explanation specific to this occurrence of the problem.\n */\n detail?: string\n\n /**\n * A URI that identifies the specific occurrence of the problem.\n * Can be the API request path that caused the error.\n */\n instance: string\n}\n\n/**\n * The set of supported filter operators for the List and search action.\n * These are used in query parameters, e.g., ?price[gte]=100\n *\n * - eq: Equal\n * - neq: Not Equal\n * - in: Value is one of the elements in the provided array\n * - nin: Value is not one of the elements in the provided array\n * - lt: Less Than\n * - lte: Less Than or Equal\n * - gt: Greater Than\n * - gte: Greater Than or Equal\n * - exists: Checks if the field exists\n *\n * Search filters only:\n * - contains: String contains substring / Array contains element (Substring Match)\n * - match: Lexical Match, multi-word queries against long text.\n */\nexport type ResourceFilterOperator =\n | 'eq' // Equal\n | 'neq' // Not equal\n | 'in' // Value is one of the elements in the provided array\n | 'nin' // Value is not one of the elements in the provided array\n | 'lt' // Less than\n | 'lte' // Less than or equal\n | 'gt' // Greater than\n | 'gte' // Greater than or equal\n | 'exists' // Checks if the field exists\n | 'contains' // String contains substring / Array contains element (Substring Match)\n | 'match' // Lexical Match, multi-word queries against long text.\n\n/**\n * The session transport configuration interface.\n * This defines the properties that are common to all session transports.\n */\ninterface SessionTransport {\n /**\n * Whether the session transport is enabled.\n */\n enabled: boolean\n /**\n * The kind of session transport. Each interface defines its own kind.\n */\n kind: string\n}\n\n/**\n * Configuration for cookie-based session transport.\n */\nexport interface CookieConfiguration extends SessionTransport {\n kind: 'cookie'\n /**\n * The lifetime of the cookie session.\n * This is a string representing the duration, e.g., \"7d\" for 7 days or \"24h\" for 24 hours.\n *\n * @default \"7d\"\n */\n lifetime: string\n /**\n * Whether the cookie can only be accessed by the server.\n * This is a security feature to prevent client-side scripts from accessing the cookie.\n * If set to false, the cookie can be accessed by client-side scripts.\n * @default true\n */\n httpOnly: boolean // Defaults to true\n /**\n * Whether the cookie should only be sent over secure connections (HTTPS).\n * This is a security feature to prevent the cookie from being sent over unencrypted connections.\n * @default true\n */\n secure: boolean\n /**\n * The SameSite attribute of the cookie.\n * This attribute controls whether the cookie is sent with cross-site requests.\n * - 'none' means the cookie is sent with cross-site requests.\n * - 'lax' means the cookie is sent with top-level navigations and will be sent along with GET\n * requests initiated by third-party websites.\n * @default 'none'\n */\n sameSite: 'none' | 'lax'\n /**\n * The name of the cookie.\n * This is the key under which the session data will be stored in the cookie.\n * @default 'as' - 'as' stands for \"api session\"\n */\n name: string\n}\n\n/**\n * Configuration for JWT-based session transport.\n */\nexport interface JwtConfiguration extends SessionTransport {\n kind: 'jwt'\n /**\n * The lifetime of the JWT token.\n * This is a string representing the duration, e.g., \"7d\" for 7 days or \"15m\" for 15 minutes.\n *\n * @default \"7d\"\n */\n lifetime: string\n}\n\nexport interface SessionConfiguration {\n /**\n * The secret used to sign the JWT and cookies. Should be handled securely.\n * Not visible in the UI after being set.\n */\n secret: string\n /**\n * The properties to be set on the session `User` object.\n * These properties become available in the `request.auth` object at runtime.\n * The properties are coming from the `User` entity (marked by the Semantic model).\n */\n properties: AssociationTarget[]\n /**\n * The cookie-based session transport configuration.\n */\n cookie?: CookieConfiguration\n\n /**\n * The JWT-based session transport configuration.\n */\n jwt?: JwtConfiguration\n}\n\n/**\n * Defines the authorization strategy for the API.\n * It is a base interface that can be extended for different strategies.\n * For MVP, we will start with Roles-Based Access Control (RBAC).\n */\nexport interface AuthorizationConfiguration {\n /**\n * The authorization strategy. For MVP, we will start with RBAC.\n * Post-MVP will include Permission-Based Access Control (PBAC).\n * The strategy determines how users are granted access to resources.\n *\n * - RBAC (Roles-Based Access Control): Users are assigned roles, and permissions are granted to those roles.\n * - PBAC (Permission-Based Access Control): Users are granted permissions directly, allowing for more\n * granular control.\n */\n strategy: string\n}\n\nexport interface RolesBasedAccessControl extends AuthorizationConfiguration {\n strategy: 'RBAC'\n}\n\nexport type AuthorizationStrategy = RolesBasedAccessControl\n\n/**\n * Configures the strategy for authenticating end-users.\n * An API can only support one authentication strategy at a time.\n * This is a base interface that can be extended for different strategies.\n */\nexport interface AuthenticationConfiguration {\n /**\n * The authentication method. For MVP, this is focused on username/password.\n * This can be extended in the future to include 'SSO'.\n */\n strategy: string\n}\n\n/**\n * Configuration for username/password authentication.\n * This is the primary authentication method for the API (MVP).\n */\nexport interface UsernamePasswordConfiguration extends AuthenticationConfiguration {\n strategy: 'UsernamePassword'\n}\n\nexport type AuthenticationStrategy = UsernamePasswordConfiguration\n\n/**\n * Represents a Data Entity from the Data Domain that the API will expose and operate upon.\n */\nexport interface ExposedEntitySchema {\n kind: typeof ExposedEntityKind\n /**\n * The unique identifier for this exposure instance.\n * In the exposure model, we need to uniquely identify each exposure instance, because\n * an entity can be exposed multiple times in different contexts. Consider the following structure:\n *\n * ```\n * /categories/{categoryId}\n * /products/{productId}/categories\n * /products/{productId}/categories/{categoryId}\n * /promotions/{promotionId}/categories\n * /promotions/{promotionId}/categories/{categoryId}\n * ```\n *\n * The `category` entity would be exposed multiple times (as root and nested under products and promotions).\n * We need a way to distinguish between these different exposure instances.\n */\n key: string\n /**\n * A pointer to a Data Entity from the Data Domain.\n */\n entity: AssociationTarget\n /**\n * Indicates whether this exposure has a collection endpoint.\n * A collection endpoint is optional for nested exposures where the association is 1:1\n * and the schema is embedded directly under the parent resource.\n */\n hasCollection: boolean\n /**\n * A path to the collection endpoint for this exposure.\n * Starts with '/'. Not set for 1:1 nested exposures where collection does not exist.\n */\n collectionPath?: string\n\n /**\n * A path to the resource endpoint for this exposure.\n * Starts with '/'. For 1:1 nested exposures the resource path typically does not include an id segment.\n */\n resourcePath: string\n\n /**\n * Whether this exposure is a root exposure (top-level collection).\n * If this is set then the `parent` reference must be populated.\n */\n isRoot?: boolean\n\n /**\n * Parent reference when this exposure was created via following an association.\n */\n parent?: ExposeParentRef\n\n /**\n * Expose-time config used to create this exposure (persisted for auditing/UI).\n * This is only populated for the root exposure. All children exposures inherit this config.\n */\n exposeOptions?: ExposeOptions\n\n /**\n * The list of enabled API actions for this exposure (List/Read/Create/etc.)\n */\n actions: ActionSchema[]\n\n /**\n * Optional array of access rules that define the access control policies for this exposure.\n */\n accessRule?: AccessRuleSchema[]\n\n /**\n * Optional configuration for rate limiting for this exposure.\n */\n rateLimiting?: RateLimitingConfigurationSchema\n\n /**\n * When true, generation for this exposure hit configured limits\n */\n truncated?: boolean\n /**\n * Pagination contract for this exposure.\n */\n paginationContract?: PaginationContract\n}\n\n/**\n * Parent reference stored on a nested exposure\n */\nexport interface ExposeParentRef {\n /**\n * The key of the parent exposed entity. This references the `ExposedEntity.key` property.\n */\n key: string\n /**\n * The association from the parent that produced this exposure.\n * A sub-entity must always have a parent association.\n */\n association: AssociationTarget\n /**\n * The numeric depth from the root exposure (root = 0)\n */\n depth?: number\n}\n\n/**\n * Options passed when creating a new exposure\n */\nexport interface ExposeOptions {\n /**\n * Whether to follow associations when creating the exposure.\n * When not set, it only exposes the passed entity.\n */\n followAssociations?: boolean\n /**\n * The maximum depth to follow associations when creating the exposure.\n */\n maxDepth?: number\n}\n\n/**\n * Represents a pagination strategy for API actions that return collections of resources.\n * This is a base interface that can be extended for different pagination strategies.\n */\nexport interface PaginationStrategy {\n /**\n * The kind of pagination strategy. This is used to identify the specific pagination method.\n * For example, 'cursor' for cursor-based pagination or 'offset' for offset-based pagination.\n */\n kind: string\n /**\n * The default page size for the pagination strategy.\n * This is the number of items returned per page when no specific page size is requested.\n */\n defaultLimit?: number\n /**\n * The maximum page size for the pagination strategy.\n * This is the maximum number of items that can be returned per page.\n * The API runtime defined the upper limit to prevent abuse.\n */\n maxLimit?: number\n}\n\n/**\n * Represents the cursor-based pagination strategy.\n */\nexport interface CursorPaginationStrategy extends PaginationStrategy {\n kind: 'cursor'\n}\n\n/**\n * Represents the offset-based pagination strategy.\n */\nexport interface OffsetPaginationStrategy extends PaginationStrategy {\n kind: 'offset'\n}\n\n/**\n * Represents the contract for pagination. Defines which fields can be used for filtering, sorting,\n * and searching.\n */\nexport interface PaginationContract {\n /**\n * The list of fields (property keys) that can be used for filtering.\n */\n filterableFields: string[]\n /**\n * The list of fields (property keys) that can be used for sorting.\n */\n sortableFields: string[]\n /**\n * The list of fields (property keys) that can be used for searching.\n * Note that these properties must be of type string or array of strings.\n */\n searchableFields: string[]\n /**\n * The default sort order for the pagination strategy.\n * This is the sort order that will be used when no sort order is specified.\n */\n defaultSort?: { field: string; direction: 'asc' | 'desc' }[]\n}\n\nexport type DomainImpactKinds =\n | typeof DomainNamespaceKind\n | typeof DomainEntityKind\n | typeof DomainModelKind\n | typeof DomainPropertyKind\n | typeof DomainAssociationKind\n | typeof DataDomainKind\n\n/**\n * The impact analysis report\n */\nexport interface DomainImpactReport {\n /**\n * The key of the impacted data object.\n * This is the key of the object that is being changed.\n */\n key: string\n /**\n * The kind of the impacted data object.\n * This is the kind of the object that is being changed.\n */\n kind: DomainImpactKinds\n /**\n * The list of impacted data objects.\n */\n impact: DomainImpactItem[]\n /**\n * Whether it is possible to proceed with the change.\n * If the change is not possible, the reason will be in the impact list.\n */\n canProceed: boolean\n}\n\nexport interface DomainImpactItem {\n /**\n * The key of the impacted data object.\n */\n key: string\n /**\n * The kind of the impacted data object.\n */\n kind: string\n /**\n * The type of the impact.\n *\n * - `delete` - The data object would be deleted.\n */\n type: 'delete' | 'publish'\n /**\n * The impact description.\n * Explains what will happen to the impacted data object.\n * This is a human-readable description of the impact.\n * It should be clear and concise.\n */\n impact: string\n /**\n * The severity of the impact.\n *\n * - `info` - The impact is informational.\n * - `warning` - The impact can potentially cause problems but is not a blocker.\n * - `error` - The impact is a blocker and needs to be resolved before proceeding.\n */\n severity: 'info' | 'warning' | 'error'\n /**\n * The type of the relationship between two impacted objects.\n */\n relationship?: 'child'\n /**\n * The resolution of the conflict if the change will be forced.\n */\n resolution?: string\n /**\n * The optional parent of the impacted data object.\n * For example, if the impacted item is a property, this will be the entity it belongs to.\n */\n parent?: string\n}\n\nexport interface DeserializeOptions {\n /**\n * The mode to use for deserialization.\n */\n mode?: DeserializationMode\n /**\n * The serialized graph to deserialize.\n * This is the JSON representation of the graph.\n */\n json?: SerializedGraph\n /**\n * The list of foreign domains that this domain depends on.\n */\n dependencies?: DataDomain[]\n}\n\n/**\n * Describes the mode for deserializing a domain graph.\n */\nexport type DeserializationMode = 'strict' | 'lenient'\n\n/**\n * Describes an issue found during deserialization.\n */\nexport interface DeserializationIssue {\n /**\n * The type of issue encountered.\n */\n type: 'missing_node' | 'missing_edge' | 'invalid_parent' | 'missing_dependency' | 'malformed_entry' | 'unknown_kind'\n /**\n * The severity of the issue.\n */\n severity: 'error' | 'warning' | 'info'\n /**\n * A human-readable description of the issue.\n */\n message: string\n /**\n * The key of the affected node, edge, or entity if applicable.\n */\n affectedKey?: string\n /**\n * Additional context about the issue.\n */\n context?: Record<string, unknown>\n /**\n * The action taken to handle this issue in lenient mode.\n */\n resolution?: string\n}\n\n/**\n * The result of a deserialization operation.\n */\nexport interface DeserializationResult {\n /**\n * The deserialized graph.\n */\n graph: DataDomainGraph\n /**\n * Issues encountered during deserialization.\n */\n issues: DeserializationIssue[]\n /**\n * Whether the deserialization was successful.\n * This is set to true when a critical failures occurred.\n */\n success: boolean\n}\n\n/**\n * Available node types for search filtering.\n */\nexport type SearchableNodeType =\n | typeof DomainNamespaceKind\n | typeof DomainModelKind\n | typeof DomainEntityKind\n | typeof DomainPropertyKind\n | typeof DomainAssociationKind\n\n/**\n * Search criteria for filtering domain nodes.\n */\nexport interface DomainSearchCriteria {\n /**\n * Text query to search for in name, displayName, and description fields.\n * Can be a string for exact match or RegExp for pattern matching.\n */\n query?: string | RegExp\n\n /**\n * Filter by specific node types. If not provided, all node types are included.\n */\n nodeTypes?: SearchableNodeType[]\n\n /**\n * Whether to include nodes from foreign domains in the search results.\n * Defaults to false.\n */\n includeForeignDomains?: boolean\n\n /**\n * Case-sensitive search when using string query.\n * Defaults to false (case-insensitive).\n */\n caseSensitive?: boolean\n}\n\n/**\n * A search result containing a matching domain node and metadata.\n */\nexport interface DomainSearchResult {\n /**\n * The matching domain node.\n */\n node: DomainGraphNodeType\n\n /**\n * The field(s) that matched the search query.\n */\n matchedFields: ('name' | 'displayName' | 'description')[]\n\n /**\n * The key used to identify this node in the graph.\n */\n key: string\n\n /**\n * Whether this node belongs to a foreign domain.\n */\n isForeign: boolean\n}\n\n/**\n * Contextual information about where the API Model validation issue occurred.\n * This allows the UI to trace back a validation error to a specific module or component.\n */\nexport interface ApiModelValidationContext {\n /**\n * The key of the ApiModel itself.\n */\n apiModelKey: string\n /**\n * The kind of the affected component (e.g., 'ApiModel', 'ExposedEntity', 'Action').\n */\n kind: string\n /**\n * The key of the specific entity or action where the issue occurred.\n * If the error is at the root API model, this might be the ApiModel's key.\n */\n key: string\n /**\n * The specific property being validated, if applicable.\n */\n property?: string\n /**\n * The key of the parent ExposedEntity, if this issue occurred on a nested entity or an action.\n */\n parentExposedEntityKey?: string\n}\n\n/**\n * Represents a single validation issue found within an ApiModel.\n */\nexport interface ApiModelValidationItem {\n /**\n * A unique code identifying the type of validation error. This enables\n * programmatic handling or auto-fixing in the UI (e.g., 'API_MISSING_NAME', 'LIST_ACTION_MISSING_PAGINATION').\n */\n code: string\n /**\n * A human-readable description of the problem.\n */\n message: string\n /**\n * A human-readable suggestion on how to fix the issue.\n */\n suggestion: string\n /**\n * The severity of the validation issue.\n */\n severity: 'error' | 'warning' | 'info'\n /**\n * Contextual information to trace the issue back to its source component.\n */\n context: ApiModelValidationContext\n}\n\n/**\n * The consolidated result of validating an entire ApiModel or a subset of it.\n */\nexport interface ApiModelValidationResult {\n /**\n * A boolean indicating whether the model is structurally sound and ready for publication.\n * Typically true if there are no 'error' severity issues.\n */\n isValid: boolean\n /**\n * The aggregated list of all validation issues found.\n */\n issues: ApiModelValidationItem[]\n}\n\n/**\n * Schema definition for an association.\n *\n * This is used to define how an association is represented in the schema.\n */\nexport interface AssociationSchema {\n /**\n * Whether the target entity should be embedded under the property name.\n * When false, this association is just an information that one entity depend on another.\n * When true, it changes the definition of the schema having this association to\n * add the target schema properties inline with this property.\n *\n * **When true**\n *\n * ```javascript\n * // generated schema for `address` association\n * {\n * \"name\": \"example value\",\n * \"address\": {\n * \"city\": \"example value\",\n * ...\n * }\n * }\n * ```\n *\n * **When false**\n *\n * ```javascript\n * // generated schema for `address` association\n * {\n * \"name\": \"example value\",\n * \"address\": \"the key of the referenced schema\"\n * }\n * ```\n */\n embedded?: boolean\n /**\n * When the association has multiple targets the union type should be\n * set to describe which union this is.\n *\n * Possible values are:\n *\n * - allOf - To validate against `allOf`, the given data must be valid against\n * all of the given sub-schemas. When generating, it's a sum of all properties.\n * - anyOf - To validate against `anyOf`, the given data must be valid against\n * any (one or more) of the given sub-schemas. When generation a schema, it takes first union schema.\n * - oneOf - To validate against `oneOf`, the given data must be valid against\n * exactly one of the given sub-schemas. It behaves the same as `anyOf` when generating a schema\n * - not - The `not` keyword declares that an instance validates if it doesn’t\n * validate against the given sub-schema. It has no use when generating a schema.\n *\n * @default anyOf\n */\n unionType?: 'allOf' | 'anyOf' | 'oneOf' | 'not'\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modeling/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { GraphJson } from '@api-client/graph/graph/types.js'\nimport type { Graph } from '@api-client/graph/graph/Graph.js'\nimport type { DomainAssociation } from './DomainAssociation.js'\nimport type { DomainEntity } from './DomainEntity.js'\nimport type { DomainModel } from './DomainModel.js'\nimport type { DomainNamespace } from './DomainNamespace.js'\nimport type { DomainProperty } from './DomainProperty.js'\nimport type {\n DomainNamespaceKind,\n DomainEntityKind,\n DomainModelKind,\n DomainPropertyKind,\n DomainAssociationKind,\n DataDomainKind,\n ExposedEntityKind,\n} from '../models/kinds.js'\nimport type { DataDomain } from './DataDomain.js'\nimport { AccessRuleSchema } from './rules/AccessRule.js'\nimport { RateLimitingConfigurationSchema } from './rules/RateLimitingConfiguration.js'\nimport { ActionSchema } from './actions/Action.js'\n\nexport interface DataDomainRemoveOptions {\n /**\n * When true, the object will be forcibly removed.\n * The resolution defined in the `ImpactResolution` class will be applied.\n *\n * For example, when removing an entity that is a parent to another entity, it will\n * removed itself as a parent from the child entity.\n *\n * Note, this option should only be used when the DomainImpactAnalysis has been performed\n * and the user was informed of the impact.\n */\n force?: boolean\n}\n\nexport interface DomainGraphEdge {\n /**\n * Indicates that the edge is to or from a foreign domain.\n */\n foreign?: boolean\n /**\n * The key of the foreign domain. Always set with the `foreign` property.\n */\n domain?: string\n /**\n * The type of the edge.\n * - `association` The edge is to an association object.\n * - When coming **from** an entity (the `v` property), that entity owns the association.\n * - When coming **to** an entity (the `w` property), that entity is the target of the association.\n * An association can have multiple targets.\n * - `property` The edge is to a property object. Can only be created between an entity and a property.\n * - The **from** (`v`) is the entity.\n * - The **to** (`w`) is the property.\n * - `parent` The edge is to a parent object.\n * - The **from** (`v`) is the child entity.\n * - The **to** (`w`) is the parent entity.\n */\n type: 'association' | 'property' | 'parent'\n}\n\nexport type DomainGraphNodeType = DomainNamespace | DomainModel | DomainEntity | DomainProperty | DomainAssociation\n\n/**\n * An interface that describes the data domain dependency.\n */\nexport interface ForeignDomainDependency {\n /**\n * The system registered key of the foreign domain.\n */\n key: string\n /**\n * The version of the foreign domain used in this domain.\n */\n version: string\n}\n\nexport interface AssociationTarget {\n /**\n * The key of the target entity.\n */\n key: string\n /**\n * The key of the target data domain.\n * This is only set when the target is in a different data domain.\n */\n domain?: string\n}\n\n/**\n * The list of functions supported for string properties.\n */\nexport type StringFunctions = 'random' | 'uuid-v4'\n/**\n * The list of functions supported for number properties.\n */\nexport type NumberFunctions = 'incremental'\n/**\n * The list of functions supported for date properties.\n */\nexport type DateFunctions = 'now'\n/**\n * The list of functions supported for datetime properties.\n */\nexport type DateTimeFunctions = 'now'\n/**\n * The list of functions supported for time properties.\n */\nexport type TimeFunctions = 'now'\n/**\n * The list of all functions that can be used as default values for properties.\n */\nexport type FunctionValue = StringFunctions | NumberFunctions | DateFunctions | DateTimeFunctions | TimeFunctions\n\n/**\n * Describes the default value set on a property schema.\n */\nexport interface SchemaDefaultValue {\n /**\n * The type of the default value.\n *\n * - `literal` The `value` should be used as-is.\n * - `function` The value represents the name of the function to be used.\n */\n type: 'literal' | 'function'\n /**\n * The actual value type depends on the `type`.\n * It is always a string and it has to be casted to the property's data type.\n */\n value: string | FunctionValue\n /**\n * When the `value` is a function, the `config` property is used to configure the function.\n * The type of the config depends on the function and the property data type.\n */\n config?: FunctionGeneratorConfig\n}\n\n/**\n * A union of all possible function generator configurations.\n */\nexport type FunctionGeneratorConfig = StringDefaultRandomGenerator\n\n/**\n * Configuration for the `random` function for string properties.\n */\nexport interface StringDefaultRandomGenerator {\n /**\n * When set the `max` and `min` are used.\n * Otherwise a random string of fixed length (the `fixed` property) is generated.\n */\n varyingLength?: boolean\n /**\n * The minimum length of the random string.\n *\n * When not specified, it defaults to `10`.\n * The `varyingLength` must be `true` to use this property.\n */\n min?: number\n /**\n * The maximum length of the random string.\n *\n * When not specified, it defaults to `30`.\n * The `varyingLength` must be `true` to use this property.\n */\n max?: number\n /**\n * The fixed length of the random string.\n *\n * When not specified, it defaults to `10`.\n * The `varyingLength` must be `false` to use this property.\n */\n fixed?: number\n /**\n * The prefix to add to the random string.\n * The prefix adds to the length of the random string.\n */\n prefix?: string\n /**\n * The suffix to add to the random string.\n * The suffix adds to the length of the random string.\n */\n suffix?: string\n}\n\n/**\n * A general schema definition for a property.\n * This is propagated to all bindings (when they support these properties).\n */\nexport interface PropertySchema {\n /**\n * The minimum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMinimum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n minimum?: number\n /**\n * The maximum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMaximum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n maximum?: number\n /**\n * When set, the minimum value is exclusive.\n *\n * - When `false`: value ≥ minimum.\n * - When `true`: value > minimum.\n */\n exclusiveMinimum?: boolean\n /**\n * When set, the exclusiveMaximum value is exclusive.\n *\n * - When `false`: value ≤ maximum.\n * - When `true`: value < minimum.\n */\n exclusiveMaximum?: boolean\n /**\n * The multiplier value for a number scalar.\n *\n * Examples:\n * - if `1` then every integer is allowed\n * - if `2` than every even number is allowed\n * - if `0.5` than every number dividable by `0.5` is allowed\n */\n multipleOf?: number\n /**\n * The enum values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n enum?: string[]\n /**\n * The default value for the property.\n * This is always encoded as a string. The actual type is defined in the `dataType` property.\n */\n defaultValue?: SchemaDefaultValue\n /**\n * The example values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n examples?: string[]\n /**\n * The pattern to use with a string scalar.\n */\n pattern?: string\n}\n\n/**\n * The shortcut type for the data domain graph.\n */\nexport type DataDomainGraph = Graph<unknown, DomainGraphNodeType, DomainGraphEdge>\n/**\n * The serialized version of the data domain graph.\n */\nexport type SerializedGraph = GraphJson<unknown, object, DomainGraphEdge>\n\n/**\n * Represents a standardized, machine-readable error response body\n * as defined by RFC 7807 for HTTP APIs.\n */\nexport interface ProblemDetails {\n /**\n * A URI that identifies the specific problem type. Should resolve to human-readable docs.\n * e.g., \"https://docs.apinow.app/errors/validation-failed\"\n */\n type: string\n\n /**\n * A short, human-readable summary of the problem type.\n * e.g., \"Validation Error\"\n */\n title: string\n\n /**\n * The HTTP status code generated by the origin server for this problem.\n */\n status?: number\n\n /**\n * A human-readable explanation specific to this occurrence of the problem.\n */\n detail?: string\n\n /**\n * A URI that identifies the specific occurrence of the problem.\n * Can be the API request path that caused the error.\n */\n instance: string\n}\n\n/**\n * The set of supported filter operators for the List and search action.\n * These are used in query parameters, e.g., ?price[gte]=100\n *\n * - eq: Equal\n * - neq: Not Equal\n * - in: Value is one of the elements in the provided array\n * - nin: Value is not one of the elements in the provided array\n * - lt: Less Than\n * - lte: Less Than or Equal\n * - gt: Greater Than\n * - gte: Greater Than or Equal\n * - exists: Checks if the field exists\n *\n * Search filters only:\n * - contains: String contains substring / Array contains element (Substring Match)\n * - match: Lexical Match, multi-word queries against long text.\n */\nexport type ResourceFilterOperator =\n | 'eq' // Equal\n | 'neq' // Not equal\n | 'in' // Value is one of the elements in the provided array\n | 'nin' // Value is not one of the elements in the provided array\n | 'lt' // Less than\n | 'lte' // Less than or equal\n | 'gt' // Greater than\n | 'gte' // Greater than or equal\n | 'exists' // Checks if the field exists\n | 'contains' // String contains substring / Array contains element (Substring Match)\n | 'match' // Lexical Match, multi-word queries against long text.\n\n/**\n * The session transport configuration interface.\n * This defines the properties that are common to all session transports.\n */\ninterface SessionTransport {\n /**\n * Whether the session transport is enabled.\n */\n enabled: boolean\n /**\n * The kind of session transport. Each interface defines its own kind.\n */\n kind: string\n}\n\n/**\n * Configuration for cookie-based session transport.\n */\nexport interface CookieConfiguration extends SessionTransport {\n kind: 'cookie'\n /**\n * The lifetime of the cookie session.\n * This is a string representing the duration, e.g., \"7d\" for 7 days or \"24h\" for 24 hours.\n *\n * @default \"7d\"\n */\n lifetime: string\n /**\n * Whether the cookie can only be accessed by the server.\n * This is a security feature to prevent client-side scripts from accessing the cookie.\n * If set to false, the cookie can be accessed by client-side scripts.\n * @default true\n */\n httpOnly: boolean // Defaults to true\n /**\n * Whether the cookie should only be sent over secure connections (HTTPS).\n * This is a security feature to prevent the cookie from being sent over unencrypted connections.\n * @default true\n */\n secure: boolean\n /**\n * The SameSite attribute of the cookie.\n * This attribute controls whether the cookie is sent with cross-site requests.\n * - 'none' means the cookie is sent with cross-site requests.\n * - 'lax' means the cookie is sent with top-level navigations and will be sent along with GET\n * requests initiated by third-party websites.\n * @default 'none'\n */\n sameSite: 'none' | 'lax'\n /**\n * The name of the cookie.\n * This is the key under which the session data will be stored in the cookie.\n * @default 'as' - 'as' stands for \"api session\"\n */\n name: string\n}\n\n/**\n * Configuration for JWT-based session transport.\n */\nexport interface JwtConfiguration extends SessionTransport {\n kind: 'jwt'\n /**\n * The lifetime of the JWT token.\n * This is a string representing the duration, e.g., \"7d\" for 7 days or \"15m\" for 15 minutes.\n *\n * @default \"7d\"\n */\n lifetime: string\n}\n\nexport interface SessionConfiguration {\n /**\n * The secret used to sign the JWT and cookies. Should be handled securely.\n * Not visible in the UI after being set.\n */\n secret: string\n /**\n * The properties to be set on the session `User` object.\n * These properties become available in the `request.auth` object at runtime.\n * The properties are coming from the `User` entity (marked by the Semantic model).\n */\n properties: AssociationTarget[]\n /**\n * The cookie-based session transport configuration.\n */\n cookie?: CookieConfiguration\n\n /**\n * The JWT-based session transport configuration.\n */\n jwt?: JwtConfiguration\n}\n\n/**\n * Defines the authorization strategy for the API.\n * It is a base interface that can be extended for different strategies.\n * For MVP, we will start with Roles-Based Access Control (RBAC).\n */\nexport interface AuthorizationConfiguration {\n /**\n * The authorization strategy. For MVP, we will start with RBAC.\n * Post-MVP will include Permission-Based Access Control (PBAC).\n * The strategy determines how users are granted access to resources.\n *\n * - RBAC (Roles-Based Access Control): Users are assigned roles, and permissions are granted to those roles.\n * - PBAC (Permission-Based Access Control): Users are granted permissions directly, allowing for more\n * granular control.\n */\n strategy: string\n}\n\nexport interface RolesBasedAccessControl extends AuthorizationConfiguration {\n strategy: 'RBAC'\n}\n\nexport type AuthorizationStrategy = RolesBasedAccessControl\n\n/**\n * Configures the strategy for authenticating end-users.\n * An API can only support one authentication strategy at a time.\n * This is a base interface that can be extended for different strategies.\n */\nexport interface AuthenticationConfiguration {\n /**\n * The authentication method. For MVP, this is focused on username/password.\n * This can be extended in the future to include 'SSO'.\n */\n strategy: string\n}\n\n/**\n * Configuration for username/password authentication.\n * This is the primary authentication method for the API (MVP).\n */\nexport interface UsernamePasswordConfiguration extends AuthenticationConfiguration {\n strategy: 'UsernamePassword'\n}\n\nexport type AuthenticationStrategy = UsernamePasswordConfiguration\n\n/**\n * Represents a Data Entity from the Data Domain that the API will expose and operate upon.\n */\nexport interface ExposedEntitySchema {\n kind: typeof ExposedEntityKind\n /**\n * The unique identifier for this exposure instance.\n * In the exposure model, we need to uniquely identify each exposure instance, because\n * an entity can be exposed multiple times in different contexts. Consider the following structure:\n *\n * ```\n * /categories/{categoryId}\n * /products/{productId}/categories\n * /products/{productId}/categories/{categoryId}\n * /promotions/{promotionId}/categories\n * /promotions/{promotionId}/categories/{categoryId}\n * ```\n *\n * The `category` entity would be exposed multiple times (as root and nested under products and promotions).\n * We need a way to distinguish between these different exposure instances.\n */\n key: string\n /**\n * A pointer to a Data Entity from the Data Domain.\n */\n entity: AssociationTarget\n /**\n * Indicates whether this exposure has a collection endpoint.\n * A collection endpoint is optional for nested exposures where the association is 1:1\n * and the schema is embedded directly under the parent resource.\n */\n hasCollection: boolean\n /**\n * A path to the collection endpoint for this exposure.\n * Starts with '/'. Not set for 1:1 nested exposures where collection does not exist.\n */\n collectionPath?: string\n\n /**\n * A path to the resource endpoint for this exposure.\n * Starts with '/'. For 1:1 nested exposures the resource path typically does not include an id segment.\n */\n resourcePath: string\n\n /**\n * Whether this exposure is a root exposure (top-level collection).\n * If this is set then the `parent` reference must be populated.\n */\n isRoot?: boolean\n\n /**\n * Parent reference when this exposure was created via following an association.\n */\n parent?: ExposeParentRef\n\n /**\n * Expose-time config used to create this exposure (persisted for auditing/UI).\n * This is only populated for the root exposure. All children exposures inherit this config.\n */\n exposeOptions?: ExposeOptions\n\n /**\n * The list of enabled API actions for this exposure (List/Read/Create/etc.)\n */\n actions: ActionSchema[]\n\n /**\n * Optional array of access rules that define the access control policies for this exposure.\n */\n accessRule?: AccessRuleSchema[]\n\n /**\n * Optional configuration for rate limiting for this exposure.\n */\n rateLimiting?: RateLimitingConfigurationSchema\n\n /**\n * When true, generation for this exposure hit configured limits\n */\n truncated?: boolean\n /**\n * Pagination contract for this exposure.\n */\n paginationContract?: PaginationContract\n}\n\n/**\n * Parent reference stored on a nested exposure\n */\nexport interface ExposeParentRef {\n /**\n * The key of the parent exposed entity. This references the `ExposedEntity.key` property.\n */\n key: string\n /**\n * The association from the parent that produced this exposure.\n * A sub-entity must always have a parent association.\n */\n association: AssociationTarget\n /**\n * The numeric depth from the root exposure (root = 0)\n */\n depth?: number\n}\n\n/**\n * Options passed when creating a new exposure\n */\nexport interface ExposeOptions {\n /**\n * Whether to follow associations when creating the exposure.\n * When not set, it only exposes the passed entity.\n */\n followAssociations?: boolean\n /**\n * The maximum depth to follow associations when creating the exposure.\n */\n maxDepth?: number\n}\n\n/**\n * Represents a pagination strategy for API actions that return collections of resources.\n * This is a base interface that can be extended for different pagination strategies.\n */\nexport interface PaginationStrategy {\n /**\n * The kind of pagination strategy. This is used to identify the specific pagination method.\n * For example, 'cursor' for cursor-based pagination or 'offset' for offset-based pagination.\n */\n kind: string\n /**\n * The default page size for the pagination strategy.\n * This is the number of items returned per page when no specific page size is requested.\n */\n defaultLimit?: number\n /**\n * The maximum page size for the pagination strategy.\n * This is the maximum number of items that can be returned per page.\n * The API runtime defined the upper limit to prevent abuse.\n */\n maxLimit?: number\n}\n\n/**\n * Represents the cursor-based pagination strategy.\n */\nexport interface CursorPaginationStrategy extends PaginationStrategy {\n kind: 'cursor'\n}\n\n/**\n * Represents the offset-based pagination strategy.\n */\nexport interface OffsetPaginationStrategy extends PaginationStrategy {\n kind: 'offset'\n}\n\n/**\n * Represents the contract for pagination. Defines which fields can be used for filtering, sorting,\n * and searching.\n */\nexport interface PaginationContract {\n /**\n * The list of fields (property keys) that can be used for filtering.\n */\n filterableFields: string[]\n /**\n * The list of fields (property keys) that can be used for sorting.\n */\n sortableFields: string[]\n /**\n * The list of fields (property keys) that can be used for searching.\n * Note that these properties must be of type string or array of strings.\n */\n searchableFields: string[]\n /**\n * The default sort order for the pagination strategy.\n * This is the sort order that will be used when no sort order is specified.\n */\n defaultSort?: { field: string; direction: 'asc' | 'desc' }[]\n}\n\nexport type DomainImpactKinds =\n | typeof DomainNamespaceKind\n | typeof DomainEntityKind\n | typeof DomainModelKind\n | typeof DomainPropertyKind\n | typeof DomainAssociationKind\n | typeof DataDomainKind\n\n/**\n * The impact analysis report\n */\nexport interface DomainImpactReport {\n /**\n * The key of the impacted data object.\n * This is the key of the object that is being changed.\n */\n key: string\n /**\n * The kind of the impacted data object.\n * This is the kind of the object that is being changed.\n */\n kind: DomainImpactKinds\n /**\n * The list of impacted data objects.\n */\n impact: DomainImpactItem[]\n /**\n * Whether it is possible to proceed with the change.\n * If the change is not possible, the reason will be in the impact list.\n */\n canProceed: boolean\n}\n\nexport interface DomainImpactItem {\n /**\n * The key of the impacted data object.\n */\n key: string\n /**\n * The kind of the impacted data object.\n */\n kind: string\n /**\n * The type of the impact.\n *\n * - `delete` - The data object would be deleted.\n */\n type: 'delete' | 'publish'\n /**\n * The impact description.\n * Explains what will happen to the impacted data object.\n * This is a human-readable description of the impact.\n * It should be clear and concise.\n */\n impact: string\n /**\n * The severity of the impact.\n *\n * - `info` - The impact is informational.\n * - `warning` - The impact can potentially cause problems but is not a blocker.\n * - `error` - The impact is a blocker and needs to be resolved before proceeding.\n */\n severity: 'info' | 'warning' | 'error'\n /**\n * The type of the relationship between two impacted objects.\n */\n relationship?: 'child'\n /**\n * The resolution of the conflict if the change will be forced.\n */\n resolution?: string\n /**\n * The optional parent of the impacted data object.\n * For example, if the impacted item is a property, this will be the entity it belongs to.\n */\n parent?: string\n}\n\nexport interface DeserializeOptions {\n /**\n * The mode to use for deserialization.\n */\n mode?: DeserializationMode\n /**\n * The serialized graph to deserialize.\n * This is the JSON representation of the graph.\n */\n json?: SerializedGraph\n /**\n * The list of foreign domains that this domain depends on.\n */\n dependencies?: DataDomain[]\n}\n\n/**\n * Describes the mode for deserializing a domain graph.\n */\nexport type DeserializationMode = 'strict' | 'lenient'\n\n/**\n * Describes an issue found during deserialization.\n */\nexport interface DeserializationIssue {\n /**\n * The type of issue encountered.\n */\n type: 'missing_node' | 'missing_edge' | 'invalid_parent' | 'missing_dependency' | 'malformed_entry' | 'unknown_kind'\n /**\n * The severity of the issue.\n */\n severity: 'error' | 'warning' | 'info'\n /**\n * A human-readable description of the issue.\n */\n message: string\n /**\n * The key of the affected node, edge, or entity if applicable.\n */\n affectedKey?: string\n /**\n * Additional context about the issue.\n */\n context?: Record<string, unknown>\n /**\n * The action taken to handle this issue in lenient mode.\n */\n resolution?: string\n}\n\n/**\n * The result of a deserialization operation.\n */\nexport interface DeserializationResult {\n /**\n * The deserialized graph.\n */\n graph: DataDomainGraph\n /**\n * Issues encountered during deserialization.\n */\n issues: DeserializationIssue[]\n /**\n * Whether the deserialization was successful.\n * This is set to true when a critical failures occurred.\n */\n success: boolean\n}\n\n/**\n * Available node types for search filtering.\n */\nexport type SearchableNodeType =\n | typeof DomainNamespaceKind\n | typeof DomainModelKind\n | typeof DomainEntityKind\n | typeof DomainPropertyKind\n | typeof DomainAssociationKind\n\n/**\n * Search criteria for filtering domain nodes.\n */\nexport interface DomainSearchCriteria {\n /**\n * Text query to search for in name, displayName, and description fields.\n * Can be a string for exact match or RegExp for pattern matching.\n */\n query?: string | RegExp\n\n /**\n * Filter by specific node types. If not provided, all node types are included.\n */\n nodeTypes?: SearchableNodeType[]\n\n /**\n * Whether to include nodes from foreign domains in the search results.\n * Defaults to false.\n */\n includeForeignDomains?: boolean\n\n /**\n * Case-sensitive search when using string query.\n * Defaults to false (case-insensitive).\n */\n caseSensitive?: boolean\n}\n\n/**\n * A search result containing a matching domain node and metadata.\n */\nexport interface DomainSearchResult {\n /**\n * The matching domain node.\n */\n node: DomainGraphNodeType\n\n /**\n * The field(s) that matched the search query.\n */\n matchedFields: ('name' | 'displayName' | 'description')[]\n\n /**\n * The key used to identify this node in the graph.\n */\n key: string\n\n /**\n * Whether this node belongs to a foreign domain.\n */\n isForeign: boolean\n}\n\n/**\n * Contextual information about where the API Model validation issue occurred.\n * This allows the UI to trace back a validation error to a specific module or component.\n */\nexport interface ApiModelValidationContext {\n /**\n * The key of the ApiModel itself.\n */\n apiModelKey: string\n /**\n * The kind of the affected component (e.g., 'ApiModel', 'ExposedEntity', 'Action').\n */\n kind: string\n /**\n * The key of the specific entity or action where the issue occurred.\n * If the error is at the root API model, this might be the ApiModel's key.\n */\n key: string\n /**\n * The specific property being validated, if applicable.\n */\n property?: string\n /**\n * The key of the parent ExposedEntity, if this issue occurred on a nested entity or an action.\n */\n parentExposedEntityKey?: string\n}\n\n/**\n * Represents a single validation issue found within an ApiModel.\n */\nexport interface ApiModelValidationItem {\n /**\n * A unique code identifying the type of validation error. This enables\n * programmatic handling or auto-fixing in the UI (e.g., 'API_MISSING_NAME', 'LIST_ACTION_MISSING_PAGINATION').\n */\n code: string\n /**\n * A human-readable description of the problem.\n */\n message: string\n /**\n * A human-readable suggestion on how to fix the issue.\n */\n suggestion: string\n /**\n * The severity of the validation issue.\n */\n severity: 'error' | 'warning' | 'info'\n /**\n * Contextual information to trace the issue back to its source component.\n */\n context: ApiModelValidationContext\n}\n\n/**\n * The consolidated result of validating an entire ApiModel or a subset of it.\n */\nexport interface ApiModelValidationResult {\n /**\n * A boolean indicating whether the model is structurally sound and ready for publication.\n * Typically true if there are no 'error' severity issues.\n */\n isValid: boolean\n /**\n * The aggregated list of all validation issues found.\n */\n issues: ApiModelValidationItem[]\n}\n\n/**\n * Schema definition for an association.\n *\n * This is used to define how an association is represented in the schema.\n */\nexport interface AssociationSchema {\n /**\n * Whether the target entity should be embedded under the property name.\n * When false, this association is just an information that one entity depend on another.\n * When true, it changes the definition of the schema having this association to\n * add the target schema properties inline with this property.\n *\n * **When true**\n *\n * ```javascript\n * // generated schema for `address` association\n * {\n * \"name\": \"example value\",\n * \"address\": {\n * \"city\": \"example value\",\n * ...\n * }\n * }\n * ```\n *\n * **When false**\n *\n * ```javascript\n * // generated schema for `address` association\n * {\n * \"name\": \"example value\",\n * \"address\": \"the key of the referenced schema\"\n * }\n * ```\n */\n embedded?: boolean\n /**\n * When the association has multiple targets the union type should be\n * set to describe which union this is.\n *\n * Possible values are:\n *\n * - allOf - To validate against `allOf`, the given data must be valid against\n * all of the given sub-schemas. When generating, it's a sum of all properties.\n * - anyOf - To validate against `anyOf`, the given data must be valid against\n * any (one or more) of the given sub-schemas. When generation a schema, it takes first union schema.\n * - oneOf - To validate against `oneOf`, the given data must be valid against\n * exactly one of the given sub-schemas. It behaves the same as `anyOf` when generating a schema\n * - not - The `not` keyword declares that an instance validates if it doesn’t\n * validate against the given sub-schema. It has no use when generating a schema.\n *\n * @default anyOf\n */\n unionType?: 'allOf' | 'anyOf' | 'oneOf' | 'not'\n}\n"]}
|