@object-ui/types 0.5.0 → 3.0.0
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/README.md +1 -1
- package/dist/ai.d.ts +376 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +8 -0
- package/dist/app.d.ts +2 -2
- package/dist/complex.d.ts +2 -0
- package/dist/complex.d.ts.map +1 -1
- package/dist/crud.d.ts +3 -0
- package/dist/crud.d.ts.map +1 -1
- package/dist/data-display.d.ts +40 -0
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-protocol.d.ts +19 -19
- package/dist/data.d.ts +77 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/designer.d.ts +473 -0
- package/dist/designer.d.ts.map +1 -0
- package/dist/designer.js +8 -0
- package/dist/form.d.ts +35 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/index.d.ts +46 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -0
- package/dist/layout.d.ts +63 -8
- package/dist/layout.d.ts.map +1 -1
- package/dist/mobile.d.ts +186 -0
- package/dist/mobile.d.ts.map +1 -0
- package/dist/mobile.js +8 -0
- package/dist/objectql.d.ts +341 -88
- package/dist/objectql.d.ts.map +1 -1
- package/dist/permissions.d.ts +150 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +8 -0
- package/dist/tenant.d.ts +138 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +8 -0
- package/dist/theme.d.ts +115 -224
- package/dist/theme.d.ts.map +1 -1
- package/dist/ui-action.d.ts +126 -11
- package/dist/ui-action.d.ts.map +1 -1
- package/dist/views.d.ts +20 -0
- package/dist/views.d.ts.map +1 -1
- package/dist/widget.d.ts +181 -0
- package/dist/widget.d.ts.map +1 -0
- package/dist/widget.js +8 -0
- package/dist/workflow.d.ts +340 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +8 -0
- package/dist/zod/blocks.zod.d.ts +2 -2
- package/dist/zod/blocks.zod.d.ts.map +1 -1
- package/dist/zod/blocks.zod.js +1 -1
- package/dist/zod/complex.zod.d.ts +6 -6
- package/dist/zod/complex.zod.d.ts.map +1 -1
- package/dist/zod/complex.zod.js +1 -1
- package/dist/zod/crud.zod.d.ts +5 -5
- package/dist/zod/data-display.zod.d.ts +2 -2
- package/dist/zod/data-display.zod.d.ts.map +1 -1
- package/dist/zod/data-display.zod.js +1 -1
- package/dist/zod/disclosure.zod.d.ts +2 -2
- package/dist/zod/disclosure.zod.d.ts.map +1 -1
- package/dist/zod/disclosure.zod.js +1 -1
- package/dist/zod/feedback.zod.d.ts +12 -12
- package/dist/zod/feedback.zod.d.ts.map +1 -1
- package/dist/zod/feedback.zod.js +1 -1
- package/dist/zod/form.zod.d.ts +6 -6
- package/dist/zod/form.zod.d.ts.map +1 -1
- package/dist/zod/form.zod.js +1 -1
- package/dist/zod/index.zod.d.ts +337 -146
- package/dist/zod/index.zod.d.ts.map +1 -1
- package/dist/zod/index.zod.js +4 -4
- package/dist/zod/layout.zod.d.ts +134 -2
- package/dist/zod/layout.zod.d.ts.map +1 -1
- package/dist/zod/layout.zod.js +35 -1
- package/dist/zod/navigation.zod.d.ts +2 -2
- package/dist/zod/navigation.zod.d.ts.map +1 -1
- package/dist/zod/navigation.zod.js +1 -1
- package/dist/zod/objectql.zod.d.ts +32 -16
- package/dist/zod/objectql.zod.d.ts.map +1 -1
- package/dist/zod/objectql.zod.js +8 -0
- package/dist/zod/overlay.zod.d.ts +2 -2
- package/dist/zod/overlay.zod.d.ts.map +1 -1
- package/dist/zod/overlay.zod.js +1 -1
- package/dist/zod/reports.zod.d.ts +19 -19
- package/dist/zod/reports.zod.d.ts.map +1 -1
- package/dist/zod/reports.zod.js +1 -1
- package/dist/zod/theme.zod.d.ts +948 -267
- package/dist/zod/theme.zod.d.ts.map +1 -1
- package/dist/zod/theme.zod.js +175 -45
- package/dist/zod/views.zod.d.ts +22 -22
- package/dist/zod/views.zod.d.ts.map +1 -1
- package/dist/zod/views.zod.js +1 -1
- package/package.json +3 -2
- package/src/__tests__/namespace-exports.test.ts +23 -68
- package/src/__tests__/phase2-schemas.test.ts +8 -13
- package/src/ai.ts +454 -0
- package/src/app.ts +2 -2
- package/src/complex.ts +2 -0
- package/src/crud.ts +3 -0
- package/src/data-display.ts +36 -0
- package/src/data-protocol.ts +19 -19
- package/src/data.ts +91 -0
- package/src/designer.ts +509 -0
- package/src/form.ts +35 -1
- package/src/index.ts +397 -8
- package/src/layout.ts +66 -8
- package/src/mobile.ts +205 -0
- package/src/objectql.ts +419 -93
- package/src/permissions.ts +166 -0
- package/src/tenant.ts +153 -0
- package/src/theme.ts +147 -260
- package/src/ui-action.ts +166 -27
- package/src/views.ts +17 -0
- package/src/widget.ts +197 -0
- package/src/workflow.ts +409 -0
- package/src/zod/blocks.zod.ts +1 -1
- package/src/zod/complex.zod.ts +1 -1
- package/src/zod/data-display.zod.ts +1 -1
- package/src/zod/disclosure.zod.ts +1 -1
- package/src/zod/feedback.zod.ts +1 -1
- package/src/zod/form.zod.ts +1 -1
- package/src/zod/index.zod.ts +14 -3
- package/src/zod/layout.zod.ts +39 -1
- package/src/zod/navigation.zod.ts +1 -1
- package/src/zod/objectql.zod.ts +8 -0
- package/src/zod/overlay.zod.ts +1 -1
- package/src/zod/reports.zod.ts +1 -1
- package/src/zod/theme.zod.ts +189 -48
- package/src/zod/views.zod.ts +1 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @object-ui/types - Permission & RBAC Types
|
|
10
|
+
*
|
|
11
|
+
* Complete RBAC (Role-Based Access Control) type definitions for
|
|
12
|
+
* object/field/row-level permissions aligned with @objectstack/spec v2.0.1.
|
|
13
|
+
*
|
|
14
|
+
* @module permissions
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
/** Standard CRUD permission actions */
|
|
18
|
+
export type PermissionAction = 'create' | 'read' | 'update' | 'delete' | 'export' | 'import' | 'share' | 'admin';
|
|
19
|
+
/** Permission effect */
|
|
20
|
+
export type PermissionEffect = 'allow' | 'deny';
|
|
21
|
+
/** Role definition for RBAC */
|
|
22
|
+
export interface RoleDefinition {
|
|
23
|
+
/** Unique role identifier */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Display label */
|
|
26
|
+
label: string;
|
|
27
|
+
/** Role description */
|
|
28
|
+
description?: string;
|
|
29
|
+
/** Parent role for inheritance */
|
|
30
|
+
inherits?: string[];
|
|
31
|
+
/** Whether this is a system role */
|
|
32
|
+
system?: boolean;
|
|
33
|
+
/** Object-level permissions */
|
|
34
|
+
permissions: ObjectLevelPermission[];
|
|
35
|
+
}
|
|
36
|
+
/** Object-level permission assignment */
|
|
37
|
+
export interface ObjectLevelPermission {
|
|
38
|
+
/** Target object name */
|
|
39
|
+
object: string;
|
|
40
|
+
/** Allowed actions */
|
|
41
|
+
actions: PermissionAction[];
|
|
42
|
+
/** Permission effect */
|
|
43
|
+
effect?: PermissionEffect;
|
|
44
|
+
/** Conditions for conditional permissions */
|
|
45
|
+
conditions?: PermissionCondition[];
|
|
46
|
+
}
|
|
47
|
+
/** Field-level permission */
|
|
48
|
+
export interface FieldLevelPermission {
|
|
49
|
+
/** Target field name */
|
|
50
|
+
field: string;
|
|
51
|
+
/** Read permission */
|
|
52
|
+
read?: boolean;
|
|
53
|
+
/** Write permission */
|
|
54
|
+
write?: boolean;
|
|
55
|
+
/** Permission effect */
|
|
56
|
+
effect?: PermissionEffect;
|
|
57
|
+
/** Mask value for restricted fields (e.g., '****' for SSN) */
|
|
58
|
+
mask?: string;
|
|
59
|
+
}
|
|
60
|
+
/** Row-level permission (record-level security) */
|
|
61
|
+
export interface RowLevelPermission {
|
|
62
|
+
/** Filter expression to scope visible records */
|
|
63
|
+
filter: string;
|
|
64
|
+
/** Actions allowed on matching records */
|
|
65
|
+
actions: PermissionAction[];
|
|
66
|
+
/** Description of the rule */
|
|
67
|
+
description?: string;
|
|
68
|
+
}
|
|
69
|
+
/** Permission condition for conditional access */
|
|
70
|
+
export interface PermissionCondition {
|
|
71
|
+
/** Field to evaluate */
|
|
72
|
+
field: string;
|
|
73
|
+
/** Comparison operator */
|
|
74
|
+
operator: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'not_in' | 'contains' | 'is_null' | 'is_not_null';
|
|
75
|
+
/** Value to compare */
|
|
76
|
+
value: unknown;
|
|
77
|
+
}
|
|
78
|
+
/** Complete permission configuration for an object */
|
|
79
|
+
export interface ObjectPermissionConfig {
|
|
80
|
+
/** Object name */
|
|
81
|
+
object: string;
|
|
82
|
+
/** Default permissions for unauthenticated users */
|
|
83
|
+
publicAccess?: PermissionAction[];
|
|
84
|
+
/** Role-based permissions */
|
|
85
|
+
roles: Record<string, {
|
|
86
|
+
actions: PermissionAction[];
|
|
87
|
+
fieldPermissions?: FieldLevelPermission[];
|
|
88
|
+
rowPermissions?: RowLevelPermission[];
|
|
89
|
+
}>;
|
|
90
|
+
/** Field-level permission defaults */
|
|
91
|
+
fieldDefaults?: FieldLevelPermission[];
|
|
92
|
+
/** Sharing rules */
|
|
93
|
+
sharingRules?: SharingRuleConfig[];
|
|
94
|
+
}
|
|
95
|
+
/** Sharing rule configuration */
|
|
96
|
+
export interface SharingRuleConfig {
|
|
97
|
+
/** Rule name */
|
|
98
|
+
name: string;
|
|
99
|
+
/** Share with type */
|
|
100
|
+
type: 'role' | 'user' | 'group' | 'public';
|
|
101
|
+
/** Target entity (role name, user ID, group name) */
|
|
102
|
+
entity: string;
|
|
103
|
+
/** Permitted actions */
|
|
104
|
+
actions: PermissionAction[];
|
|
105
|
+
/** Filter to scope which records are shared */
|
|
106
|
+
filter?: string;
|
|
107
|
+
}
|
|
108
|
+
/** Permission check result */
|
|
109
|
+
export interface PermissionCheckResult {
|
|
110
|
+
/** Whether the action is allowed */
|
|
111
|
+
allowed: boolean;
|
|
112
|
+
/** Reason for denial */
|
|
113
|
+
reason?: string;
|
|
114
|
+
/** Applicable field restrictions */
|
|
115
|
+
fieldRestrictions?: FieldLevelPermission[];
|
|
116
|
+
/** Row filter to apply */
|
|
117
|
+
rowFilter?: string;
|
|
118
|
+
}
|
|
119
|
+
/** Permission context for evaluating permissions */
|
|
120
|
+
export interface PermissionContext {
|
|
121
|
+
/** Current user */
|
|
122
|
+
user: {
|
|
123
|
+
id: string;
|
|
124
|
+
roles: string[];
|
|
125
|
+
groups?: string[];
|
|
126
|
+
[key: string]: unknown;
|
|
127
|
+
};
|
|
128
|
+
/** Target object */
|
|
129
|
+
object: string;
|
|
130
|
+
/** Target action */
|
|
131
|
+
action: PermissionAction;
|
|
132
|
+
/** Target record (for row-level checks) */
|
|
133
|
+
record?: Record<string, unknown>;
|
|
134
|
+
/** Target field (for field-level checks) */
|
|
135
|
+
field?: string;
|
|
136
|
+
}
|
|
137
|
+
/** Permission guard configuration for UI components */
|
|
138
|
+
export interface PermissionGuardConfig {
|
|
139
|
+
/** Required permission */
|
|
140
|
+
permission: string | PermissionAction;
|
|
141
|
+
/** Target object */
|
|
142
|
+
object?: string;
|
|
143
|
+
/** Fallback behavior when denied */
|
|
144
|
+
fallback?: 'hide' | 'disable' | 'redirect' | 'custom';
|
|
145
|
+
/** Custom fallback component type */
|
|
146
|
+
fallbackComponent?: string;
|
|
147
|
+
/** Redirect path for 'redirect' fallback */
|
|
148
|
+
redirectPath?: string;
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
|
package/dist/tenant.d.ts
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @object-ui/types - Multi-Tenancy Types
|
|
10
|
+
*
|
|
11
|
+
* Type definitions for multi-tenant architecture support including
|
|
12
|
+
* tenant isolation, scoped queries, and custom branding.
|
|
13
|
+
*
|
|
14
|
+
* @module tenant
|
|
15
|
+
* @packageDocumentation
|
|
16
|
+
*/
|
|
17
|
+
import type { Theme } from './theme';
|
|
18
|
+
/** Tenant isolation strategy */
|
|
19
|
+
export type TenantIsolationStrategy = 'database' | 'schema' | 'row' | 'hybrid';
|
|
20
|
+
/** Tenant status */
|
|
21
|
+
export type TenantStatus = 'active' | 'suspended' | 'pending' | 'archived';
|
|
22
|
+
/** Tenant plan/tier */
|
|
23
|
+
export type TenantPlan = 'free' | 'starter' | 'professional' | 'enterprise' | 'custom';
|
|
24
|
+
/** Tenant definition */
|
|
25
|
+
export interface TenantConfig {
|
|
26
|
+
/** Unique tenant identifier */
|
|
27
|
+
id: string;
|
|
28
|
+
/** Tenant display name */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Tenant slug (URL-friendly identifier) */
|
|
31
|
+
slug: string;
|
|
32
|
+
/** Tenant status */
|
|
33
|
+
status: TenantStatus;
|
|
34
|
+
/** Subscription plan */
|
|
35
|
+
plan?: TenantPlan;
|
|
36
|
+
/** Tenant domain (for custom domain support) */
|
|
37
|
+
domain?: string;
|
|
38
|
+
/** Data isolation strategy */
|
|
39
|
+
isolation: TenantIsolationStrategy;
|
|
40
|
+
/** Custom branding */
|
|
41
|
+
branding?: TenantBranding;
|
|
42
|
+
/** Feature flags */
|
|
43
|
+
features?: Record<string, boolean>;
|
|
44
|
+
/** Usage limits */
|
|
45
|
+
limits?: TenantLimits;
|
|
46
|
+
/** Tenant metadata */
|
|
47
|
+
metadata?: Record<string, unknown>;
|
|
48
|
+
/** Created timestamp */
|
|
49
|
+
createdAt?: string;
|
|
50
|
+
/** Updated timestamp */
|
|
51
|
+
updatedAt?: string;
|
|
52
|
+
}
|
|
53
|
+
/** Tenant branding configuration */
|
|
54
|
+
export interface TenantBranding {
|
|
55
|
+
/** Company logo URL */
|
|
56
|
+
logo?: string;
|
|
57
|
+
/** Favicon URL */
|
|
58
|
+
favicon?: string;
|
|
59
|
+
/** Primary brand color */
|
|
60
|
+
primaryColor?: string;
|
|
61
|
+
/** Secondary brand color */
|
|
62
|
+
secondaryColor?: string;
|
|
63
|
+
/** Custom theme override */
|
|
64
|
+
theme?: Partial<Theme>;
|
|
65
|
+
/** Custom CSS */
|
|
66
|
+
customCSS?: string;
|
|
67
|
+
/** Company name displayed in UI */
|
|
68
|
+
companyName?: string;
|
|
69
|
+
/** Support email */
|
|
70
|
+
supportEmail?: string;
|
|
71
|
+
/** Custom login page background */
|
|
72
|
+
loginBackground?: string;
|
|
73
|
+
/** Email templates branding */
|
|
74
|
+
emailBranding?: {
|
|
75
|
+
headerLogo?: string;
|
|
76
|
+
footerText?: string;
|
|
77
|
+
primaryColor?: string;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** Tenant usage limits */
|
|
81
|
+
export interface TenantLimits {
|
|
82
|
+
/** Maximum number of users */
|
|
83
|
+
maxUsers?: number;
|
|
84
|
+
/** Maximum storage in bytes */
|
|
85
|
+
maxStorage?: number;
|
|
86
|
+
/** Maximum API calls per day */
|
|
87
|
+
maxAPICallsPerDay?: number;
|
|
88
|
+
/** Maximum objects/tables */
|
|
89
|
+
maxObjects?: number;
|
|
90
|
+
/** Maximum records per object */
|
|
91
|
+
maxRecordsPerObject?: number;
|
|
92
|
+
/** Maximum file upload size in bytes */
|
|
93
|
+
maxFileSize?: number;
|
|
94
|
+
}
|
|
95
|
+
/** Tenant context for runtime use */
|
|
96
|
+
export interface TenantContext {
|
|
97
|
+
/** Current tenant configuration */
|
|
98
|
+
tenant: TenantConfig;
|
|
99
|
+
/** Whether the user is a tenant admin */
|
|
100
|
+
isTenantAdmin: boolean;
|
|
101
|
+
/** Resolved branding (merged with defaults) */
|
|
102
|
+
branding: TenantBranding;
|
|
103
|
+
/** Active feature flags */
|
|
104
|
+
features: Record<string, boolean>;
|
|
105
|
+
}
|
|
106
|
+
/** Tenant resolution strategy */
|
|
107
|
+
export type TenantResolutionStrategy = 'subdomain' | 'path' | 'header' | 'query' | 'cookie' | 'custom';
|
|
108
|
+
/** Tenant provider configuration */
|
|
109
|
+
export interface TenantProviderConfig {
|
|
110
|
+
/** How to resolve tenant from request */
|
|
111
|
+
resolution: TenantResolutionStrategy;
|
|
112
|
+
/** Custom resolution function name */
|
|
113
|
+
customResolver?: string;
|
|
114
|
+
/** Header name for 'header' strategy */
|
|
115
|
+
headerName?: string;
|
|
116
|
+
/** Query parameter name for 'query' strategy */
|
|
117
|
+
queryParam?: string;
|
|
118
|
+
/** Cookie name for 'cookie' strategy */
|
|
119
|
+
cookieName?: string;
|
|
120
|
+
/** Default tenant ID for fallback */
|
|
121
|
+
defaultTenantId?: string;
|
|
122
|
+
/** Enable tenant caching */
|
|
123
|
+
caching?: boolean;
|
|
124
|
+
/** Cache TTL in seconds */
|
|
125
|
+
cacheTTL?: number;
|
|
126
|
+
}
|
|
127
|
+
/** Scoped query configuration for tenant isolation */
|
|
128
|
+
export interface TenantScopedQueryConfig {
|
|
129
|
+
/** Tenant ID field name in records */
|
|
130
|
+
tenantField: string;
|
|
131
|
+
/** Whether to auto-inject tenant filter */
|
|
132
|
+
autoFilter: boolean;
|
|
133
|
+
/** Objects excluded from tenant scoping */
|
|
134
|
+
excludedObjects?: string[];
|
|
135
|
+
/** Whether to enforce tenant scope on writes */
|
|
136
|
+
enforceOnWrite: boolean;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=tenant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"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"}
|