2.48.0 • Published 4 months ago

@memberjunction/core-entities v2.48.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

@memberjunction/core-entities

A comprehensive library of strongly-typed entity classes for MemberJunction's core metadata schema. This package provides type-safe access to all MemberJunction system entities with built-in validation, custom business logic, and seamless integration with the MemberJunction framework.

Overview

The @memberjunction/core-entities package contains:

  • 178+ Generated Entity Classes: Strongly-typed TypeScript classes for all core MemberJunction entities
  • Extended Entity Classes: Custom subclasses with specialized business logic
  • Resource Permission Engine: Comprehensive permission management system
  • Zod Schema Validation: Built-in runtime validation for all entity types
  • Type Definitions: Full TypeScript type definitions for enhanced IDE support

Installation

npm install @memberjunction/core-entities

Key Features

1. Strongly-Typed Entity Classes

Every MemberJunction core entity has a corresponding TypeScript class with:

  • Full type safety for all properties
  • Automatic validation using Zod schemas
  • Relationship navigation properties
  • Built-in CRUD operations

2. Extended Entity Classes

Several entities have custom extended classes that provide additional functionality:

  • UserViewEntityExtended: Enhanced view management with filter and column parsing
  • DashboardEntityExtended: Dashboard configuration management
  • AIModelEntityExtended: AI model utilities and helpers
  • AIPromptEntityExtended: Prompt management functionality
  • ListDetailEntityExtended: List view enhancements
  • ScheduledActionExtended: Scheduled task management
  • ResourcePermissionEntity: Resource access control

3. Resource Permission Engine

A sophisticated permission system for managing access to various resources:

  • Role-based permissions
  • Resource type definitions
  • Permission inheritance
  • Cached permission lookups

Usage

Basic Entity Usage

import { Metadata } from '@memberjunction/core';
import { UserEntity, ApplicationEntity } from '@memberjunction/core-entities';

// Always use Metadata to create entity instances
const md = new Metadata();

// Load a user by ID
const user = await md.GetEntityObject<UserEntity>('Users');
await user.Load('user-id-here');

// Access strongly-typed properties
console.log(user.Email);
console.log(user.FirstName);

// Create a new application
const app = await md.GetEntityObject<ApplicationEntity>('Applications');
app.NewRecord();
app.Name = 'My New Application';
app.Description = 'A test application';
await app.Save();

Working with User Views

import { UserViewEntityExtended } from '@memberjunction/core-entities';
import { Metadata, RunView } from '@memberjunction/core';

const md = new Metadata();

// Load user views for an entity
const rv = new RunView();
const views = await rv.RunView<UserViewEntityExtended>({
    EntityName: 'User Views',
    ExtraFilter: `EntityID='${entityId}' AND UserID='${userId}'`,
    ResultType: 'entity_object'
});

// Access parsed view configuration
const view = views.Results[0];
const columns = view.Columns; // Parsed column configuration
const filters = view.Filter;  // Parsed filter configuration

Resource Permissions

import { ResourcePermissionEngine } from '@memberjunction/core-entities';

// Get the singleton instance
const permEngine = ResourcePermissionEngine.Instance;

// Initialize the engine
await permEngine.Config();

// Check permissions for a resource
const permissions = permEngine.GetPermissionsForResource(
    resourceTypeId,
    resourceRecordId
);

// Get user's permission level
const userPermission = await permEngine.GetUserPermissionForResource(
    userId,
    resourceTypeId,
    resourceRecordId
);

Dashboard Management

import { DashboardEntityExtended } from '@memberjunction/core-entities';
import { Metadata } from '@memberjunction/core';

const md = new Metadata();

// Create a new dashboard
const dashboard = await md.GetEntityObject<DashboardEntityExtended>('Dashboards');
dashboard.NewRecord(); // Automatically sets default configuration

dashboard.Name = 'Sales Dashboard';
dashboard.Description = 'Monthly sales metrics';
await dashboard.Save();

// The UIConfigDetails is automatically initialized with default grid configuration

AI Model Access

import { AIModelEntityExtended } from '@memberjunction/core-entities';
import { RunView } from '@memberjunction/core';

const rv = new RunView();

// Load all active AI models
const models = await rv.RunView<AIModelEntityExtended>({
    EntityName: 'AI Models',
    ExtraFilter: "IsActive=1",
    OrderBy: 'Name',
    ResultType: 'entity_object'
});

// Use the extended functionality
models.Results.forEach(model => {
    console.log(model.APINameOrName); // Uses APIName if available, otherwise Name
});

Entity Validation

All entities include Zod schema validation:

import { UserSchema, UserEntityType } from '@memberjunction/core-entities';

// Validate data before creating entity
const userData: unknown = { /* user data */ };

try {
    const validatedData = UserSchema.parse(userData);
    // Data is now typed as UserEntityType
} catch (error) {
    // Handle validation errors
}

Type Definitions

Every entity exports both the class and its TypeScript type:

import { 
    ApplicationEntity,          // The entity class
    ApplicationEntityType,      // The TypeScript type
    ApplicationSchema          // The Zod schema
} from '@memberjunction/core-entities';

// Use types for function parameters
function processApplication(app: ApplicationEntityType) {
    // Type-safe access to all properties
}

Custom Entity Extensions

To create your own entity extensions:

import { RegisterClass } from '@memberjunction/global';
import { BaseEntity } from '@memberjunction/core';
import { YourEntity } from '@memberjunction/core-entities';

@RegisterClass(BaseEntity, 'Your Entity Name')
export class YourEntityExtended extends YourEntity {
    // Add custom methods and properties
    public customMethod(): void {
        // Your business logic
    }
}

Available Entities

This package includes classes for all core MemberJunction entities including:

  • System Entities: Users, Applications, Entities, Entity Fields, etc.
  • Security: Roles, Authorizations, User Roles, Resource Permissions
  • Communication: Conversations, Templates, Communication Providers
  • Workflow: Actions, Action Categories, Scheduled Actions
  • AI/ML: AI Models, AI Prompts, Vector Databases
  • Reporting: Reports, Dashboards, Query Fields
  • Integration: Company Integrations, API Configurations
  • And 170+ more...

Dependencies

  • @memberjunction/core: Core MemberJunction functionality
  • @memberjunction/global: Global utilities and decorators
  • zod: Runtime type validation

Version Compatibility

This package is released in sync with MemberJunction core releases. Always use matching versions:

{
  "dependencies": {
    "@memberjunction/core": "2.43.0",
    "@memberjunction/core-entities": "2.43.0",
    "@memberjunction/global": "2.43.0"
  }
}

Best Practices

  1. Always use Metadata for entity creation: Never instantiate entity classes directly
  2. Use RunView for bulk operations: More efficient than loading entities individually
  3. Leverage TypeScript types: Use the exported types for function parameters and return types
  4. Handle validation errors: Always wrap entity operations in try-catch blocks
  5. Use extended classes: When available, use the extended versions for additional functionality

Contributing

This package is generated from MemberJunction metadata. To modify:

  1. Update the source metadata in MemberJunction
  2. Run the code generation process
  3. Custom extensions can be added to the /src/custom directory

License

ISC - See LICENSE file for details

Support

For issues, questions, or contributions, please visit the MemberJunction GitHub repository.

@everything-registry/sub-chunk-594@memberjunction/graphql-dataprovider@memberjunction/metadata-sync@memberjunction/ng-ask-skip@memberjunction/ng-base-types@memberjunction/ng-code-editor@memberjunction/ng-compare-records@memberjunction/ng-treelist@memberjunction/ng-user-view-grid@memberjunction/ng-user-view-properties@memberjunction/queue@memberjunction/scheduled-actions@memberjunction/scheduled-actions-server@memberjunction/server@memberjunction/skip-types@memberjunction/sqlserver-dataprovider@memberjunction/storage@memberjunction/templates@memberjunction/ng-core-entity-forms@memberjunction/ng-dashboards@memberjunction/ng-data-context@memberjunction/ng-entity-communications@memberjunction/ng-entity-form-dialog@memberjunction/ng-entity-permissions@memberjunction/ng-explorer-core@memberjunction/ng-explorer-settings@memberjunction/ng-file-storage@memberjunction/ng-find-record@memberjunction/ng-join-grid@memberjunction/ng-list-detail-grid@memberjunction/ng-notifications@memberjunction/ng-query-grid@memberjunction/ng-record-selector@memberjunction/ng-resource-permissions@memberjunction/ng-shared@memberjunction/ng-simple-record-list@memberjunction/ng-skip-chat@memberjunction/ng-timeline@memberjunction/ai-vector-dupe@memberjunction/ai-vectors@memberjunction/aiengine@memberjunction/codegen-lib@memberjunction/communication-engine@memberjunction/communication-ms-graph@memberjunction/communication-sendgrid@memberjunction/communication-types@memberjunction/content-autotagging@memberjunction/core-actions@memberjunction/core-entities-server@memberjunction/data-context@memberjunction/doc-utils@memberjunction/entity-communications-base@memberjunction/entity-communications-client@memberjunction/entity-communications-server@memberjunction/external-change-detection@memberjunction/templates-base-types@memberjunction/ai-engine-base@memberjunction/ai-mcp-server@memberjunction/ai-prompts@memberjunction/ai-recommendations@memberjunction/actions@memberjunction/actions-apollo@memberjunction/actions-base@memberjunction/actions-content-autotag@memberjunction/ai-agents
2.23.2

8 months ago

2.46.0

4 months ago

2.23.1

8 months ago

2.34.0

6 months ago

2.19.4

9 months ago

2.19.5

9 months ago

2.19.2

9 months ago

2.19.3

9 months ago

2.19.0

9 months ago

2.19.1

9 months ago

2.34.2

6 months ago

2.34.1

6 months ago

2.45.0

4 months ago

2.22.1

8 months ago

2.22.0

8 months ago

2.22.2

8 months ago

2.33.0

6 months ago

2.18.3

9 months ago

2.18.1

9 months ago

2.18.2

9 months ago

2.18.0

9 months ago

2.21.0

8 months ago

2.44.0

5 months ago

2.29.0

7 months ago

2.29.2

7 months ago

2.29.1

7 months ago

2.32.0

7 months ago

2.32.2

7 months ago

2.32.1

7 months ago

2.17.0

9 months ago

2.43.0

5 months ago

2.20.2

9 months ago

2.20.3

8 months ago

2.20.0

9 months ago

2.20.1

9 months ago

2.28.0

8 months ago

2.31.0

7 months ago

2.39.0

5 months ago

2.16.1

9 months ago

2.16.0

9 months ago

2.42.1

5 months ago

2.42.0

5 months ago

2.27.1

8 months ago

2.27.0

8 months ago

2.30.0

7 months ago

2.15.2

9 months ago

2.15.0

9 months ago

2.15.1

9 months ago

2.38.0

5 months ago

2.41.0

5 months ago

2.26.1

8 months ago

2.26.0

8 months ago

2.37.1

5 months ago

2.37.0

5 months ago

2.14.0

9 months ago

2.40.0

5 months ago

2.25.0

8 months ago

2.48.0

4 months ago

2.13.4

10 months ago

2.36.0

6 months ago

2.13.2

11 months ago

2.13.3

10 months ago

2.13.0

11 months ago

2.36.1

6 months ago

2.13.1

11 months ago

2.47.0

4 months ago

2.24.1

8 months ago

2.24.0

8 months ago

2.12.0

12 months ago

2.35.1

6 months ago

2.35.0

6 months ago

2.23.0

8 months ago

2.11.0

12 months ago

2.10.0

12 months ago

2.9.0

12 months ago

2.8.0

1 year ago

2.7.0

1 year ago

2.7.1

1 year ago

2.6.1

1 year ago

2.6.0

1 year ago

2.5.2

1 year ago

1.6.1

1 year ago

1.6.0

1 year ago

2.4.1

1 year ago

2.4.0

1 year ago

1.5.3

1 year ago

1.5.2

1 year ago

1.5.1

1 year ago

1.5.0

1 year ago

2.3.0

1 year ago

2.3.2

1 year ago

2.3.1

1 year ago

2.3.3

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

2.2.1

1 year ago

2.2.0

1 year ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

2.1.2

1 year ago

2.1.1

1 year ago

2.1.4

1 year ago

2.1.3

1 year ago

2.1.6

1 year ago

2.1.5

1 year ago

2.1.0

1 year ago

2.0.0

1 year ago

1.8.1

1 year ago

1.8.0

1 year ago

1.7.1

1 year ago

1.7.0

1 year ago

2.5.0

1 year ago

2.5.1

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.0.11

1 year ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.8-next.6

2 years ago

1.0.8-next.5

2 years ago

1.0.8-next.4

2 years ago

1.0.8-next.3

2 years ago

1.0.8-next.2

2 years ago

1.0.8-next.1

2 years ago

1.0.8-next.0

2 years ago

1.0.7-next.0

2 years ago

1.0.8-beta.0

2 years ago

1.0.2

2 years ago

1.0.6

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.9.183

2 years ago

0.9.185

2 years ago

0.9.184

2 years ago

0.9.181

2 years ago

0.9.180

2 years ago

0.9.179

2 years ago

0.9.178

2 years ago

0.9.176

2 years ago

0.9.175

2 years ago

0.9.177

2 years ago

0.9.174

2 years ago

0.9.172

2 years ago

0.9.171

2 years ago

0.9.173

2 years ago

0.9.170

2 years ago

0.9.168

2 years ago

0.9.167

2 years ago

0.9.166

2 years ago

0.9.165

2 years ago

0.9.164

2 years ago

0.9.161

2 years ago

0.9.163

2 years ago

0.9.160

2 years ago

0.9.159

2 years ago

0.9.162

2 years ago

0.9.157

2 years ago

0.9.156

2 years ago

0.9.154

2 years ago

0.9.155

2 years ago

0.9.153

2 years ago

0.9.152

2 years ago

0.9.151

2 years ago

0.9.150

2 years ago

0.9.149

2 years ago

0.9.147

2 years ago

0.9.146

2 years ago

0.9.148

2 years ago

0.9.143

2 years ago

0.9.142

2 years ago

0.9.141

2 years ago

0.9.139

2 years ago

0.9.138

2 years ago

0.9.136

2 years ago

0.9.137

2 years ago

0.9.132

2 years ago

0.9.131

2 years ago

0.9.134

2 years ago

0.9.133

2 years ago

0.9.135

2 years ago

0.9.130

2 years ago

0.9.129

2 years ago

0.9.128

2 years ago

0.9.127

2 years ago

0.9.126

2 years ago

0.9.123

2 years ago

0.9.125

2 years ago

0.9.124

2 years ago

0.9.122

2 years ago

0.9.121

2 years ago

0.9.120

2 years ago

0.9.112

2 years ago

0.9.106

2 years ago

0.9.102

2 years ago

0.9.105

2 years ago

0.9.101

2 years ago

0.9.90

2 years ago

0.9.89

2 years ago

0.9.86

2 years ago

0.9.87

2 years ago

0.9.88

2 years ago

0.9.85

2 years ago

0.9.81

2 years ago

0.9.82

2 years ago

0.9.83

2 years ago

0.9.84

2 years ago

0.9.80

2 years ago

0.9.78

2 years ago

0.9.79

2 years ago

0.9.74

2 years ago

0.9.75

2 years ago

0.9.76

2 years ago

0.9.77

2 years ago

0.9.71

2 years ago

0.9.70

2 years ago

0.9.67

2 years ago

0.9.69

2 years ago

0.9.59

2 years ago

0.9.63

2 years ago

0.9.64

2 years ago

0.9.65

2 years ago

0.9.66

2 years ago

0.9.60

2 years ago

0.9.61

2 years ago

0.9.62

2 years ago

0.9.58

2 years ago

0.9.56

2 years ago

0.9.57

2 years ago

0.9.52

2 years ago

0.9.53

2 years ago

0.9.54

2 years ago

0.9.55

2 years ago

0.9.50

2 years ago

0.9.51

2 years ago

0.9.49

2 years ago

0.9.48

2 years ago

0.9.46

2 years ago

0.9.47

2 years ago

0.9.45

2 years ago

0.9.44

2 years ago

0.9.43

2 years ago

0.9.42

2 years ago

0.9.41

2 years ago

0.9.40

2 years ago

0.9.39

2 years ago

0.9.38

2 years ago

0.9.37

2 years ago

0.9.36

2 years ago

0.9.35

2 years ago

0.9.33

2 years ago

0.9.32

2 years ago

0.9.31

2 years ago

0.9.30

2 years ago

0.9.29

2 years ago

0.9.28

2 years ago

0.9.27

2 years ago

0.9.26

2 years ago

0.9.25

2 years ago

0.9.24

2 years ago

0.9.23

2 years ago

0.9.22

2 years ago

0.9.20

2 years ago

0.9.19

2 years ago

0.9.18

2 years ago

0.9.17

2 years ago

0.9.16

2 years ago

0.9.15

2 years ago

0.9.14

2 years ago

0.9.13

2 years ago

0.9.12

2 years ago

0.9.11

2 years ago

0.9.10

2 years ago

0.9.9

2 years ago

0.9.8

2 years ago

0.9.7

2 years ago

0.9.6

2 years ago

0.9.5

2 years ago

0.9.4

2 years ago

0.9.3

2 years ago