@api-client/core 0.18.20 → 0.18.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/build/src/modeling/helpers/Intelisense.d.ts +1 -0
  2. package/build/src/modeling/helpers/Intelisense.d.ts.map +1 -1
  3. package/build/src/modeling/helpers/Intelisense.js +1 -0
  4. package/build/src/modeling/helpers/Intelisense.js.map +1 -1
  5. package/build/src/modeling/templates/index.d.ts +21 -0
  6. package/build/src/modeling/templates/index.d.ts.map +1 -0
  7. package/build/src/modeling/templates/index.js +176 -0
  8. package/build/src/modeling/templates/index.js.map +1 -0
  9. package/build/src/modeling/templates/meta/blog-publishing-platform.json +1 -0
  10. package/build/src/modeling/templates/meta/ecommerce-platform.json +1 -0
  11. package/build/src/modeling/templates/meta/education-management-platform.json +1 -0
  12. package/build/src/modeling/templates/meta/financial-services-platform.json +1 -0
  13. package/build/src/modeling/templates/meta/gaming-platform.json +1 -0
  14. package/build/src/modeling/templates/meta/healthcare-management-platform.json +1 -0
  15. package/build/src/modeling/templates/meta/hospitality-platform.json +1 -0
  16. package/build/src/modeling/templates/meta/index.d.ts +56 -0
  17. package/build/src/modeling/templates/meta/index.d.ts.map +1 -0
  18. package/build/src/modeling/templates/meta/index.js +120 -0
  19. package/build/src/modeling/templates/meta/index.js.map +1 -0
  20. package/build/src/modeling/templates/meta/iot-smart-home-platform.json +1 -0
  21. package/build/src/modeling/templates/meta/legal-services-platform.json +1 -0
  22. package/build/src/modeling/templates/meta/manufacturing-platform.json +1 -0
  23. package/build/src/modeling/templates/meta/non-profit-platform.json +1 -0
  24. package/build/src/modeling/templates/meta/real-estate-management-platform.json +1 -0
  25. package/build/src/modeling/templates/template-registry.d.ts +55 -0
  26. package/build/src/modeling/templates/template-registry.d.ts.map +1 -0
  27. package/build/src/modeling/templates/template-registry.js +111 -0
  28. package/build/src/modeling/templates/template-registry.js.map +1 -0
  29. package/build/src/modeling/templates/types.d.ts +158 -0
  30. package/build/src/modeling/templates/types.d.ts.map +1 -1
  31. package/build/src/modeling/templates/types.js.map +1 -1
  32. package/build/src/modeling/templates/{ecommerce-domain.d.ts → verticals/business-services/ecommerce-domain.d.ts} +2 -2
  33. package/build/src/modeling/templates/verticals/business-services/ecommerce-domain.d.ts.map +1 -0
  34. package/build/src/modeling/templates/{ecommerce-domain.js → verticals/business-services/ecommerce-domain.js} +6 -6
  35. package/build/src/modeling/templates/verticals/business-services/ecommerce-domain.js.map +1 -0
  36. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.d.ts +40 -0
  37. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.d.ts.map +1 -0
  38. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.js +744 -0
  39. package/build/src/modeling/templates/verticals/business-services/financial-services-domain.js.map +1 -0
  40. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.d.ts +45 -0
  41. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.d.ts.map +1 -0
  42. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.js +797 -0
  43. package/build/src/modeling/templates/verticals/business-services/hospitality-domain.js.map +1 -0
  44. package/build/src/modeling/templates/verticals/business-services/index.d.ts +21 -0
  45. package/build/src/modeling/templates/verticals/business-services/index.d.ts.map +1 -0
  46. package/build/src/modeling/templates/verticals/business-services/index.js +50 -0
  47. package/build/src/modeling/templates/verticals/business-services/index.js.map +1 -0
  48. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.d.ts +46 -0
  49. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.d.ts.map +1 -0
  50. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.js +837 -0
  51. package/build/src/modeling/templates/verticals/business-services/legal-services-domain.js.map +1 -0
  52. package/build/src/modeling/templates/verticals/education-training/education-domain.d.ts +40 -0
  53. package/build/src/modeling/templates/verticals/education-training/education-domain.d.ts.map +1 -0
  54. package/build/src/modeling/templates/verticals/education-training/education-domain.js +725 -0
  55. package/build/src/modeling/templates/verticals/education-training/education-domain.js.map +1 -0
  56. package/build/src/modeling/templates/verticals/education-training/index.d.ts +18 -0
  57. package/build/src/modeling/templates/verticals/education-training/index.d.ts.map +1 -0
  58. package/build/src/modeling/templates/verticals/education-training/index.js +21 -0
  59. package/build/src/modeling/templates/verticals/education-training/index.js.map +1 -0
  60. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.d.ts +40 -0
  61. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.d.ts.map +1 -0
  62. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.js +859 -0
  63. package/build/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.js.map +1 -0
  64. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.d.ts +18 -0
  65. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.d.ts.map +1 -0
  66. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.js +21 -0
  67. package/build/src/modeling/templates/verticals/healthcare-life-sciences/index.js.map +1 -0
  68. package/build/src/modeling/templates/verticals/index.d.ts +79 -0
  69. package/build/src/modeling/templates/verticals/index.d.ts.map +1 -0
  70. package/build/src/modeling/templates/verticals/index.js +186 -0
  71. package/build/src/modeling/templates/verticals/index.js.map +1 -0
  72. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.d.ts +18 -0
  73. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.d.ts.map +1 -0
  74. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.js +22 -0
  75. package/build/src/modeling/templates/verticals/manufacturing-logistics/index.js.map +1 -0
  76. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.d.ts +45 -0
  77. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.d.ts.map +1 -0
  78. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.js +710 -0
  79. package/build/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.js.map +1 -0
  80. package/build/src/modeling/templates/verticals/public-sector/index.d.ts +18 -0
  81. package/build/src/modeling/templates/verticals/public-sector/index.d.ts.map +1 -0
  82. package/build/src/modeling/templates/verticals/public-sector/index.js +22 -0
  83. package/build/src/modeling/templates/verticals/public-sector/index.js.map +1 -0
  84. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.d.ts +47 -0
  85. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.d.ts.map +1 -0
  86. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.js +864 -0
  87. package/build/src/modeling/templates/verticals/public-sector/non-profit-domain.js.map +1 -0
  88. package/build/src/modeling/templates/verticals/real-estate-construction/index.d.ts +18 -0
  89. package/build/src/modeling/templates/verticals/real-estate-construction/index.d.ts.map +1 -0
  90. package/build/src/modeling/templates/verticals/real-estate-construction/index.js +21 -0
  91. package/build/src/modeling/templates/verticals/real-estate-construction/index.js.map +1 -0
  92. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.d.ts +40 -0
  93. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.d.ts.map +1 -0
  94. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.js +727 -0
  95. package/build/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.js.map +1 -0
  96. package/build/src/modeling/templates/{blog-domain.d.ts → verticals/technology-media/blog-domain.d.ts} +2 -2
  97. package/build/src/modeling/templates/verticals/technology-media/blog-domain.d.ts.map +1 -0
  98. package/build/src/modeling/templates/{blog-domain.js → verticals/technology-media/blog-domain.js} +5 -5
  99. package/build/src/modeling/templates/verticals/technology-media/blog-domain.js.map +1 -0
  100. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.d.ts +46 -0
  101. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.d.ts.map +1 -0
  102. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.js +1033 -0
  103. package/build/src/modeling/templates/verticals/technology-media/gaming-domain.js.map +1 -0
  104. package/build/src/modeling/templates/verticals/technology-media/index.d.ts +21 -0
  105. package/build/src/modeling/templates/verticals/technology-media/index.d.ts.map +1 -0
  106. package/build/src/modeling/templates/verticals/technology-media/index.js +42 -0
  107. package/build/src/modeling/templates/verticals/technology-media/index.js.map +1 -0
  108. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.d.ts +47 -0
  109. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.d.ts.map +1 -0
  110. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.js +1027 -0
  111. package/build/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.js.map +1 -0
  112. package/build/tsconfig.tsbuildinfo +1 -1
  113. package/data/models/example-generator-api.json +6 -6
  114. package/package.json +1 -1
  115. package/src/modeling/helpers/Intelisense.ts +1 -0
  116. package/src/modeling/templates/meta/blog-publishing-platform.json +1 -0
  117. package/src/modeling/templates/meta/ecommerce-platform.json +1 -0
  118. package/src/modeling/templates/meta/education-management-platform.json +1 -0
  119. package/src/modeling/templates/meta/financial-services-platform.json +1 -0
  120. package/src/modeling/templates/meta/gaming-platform.json +1 -0
  121. package/src/modeling/templates/meta/healthcare-management-platform.json +1 -0
  122. package/src/modeling/templates/meta/hospitality-platform.json +1 -0
  123. package/src/modeling/templates/meta/iot-smart-home-platform.json +1 -0
  124. package/src/modeling/templates/meta/legal-services-platform.json +1 -0
  125. package/src/modeling/templates/meta/manufacturing-platform.json +1 -0
  126. package/src/modeling/templates/meta/non-profit-platform.json +1 -0
  127. package/src/modeling/templates/meta/real-estate-management-platform.json +1 -0
  128. package/src/modeling/templates/readme.md +260 -0
  129. package/src/modeling/templates/template-registry.ts +140 -0
  130. package/src/modeling/templates/types.ts +166 -0
  131. package/src/modeling/templates/verticals/README.md +122 -0
  132. package/src/modeling/templates/{ecommerce-domain.ts → verticals/business-services/ecommerce-domain.ts} +7 -7
  133. package/src/modeling/templates/verticals/business-services/financial-services-domain.ts +943 -0
  134. package/src/modeling/templates/verticals/business-services/hospitality-domain.ts +994 -0
  135. package/src/modeling/templates/verticals/business-services/legal-services-domain.ts +1059 -0
  136. package/src/modeling/templates/verticals/education-training/education-domain.ts +922 -0
  137. package/src/modeling/templates/verticals/healthcare-life-sciences/healthcare-domain.ts +1111 -0
  138. package/src/modeling/templates/verticals/manufacturing-logistics/manufacturing-domain.ts +895 -0
  139. package/src/modeling/templates/verticals/public-sector/non-profit-domain.ts +1109 -0
  140. package/src/modeling/templates/verticals/real-estate-construction/real-estate-domain.ts +944 -0
  141. package/src/modeling/templates/{blog-domain.ts → verticals/technology-media/blog-domain.ts} +6 -6
  142. package/src/modeling/templates/verticals/technology-media/gaming-domain.ts +1290 -0
  143. package/src/modeling/templates/verticals/technology-media/iot-smart-home-domain.ts +1287 -0
  144. package/build/src/modeling/templates/blog-domain.d.ts.map +0 -1
  145. package/build/src/modeling/templates/blog-domain.js.map +0 -1
  146. package/build/src/modeling/templates/ecommerce-domain.d.ts.map +0 -1
  147. package/build/src/modeling/templates/ecommerce-domain.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"real-estate-domain.js","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/real-estate-construction/real-estate-domain.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Real Estate Data Domain Example\n *\n * This file demonstrates how to create a comprehensive real estate data domain\n * using the API Client Core modeling system. It follows the business-first approach\n * and demonstrates proper use of namespaces, models, entities, properties,\n * associations, and semantic annotations.\n *\n * The example includes:\n * - Property Management with listings, properties, amenities, and photos\n * - Client Management with buyers, sellers, agents, and leads\n * - Transaction Management with offers, contracts, closings, and escrow\n * - Market Analysis with comps, market data, and pricing models\n * - Document Management with contracts, disclosures, and legal documents\n * - Marketing with lead generation, campaigns, and follow-ups\n *\n * @example\n * ```typescript\n * import { createRealEstateDomain } from './real-estate-domain.js'\n *\n * const domain = createRealEstateDomain()\n * console.log('Real Estate domain created with', domain.graph.nodeCount(), 'nodes')\n * ```\n */\n\nimport { DataDomain } from '../../../DataDomain.js'\nimport {\n addIdField,\n addNameField,\n addDescriptionField,\n addEmailField,\n addFirstNameField,\n addLastNameField,\n addPhoneField,\n addCustomStatusField,\n addCreatedAtField,\n addUpdatedAtField,\n addBooleanField,\n addCurrencyAmountField,\n} from '../../../helpers/Intelisense.js'\nimport type { CreateTemplateOptions } from '../../types.js'\n\nfunction createDomain(): DataDomain {\n return new DataDomain({\n info: {\n name: 'Real Estate Management Platform',\n displayName: 'Real Estate Management Platform',\n description:\n 'A comprehensive real estate management platform with property management, client management, ' +\n 'transaction management, market analysis, and marketing features',\n },\n })\n}\n\n/**\n * Creates a comprehensive real estate data domain following domain-driven design principles.\n *\n * This function demonstrates the proper hierarchy and organization for a real estate platform:\n * 1. Creates the root DataDomain for the real estate platform\n * 2. Organizes functionality into logical namespaces (Property Management, Client Management, etc.)\n * 3. Groups related entities into models within each namespace\n * 4. Defines entities with proper semantic annotations for real estate workflows\n * 5. Establishes associations with appropriate cardinality for property-client relationships\n *\n * @returns A fully configured DataDomain with all real estate entities and relationships\n */\nexport default function createRealEstateDomain(options: CreateTemplateOptions = {}): DataDomain {\n // Ensure the root data domain\n const domain = options.domain ?? createDomain()\n\n //\n // 1. PROPERTY MANAGEMENT NAMESPACE\n //\n const propertyManagement = domain.addNamespace({\n info: {\n name: 'PropertyManagement',\n displayName: 'Property Management',\n description: 'Listings, properties, amenities, and photos',\n },\n })\n\n // Property Model\n const propertyModel = propertyManagement.addModel({\n info: {\n name: 'Properties',\n displayName: 'Property Management',\n description: 'Property information and listings',\n },\n })\n\n // Property Entity\n const propertyEntity = propertyModel.addEntity({\n info: {\n name: 'property',\n displayName: 'Property',\n description: 'Real estate property information',\n },\n })\n\n addIdField(propertyEntity, { displayName: 'Property ID', description: 'Unique identifier for the property' })\n\n addNameField(propertyEntity, { displayName: 'Property Name', description: 'Name or title of the property' })\n\n addDescriptionField(propertyEntity, { description: 'Property description and features' })\n\n propertyEntity.addProperty({\n info: { name: 'address', displayName: 'Address', description: 'Property street address' },\n type: 'string',\n required: true,\n })\n\n propertyEntity.addProperty({\n info: { name: 'city', displayName: 'City', description: 'Property city' },\n type: 'string',\n required: true,\n })\n\n propertyEntity.addProperty({\n info: { name: 'state', displayName: 'State', description: 'Property state' },\n type: 'string',\n required: true,\n })\n\n propertyEntity.addProperty({\n info: { name: 'zip_code', displayName: 'ZIP Code', description: 'Property ZIP code' },\n type: 'string',\n required: true,\n })\n\n propertyEntity.addProperty({\n info: { name: 'square_feet', displayName: 'Square Feet', description: 'Property square footage' },\n type: 'number',\n required: true,\n schema: {\n minimum: 0,\n },\n })\n\n propertyEntity.addProperty({\n info: { name: 'bedrooms', displayName: 'Bedrooms', description: 'Number of bedrooms' },\n type: 'number',\n required: true,\n schema: {\n minimum: 0,\n },\n })\n\n propertyEntity.addProperty({\n info: { name: 'bathrooms', displayName: 'Bathrooms', description: 'Number of bathrooms' },\n type: 'number',\n required: true,\n schema: {\n minimum: 0,\n },\n })\n\n propertyEntity.addProperty({\n info: { name: 'property_type', displayName: 'Property Type', description: 'Type of real estate property' },\n type: 'string',\n required: true,\n schema: {\n enum: ['residential', 'commercial', 'industrial', 'land', 'mixed_use'],\n },\n })\n\n addCustomStatusField(propertyEntity, ['for_sale', 'for_rent', 'sold', 'rented', 'off_market'], {\n displayName: 'Listing Status',\n description: 'Current listing status of the property',\n })\n\n addCurrencyAmountField(propertyEntity, 'list_price', 'List Price', {\n description: 'Listing price of the property',\n })\n\n addCurrencyAmountField(propertyEntity, 'market_value', 'Market Value', {\n description: 'Estimated market value of the property',\n })\n\n addCreatedAtField(propertyEntity, { description: 'When the property was created' })\n addUpdatedAtField(propertyEntity, { description: 'When the property was last updated' })\n\n // Listing Entity\n const listingEntity = propertyModel.addEntity({\n info: {\n name: 'listing',\n displayName: 'Listing',\n description: 'Property listing information',\n },\n })\n\n addIdField(listingEntity, { displayName: 'Listing ID', description: 'Unique identifier for the listing' })\n\n addNameField(listingEntity, { displayName: 'Listing Title', description: 'Title of the listing' })\n\n addDescriptionField(listingEntity, { description: 'Listing description and details' })\n\n addCurrencyAmountField(listingEntity, 'price', 'Listing Price', {\n description: 'Price for the listing',\n })\n\n listingEntity.addProperty({\n info: { name: 'list_date', displayName: 'List Date', description: 'Date when property was listed' },\n type: 'date',\n required: true,\n })\n\n addCustomStatusField(listingEntity, ['active', 'pending', 'sold', 'expired', 'withdrawn'], {\n displayName: 'Listing Status',\n description: 'Current status of the listing',\n })\n\n addCreatedAtField(listingEntity, { description: 'When the listing was created' })\n\n // Listing-Property Association (Many-to-One)\n listingEntity.addAssociation(\n { key: propertyEntity.key },\n {\n info: { name: 'property', displayName: 'Property', description: 'Property for this listing' },\n required: true,\n multiple: false,\n }\n )\n\n // Amenity Entity\n const amenityEntity = propertyModel.addEntity({\n info: {\n name: 'amenity',\n displayName: 'Amenity',\n description: 'Property amenities and features',\n },\n })\n\n addIdField(amenityEntity, { displayName: 'Amenity ID', description: 'Unique identifier for the amenity' })\n\n addNameField(amenityEntity, { displayName: 'Amenity Name', description: 'Name of the amenity' })\n\n addDescriptionField(amenityEntity, { description: 'Amenity description and details' })\n\n amenityEntity.addProperty({\n info: { name: 'amenity_type', displayName: 'Amenity Type', description: 'Type of amenity' },\n type: 'string',\n required: true,\n schema: {\n enum: ['interior', 'exterior', 'community', 'utilities'],\n },\n })\n\n addBooleanField(amenityEntity, 'available', 'true', {\n displayName: 'Available',\n description: 'Whether the amenity is available',\n })\n\n addCreatedAtField(amenityEntity, { description: 'When the amenity was created' })\n\n // Property-Amenity Association (Many-to-Many)\n propertyEntity.addAssociation(\n { key: amenityEntity.key },\n {\n info: { name: 'amenities', displayName: 'Amenities', description: 'Amenities available at this property' },\n required: false,\n multiple: true,\n }\n )\n\n // Photo Entity\n const photoEntity = propertyModel.addEntity({\n info: {\n name: 'photo',\n displayName: 'Photo',\n description: 'Property photos and images',\n },\n })\n\n addIdField(photoEntity, { displayName: 'Photo ID', description: 'Unique identifier for the photo' })\n\n photoEntity.addProperty({\n info: { name: 'url', displayName: 'Photo URL', description: 'URL to the photo' },\n type: 'string',\n required: true,\n })\n\n addNameField(photoEntity, { displayName: 'Photo Title', description: 'Title or caption for the photo' })\n\n addDescriptionField(photoEntity, { description: 'Photo description and details' })\n\n photoEntity.addProperty({\n info: { name: 'photo_type', displayName: 'Photo Type', description: 'Type of property photo' },\n type: 'string',\n required: true,\n schema: {\n enum: ['exterior', 'interior', 'kitchen', 'bathroom', 'bedroom', 'living_room'],\n },\n })\n\n addBooleanField(photoEntity, 'featured', 'false', {\n displayName: 'Featured',\n description: 'Whether this is a featured photo',\n })\n\n addCreatedAtField(photoEntity, { description: 'When the photo was created' })\n\n // Property-Photo Association (One-to-Many)\n propertyEntity.addAssociation(\n { key: photoEntity.key },\n {\n info: { name: 'photos', displayName: 'Photos', description: 'Photos of this property' },\n required: false,\n multiple: true,\n }\n )\n\n //\n // 2. CLIENT MANAGEMENT NAMESPACE\n //\n const clientManagement = domain.addNamespace({\n info: {\n name: 'ClientManagement',\n displayName: 'Client Management',\n description: 'Buyers, sellers, agents, and leads',\n },\n })\n\n // Client Model\n const clientModel = clientManagement.addModel({\n info: {\n name: 'Clients',\n displayName: 'Client Management',\n description: 'Client information and relationships',\n },\n })\n\n // Client Entity\n const clientEntity = clientModel.addEntity({\n info: {\n name: 'client',\n displayName: 'Client',\n description: 'Real estate client (buyer or seller)',\n },\n })\n\n addIdField(clientEntity, { displayName: 'Client ID', description: 'Unique identifier for the client' })\n\n addFirstNameField(clientEntity, { description: 'Client first name' })\n addLastNameField(clientEntity, { description: 'Client last name' })\n\n addEmailField(clientEntity, { description: 'Client email address' })\n addPhoneField(clientEntity, { description: 'Client phone number' })\n\n clientEntity.addProperty({\n info: { name: 'client_type', displayName: 'Client Type', description: 'Type of client (buyer, seller, or both)' },\n type: 'string',\n required: true,\n schema: {\n enum: ['buyer', 'seller', 'both'],\n },\n })\n\n addCustomStatusField(clientEntity, ['active', 'inactive', 'prospect', 'closed'], {\n displayName: 'Client Status',\n description: 'Current status of the client',\n })\n\n addCurrencyAmountField(clientEntity, 'budget_min', 'Minimum Budget', {\n description: 'Minimum budget for property purchase',\n })\n\n addCurrencyAmountField(clientEntity, 'budget_max', 'Maximum Budget', {\n description: 'Maximum budget for property purchase',\n })\n\n addCreatedAtField(clientEntity, { description: 'When the client was created' })\n addUpdatedAtField(clientEntity, { description: 'When the client was last updated' })\n\n // Agent Entity\n const agentEntity = clientModel.addEntity({\n info: {\n name: 'agent',\n displayName: 'Agent',\n description: 'Real estate agent information',\n },\n })\n\n addIdField(agentEntity, { displayName: 'Agent ID', description: 'Unique identifier for the agent' })\n\n addFirstNameField(agentEntity, { description: 'Agent first name' })\n addLastNameField(agentEntity, { description: 'Agent last name' })\n\n addEmailField(agentEntity, { description: 'Agent email address' })\n addPhoneField(agentEntity, { description: 'Agent phone number' })\n\n agentEntity.addProperty({\n info: { name: 'license_number', displayName: 'License Number', description: 'Real estate license number' },\n type: 'string',\n required: true,\n unique: true,\n })\n\n addCustomStatusField(agentEntity, ['active', 'inactive', 'suspended'], {\n displayName: 'Agent Status',\n description: 'Current status of the agent',\n })\n\n addCreatedAtField(agentEntity, { description: 'When the agent was created' })\n\n // Client-Agent Association (Many-to-One)\n clientEntity.addAssociation(\n { key: agentEntity.key },\n {\n info: { name: 'agent', displayName: 'Agent', description: 'Agent representing this client' },\n required: true,\n multiple: false,\n }\n )\n\n // Lead Entity\n const leadEntity = clientModel.addEntity({\n info: {\n name: 'lead',\n displayName: 'Lead',\n description: 'Sales leads and prospects',\n },\n })\n\n addIdField(leadEntity, { displayName: 'Lead ID', description: 'Unique identifier for the lead' })\n\n addFirstNameField(leadEntity, { description: 'Lead first name' })\n addLastNameField(leadEntity, { description: 'Lead last name' })\n\n addEmailField(leadEntity, { description: 'Lead email address' })\n addPhoneField(leadEntity, { description: 'Lead phone number' })\n\n addCustomStatusField(leadEntity, ['new', 'contacted', 'qualified', 'converted', 'lost'], {\n displayName: 'Lead Status',\n description: 'Current status of the lead',\n })\n\n leadEntity.addProperty({\n info: { name: 'lead_source', displayName: 'Lead Source', description: 'Source of the lead' },\n type: 'string',\n required: true,\n schema: {\n enum: ['website', 'referral', 'social_media', 'cold_call', 'event'],\n },\n })\n\n addDescriptionField(leadEntity, { description: 'Lead notes and information' })\n\n addCreatedAtField(leadEntity, { description: 'When the lead was created' })\n\n // Lead-Agent Association (Many-to-One)\n leadEntity.addAssociation(\n { key: agentEntity.key },\n {\n info: { name: 'agent', displayName: 'Agent', description: 'Agent assigned to this lead' },\n required: true,\n multiple: false,\n }\n )\n\n //\n // 3. TRANSACTION MANAGEMENT NAMESPACE\n //\n const transactionManagement = domain.addNamespace({\n info: {\n name: 'TransactionManagement',\n displayName: 'Transaction Management',\n description: 'Offers, contracts, closings, and escrow',\n },\n })\n\n // Transaction Model\n const transactionModel = transactionManagement.addModel({\n info: {\n name: 'Transactions',\n displayName: 'Transaction Management',\n description: 'Real estate transactions and deals',\n },\n })\n\n // Offer Entity\n const offerEntity = transactionModel.addEntity({\n info: {\n name: 'offer',\n displayName: 'Offer',\n description: 'Property purchase offers',\n },\n })\n\n addIdField(offerEntity, { displayName: 'Offer ID', description: 'Unique identifier for the offer' })\n\n addCurrencyAmountField(offerEntity, 'offer_price', 'Offer Price', {\n description: 'Price offered for the property',\n })\n\n offerEntity.addProperty({\n info: { name: 'offer_date', displayName: 'Offer Date', description: 'Date when offer was made' },\n type: 'date',\n required: true,\n })\n\n addCustomStatusField(offerEntity, ['pending', 'accepted', 'rejected', 'countered', 'withdrawn'], {\n displayName: 'Offer Status',\n description: 'Current status of the offer',\n })\n\n addDescriptionField(offerEntity, { description: 'Offer terms and conditions' })\n\n addCreatedAtField(offerEntity, { description: 'When the offer was created' })\n\n // Offer-Property Association (Many-to-One)\n offerEntity.addAssociation(\n { key: propertyEntity.key },\n {\n info: { name: 'property', displayName: 'Property', description: 'Property for this offer' },\n required: true,\n multiple: false,\n }\n )\n\n // Offer-Client Association (Many-to-One)\n offerEntity.addAssociation(\n { key: clientEntity.key },\n {\n info: { name: 'buyer', displayName: 'Buyer', description: 'Buyer making this offer' },\n required: true,\n multiple: false,\n }\n )\n\n // Contract Entity\n const contractEntity = transactionModel.addEntity({\n info: {\n name: 'contract',\n displayName: 'Contract',\n description: 'Real estate purchase contracts',\n },\n })\n\n addIdField(contractEntity, { displayName: 'Contract ID', description: 'Unique identifier for the contract' })\n\n addCurrencyAmountField(contractEntity, 'purchase_price', 'Purchase Price', {\n description: 'Final purchase price',\n })\n\n contractEntity.addProperty({\n info: { name: 'contract_date', displayName: 'Contract Date', description: 'Date when contract was signed' },\n type: 'date',\n required: true,\n })\n\n contractEntity.addProperty({\n info: { name: 'closing_date', displayName: 'Closing Date', description: 'Scheduled closing date' },\n type: 'date',\n required: true,\n })\n\n addCustomStatusField(contractEntity, ['draft', 'signed', 'pending', 'closed', 'cancelled'], {\n displayName: 'Contract Status',\n description: 'Current status of the contract',\n })\n\n addCreatedAtField(contractEntity, { description: 'When the contract was created' })\n\n // Contract-Property Association (Many-to-One)\n contractEntity.addAssociation(\n { key: propertyEntity.key },\n {\n info: { name: 'property', displayName: 'Property', description: 'Property in this contract' },\n required: true,\n multiple: false,\n }\n )\n\n // Contract-Buyer Association (Many-to-One)\n contractEntity.addAssociation(\n { key: clientEntity.key },\n {\n info: { name: 'buyer', displayName: 'Buyer', description: 'Buyer in this contract' },\n required: true,\n multiple: false,\n }\n )\n\n // Contract-Seller Association (Many-to-One)\n contractEntity.addAssociation(\n { key: clientEntity.key },\n {\n info: { name: 'seller', displayName: 'Seller', description: 'Seller in this contract' },\n required: true,\n multiple: false,\n }\n )\n\n // Escrow Entity\n const escrowEntity = transactionModel.addEntity({\n info: {\n name: 'escrow',\n displayName: 'Escrow',\n description: 'Escrow account and transaction details',\n },\n })\n\n addIdField(escrowEntity, { displayName: 'Escrow ID', description: 'Unique identifier for the escrow' })\n\n addCurrencyAmountField(escrowEntity, 'escrow_amount', 'Escrow Amount', {\n description: 'Amount held in escrow',\n })\n\n escrowEntity.addProperty({\n info: { name: 'escrow_date', displayName: 'Escrow Date', description: 'Date when escrow was opened' },\n type: 'date',\n required: true,\n })\n\n addCustomStatusField(escrowEntity, ['open', 'funded', 'closed', 'cancelled'], {\n displayName: 'Escrow Status',\n description: 'Current status of the escrow',\n })\n\n addCreatedAtField(escrowEntity, { description: 'When the escrow was created' })\n\n // Escrow-Contract Association (Many-to-One)\n escrowEntity.addAssociation(\n { key: contractEntity.key },\n {\n info: { name: 'contract', displayName: 'Contract', description: 'Contract for this escrow' },\n required: true,\n multiple: false,\n }\n )\n\n //\n // 4. MARKET ANALYSIS NAMESPACE\n //\n const marketAnalysis = domain.addNamespace({\n info: {\n name: 'MarketAnalysis',\n displayName: 'Market Analysis',\n description: 'Comps, market data, and pricing models',\n },\n })\n\n // Market Model\n const marketModel = marketAnalysis.addModel({\n info: {\n name: 'Market',\n displayName: 'Market Analysis',\n description: 'Market data and analysis',\n },\n })\n\n // Market Data Entity\n const marketDataEntity = marketModel.addEntity({\n info: {\n name: 'market_data',\n displayName: 'Market Data',\n description: 'Real estate market data and trends',\n },\n })\n\n addIdField(marketDataEntity, { displayName: 'Market Data ID', description: 'Unique identifier for the market data' })\n\n marketDataEntity.addProperty({\n info: { name: 'area', displayName: 'Area', description: 'Geographic area for market data' },\n type: 'string',\n required: true,\n })\n\n marketDataEntity.addProperty({\n info: { name: 'data_date', displayName: 'Data Date', description: 'Date of market data' },\n type: 'date',\n required: true,\n })\n\n addCurrencyAmountField(marketDataEntity, 'avg_price', 'Average Price', {\n description: 'Average property price in the area',\n })\n\n marketDataEntity.addProperty({\n info: { name: 'days_on_market', displayName: 'Days on Market', description: 'Average days on market' },\n type: 'number',\n required: true,\n schema: {\n minimum: 0,\n },\n })\n\n marketDataEntity.addProperty({\n info: { name: 'inventory_count', displayName: 'Inventory Count', description: 'Number of properties for sale' },\n type: 'number',\n required: true,\n schema: {\n minimum: 0,\n },\n })\n\n addCreatedAtField(marketDataEntity, { description: 'When the market data was created' })\n\n // Comparable Entity\n const comparableEntity = marketModel.addEntity({\n info: {\n name: 'comparable',\n displayName: 'Comparable',\n description: 'Comparable property sales data',\n },\n })\n\n addIdField(comparableEntity, { displayName: 'Comparable ID', description: 'Unique identifier for the comparable' })\n\n addNameField(comparableEntity, {\n displayName: 'Comparable Name',\n description: 'Name or address of comparable property',\n })\n\n addCurrencyAmountField(comparableEntity, 'sale_price', 'Sale Price', {\n description: 'Sale price of the comparable property',\n })\n\n comparableEntity.addProperty({\n info: { name: 'sale_date', displayName: 'Sale Date', description: 'Date when comparable property sold' },\n type: 'date',\n required: true,\n })\n\n comparableEntity.addProperty({\n info: { name: 'square_feet', displayName: 'Square Feet', description: 'Square footage of comparable property' },\n type: 'number',\n required: true,\n schema: {\n minimum: 0,\n },\n })\n\n addCreatedAtField(comparableEntity, { description: 'When the comparable was created' })\n\n // Comparable-Property Association (Many-to-One)\n comparableEntity.addAssociation(\n { key: propertyEntity.key },\n {\n info: { name: 'property', displayName: 'Property', description: 'Property for this comparable' },\n required: true,\n multiple: false,\n }\n )\n\n //\n // 5. DOCUMENT MANAGEMENT NAMESPACE\n //\n const documentManagement = domain.addNamespace({\n info: {\n name: 'DocumentManagement',\n displayName: 'Document Management',\n description: 'Contracts, disclosures, and legal documents',\n },\n })\n\n // Document Model\n const documentModel = documentManagement.addModel({\n info: {\n name: 'Documents',\n displayName: 'Document Management',\n description: 'Document storage and management',\n },\n })\n\n // Document Entity\n const documentEntity = documentModel.addEntity({\n info: {\n name: 'document',\n displayName: 'Document',\n description: 'Legal documents and contracts',\n },\n })\n\n addIdField(documentEntity, { displayName: 'Document ID', description: 'Unique identifier for the document' })\n\n addNameField(documentEntity, { displayName: 'Document Name', description: 'Name of the document' })\n\n addDescriptionField(documentEntity, { description: 'Document description and details' })\n\n documentEntity.addProperty({\n info: { name: 'file_url', displayName: 'File URL', description: 'URL to the document file' },\n type: 'string',\n required: true,\n })\n\n documentEntity.addProperty({\n info: { name: 'document_type', displayName: 'Document Type', description: 'Type of document' },\n type: 'string',\n required: true,\n schema: {\n enum: ['contract', 'disclosure', 'inspection', 'appraisal', 'title', 'other'],\n },\n })\n\n addCustomStatusField(documentEntity, ['draft', 'pending', 'signed', 'archived'], {\n displayName: 'Document Status',\n description: 'Current status of the document',\n })\n\n addCreatedAtField(documentEntity, { description: 'When the document was created' })\n\n // Document-Contract Association (Many-to-One)\n documentEntity.addAssociation(\n { key: contractEntity.key },\n {\n info: { name: 'contract', displayName: 'Contract', description: 'Contract for this document' },\n required: false,\n multiple: false,\n }\n )\n\n // Document-Property Association (Many-to-One)\n documentEntity.addAssociation(\n { key: propertyEntity.key },\n {\n info: { name: 'property', displayName: 'Property', description: 'Property for this document' },\n required: false,\n multiple: false,\n }\n )\n\n //\n // 6. MARKETING NAMESPACE\n //\n const marketing = domain.addNamespace({\n info: {\n name: 'Marketing',\n displayName: 'Marketing',\n description: 'Lead generation, campaigns, and follow-ups',\n },\n })\n\n // Marketing Model\n const marketingModel = marketing.addModel({\n info: {\n name: 'Marketing',\n displayName: 'Marketing Management',\n description: 'Marketing campaigns and activities',\n },\n })\n\n // Campaign Entity\n const campaignEntity = marketingModel.addEntity({\n info: {\n name: 'campaign',\n displayName: 'Campaign',\n description: 'Marketing campaigns and promotions',\n },\n })\n\n addIdField(campaignEntity, { displayName: 'Campaign ID', description: 'Unique identifier for the campaign' })\n\n addNameField(campaignEntity, { displayName: 'Campaign Name', description: 'Name of the marketing campaign' })\n\n addDescriptionField(campaignEntity, { description: 'Campaign description and objectives' })\n\n campaignEntity.addProperty({\n info: { name: 'start_date', displayName: 'Start Date', description: 'Campaign start date' },\n type: 'date',\n required: true,\n })\n\n campaignEntity.addProperty({\n info: { name: 'end_date', displayName: 'End Date', description: 'Campaign end date' },\n type: 'date',\n required: true,\n })\n\n addCustomStatusField(campaignEntity, ['draft', 'active', 'paused', 'completed', 'cancelled'], {\n displayName: 'Campaign Status',\n description: 'Current status of the campaign',\n })\n\n campaignEntity.addProperty({\n info: { name: 'campaign_type', displayName: 'Campaign Type', description: 'Type of marketing campaign' },\n type: 'string',\n required: true,\n schema: {\n enum: ['email', 'social_media', 'print', 'digital', 'event'],\n },\n })\n\n addCreatedAtField(campaignEntity, { description: 'When the campaign was created' })\n\n // Follow-up Entity\n const followUpEntity = marketingModel.addEntity({\n info: {\n name: 'follow_up',\n displayName: 'Follow-up',\n description: 'Client follow-up activities',\n },\n })\n\n addIdField(followUpEntity, { displayName: 'Follow-up ID', description: 'Unique identifier for the follow-up' })\n\n addNameField(followUpEntity, { displayName: 'Follow-up Title', description: 'Title of the follow-up activity' })\n\n addDescriptionField(followUpEntity, { description: 'Follow-up notes and details' })\n\n followUpEntity.addProperty({\n info: { name: 'scheduled_date', displayName: 'Scheduled Date', description: 'Scheduled follow-up date' },\n type: 'date',\n required: true,\n })\n\n addCustomStatusField(followUpEntity, ['scheduled', 'completed', 'cancelled', 'overdue'], {\n displayName: 'Follow-up Status',\n description: 'Current status of the follow-up',\n })\n\n followUpEntity.addProperty({\n info: { name: 'follow_up_type', displayName: 'Follow-up Type', description: 'Type of follow-up activity' },\n type: 'string',\n required: true,\n schema: {\n enum: ['phone_call', 'email', 'meeting', 'text', 'other'],\n },\n })\n\n addCreatedAtField(followUpEntity, { description: 'When the follow-up was created' })\n\n // Follow-up-Client Association (Many-to-One)\n followUpEntity.addAssociation(\n { key: clientEntity.key },\n {\n info: { name: 'client', displayName: 'Client', description: 'Client for this follow-up' },\n required: true,\n multiple: false,\n }\n )\n\n // Follow-up-Agent Association (Many-to-One)\n followUpEntity.addAssociation(\n { key: agentEntity.key },\n {\n info: { name: 'agent', displayName: 'Agent', description: 'Agent responsible for this follow-up' },\n required: true,\n multiple: false,\n }\n )\n\n return domain\n}\n"]}
@@ -22,8 +22,8 @@
22
22
  * console.log('Blog domain created with', domain.graph.nodeCount(), 'nodes')
23
23
  * ```
24
24
  */
25
- import { DataDomain } from '../DataDomain.js';
26
- import type { CreateTemplateOptions } from './types.js';
25
+ import { DataDomain } from '../../../DataDomain.js';
26
+ import type { CreateTemplateOptions } from '../../types.js';
27
27
  /**
28
28
  * Creates a comprehensive blog/publishing data domain following domain-driven design principles.
29
29
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog-domain.d.ts","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/technology-media/blog-domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAoBnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAa3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,CA6sBxF"}
@@ -22,11 +22,11 @@
22
22
  * console.log('Blog domain created with', domain.graph.nodeCount(), 'nodes')
23
23
  * ```
24
24
  */
25
- import { DataDomain } from '../DataDomain.js';
26
- import { SemanticType } from '../Semantics.js';
27
- import { createCalculatedSemantic } from '../definitions/Calculated.js';
28
- import { createURLSemantic } from '../definitions/URL.js';
29
- import { addIdField, addNameField, addDescriptionField, addPublicUniqueNameField, addCustomStatusField, addCreatedAtField, addUpdatedAtField, addEmailField, addPasswordField, addFirstNameField, addLastNameField, addAvatarUrlField, addBooleanField, addQuantityField, } from '../helpers/Intelisense.js';
25
+ import { DataDomain } from '../../../DataDomain.js';
26
+ import { SemanticType } from '../../../Semantics.js';
27
+ import { createCalculatedSemantic } from '../../../definitions/Calculated.js';
28
+ import { createURLSemantic } from '../../../definitions/URL.js';
29
+ import { addIdField, addNameField, addDescriptionField, addPublicUniqueNameField, addCustomStatusField, addCreatedAtField, addUpdatedAtField, addEmailField, addPasswordField, addFirstNameField, addLastNameField, addAvatarUrlField, addBooleanField, addQuantityField, } from '../../../helpers/Intelisense.js';
30
30
  function createDomain() {
31
31
  return new DataDomain({
32
32
  info: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blog-domain.js","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/technology-media/blog-domain.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Blog/Publishing Data Domain Example\n *\n * This file demonstrates how to create a comprehensive blog/publishing data domain\n * using the API Client Core modeling system. It follows the business-first approach\n * and demonstrates proper use of namespaces, models, entities, properties,\n * associations, and semantic annotations.\n *\n * The example includes:\n * - Content Management with posts, pages, and media\n * - User Management with authors, editors, and subscribers\n * - Publishing Workflow with drafts, reviews, and publication\n * - Social Features with comments, likes, and sharing\n * - Analytics and SEO with metadata and tracking\n * - Multi-tenant support for multiple blogs/publications\n *\n * @example\n * ```typescript\n * import { createBlogDomain } from './blog-domain.js'\n *\n * const domain = createBlogDomain()\n * console.log('Blog domain created with', domain.graph.nodeCount(), 'nodes')\n * ```\n */\n\nimport { DataDomain } from '../../../DataDomain.js'\nimport { SemanticType } from '../../../Semantics.js'\nimport { createCalculatedSemantic } from '../../../definitions/Calculated.js'\nimport { createURLSemantic } from '../../../definitions/URL.js'\nimport {\n addIdField,\n addNameField,\n addDescriptionField,\n addPublicUniqueNameField,\n addCustomStatusField,\n addCreatedAtField,\n addUpdatedAtField,\n addEmailField,\n addPasswordField,\n addFirstNameField,\n addLastNameField,\n addAvatarUrlField,\n addBooleanField,\n addQuantityField,\n} from '../../../helpers/Intelisense.js'\nimport type { CreateTemplateOptions } from '../../types.js'\n\nfunction createDomain(): DataDomain {\n return new DataDomain({\n info: {\n name: 'Blog Publishing Platform',\n displayName: 'Blog Publishing Platform',\n description:\n 'A comprehensive content management and publishing platform for blogs, magazines, and digital publications',\n },\n })\n}\n\n/**\n * Creates a comprehensive blog/publishing data domain following domain-driven design principles.\n *\n * This function demonstrates the proper hierarchy and organization for a publishing platform:\n * 1. Creates the root DataDomain for the publishing platform\n * 2. Organizes functionality into logical namespaces (Content, Users, Publishing, etc.)\n * 3. Groups related entities into models within each namespace\n * 4. Defines entities with proper semantic annotations for publishing workflows\n * 5. Establishes associations with appropriate cardinality for content relationships\n *\n * @returns A fully configured DataDomain with all blog/publishing entities and relationships\n */\nexport default function createBlogDomain(options: CreateTemplateOptions = {}): DataDomain {\n // Ensure the root data domain\n const domain = options.domain ?? createDomain()\n\n //\n // 1. CONTENT MANAGEMENT NAMESPACE\n //\n const contentManagement = domain.addNamespace({\n info: {\n name: 'ContentManagement',\n displayName: 'Content Management',\n description: 'Core content creation, editing, and organization features',\n },\n })\n\n // Publication Model - Multi-tenant support\n const publicationModel = contentManagement.addModel({\n info: {\n name: 'Publications',\n displayName: 'Publications Management',\n description: 'Individual blogs, magazines, or publications within the platform',\n },\n })\n\n // Publication Entity - Represents individual blogs/publications\n const publicationEntity = publicationModel.addEntity({\n info: {\n name: 'publication',\n displayName: 'Publication',\n description: 'Individual blog or publication site',\n },\n })\n\n addIdField(publicationEntity, { displayName: 'Publication ID', description: 'Unique identifier for the publication' })\n\n addNameField(publicationEntity, { displayName: 'Publication Name', description: 'Display name of the publication' })\n\n addPublicUniqueNameField(publicationEntity, {\n name: 'slug',\n displayName: 'URL Slug',\n description: 'URL-friendly identifier for the publication',\n })\n\n addDescriptionField(publicationEntity, { description: 'Publication description and tagline' })\n\n publicationEntity.addProperty({\n info: { name: 'domain', displayName: 'Custom Domain', description: 'Custom domain name for the publication' },\n type: 'string',\n // semantics: [{ id: SemanticType.DomainName }],\n })\n\n publicationEntity.addProperty({\n info: { name: 'logo_url', displayName: 'Logo URL', description: 'URL to publication logo image' },\n type: 'string',\n semantics: [{ id: SemanticType.ImageURL }],\n })\n\n addCustomStatusField(publicationEntity, ['active', 'suspended', 'archived'], {\n displayName: 'Publication Status',\n description: 'Current status of the publication',\n })\n\n addCreatedAtField(publicationEntity, { description: 'When the publication was created' })\n\n // Content Model\n const contentModel = contentManagement.addModel({\n info: {\n name: 'Content',\n displayName: 'Content Management',\n description: 'Posts, pages, and other content types',\n },\n })\n\n // Category Entity\n const categoryEntity = contentModel.addEntity({\n info: {\n name: 'category',\n displayName: 'Content Category',\n description: 'Content categorization for organization and navigation',\n },\n })\n\n addIdField(categoryEntity, { displayName: 'Category ID', description: 'Unique identifier for the category' })\n\n addNameField(categoryEntity, { displayName: 'Category Name', description: 'Display name of the category' })\n\n addPublicUniqueNameField(categoryEntity, {\n name: 'slug',\n displayName: 'URL Slug',\n description: 'URL-friendly identifier for the category',\n })\n\n addDescriptionField(categoryEntity, { description: 'Category description' })\n\n categoryEntity.addProperty({\n info: { name: 'color', displayName: 'Color', description: 'Theme color for the category' },\n type: 'string',\n // semantics: [{ id: SemanticType.Color }],\n })\n\n // Category-Publication Association (Many-to-One)\n categoryEntity.addAssociation(\n { key: publicationEntity.key },\n {\n info: { name: 'publication', displayName: 'Publication', description: 'Publication this category belongs to' },\n required: true,\n multiple: false,\n }\n )\n\n // Self-referencing association for category hierarchy\n categoryEntity.addAssociation(\n { key: categoryEntity.key },\n {\n info: {\n name: 'parentCategory',\n displayName: 'Parent Category',\n description: 'Parent category for hierarchical organization',\n },\n required: false,\n multiple: false,\n }\n )\n\n // Tag Entity\n const tagEntity = contentModel.addEntity({\n info: {\n name: 'Tag',\n displayName: 'Content Tag',\n description: 'Tags for flexible content labeling and discovery',\n },\n })\n\n addIdField(tagEntity, { displayName: 'Tag ID', description: 'Unique identifier for the tag' })\n\n addNameField(tagEntity, { displayName: 'Tag Name', description: 'Display name of the tag' })\n\n addPublicUniqueNameField(tagEntity, {\n name: 'slug',\n displayName: 'URL Slug',\n description: 'URL-friendly identifier for the tag',\n })\n\n // Tag-Publication Association (Many-to-One)\n tagEntity.addAssociation(\n { key: publicationEntity.key },\n {\n info: { name: 'publication', displayName: 'Publication', description: 'Publication this tag belongs to' },\n required: true,\n multiple: false,\n }\n )\n\n // Post Entity - Main content type\n const postEntity = contentModel.addEntity({\n info: {\n name: 'Post',\n displayName: 'Blog Post',\n description: 'Individual blog posts and articles',\n },\n })\n\n addIdField(postEntity, { displayName: 'Post ID', description: 'Unique identifier for the post' })\n\n postEntity.addProperty({\n info: { name: 'title', displayName: 'Post Title', description: 'Title of the blog post' },\n type: 'string',\n required: true,\n semantics: [{ id: SemanticType.Title }],\n })\n\n addPublicUniqueNameField(postEntity, {\n name: 'slug',\n displayName: 'URL Slug',\n description: 'URL-friendly identifier for the post',\n })\n\n postEntity.addProperty({\n info: { name: 'excerpt', displayName: 'Excerpt', description: 'Brief summary or excerpt of the post' },\n type: 'string',\n semantics: [{ id: SemanticType.Summary }],\n })\n\n postEntity.addProperty({\n info: { name: 'content', displayName: 'Content', description: 'Full content of the post in HTML or Markdown' },\n type: 'string',\n required: true,\n semantics: [{ id: SemanticType.HTML }],\n })\n\n postEntity.addProperty({\n info: {\n name: 'content_format',\n displayName: 'Content Format',\n description: 'Format of the content (HTML, Markdown, etc.)',\n },\n type: 'string',\n required: true,\n schema: {\n enum: ['html', 'markdown', 'richtext'],\n defaultValue: { type: 'literal', value: 'markdown' },\n },\n })\n\n postEntity.addProperty({\n info: { name: 'featured_image_url', displayName: 'Featured Image URL', description: 'URL to featured image' },\n type: 'string',\n semantics: [{ id: SemanticType.ImageURL }],\n })\n\n addCustomStatusField(postEntity, ['draft', 'pending_review', 'scheduled', 'published', 'archived'], {\n displayName: 'Post Status',\n description: 'Current publishing status of the post',\n })\n\n addCreatedAtField(postEntity, {\n name: 'published_at',\n displayName: 'Published At',\n description: 'When the post was published',\n })\n\n postEntity.addProperty({\n info: {\n name: 'scheduled_at',\n displayName: 'Scheduled At',\n description: 'When the post is scheduled to be published',\n },\n type: 'datetime',\n })\n\n addQuantityField(postEntity, {\n name: 'view_count',\n displayName: 'View Count',\n description: 'Number of times the post has been viewed',\n })\n\n postEntity.addProperty({\n info: { name: 'reading_time', displayName: 'Reading Time', description: 'Estimated reading time in minutes' },\n type: 'number',\n readOnly: true,\n semantics: [\n createCalculatedSemantic({\n formula: 'CEILING(LENGTH(REPLACE({{content}}, \" \", \"\")) / 250)',\n dependencies: [],\n recalculateOnUpdate: true,\n }),\n ],\n })\n\n postEntity.addProperty({\n info: { name: 'word_count', displayName: 'Word Count', description: 'Number of words in the post content' },\n type: 'number',\n readOnly: true,\n semantics: [\n createCalculatedSemantic({\n formula: 'LENGTH({{content}}) - LENGTH(REPLACE({{content}}, \" \", \"\")) + 1',\n dependencies: [],\n recalculateOnUpdate: true,\n }),\n ],\n })\n\n postEntity.addProperty({\n info: { name: 'meta_title', displayName: 'Meta Title', description: 'SEO meta title' },\n type: 'string',\n // semantics: [{ id: SemanticType.SEOTitle }],\n })\n\n postEntity.addProperty({\n info: { name: 'meta_description', displayName: 'Meta Description', description: 'SEO meta description' },\n type: 'string',\n // semantics: [{ id: SemanticType.SEODescription }],\n })\n\n addCreatedAtField(postEntity, { description: 'When the post was created' })\n addUpdatedAtField(postEntity, { description: 'When the post was last updated' })\n\n // Post-Publication Association (Many-to-One)\n postEntity.addAssociation(\n { key: publicationEntity.key },\n {\n info: { name: 'publication', displayName: 'Publication', description: 'Publication this post belongs to' },\n required: true,\n multiple: false,\n }\n )\n\n // Post-Category Association (Many-to-Many)\n postEntity.addAssociation(\n { key: categoryEntity.key },\n {\n info: { name: 'categories', displayName: 'Post Categories', description: 'Categories this post belongs to' },\n required: false,\n multiple: true,\n semantics: [{ id: SemanticType.Categories }],\n }\n )\n\n // Post-Tag Association (Many-to-Many)\n postEntity.addAssociation(\n { key: tagEntity.key },\n {\n info: { name: 'tags', displayName: 'Post Tags', description: 'Tags associated with this post' },\n required: false,\n multiple: true,\n semantics: [{ id: SemanticType.Tags }],\n }\n )\n\n //\n // 2. USER MANAGEMENT NAMESPACE\n //\n const userManagement = domain.addNamespace({\n info: {\n name: 'UserManagement',\n displayName: 'User Management',\n description: 'Authors, editors, subscribers, and user roles management',\n },\n })\n\n // User Model\n const userModel = userManagement.addModel({\n info: {\n name: 'Users',\n displayName: 'User Management',\n description: 'User accounts and authentication',\n },\n })\n\n // User Entity\n const userEntity = userModel.addEntity({\n info: {\n name: 'user',\n displayName: 'User Account',\n description: 'User account for authors, editors, and subscribers',\n },\n semantics: [{ id: SemanticType.User }],\n })\n\n addIdField(userEntity, { displayName: 'User ID', description: 'Unique identifier for the user' })\n\n addEmailField(userEntity, { description: 'User email address for login and communication' })\n\n addPasswordField(userEntity, { description: 'Encrypted password for authentication' })\n\n userEntity.addProperty({\n info: { name: 'username', displayName: 'Username', description: 'Unique username for the user' },\n type: 'string',\n required: true,\n unique: true,\n semantics: [{ id: SemanticType.PublicUniqueName }],\n })\n\n userEntity.addProperty({\n info: { name: 'display_name', displayName: 'Display Name', description: 'Public display name for the user' },\n type: 'string',\n required: true,\n })\n\n addFirstNameField(userEntity, { description: 'User first name' })\n addLastNameField(userEntity, { description: 'User last name' })\n\n userEntity.addProperty({\n info: { name: 'bio', displayName: 'Biography', description: 'User biography and description' },\n type: 'string',\n semantics: [{ id: SemanticType.Description }],\n })\n\n addAvatarUrlField(userEntity, { description: 'URL to user profile picture' })\n\n userEntity.addProperty({\n info: { name: 'website', displayName: 'Website', description: 'User personal website URL' },\n type: 'string',\n semantics: [createURLSemantic()],\n })\n\n // userEntity.addProperty({\n // info: {\n // name: 'social_links',\n // displayName: 'Social Links',\n // description: 'JSON object containing social media links',\n // },\n // type: 'string',\n // // semantics: [{ id: SemanticType.SocialMediaLinks }],\n // })\n\n addCustomStatusField(userEntity, ['subscriber', 'author', 'editor', 'admin', 'super_admin'], {\n name: 'role',\n displayName: 'User Role',\n description: 'User role for permission management',\n })\n\n addCustomStatusField(userEntity, ['active', 'inactive', 'suspended', 'pending_verification'], {\n displayName: 'User Status',\n description: 'Current status of the user account',\n })\n\n addBooleanField(userEntity, 'emailVerified', 'false', {\n displayName: 'Email Verified',\n description: 'Whether the user has verified their email',\n })\n\n // userEntity.addProperty({\n // info: { name: 'last_login_at', displayName: 'Last Login At', description: 'When the user last logged in' },\n // type: 'datetime',\n // readOnly: true,\n // semantics: [{ id: SemanticType.LastLoginTimestamp }],\n // })\n\n addCreatedAtField(userEntity, { description: 'When the user account was created' })\n\n // Post-Author Association (Many-to-One)\n postEntity.addAssociation(\n { key: userEntity.key },\n {\n info: { name: 'author', displayName: 'Post Author', description: 'Author who wrote this post' },\n required: true,\n multiple: false,\n semantics: [{ id: SemanticType.ResourceOwnerIdentifier }],\n }\n )\n\n //\n // 3. SOCIAL FEATURES NAMESPACE\n //\n const socialFeatures = domain.addNamespace({\n info: {\n name: 'SocialFeatures',\n displayName: 'Social Features',\n description: 'Comments, likes, shares, and social interactions',\n },\n })\n\n // Comment Model\n const commentModel = socialFeatures.addModel({\n info: {\n name: 'Comments',\n displayName: 'Comment System',\n description: 'Post comments and replies',\n },\n })\n\n // Comment Entity\n const commentEntity = commentModel.addEntity({\n info: {\n name: 'comment',\n displayName: 'Comment',\n description: 'User comments on posts',\n },\n })\n\n addIdField(commentEntity, { displayName: 'Comment ID', description: 'Unique identifier for the comment' })\n\n commentEntity.addProperty({\n info: { name: 'content', displayName: 'Comment Content', description: 'Content of the comment' },\n type: 'string',\n required: true,\n })\n\n commentEntity.addProperty({\n info: {\n name: 'author_name',\n displayName: 'Author Name',\n description: 'Name of the comment author (for guest comments)',\n },\n type: 'string',\n })\n\n addEmailField(commentEntity, {\n name: 'author_email',\n displayName: 'Author Email',\n description: 'Email of the comment author (for guest comments)',\n })\n\n addCustomStatusField(commentEntity, ['pending', 'approved', 'rejected', 'spam'], {\n displayName: 'Comment Status',\n description: 'Moderation status of the comment',\n })\n\n // commentEntity.addProperty({\n // info: { name: 'ip_address', displayName: 'IP Address', description: 'IP address of the commenter' },\n // type: 'string',\n // semantics: [{ id: SemanticType.IPAddress }],\n // })\n\n commentEntity.addProperty({\n info: { name: 'user_agent', displayName: 'User Agent', description: 'Browser user agent string' },\n type: 'string',\n })\n\n addCreatedAtField(commentEntity, { description: 'When the comment was created' })\n\n // Comment-Post Association (Many-to-One)\n commentEntity.addAssociation(\n { key: postEntity.key },\n {\n info: { name: 'post', displayName: 'Post', description: 'Post this comment belongs to' },\n required: true,\n multiple: false,\n }\n )\n\n // Comment-User Association (Many-to-One) - Optional for guest comments\n commentEntity.addAssociation(\n { key: userEntity.key },\n {\n info: { name: 'author', displayName: 'Comment Author', description: 'Registered user who wrote this comment' },\n required: false,\n multiple: false,\n semantics: [{ id: SemanticType.ResourceOwnerIdentifier }],\n }\n )\n\n // Self-referencing association for comment replies\n commentEntity.addAssociation(\n { key: commentEntity.key },\n {\n info: { name: 'parent_comment', displayName: 'Parent Comment', description: 'Parent comment for replies' },\n required: false,\n multiple: false,\n }\n )\n\n //\n // 4. ANALYTICS NAMESPACE\n //\n const analytics = domain.addNamespace({\n info: {\n name: 'Analytics',\n displayName: 'Analytics & Tracking',\n description: 'Analytics, metrics, and performance tracking',\n },\n })\n\n // Analytics Model\n const analyticsModel = analytics.addModel({\n info: {\n name: 'Analytics',\n displayName: 'Content Analytics',\n description: 'Content performance and user engagement metrics',\n },\n })\n\n // Page View Entity\n const pageViewEntity = analyticsModel.addEntity({\n info: {\n name: 'page_view',\n displayName: 'Page View',\n description: 'Individual page view tracking record',\n },\n })\n\n addIdField(pageViewEntity, { displayName: 'Page View ID', description: 'Unique identifier for the page view' })\n\n pageViewEntity.addProperty({\n info: { name: 'path', displayName: 'Page Path', description: 'URL path of the viewed page' },\n type: 'string',\n required: true,\n })\n\n pageViewEntity.addProperty({\n info: { name: 'referrer', displayName: 'Referrer', description: 'Referring URL' },\n type: 'string',\n semantics: [createURLSemantic()],\n })\n\n // pageViewEntity.addProperty({\n // info: { name: 'ip_address', displayName: 'IP Address', description: 'Visitor IP address' },\n // type: 'string',\n // semantics: [{ id: SemanticType.IPAddress }],\n // })\n\n pageViewEntity.addProperty({\n info: { name: 'user_agent', displayName: 'User Agent', description: 'Browser user agent string' },\n type: 'string',\n })\n\n pageViewEntity.addProperty({\n info: { name: 'session_id', displayName: 'Session ID', description: 'Visitor session identifier' },\n type: 'string',\n })\n\n addCreatedAtField(pageViewEntity, {\n name: 'viewed_at',\n displayName: 'Viewed At',\n description: 'When the page was viewed',\n })\n\n // PageView-Post Association (Many-to-One) - Optional, only for post views\n pageViewEntity.addAssociation(\n { key: postEntity.key },\n {\n info: { name: 'post', displayName: 'Viewed Post', description: 'Post that was viewed (if applicable)' },\n required: false,\n multiple: false,\n }\n )\n\n // PageView-Publication Association (Many-to-One)\n pageViewEntity.addAssociation(\n { key: publicationEntity.key },\n {\n info: { name: 'publication', displayName: 'Publication', description: 'Publication this page view belongs to' },\n required: true,\n multiple: false,\n }\n )\n\n //\n // 5. MEDIA MANAGEMENT NAMESPACE\n //\n const mediaManagement = domain.addNamespace({\n info: {\n name: 'MediaManagement',\n displayName: 'Media Management',\n description: 'Image, video, and file upload management',\n },\n })\n\n // Media Model\n const mediaModel = mediaManagement.addModel({\n info: {\n name: 'Media',\n displayName: 'Media Library',\n description: 'Uploaded files, images, and media assets',\n },\n })\n\n // Media File Entity\n const mediaFileEntity = mediaModel.addEntity({\n info: {\n name: 'media_file',\n displayName: 'Media File',\n description: 'Uploaded media files (images, videos, documents)',\n },\n })\n\n addIdField(mediaFileEntity, { displayName: 'Media File ID', description: 'Unique identifier for the media file' })\n\n mediaFileEntity.addProperty({\n info: { name: 'filename', displayName: 'File Name', description: 'Original filename of the uploaded file' },\n type: 'string',\n required: true,\n })\n\n mediaFileEntity.addProperty({\n info: { name: 'storage_key', displayName: 'Storage Key', description: 'Unique storage key for the file' },\n type: 'string',\n required: true,\n unique: true,\n })\n\n mediaFileEntity.addProperty({\n info: { name: 'url', displayName: 'File URL', description: 'Public URL to access the file' },\n type: 'string',\n required: true,\n semantics: [createURLSemantic()],\n })\n\n mediaFileEntity.addProperty({\n info: { name: 'mime_type', displayName: 'MIME Type', description: 'MIME type of the file' },\n type: 'string',\n required: true,\n })\n\n addQuantityField(mediaFileEntity, {\n name: 'file_size',\n displayName: 'File Size',\n description: 'File size in bytes',\n })\n\n addQuantityField(mediaFileEntity, {\n name: 'width',\n displayName: 'Image Width',\n description: 'Width in pixels (for images)',\n })\n\n addQuantityField(mediaFileEntity, {\n name: 'height',\n displayName: 'Image Height',\n description: 'Height in pixels (for images)',\n })\n\n mediaFileEntity.addProperty({\n info: { name: 'alt_text', displayName: 'Alt Text', description: 'Alternative text for accessibility' },\n type: 'string',\n // semantics: [{ id: SemanticType.ImageAltText }],\n })\n\n addCreatedAtField(mediaFileEntity, {\n name: 'uploaded_at',\n displayName: 'Uploaded At',\n description: 'When the file was uploaded',\n })\n\n // MediaFile-User Association (Many-to-One)\n mediaFileEntity.addAssociation(\n { key: userEntity.key },\n {\n info: { name: 'uploader', displayName: 'File Uploader', description: 'User who uploaded this file' },\n required: true,\n multiple: false,\n semantics: [{ id: SemanticType.ResourceOwnerIdentifier }],\n }\n )\n\n // MediaFile-Publication Association (Many-to-One)\n mediaFileEntity.addAssociation(\n { key: publicationEntity.key },\n {\n info: { name: 'publication', displayName: 'Publication', description: 'Publication this media file belongs to' },\n required: true,\n multiple: false,\n }\n )\n\n return domain\n}\n"]}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Gaming Domain Template
3
+ *
4
+ * A comprehensive gaming data domain following domain-driven design principles.
5
+ * This template covers the complete gaming ecosystem lifecycle including:
6
+ *
7
+ * - Player Management: Player profiles, achievements, statistics
8
+ * - Game Content: Levels, items, characters, assets
9
+ * - Matchmaking: Multiplayer, teams, tournaments
10
+ * - Monetization: In-app purchases, subscriptions, advertising
11
+ * - Analytics: Player behavior, engagement, retention
12
+ * - Social Features: Friends, chat, leaderboards
13
+ *
14
+ * Key Features:
15
+ * - Complete player lifecycle management
16
+ * - Game content and asset management
17
+ * - Multiplayer matchmaking system
18
+ * - Monetization and revenue tracking
19
+ * - Player analytics and insights
20
+ * - Social gaming features
21
+ * - Gaming ecosystem management
22
+ *
23
+ * Use Cases:
24
+ * - Video game platforms
25
+ * - Mobile gaming apps
26
+ * - Online multiplayer games
27
+ * - Game development studios
28
+ * - Gaming analytics
29
+ * - Social gaming networks
30
+ */
31
+ import { DataDomain } from '../../../DataDomain.js';
32
+ import type { CreateTemplateOptions } from '../../types.js';
33
+ /**
34
+ * Creates a comprehensive gaming data domain following domain-driven design principles.
35
+ *
36
+ * This function demonstrates the proper hierarchy and organization for a gaming platform:
37
+ * 1. Creates the root DataDomain for the gaming platform
38
+ * 2. Organizes functionality into logical namespaces (Player Management, Game Content, etc.)
39
+ * 3. Groups related entities into models within each namespace
40
+ * 4. Defines entities with proper semantic annotations for gaming workflows
41
+ * 5. Establishes associations with appropriate cardinality for gaming relationships
42
+ *
43
+ * @returns A fully configured DataDomain with all gaming entities and relationships
44
+ */
45
+ export default function createGamingDomain(options?: CreateTemplateOptions): DataDomain;
46
+ //# sourceMappingURL=gaming-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaming-domain.d.ts","sourceRoot":"","sources":["../../../../../../src/modeling/templates/verticals/technology-media/gaming-domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAWnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAc3D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO,GAAE,qBAA0B,GAAG,UAAU,CAqsC1F"}