@stndrds/schema 0.1.0-alpha.56 → 0.1.0-alpha.57
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/dist/{chunk-XBF4EUC4.js → chunk-DPRLHGPO.js} +1485 -539
- package/dist/{chunk-LOOGQL6M.mjs → chunk-YVUSATKC.mjs} +1240 -294
- package/dist/index.d.mts +919 -54
- package/dist/index.d.ts +919 -54
- package/dist/index.js +976 -33
- package/dist/index.mjs +970 -27
- package/dist/{runtime-D5MuaVQs.d.mts → runtime-BqJdmg_4.d.mts} +896 -276
- package/dist/{runtime-D5MuaVQs.d.ts → runtime-BqJdmg_4.d.ts} +896 -276
- package/dist/runtime.d.mts +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +24 -2
- package/dist/runtime.mjs +23 -1
- package/package.json +2 -2
|
@@ -709,6 +709,155 @@ declare function slugify(input: string): string;
|
|
|
709
709
|
*/
|
|
710
710
|
declare function generateTemplateName(label: string): string;
|
|
711
711
|
|
|
712
|
+
/**
|
|
713
|
+
* Feature flag levels (resolution priority: user > tenant > global).
|
|
714
|
+
*
|
|
715
|
+
* - `global`: Applies to all tenants and users
|
|
716
|
+
* - `tenant`: Applies to a specific tenant
|
|
717
|
+
* - `user`: Applies to a specific user within a tenant
|
|
718
|
+
*/
|
|
719
|
+
type FlagLevel = "global" | "tenant" | "user";
|
|
720
|
+
/**
|
|
721
|
+
* Flag value types supported by the system.
|
|
722
|
+
*/
|
|
723
|
+
type FlagValueType = "boolean" | "string" | "number" | "json";
|
|
724
|
+
/**
|
|
725
|
+
* Definition of a feature flag.
|
|
726
|
+
* Created using the flag builders (booleanFlag, stringFlag, etc.)
|
|
727
|
+
*/
|
|
728
|
+
interface FeatureFlagDefinition<T = unknown> {
|
|
729
|
+
/** Unique identifier for the flag (kebab-case) */
|
|
730
|
+
name: string;
|
|
731
|
+
/** Human-readable label */
|
|
732
|
+
label: string;
|
|
733
|
+
/** Optional description */
|
|
734
|
+
description?: string;
|
|
735
|
+
/** Type of the flag value */
|
|
736
|
+
valueType: FlagValueType;
|
|
737
|
+
/** Default value when no override exists */
|
|
738
|
+
defaultValue: T;
|
|
739
|
+
/** Levels at which this flag can be overridden */
|
|
740
|
+
allowedLevels: FlagLevel[];
|
|
741
|
+
/** Grouping category for UI */
|
|
742
|
+
category?: string;
|
|
743
|
+
/** System flag - cannot be modified via API */
|
|
744
|
+
system?: boolean;
|
|
745
|
+
}
|
|
746
|
+
/**
|
|
747
|
+
* Stored override for a feature flag.
|
|
748
|
+
* Represents a row in the feature_flag_overrides table.
|
|
749
|
+
*/
|
|
750
|
+
interface FlagOverride<T = unknown> {
|
|
751
|
+
/** Name of the flag being overridden */
|
|
752
|
+
flagName: string;
|
|
753
|
+
/** Level of the override */
|
|
754
|
+
level: FlagLevel;
|
|
755
|
+
/** Target ID (tenantId for tenant-level, userId for user-level) */
|
|
756
|
+
targetId?: string;
|
|
757
|
+
/** Override value */
|
|
758
|
+
value: T;
|
|
759
|
+
/** Optional expiration date */
|
|
760
|
+
expiresAt?: Date;
|
|
761
|
+
/** Who created this override */
|
|
762
|
+
createdBy?: string;
|
|
763
|
+
/** When the override was created */
|
|
764
|
+
createdAt: Date;
|
|
765
|
+
/** When the override was last updated */
|
|
766
|
+
updatedAt: Date;
|
|
767
|
+
}
|
|
768
|
+
/**
|
|
769
|
+
* Resolved flag value with source information.
|
|
770
|
+
* Result of flag resolution including where the value came from.
|
|
771
|
+
*/
|
|
772
|
+
interface ResolvedFlag<T = unknown> {
|
|
773
|
+
/** Flag name */
|
|
774
|
+
name: string;
|
|
775
|
+
/** Resolved value */
|
|
776
|
+
value: T;
|
|
777
|
+
/** Where the value came from */
|
|
778
|
+
source: FlagLevel | "default";
|
|
779
|
+
/** ID of the source (tenantId or userId) if not default */
|
|
780
|
+
sourceId?: string;
|
|
781
|
+
}
|
|
782
|
+
/**
|
|
783
|
+
* Feature gate configuration for conditional attribute visibility.
|
|
784
|
+
* Used with the `.featureGate()` builder method.
|
|
785
|
+
*/
|
|
786
|
+
interface FeatureGate {
|
|
787
|
+
/** Name of the flag to check */
|
|
788
|
+
flag: string;
|
|
789
|
+
/**
|
|
790
|
+
* Expected value for the gate to pass.
|
|
791
|
+
* For boolean flags, defaults to `true`.
|
|
792
|
+
* For other types, compares with strict equality.
|
|
793
|
+
*/
|
|
794
|
+
expectedValue?: unknown;
|
|
795
|
+
/**
|
|
796
|
+
* Behavior when the gate fails.
|
|
797
|
+
* - `hide`: Attribute is completely hidden (default)
|
|
798
|
+
* - `show`: Attribute is shown regardless (no gating)
|
|
799
|
+
* - `disable`: Attribute is visible but read-only
|
|
800
|
+
*/
|
|
801
|
+
fallback?: "hide" | "show" | "disable";
|
|
802
|
+
}
|
|
803
|
+
/**
|
|
804
|
+
* Repository interface for feature flag overrides storage.
|
|
805
|
+
* Added to DatabaseAdapter as an optional repository.
|
|
806
|
+
*
|
|
807
|
+
* If not provided, only static defaults from module config are used.
|
|
808
|
+
*/
|
|
809
|
+
interface FeatureFlagsRepository {
|
|
810
|
+
/**
|
|
811
|
+
* Get all overrides matching the criteria.
|
|
812
|
+
* Returns overrides from the database (global, tenant, or user level).
|
|
813
|
+
*/
|
|
814
|
+
getOverrides(options: {
|
|
815
|
+
/** Filter by level */
|
|
816
|
+
level?: FlagLevel;
|
|
817
|
+
/** Filter by target ID (tenantId or userId) */
|
|
818
|
+
targetId?: string;
|
|
819
|
+
}): Promise<FlagOverride[]>;
|
|
820
|
+
/**
|
|
821
|
+
* Create or update an override.
|
|
822
|
+
* Uses upsert semantics based on (flagName, level, targetId).
|
|
823
|
+
*/
|
|
824
|
+
setOverride(override: Omit<FlagOverride, "createdAt" | "updatedAt">): Promise<FlagOverride>;
|
|
825
|
+
/**
|
|
826
|
+
* Delete an override.
|
|
827
|
+
*/
|
|
828
|
+
deleteOverride(flagName: string, level: FlagLevel, targetId?: string): Promise<void>;
|
|
829
|
+
}
|
|
830
|
+
/**
|
|
831
|
+
* Static flag default value for module configuration.
|
|
832
|
+
*/
|
|
833
|
+
interface StaticFlagDefault {
|
|
834
|
+
/** Flag name */
|
|
835
|
+
name: string;
|
|
836
|
+
/** Default value */
|
|
837
|
+
value: unknown;
|
|
838
|
+
}
|
|
839
|
+
/**
|
|
840
|
+
* Feature flags configuration for SchemaModule.
|
|
841
|
+
*/
|
|
842
|
+
interface FeatureFlagsConfig {
|
|
843
|
+
/**
|
|
844
|
+
* Static default values for flags.
|
|
845
|
+
* These are always applied and used when no database override exists.
|
|
846
|
+
*
|
|
847
|
+
* @example
|
|
848
|
+
* ```typescript
|
|
849
|
+
* featureFlags: {
|
|
850
|
+
* defaults: [
|
|
851
|
+
* { name: "architect-mode", value: false },
|
|
852
|
+
* { name: "ai-chat", value: false },
|
|
853
|
+
* { name: "tier", value: "free" },
|
|
854
|
+
* ],
|
|
855
|
+
* }
|
|
856
|
+
* ```
|
|
857
|
+
*/
|
|
858
|
+
defaults?: StaticFlagDefault[];
|
|
859
|
+
}
|
|
860
|
+
|
|
712
861
|
type AttributeType = "text" | "textarea" | "richtext" | "number" | "checkbox" | "date" | "phone" | "currency" | "status" | "location" | "select" | "multiselect" | "file" | "user" | "relation" | "rating" | "formula" | "rollup" | "document";
|
|
713
862
|
/**
|
|
714
863
|
* Status group categorization
|
|
@@ -754,6 +903,14 @@ interface BaseAttribute<DefaultValueType = unknown> {
|
|
|
754
903
|
archived?: boolean;
|
|
755
904
|
deprecated?: boolean;
|
|
756
905
|
system?: boolean;
|
|
906
|
+
/**
|
|
907
|
+
* Feature gate to conditionally show/hide/disable this attribute.
|
|
908
|
+
* When the flag condition is not met, the attribute behavior depends on `fallback`:
|
|
909
|
+
* - "hide" (default): Attribute is completely hidden
|
|
910
|
+
* - "disable": Attribute is visible but read-only
|
|
911
|
+
* - "show": No gating (useful for overriding parent settings)
|
|
912
|
+
*/
|
|
913
|
+
featureGate?: FeatureGate;
|
|
757
914
|
metadata?: Record<string, unknown>;
|
|
758
915
|
}
|
|
759
916
|
interface TextAttribute extends BaseAttribute<string> {
|
|
@@ -3769,6 +3926,10 @@ declare function canResumeInstance(instance: WorkflowInstance): boolean;
|
|
|
3769
3926
|
*/
|
|
3770
3927
|
declare function createStartTransition(startNodeId: string, startedBy: string): WorkflowTransition;
|
|
3771
3928
|
|
|
3929
|
+
/**
|
|
3930
|
+
* Type of view - determines the config structure
|
|
3931
|
+
*/
|
|
3932
|
+
type ViewType = "detail" | "list" | "calendar" | "timeline" | "gallery";
|
|
3772
3933
|
/**
|
|
3773
3934
|
* Inline attribute group configuration
|
|
3774
3935
|
* Groups multiple attributes into a single composite field with dropdown editing
|
|
@@ -3827,8 +3988,6 @@ interface BaseTab {
|
|
|
3827
3988
|
label: string;
|
|
3828
3989
|
icon?: IconName;
|
|
3829
3990
|
order?: number;
|
|
3830
|
-
/** If true, tab is defined by developer (protected) */
|
|
3831
|
-
system?: boolean;
|
|
3832
3991
|
}
|
|
3833
3992
|
/**
|
|
3834
3993
|
* Form tab - displays attributes organized in groups
|
|
@@ -3859,14 +4018,6 @@ interface TableTabBase extends BaseTab {
|
|
|
3859
4018
|
* Direct table tab - displays records from a relation attribute on the current object
|
|
3860
4019
|
*
|
|
3861
4020
|
* @example Project.members → shows Users linked via the "members" relation
|
|
3862
|
-
* ```typescript
|
|
3863
|
-
* {
|
|
3864
|
-
* type: "table",
|
|
3865
|
-
* relationMode: "direct",
|
|
3866
|
-
* relationAttribute: "members",
|
|
3867
|
-
* columns: ["name", "email"]
|
|
3868
|
-
* }
|
|
3869
|
-
* ```
|
|
3870
4021
|
*/
|
|
3871
4022
|
interface DirectTableTab extends TableTabBase {
|
|
3872
4023
|
relationMode: "direct";
|
|
@@ -3877,15 +4028,6 @@ interface DirectTableTab extends TableTabBase {
|
|
|
3877
4028
|
* Inverse table tab - displays records from another object that have a relation to us
|
|
3878
4029
|
*
|
|
3879
4030
|
* @example Contact.company → on Company, shows Contacts that point to this Company
|
|
3880
|
-
* ```typescript
|
|
3881
|
-
* {
|
|
3882
|
-
* type: "table",
|
|
3883
|
-
* relationMode: "inverse",
|
|
3884
|
-
* sourceObject: "contacts",
|
|
3885
|
-
* relationAttribute: "company",
|
|
3886
|
-
* columns: ["firstName", "lastName", "email"]
|
|
3887
|
-
* }
|
|
3888
|
-
* ```
|
|
3889
4031
|
*/
|
|
3890
4032
|
interface InverseTableTab extends TableTabBase {
|
|
3891
4033
|
relationMode: "inverse";
|
|
@@ -3896,7 +4038,6 @@ interface InverseTableTab extends TableTabBase {
|
|
|
3896
4038
|
}
|
|
3897
4039
|
/**
|
|
3898
4040
|
* Table tab - displays related records in a table
|
|
3899
|
-
* Discriminated union by relationMode for type-safe configuration
|
|
3900
4041
|
*/
|
|
3901
4042
|
type TableTab = DirectTableTab | InverseTableTab;
|
|
3902
4043
|
/**
|
|
@@ -3919,21 +4060,6 @@ interface ActivityTab extends BaseTab {
|
|
|
3919
4060
|
}
|
|
3920
4061
|
/**
|
|
3921
4062
|
* Notes tab - displays notes linked to the current record
|
|
3922
|
-
*
|
|
3923
|
-
* Shows all notes where linked_object_name matches the current object
|
|
3924
|
-
* and linked_record_id matches the current record ID.
|
|
3925
|
-
* Respects visibility rules (private notes only visible to author).
|
|
3926
|
-
*
|
|
3927
|
-
* @example
|
|
3928
|
-
* ```typescript
|
|
3929
|
-
* {
|
|
3930
|
-
* type: "notes",
|
|
3931
|
-
* id: "notes",
|
|
3932
|
-
* name: "notes",
|
|
3933
|
-
* label: "Notes",
|
|
3934
|
-
* allowCreate: true
|
|
3935
|
-
* }
|
|
3936
|
-
* ```
|
|
3937
4063
|
*/
|
|
3938
4064
|
interface NotesTab extends BaseTab {
|
|
3939
4065
|
type: "notes";
|
|
@@ -3944,22 +4070,6 @@ interface NotesTab extends BaseTab {
|
|
|
3944
4070
|
}
|
|
3945
4071
|
/**
|
|
3946
4072
|
* Flows tab - displays workflow instances linked to the current record
|
|
3947
|
-
*
|
|
3948
|
-
* Uses record.metadata.createdByWorkflow to find linked instances.
|
|
3949
|
-
* Allows launching new instances from published workflows that have
|
|
3950
|
-
* a slot matching the current object.
|
|
3951
|
-
*
|
|
3952
|
-
* @example
|
|
3953
|
-
* ```typescript
|
|
3954
|
-
* {
|
|
3955
|
-
* type: "flows",
|
|
3956
|
-
* id: "workflows",
|
|
3957
|
-
* name: "workflows",
|
|
3958
|
-
* label: "Workflows",
|
|
3959
|
-
* allowStart: true,
|
|
3960
|
-
* allowCancel: true
|
|
3961
|
-
* }
|
|
3962
|
-
* ```
|
|
3963
4073
|
*/
|
|
3964
4074
|
interface FlowsTab extends BaseTab {
|
|
3965
4075
|
type: "flows";
|
|
@@ -3974,25 +4084,6 @@ interface FlowsTab extends BaseTab {
|
|
|
3974
4084
|
}
|
|
3975
4085
|
/**
|
|
3976
4086
|
* Documents tab - displays all documents attached to the record
|
|
3977
|
-
*
|
|
3978
|
-
* Shows documents from:
|
|
3979
|
-
* - Document attributes defined on the object
|
|
3980
|
-
* - System `attachments` attribute (free-form documents)
|
|
3981
|
-
*
|
|
3982
|
-
* Allows uploading new documents either to a specific attribute or as attachments.
|
|
3983
|
-
*
|
|
3984
|
-
* @example
|
|
3985
|
-
* ```typescript
|
|
3986
|
-
* {
|
|
3987
|
-
* type: "documents",
|
|
3988
|
-
* id: "documents",
|
|
3989
|
-
* name: "documents",
|
|
3990
|
-
* label: "Documents",
|
|
3991
|
-
* allowUpload: true,
|
|
3992
|
-
* allowRemove: true,
|
|
3993
|
-
* showProcessing: true
|
|
3994
|
-
* }
|
|
3995
|
-
* ```
|
|
3996
4087
|
*/
|
|
3997
4088
|
interface DocumentsTab extends BaseTab {
|
|
3998
4089
|
type: "documents";
|
|
@@ -4008,36 +4099,118 @@ interface DocumentsTab extends BaseTab {
|
|
|
4008
4099
|
hideAttachments?: boolean;
|
|
4009
4100
|
}
|
|
4010
4101
|
/**
|
|
4011
|
-
* Union of all tab types
|
|
4102
|
+
* Union of all tab types (for detail views)
|
|
4012
4103
|
*/
|
|
4013
4104
|
type Tab = FormTab | TableTab | CustomTab | ActivityTab | NotesTab | FlowsTab | DocumentsTab;
|
|
4014
4105
|
/**
|
|
4015
|
-
*
|
|
4016
|
-
* - `page`: Full view with multiple tabs
|
|
4017
|
-
* - `modal`: Simplified view for modals
|
|
4106
|
+
* Detail view layout mode
|
|
4107
|
+
* - `page`: Full view with multiple tabs
|
|
4108
|
+
* - `modal`: Simplified view for modals (single FormTab, no tabs UI)
|
|
4109
|
+
*/
|
|
4110
|
+
type DetailViewLayout = "page" | "modal";
|
|
4111
|
+
/**
|
|
4112
|
+
* List view layout mode
|
|
4113
|
+
* - `table`: Table/grid layout
|
|
4114
|
+
* - `kanban`: Kanban board layout (grouped by attribute)
|
|
4018
4115
|
*/
|
|
4019
|
-
type
|
|
4116
|
+
type ListViewLayout = "table" | "kanban";
|
|
4117
|
+
/** @deprecated Use DetailViewLayout instead */
|
|
4118
|
+
type ViewLayout = DetailViewLayout;
|
|
4020
4119
|
/**
|
|
4021
|
-
*
|
|
4120
|
+
* Internal tab within a list view (filter preset)
|
|
4022
4121
|
*
|
|
4023
4122
|
* @example
|
|
4024
4123
|
* ```typescript
|
|
4025
|
-
* const
|
|
4026
|
-
*
|
|
4027
|
-
* label: "
|
|
4028
|
-
*
|
|
4029
|
-
*
|
|
4030
|
-
* tabs: [
|
|
4031
|
-
* { type: "form", name: "general", label: "Info", groups: [...] },
|
|
4032
|
-
* { type: "table", relationMode: "inverse", sourceObject: "contacts", relationAttribute: "company", columns: [...] }
|
|
4033
|
-
* ],
|
|
4034
|
-
* default: true,
|
|
4035
|
-
* system: true
|
|
4036
|
-
* };
|
|
4124
|
+
* const tabs: ViewTab[] = [
|
|
4125
|
+
* { id: "all", label: "All Contacts", default: true },
|
|
4126
|
+
* { id: "active", label: "Active", filters: { status: { eq: "active" } } },
|
|
4127
|
+
* { id: "mine", label: "My Contacts", filters: { assignee: { eq: "me" } } }
|
|
4128
|
+
* ];
|
|
4037
4129
|
* ```
|
|
4038
4130
|
*/
|
|
4039
|
-
interface
|
|
4040
|
-
|
|
4131
|
+
interface ViewTab {
|
|
4132
|
+
/** Unique identifier */
|
|
4133
|
+
id: string;
|
|
4134
|
+
/** Display label */
|
|
4135
|
+
label: string;
|
|
4136
|
+
/** Icon */
|
|
4137
|
+
icon?: IconName;
|
|
4138
|
+
/** Filter preset for this tab */
|
|
4139
|
+
filters?: FilterGroup;
|
|
4140
|
+
/** Default tab (shown on load) */
|
|
4141
|
+
default?: boolean;
|
|
4142
|
+
}
|
|
4143
|
+
/**
|
|
4144
|
+
* Configuration for detail views (RecordEditView)
|
|
4145
|
+
*/
|
|
4146
|
+
interface DetailViewConfig {
|
|
4147
|
+
/** Layout mode */
|
|
4148
|
+
layout: DetailViewLayout;
|
|
4149
|
+
/** Tabs in this view */
|
|
4150
|
+
tabs: Tab[];
|
|
4151
|
+
}
|
|
4152
|
+
/**
|
|
4153
|
+
* Configuration for list views (RecordsView)
|
|
4154
|
+
*/
|
|
4155
|
+
interface ListViewConfig {
|
|
4156
|
+
/** Layout mode */
|
|
4157
|
+
layout: ListViewLayout;
|
|
4158
|
+
/** Attribute names to display as columns */
|
|
4159
|
+
columns: string[];
|
|
4160
|
+
/** Column widths in pixels */
|
|
4161
|
+
columnSizing?: Record<string, number>;
|
|
4162
|
+
/** Default filters applied to the view */
|
|
4163
|
+
defaultFilters?: FilterGroup;
|
|
4164
|
+
/** Default sort rules */
|
|
4165
|
+
defaultSorts?: SortRule[];
|
|
4166
|
+
/** Attribute to group by (for kanban layout) */
|
|
4167
|
+
groupByAttribute?: string;
|
|
4168
|
+
/** Internal tabs (filter presets) */
|
|
4169
|
+
tabs?: ViewTab[];
|
|
4170
|
+
}
|
|
4171
|
+
/**
|
|
4172
|
+
* Configuration for calendar views (future)
|
|
4173
|
+
*/
|
|
4174
|
+
interface CalendarViewConfig {
|
|
4175
|
+
/** Date attribute for positioning events */
|
|
4176
|
+
dateAttribute: string;
|
|
4177
|
+
/** End date attribute (for range events) */
|
|
4178
|
+
endDateAttribute?: string;
|
|
4179
|
+
/** Title attribute for event display */
|
|
4180
|
+
titleAttribute: string;
|
|
4181
|
+
/** Color attribute (status/select) */
|
|
4182
|
+
colorAttribute?: string;
|
|
4183
|
+
}
|
|
4184
|
+
/**
|
|
4185
|
+
* Configuration for timeline views (future)
|
|
4186
|
+
*/
|
|
4187
|
+
interface TimelineViewConfig {
|
|
4188
|
+
/** Date attribute for timeline positioning */
|
|
4189
|
+
dateAttribute: string;
|
|
4190
|
+
/** Group by attribute */
|
|
4191
|
+
groupByAttribute?: string;
|
|
4192
|
+
}
|
|
4193
|
+
/**
|
|
4194
|
+
* Configuration for gallery views (future)
|
|
4195
|
+
*/
|
|
4196
|
+
interface GalleryViewConfig {
|
|
4197
|
+
/** Image attribute to display */
|
|
4198
|
+
imageAttribute: string;
|
|
4199
|
+
/** Title attribute */
|
|
4200
|
+
titleAttribute?: string;
|
|
4201
|
+
/** Columns per row */
|
|
4202
|
+
columnsPerRow?: number;
|
|
4203
|
+
}
|
|
4204
|
+
/**
|
|
4205
|
+
* Union of all view configs
|
|
4206
|
+
*/
|
|
4207
|
+
type ViewConfig = DetailViewConfig | ListViewConfig | CalendarViewConfig | TimelineViewConfig | GalleryViewConfig;
|
|
4208
|
+
/**
|
|
4209
|
+
* Base view properties shared by all view types
|
|
4210
|
+
*/
|
|
4211
|
+
interface BaseViewDefinition {
|
|
4212
|
+
/** Unique identifier (UUID, assigned by database) */
|
|
4213
|
+
id?: string;
|
|
4041
4214
|
/** Technical name (kebab-case) */
|
|
4042
4215
|
name: string;
|
|
4043
4216
|
/** Display label */
|
|
@@ -4048,22 +4221,100 @@ interface ViewDefinition {
|
|
|
4048
4221
|
icon?: IconName;
|
|
4049
4222
|
/** Object this view belongs to (object name) */
|
|
4050
4223
|
object: string;
|
|
4051
|
-
/**
|
|
4052
|
-
* Layout mode for the view
|
|
4053
|
-
* - `page`: Full view with multiple tabs
|
|
4054
|
-
* - `modal`: Simplified view for modals (single FormTab, no tabs UI)
|
|
4055
|
-
* @default "page"
|
|
4056
|
-
*/
|
|
4057
|
-
layout?: ViewLayout;
|
|
4058
|
-
/** Tabs in this view */
|
|
4059
|
-
tabs: Tab[];
|
|
4060
|
-
/** Default view for this object (per layout) */
|
|
4224
|
+
/** Default view for this object+type combination */
|
|
4061
4225
|
default?: boolean;
|
|
4062
|
-
/** System view (defined by developer, protected) */
|
|
4063
|
-
system?: boolean;
|
|
4064
4226
|
/** Extensible metadata */
|
|
4065
4227
|
metadata?: Record<string, unknown>;
|
|
4066
4228
|
}
|
|
4229
|
+
/**
|
|
4230
|
+
* Detail view definition
|
|
4231
|
+
*/
|
|
4232
|
+
interface DetailViewDefinition extends BaseViewDefinition {
|
|
4233
|
+
type: "detail";
|
|
4234
|
+
config: DetailViewConfig;
|
|
4235
|
+
}
|
|
4236
|
+
/**
|
|
4237
|
+
* List view definition
|
|
4238
|
+
*/
|
|
4239
|
+
interface ListViewDefinition extends BaseViewDefinition {
|
|
4240
|
+
type: "list";
|
|
4241
|
+
config: ListViewConfig;
|
|
4242
|
+
}
|
|
4243
|
+
/**
|
|
4244
|
+
* Calendar view definition (future)
|
|
4245
|
+
*/
|
|
4246
|
+
interface CalendarViewDefinition extends BaseViewDefinition {
|
|
4247
|
+
type: "calendar";
|
|
4248
|
+
config: CalendarViewConfig;
|
|
4249
|
+
}
|
|
4250
|
+
/**
|
|
4251
|
+
* Timeline view definition (future)
|
|
4252
|
+
*/
|
|
4253
|
+
interface TimelineViewDefinition extends BaseViewDefinition {
|
|
4254
|
+
type: "timeline";
|
|
4255
|
+
config: TimelineViewConfig;
|
|
4256
|
+
}
|
|
4257
|
+
/**
|
|
4258
|
+
* Gallery view definition (future)
|
|
4259
|
+
*/
|
|
4260
|
+
interface GalleryViewDefinition extends BaseViewDefinition {
|
|
4261
|
+
type: "gallery";
|
|
4262
|
+
config: GalleryViewConfig;
|
|
4263
|
+
}
|
|
4264
|
+
/**
|
|
4265
|
+
* Unified view definition - discriminated union by type
|
|
4266
|
+
*/
|
|
4267
|
+
type ViewDefinition = DetailViewDefinition | ListViewDefinition | CalendarViewDefinition | TimelineViewDefinition | GalleryViewDefinition;
|
|
4268
|
+
/**
|
|
4269
|
+
* Configuration overrides for user customizations
|
|
4270
|
+
* Only stores the delta from the source view
|
|
4271
|
+
*/
|
|
4272
|
+
interface ConfigOverrides {
|
|
4273
|
+
tabs?: ViewTab[];
|
|
4274
|
+
hiddenTabIds?: string[];
|
|
4275
|
+
detailTabs?: Tab[];
|
|
4276
|
+
hiddenDetailTabIds?: string[];
|
|
4277
|
+
}
|
|
4278
|
+
/**
|
|
4279
|
+
* User customization overlay for a view
|
|
4280
|
+
* Stored per user, merged at runtime with the source view
|
|
4281
|
+
*/
|
|
4282
|
+
interface ViewOverlay {
|
|
4283
|
+
/** Unique identifier */
|
|
4284
|
+
id: string;
|
|
4285
|
+
/** View ID this overlay applies to (UUID or virtual ID) */
|
|
4286
|
+
viewId: string;
|
|
4287
|
+
/** User ID who owns this overlay */
|
|
4288
|
+
userId: string;
|
|
4289
|
+
/** Configuration overrides (delta only) */
|
|
4290
|
+
configOverrides: ConfigOverrides;
|
|
4291
|
+
/** User's default view for this object (stored in overlay) */
|
|
4292
|
+
isUserDefault?: boolean;
|
|
4293
|
+
/** Created timestamp */
|
|
4294
|
+
createdAt: Date;
|
|
4295
|
+
/** Updated timestamp */
|
|
4296
|
+
updatedAt: Date;
|
|
4297
|
+
}
|
|
4298
|
+
/**
|
|
4299
|
+
* Check if a view is a detail view
|
|
4300
|
+
*/
|
|
4301
|
+
declare function isDetailView(view: ViewDefinition): view is DetailViewDefinition;
|
|
4302
|
+
/**
|
|
4303
|
+
* Check if a view is a list view
|
|
4304
|
+
*/
|
|
4305
|
+
declare function isListView(view: ViewDefinition): view is ListViewDefinition;
|
|
4306
|
+
/**
|
|
4307
|
+
* Check if a view is a calendar view
|
|
4308
|
+
*/
|
|
4309
|
+
declare function isCalendarView(view: ViewDefinition): view is CalendarViewDefinition;
|
|
4310
|
+
/**
|
|
4311
|
+
* Check if a view is a timeline view
|
|
4312
|
+
*/
|
|
4313
|
+
declare function isTimelineView(view: ViewDefinition): view is TimelineViewDefinition;
|
|
4314
|
+
/**
|
|
4315
|
+
* Check if a view is a gallery view
|
|
4316
|
+
*/
|
|
4317
|
+
declare function isGalleryView(view: ViewDefinition): view is GalleryViewDefinition;
|
|
4067
4318
|
/**
|
|
4068
4319
|
* Check if a tab is a form tab
|
|
4069
4320
|
*/
|
|
@@ -4543,22 +4794,24 @@ interface FileListOptions extends ListOptions {
|
|
|
4543
4794
|
visibility?: FileVisibility;
|
|
4544
4795
|
}
|
|
4545
4796
|
/**
|
|
4546
|
-
*
|
|
4797
|
+
* Unified view as stored in database
|
|
4798
|
+
* Supports all view types (detail, list, calendar, etc.) via polymorphic config
|
|
4547
4799
|
*/
|
|
4548
4800
|
interface DBView extends Timestamps {
|
|
4549
4801
|
id: Uuid;
|
|
4550
4802
|
tenantId: TenantId;
|
|
4551
4803
|
objectId?: Uuid;
|
|
4552
4804
|
objectName: string;
|
|
4805
|
+
/** View type discriminant */
|
|
4806
|
+
type: ViewType;
|
|
4553
4807
|
name: string;
|
|
4554
4808
|
label: string;
|
|
4555
4809
|
description?: string;
|
|
4556
4810
|
icon?: IconName;
|
|
4557
|
-
/**
|
|
4558
|
-
|
|
4559
|
-
|
|
4811
|
+
/** Polymorphic configuration (DetailViewConfig, ListViewConfig, etc.) */
|
|
4812
|
+
config: ViewConfig;
|
|
4813
|
+
/** Default view for this object+type combination */
|
|
4560
4814
|
default: boolean;
|
|
4561
|
-
system: boolean;
|
|
4562
4815
|
metadata?: Record<string, unknown>;
|
|
4563
4816
|
}
|
|
4564
4817
|
/**
|
|
@@ -4568,44 +4821,74 @@ interface DBView extends Timestamps {
|
|
|
4568
4821
|
interface CreateDBView {
|
|
4569
4822
|
objectId?: Uuid;
|
|
4570
4823
|
objectName: string;
|
|
4824
|
+
type: ViewType;
|
|
4571
4825
|
name: string;
|
|
4572
4826
|
label: string;
|
|
4573
4827
|
description?: string;
|
|
4574
4828
|
icon?: IconName;
|
|
4575
|
-
|
|
4576
|
-
layout?: ViewLayout;
|
|
4577
|
-
tabs: Tab[];
|
|
4829
|
+
config: ViewConfig;
|
|
4578
4830
|
default?: boolean;
|
|
4579
|
-
system?: boolean;
|
|
4580
4831
|
metadata?: Record<string, unknown>;
|
|
4581
4832
|
}
|
|
4833
|
+
/**
|
|
4834
|
+
* Data for updating a view.
|
|
4835
|
+
*/
|
|
4582
4836
|
interface UpdateDBView {
|
|
4583
4837
|
label?: string;
|
|
4584
4838
|
description?: string;
|
|
4585
4839
|
icon?: IconName;
|
|
4586
|
-
|
|
4587
|
-
layout?: ViewLayout;
|
|
4588
|
-
tabs?: Tab[];
|
|
4840
|
+
config?: ViewConfig;
|
|
4589
4841
|
default?: boolean;
|
|
4590
4842
|
metadata?: Record<string, unknown>;
|
|
4591
4843
|
}
|
|
4592
4844
|
/**
|
|
4593
|
-
* Data for upserting a view.
|
|
4845
|
+
* Data for upserting a view (used by registry seeding).
|
|
4594
4846
|
* Tenant ID is automatically set from the execution context.
|
|
4595
4847
|
*/
|
|
4596
4848
|
interface UpsertDBView {
|
|
4597
4849
|
objectName: string;
|
|
4850
|
+
type: ViewType;
|
|
4598
4851
|
name: string;
|
|
4599
4852
|
label: string;
|
|
4600
4853
|
description?: string;
|
|
4601
4854
|
icon?: IconName;
|
|
4602
|
-
|
|
4603
|
-
layout?: ViewLayout;
|
|
4604
|
-
tabs: Tab[];
|
|
4855
|
+
config: ViewConfig;
|
|
4605
4856
|
default?: boolean;
|
|
4606
|
-
system?: boolean;
|
|
4607
4857
|
metadata?: Record<string, unknown>;
|
|
4608
4858
|
}
|
|
4859
|
+
/**
|
|
4860
|
+
* View overlay as stored in database
|
|
4861
|
+
* Stores user-specific customizations (delta only)
|
|
4862
|
+
*/
|
|
4863
|
+
interface DBViewOverlay extends Timestamps {
|
|
4864
|
+
id: Uuid;
|
|
4865
|
+
tenantId: TenantId;
|
|
4866
|
+
/** View ID this overlay applies to (UUID or virtual ID like "fallback:contacts:list") */
|
|
4867
|
+
viewId: string;
|
|
4868
|
+
/** User ID who owns this overlay */
|
|
4869
|
+
userId: string;
|
|
4870
|
+
/** Configuration overrides (delta only) */
|
|
4871
|
+
configOverrides: ConfigOverrides;
|
|
4872
|
+
/** User's default view for this object */
|
|
4873
|
+
isUserDefault?: boolean;
|
|
4874
|
+
}
|
|
4875
|
+
/**
|
|
4876
|
+
* Data for creating a view overlay.
|
|
4877
|
+
* Tenant ID is automatically set from the execution context.
|
|
4878
|
+
*/
|
|
4879
|
+
interface CreateDBViewOverlay {
|
|
4880
|
+
viewId: string;
|
|
4881
|
+
userId: string;
|
|
4882
|
+
configOverrides: ConfigOverrides;
|
|
4883
|
+
isUserDefault?: boolean;
|
|
4884
|
+
}
|
|
4885
|
+
/**
|
|
4886
|
+
* Data for updating a view overlay.
|
|
4887
|
+
*/
|
|
4888
|
+
interface UpdateDBViewOverlay {
|
|
4889
|
+
configOverrides?: ConfigOverrides;
|
|
4890
|
+
isUserDefault?: boolean;
|
|
4891
|
+
}
|
|
4609
4892
|
/**
|
|
4610
4893
|
* Workflow definition as stored in database.
|
|
4611
4894
|
* Uses snake_case to match database column names.
|
|
@@ -5185,19 +5468,24 @@ declare class NativeObjectRegistryClass {
|
|
|
5185
5468
|
declare const registry: NativeObjectRegistryClass;
|
|
5186
5469
|
|
|
5187
5470
|
/**
|
|
5188
|
-
* Registry for
|
|
5471
|
+
* Registry for developer-defined view definitions
|
|
5472
|
+
*
|
|
5473
|
+
* Views registered here are defined by developers and synced to the database
|
|
5474
|
+
* at application startup. They serve as "source" views that users can customize
|
|
5475
|
+
* via overlays.
|
|
5189
5476
|
*
|
|
5190
|
-
*
|
|
5191
|
-
*
|
|
5192
|
-
*
|
|
5477
|
+
* Seeding behavior:
|
|
5478
|
+
* - INSERT if view doesn't exist in DB
|
|
5479
|
+
* - SKIP if view already exists (no overwrite)
|
|
5480
|
+
* - To force update: delete the view in DB, then restart app
|
|
5193
5481
|
*
|
|
5194
5482
|
* @example
|
|
5195
5483
|
* ```typescript
|
|
5196
|
-
* import {
|
|
5484
|
+
* import { detailView, group, viewRegistry } from "@stndrds/schema";
|
|
5197
5485
|
*
|
|
5198
|
-
* const COMPANY_DETAIL =
|
|
5486
|
+
* const COMPANY_DETAIL = detailView("detail", "Detail")
|
|
5199
5487
|
* .for("companies")
|
|
5200
|
-
* .
|
|
5488
|
+
* .default()
|
|
5201
5489
|
* .tab("general", "Info")
|
|
5202
5490
|
* .form(group("main", "Main").fields("name", "status"))
|
|
5203
5491
|
* .build();
|
|
@@ -5208,11 +5496,11 @@ declare const registry: NativeObjectRegistryClass;
|
|
|
5208
5496
|
declare class ViewRegistry {
|
|
5209
5497
|
private views;
|
|
5210
5498
|
private byObject;
|
|
5499
|
+
private byObjectAndType;
|
|
5211
5500
|
/**
|
|
5212
|
-
* Register a
|
|
5501
|
+
* Register a view
|
|
5213
5502
|
* @param viewOrViews - Single view or array of views
|
|
5214
|
-
* @throws Error if view
|
|
5215
|
-
* @throws Error if view with same name already exists for the object
|
|
5503
|
+
* @throws Error if view with same name and type already exists for the object
|
|
5216
5504
|
*/
|
|
5217
5505
|
register(viewOrViews: ViewDefinition | ViewDefinition[]): this;
|
|
5218
5506
|
private registerSingle;
|
|
@@ -5221,13 +5509,17 @@ declare class ViewRegistry {
|
|
|
5221
5509
|
*/
|
|
5222
5510
|
getByObjectName(objectName: string): ViewDefinition[];
|
|
5223
5511
|
/**
|
|
5224
|
-
* Get
|
|
5512
|
+
* Get views for an object filtered by type
|
|
5513
|
+
*/
|
|
5514
|
+
getByObjectNameAndType(objectName: string, type: ViewType): ViewDefinition[];
|
|
5515
|
+
/**
|
|
5516
|
+
* Get a specific view by object, name, and type
|
|
5225
5517
|
*/
|
|
5226
|
-
get(objectName: string, viewName: string): ViewDefinition | undefined;
|
|
5518
|
+
get(objectName: string, viewName: string, type?: ViewType): ViewDefinition | undefined;
|
|
5227
5519
|
/**
|
|
5228
5520
|
* Get a view or throw if not found
|
|
5229
5521
|
*/
|
|
5230
|
-
getOrThrow(objectName: string, viewName: string): ViewDefinition;
|
|
5522
|
+
getOrThrow(objectName: string, viewName: string, type?: ViewType): ViewDefinition;
|
|
5231
5523
|
/**
|
|
5232
5524
|
* Get all registered views
|
|
5233
5525
|
*/
|
|
@@ -5235,7 +5527,7 @@ declare class ViewRegistry {
|
|
|
5235
5527
|
/**
|
|
5236
5528
|
* Check if a view exists
|
|
5237
5529
|
*/
|
|
5238
|
-
has(objectName: string, viewName: string): boolean;
|
|
5530
|
+
has(objectName: string, viewName: string, type?: ViewType): boolean;
|
|
5239
5531
|
/**
|
|
5240
5532
|
* Check if any views exist for an object
|
|
5241
5533
|
*/
|
|
@@ -5249,9 +5541,9 @@ declare class ViewRegistry {
|
|
|
5249
5541
|
*/
|
|
5250
5542
|
listObjectNames(): string[];
|
|
5251
5543
|
/**
|
|
5252
|
-
* Get default view for an object
|
|
5544
|
+
* Get default view for an object and type
|
|
5253
5545
|
*/
|
|
5254
|
-
getDefault(objectName: string): ViewDefinition | undefined;
|
|
5546
|
+
getDefault(objectName: string, type: ViewType): ViewDefinition | undefined;
|
|
5255
5547
|
/**
|
|
5256
5548
|
* Clear all registered views (for testing)
|
|
5257
5549
|
*/
|
|
@@ -5267,7 +5559,7 @@ declare class ViewRegistry {
|
|
|
5267
5559
|
private makeKey;
|
|
5268
5560
|
}
|
|
5269
5561
|
/**
|
|
5270
|
-
* Global registry for
|
|
5562
|
+
* Global registry for developer-defined views
|
|
5271
5563
|
*/
|
|
5272
5564
|
declare const viewRegistry: ViewRegistry;
|
|
5273
5565
|
|
|
@@ -6276,6 +6568,151 @@ declare class NoopCacheAdapter implements CacheAdapter {
|
|
|
6276
6568
|
getOrSet<T>(_key: string, fetcher: () => Promise<T>): Promise<T>;
|
|
6277
6569
|
}
|
|
6278
6570
|
|
|
6571
|
+
/**
|
|
6572
|
+
* Repository for unified views table.
|
|
6573
|
+
* Supports all view types (detail, list, calendar, etc.) via polymorphic config.
|
|
6574
|
+
*
|
|
6575
|
+
* All operations are automatically scoped to the current tenant
|
|
6576
|
+
* from the execution context (via AsyncLocalStorage).
|
|
6577
|
+
*/
|
|
6578
|
+
interface ViewsRepository {
|
|
6579
|
+
/**
|
|
6580
|
+
* Find view by ID.
|
|
6581
|
+
* Automatically filtered by current tenant context.
|
|
6582
|
+
*/
|
|
6583
|
+
findById(id: Uuid): Promise<DBView | null>;
|
|
6584
|
+
/**
|
|
6585
|
+
* Find view by name for an object.
|
|
6586
|
+
* Automatically filtered by current tenant context.
|
|
6587
|
+
*/
|
|
6588
|
+
findByName(objectName: string, viewName: string): Promise<DBView | null>;
|
|
6589
|
+
/**
|
|
6590
|
+
* Find view by name and type for an object.
|
|
6591
|
+
* Automatically filtered by current tenant context.
|
|
6592
|
+
*/
|
|
6593
|
+
findByNameAndType(objectName: string, viewName: string, type: ViewType): Promise<DBView | null>;
|
|
6594
|
+
/**
|
|
6595
|
+
* Find all views for an object.
|
|
6596
|
+
* Optionally filter by type.
|
|
6597
|
+
* Automatically filtered by current tenant context.
|
|
6598
|
+
*/
|
|
6599
|
+
findByObjectName(objectName: string, type?: ViewType): Promise<DBView[]>;
|
|
6600
|
+
/**
|
|
6601
|
+
* Find all views for current tenant.
|
|
6602
|
+
* Optionally filter by type.
|
|
6603
|
+
* Automatically filtered by current tenant context.
|
|
6604
|
+
*/
|
|
6605
|
+
findAllForTenant(type?: ViewType): Promise<DBView[]>;
|
|
6606
|
+
/**
|
|
6607
|
+
* Find default view for an object and type.
|
|
6608
|
+
* Returns the view marked as default, or null if none.
|
|
6609
|
+
*/
|
|
6610
|
+
findDefault(objectName: string, type: ViewType): Promise<DBView | null>;
|
|
6611
|
+
/**
|
|
6612
|
+
* Create view.
|
|
6613
|
+
* Tenant ID is automatically set from context.
|
|
6614
|
+
*/
|
|
6615
|
+
create(data: CreateDBView): Promise<DBView>;
|
|
6616
|
+
/**
|
|
6617
|
+
* Update view.
|
|
6618
|
+
* Automatically filtered by current tenant context.
|
|
6619
|
+
*/
|
|
6620
|
+
update(id: Uuid, data: Partial<UpdateDBView>): Promise<DBView>;
|
|
6621
|
+
/**
|
|
6622
|
+
* Delete view.
|
|
6623
|
+
* Automatically filtered by current tenant context.
|
|
6624
|
+
*/
|
|
6625
|
+
delete(id: Uuid): Promise<void>;
|
|
6626
|
+
/**
|
|
6627
|
+
* Delete views not in the list (for sync cleanup).
|
|
6628
|
+
* Automatically filtered by current tenant context.
|
|
6629
|
+
* @returns Number of deleted views
|
|
6630
|
+
*/
|
|
6631
|
+
deleteNotIn(objectName: string, type: ViewType, keepViewNames: string[]): Promise<number>;
|
|
6632
|
+
/**
|
|
6633
|
+
* Upsert view (create or update based on objectName + name + type).
|
|
6634
|
+
* Used by registry seeding - skips if view already exists.
|
|
6635
|
+
* Tenant ID is automatically set from context.
|
|
6636
|
+
*/
|
|
6637
|
+
upsert(data: UpsertDBView): Promise<DBView>;
|
|
6638
|
+
/**
|
|
6639
|
+
* Check if a view exists by name and type.
|
|
6640
|
+
* Used by registry seeding to skip existing views.
|
|
6641
|
+
*/
|
|
6642
|
+
exists(objectName: string, viewName: string, type: ViewType): Promise<boolean>;
|
|
6643
|
+
}
|
|
6644
|
+
/**
|
|
6645
|
+
* Repository for view overlays (user customizations).
|
|
6646
|
+
* Stores delta/overrides per user, merged at runtime with source view.
|
|
6647
|
+
*
|
|
6648
|
+
* All operations are automatically scoped to the current tenant
|
|
6649
|
+
* from the execution context (via AsyncLocalStorage).
|
|
6650
|
+
*/
|
|
6651
|
+
interface ViewOverlaysRepository {
|
|
6652
|
+
/**
|
|
6653
|
+
* Find overlay by ID.
|
|
6654
|
+
* Automatically filtered by current tenant context.
|
|
6655
|
+
*/
|
|
6656
|
+
findById(id: Uuid): Promise<DBViewOverlay | null>;
|
|
6657
|
+
/**
|
|
6658
|
+
* Find overlay for a view and user.
|
|
6659
|
+
* ViewId can be a UUID or a virtual fallback ID.
|
|
6660
|
+
*/
|
|
6661
|
+
findByViewAndUser(viewId: string, userId: string): Promise<DBViewOverlay | null>;
|
|
6662
|
+
/**
|
|
6663
|
+
* Find all overlays for a user.
|
|
6664
|
+
*/
|
|
6665
|
+
findByUser(userId: string): Promise<DBViewOverlay[]>;
|
|
6666
|
+
/**
|
|
6667
|
+
* Find all overlays for a view (all users).
|
|
6668
|
+
*/
|
|
6669
|
+
findByView(viewId: string): Promise<DBViewOverlay[]>;
|
|
6670
|
+
/**
|
|
6671
|
+
* Find user's default view overlay for an object.
|
|
6672
|
+
* Returns the overlay where isUserDefault is true.
|
|
6673
|
+
*/
|
|
6674
|
+
findUserDefault(userId: string, objectName: string, type: ViewType): Promise<DBViewOverlay | null>;
|
|
6675
|
+
/**
|
|
6676
|
+
* Create overlay.
|
|
6677
|
+
* Tenant ID is automatically set from context.
|
|
6678
|
+
*/
|
|
6679
|
+
create(data: CreateDBViewOverlay): Promise<DBViewOverlay>;
|
|
6680
|
+
/**
|
|
6681
|
+
* Update overlay.
|
|
6682
|
+
* Automatically filtered by current tenant context.
|
|
6683
|
+
*/
|
|
6684
|
+
update(id: Uuid, data: Partial<UpdateDBViewOverlay>): Promise<DBViewOverlay>;
|
|
6685
|
+
/**
|
|
6686
|
+
* Delete overlay.
|
|
6687
|
+
* Automatically filtered by current tenant context.
|
|
6688
|
+
*/
|
|
6689
|
+
delete(id: Uuid): Promise<void>;
|
|
6690
|
+
/**
|
|
6691
|
+
* Delete overlay by view and user.
|
|
6692
|
+
* Used for "reset to default" functionality.
|
|
6693
|
+
*/
|
|
6694
|
+
deleteByViewAndUser(viewId: string, userId: string): Promise<void>;
|
|
6695
|
+
/**
|
|
6696
|
+
* Delete all overlays for a view.
|
|
6697
|
+
* Called when a view is deleted (cascade).
|
|
6698
|
+
*/
|
|
6699
|
+
deleteByView(viewId: string): Promise<number>;
|
|
6700
|
+
/**
|
|
6701
|
+
* Migrate overlays from one viewId to another.
|
|
6702
|
+
* Used when a fallback view becomes a real view.
|
|
6703
|
+
* @returns Number of migrated overlays
|
|
6704
|
+
*/
|
|
6705
|
+
migrateViewId(fromViewId: string, toViewId: string): Promise<number>;
|
|
6706
|
+
/**
|
|
6707
|
+
* Upsert overlay (create or update based on viewId + userId).
|
|
6708
|
+
*/
|
|
6709
|
+
upsert(data: CreateDBViewOverlay): Promise<DBViewOverlay>;
|
|
6710
|
+
/**
|
|
6711
|
+
* Clear user default for an object (before setting a new one).
|
|
6712
|
+
*/
|
|
6713
|
+
clearUserDefault(userId: string, objectName: string, type: ViewType): Promise<void>;
|
|
6714
|
+
}
|
|
6715
|
+
|
|
6279
6716
|
/**
|
|
6280
6717
|
* Repository for objects table (metadata).
|
|
6281
6718
|
*
|
|
@@ -6482,70 +6919,6 @@ interface ObjectRecordsRepository {
|
|
|
6482
6919
|
*/
|
|
6483
6920
|
findByRelation(objectId: Uuid, relationAttribute: string, targetId: Uuid): Promise<ObjectRecord[]>;
|
|
6484
6921
|
}
|
|
6485
|
-
/**
|
|
6486
|
-
* Repository for views table.
|
|
6487
|
-
*
|
|
6488
|
-
* All operations are automatically scoped to the current tenant
|
|
6489
|
-
* from the execution context (via AsyncLocalStorage).
|
|
6490
|
-
*/
|
|
6491
|
-
interface ViewsRepository {
|
|
6492
|
-
/**
|
|
6493
|
-
* Find view by ID.
|
|
6494
|
-
* Automatically filtered by current tenant context.
|
|
6495
|
-
*/
|
|
6496
|
-
findById(id: Uuid): Promise<DBView | null>;
|
|
6497
|
-
/**
|
|
6498
|
-
* Find view by name for an object.
|
|
6499
|
-
* Automatically filtered by current tenant context.
|
|
6500
|
-
*/
|
|
6501
|
-
findByName(objectName: string, viewName: string): Promise<DBView | null>;
|
|
6502
|
-
/**
|
|
6503
|
-
* Find all views for an object.
|
|
6504
|
-
* Automatically filtered by current tenant context.
|
|
6505
|
-
*/
|
|
6506
|
-
findByObjectName(objectName: string): Promise<DBView[]>;
|
|
6507
|
-
/**
|
|
6508
|
-
* Find all views for current tenant.
|
|
6509
|
-
* Automatically filtered by current tenant context.
|
|
6510
|
-
*/
|
|
6511
|
-
findAllForTenant(): Promise<DBView[]>;
|
|
6512
|
-
/**
|
|
6513
|
-
* Find system view by name (for sync).
|
|
6514
|
-
* System views are shared across tenants.
|
|
6515
|
-
*/
|
|
6516
|
-
findSystemByName(objectName: string, viewName: string): Promise<DBView | null>;
|
|
6517
|
-
/**
|
|
6518
|
-
* Find all system views for an object.
|
|
6519
|
-
* System views are shared across tenants.
|
|
6520
|
-
*/
|
|
6521
|
-
findSystemByObjectName(objectName: string): Promise<DBView[]>;
|
|
6522
|
-
/**
|
|
6523
|
-
* Create view.
|
|
6524
|
-
* Tenant ID is automatically set from context.
|
|
6525
|
-
*/
|
|
6526
|
-
create(data: CreateDBView): Promise<DBView>;
|
|
6527
|
-
/**
|
|
6528
|
-
* Update view.
|
|
6529
|
-
* Automatically filtered by current tenant context.
|
|
6530
|
-
*/
|
|
6531
|
-
update(id: Uuid, data: Partial<UpdateDBView>): Promise<DBView>;
|
|
6532
|
-
/**
|
|
6533
|
-
* Delete view.
|
|
6534
|
-
* Automatically filtered by current tenant context.
|
|
6535
|
-
*/
|
|
6536
|
-
delete(id: Uuid): Promise<void>;
|
|
6537
|
-
/**
|
|
6538
|
-
* Delete views not in the list (for sync cleanup).
|
|
6539
|
-
* Automatically filtered by current tenant context.
|
|
6540
|
-
* @returns Number of deleted views
|
|
6541
|
-
*/
|
|
6542
|
-
deleteNotIn(objectName: string, keepViewNames: string[]): Promise<number>;
|
|
6543
|
-
/**
|
|
6544
|
-
* Upsert view (create or update based on objectName + name).
|
|
6545
|
-
* Tenant ID is automatically set from context.
|
|
6546
|
-
*/
|
|
6547
|
-
upsert(data: UpsertDBView): Promise<DBView>;
|
|
6548
|
-
}
|
|
6549
6922
|
|
|
6550
6923
|
/**
|
|
6551
6924
|
* Repository for user_profiles table.
|
|
@@ -7189,6 +7562,7 @@ interface DatabaseAdapter {
|
|
|
7189
7562
|
objects: ObjectsRepository;
|
|
7190
7563
|
attributes: AttributesRepository;
|
|
7191
7564
|
views: ViewsRepository;
|
|
7565
|
+
viewOverlays: ViewOverlaysRepository;
|
|
7192
7566
|
workflows?: WorkflowsRepository;
|
|
7193
7567
|
workflowInstances?: WorkflowInstancesRepository;
|
|
7194
7568
|
workflowInvitations?: WorkflowInvitationsRepository;
|
|
@@ -7208,6 +7582,7 @@ interface DatabaseAdapter {
|
|
|
7208
7582
|
documentSlots?: DocumentSlotsRepository;
|
|
7209
7583
|
documentJobs?: DocumentJobsRepository;
|
|
7210
7584
|
documentGenerationTemplates?: DocumentGenerationTemplatesRepository;
|
|
7585
|
+
featureFlags?: FeatureFlagsRepository;
|
|
7211
7586
|
transaction<T>(callback: (adapter: DatabaseAdapter) => Promise<T>): Promise<T>;
|
|
7212
7587
|
}
|
|
7213
7588
|
|
|
@@ -8356,7 +8731,8 @@ declare class ObjectSchemaService extends BaseService {
|
|
|
8356
8731
|
addAttributeToObject(objectId: string, attribute: AddAttributeInput): Promise<Attribute>;
|
|
8357
8732
|
/**
|
|
8358
8733
|
* Update an attribute.
|
|
8359
|
-
*
|
|
8734
|
+
* Custom attributes can be fully updated.
|
|
8735
|
+
* System attributes can only have presentation properties modified (label, description, placeholder, icon).
|
|
8360
8736
|
* Automatically uses tenant context from AsyncLocalStorage.
|
|
8361
8737
|
*
|
|
8362
8738
|
* @param attributeId - Attribute UUID
|
|
@@ -10100,6 +10476,131 @@ declare class TenantContextError extends Error {
|
|
|
10100
10476
|
constructor(message?: string);
|
|
10101
10477
|
}
|
|
10102
10478
|
|
|
10479
|
+
/**
|
|
10480
|
+
* Feature Flags Context Module
|
|
10481
|
+
*
|
|
10482
|
+
* Provides synchronous access to resolved feature flags using AsyncLocalStorage.
|
|
10483
|
+
* Flags are resolved once at request start and cached for the entire request.
|
|
10484
|
+
*
|
|
10485
|
+
* @example
|
|
10486
|
+
* ```typescript
|
|
10487
|
+
* // In NestJS interceptor (after tenant context)
|
|
10488
|
+
* runWithFeatureFlags(resolvedFlags, () => {
|
|
10489
|
+
* // All code here has synchronous access to flags
|
|
10490
|
+
* if (isFeatureEnabled("ai-features")) {
|
|
10491
|
+
* // Feature-gated code
|
|
10492
|
+
* }
|
|
10493
|
+
* });
|
|
10494
|
+
*
|
|
10495
|
+
* // Anywhere in code (sync!)
|
|
10496
|
+
* const hasAI = isFeatureEnabled("ai-features");
|
|
10497
|
+
* const tier = getFeatureValue("tier", "free");
|
|
10498
|
+
* ```
|
|
10499
|
+
*/
|
|
10500
|
+
/**
|
|
10501
|
+
* Immutable feature flags context stored in AsyncLocalStorage.
|
|
10502
|
+
*
|
|
10503
|
+
* This context contains all resolved flag values for the current request
|
|
10504
|
+
* and is frozen to prevent modification after creation.
|
|
10505
|
+
*/
|
|
10506
|
+
interface FeatureFlagsContext {
|
|
10507
|
+
/** Resolved flags map (flagName → value) */
|
|
10508
|
+
readonly flags: ReadonlyMap<string, unknown>;
|
|
10509
|
+
}
|
|
10510
|
+
/**
|
|
10511
|
+
* Error thrown when code tries to access feature flags without a context.
|
|
10512
|
+
*/
|
|
10513
|
+
declare class FeatureFlagsContextError extends Error {
|
|
10514
|
+
constructor(message?: string);
|
|
10515
|
+
}
|
|
10516
|
+
/**
|
|
10517
|
+
* Check if a boolean flag is enabled.
|
|
10518
|
+
*
|
|
10519
|
+
* @param flagName - The name of the flag to check
|
|
10520
|
+
* @returns true if the flag value is exactly `true`, false otherwise
|
|
10521
|
+
* @throws {FeatureFlagsContextError} If no context is set
|
|
10522
|
+
*
|
|
10523
|
+
* @example
|
|
10524
|
+
* ```typescript
|
|
10525
|
+
* if (isFeatureEnabled("architect-mode")) {
|
|
10526
|
+
* // Show architect mode toggle
|
|
10527
|
+
* }
|
|
10528
|
+
* ```
|
|
10529
|
+
*/
|
|
10530
|
+
declare function isFeatureEnabled(flagName: string): boolean;
|
|
10531
|
+
/**
|
|
10532
|
+
* Get the value of a flag with type safety.
|
|
10533
|
+
*
|
|
10534
|
+
* @param flagName - The name of the flag
|
|
10535
|
+
* @param defaultValue - Value to return if flag is not set
|
|
10536
|
+
* @returns The flag value or the default value
|
|
10537
|
+
* @throws {FeatureFlagsContextError} If no context is set
|
|
10538
|
+
*
|
|
10539
|
+
* @example
|
|
10540
|
+
* ```typescript
|
|
10541
|
+
* const tier = getFeatureValue("tier", "free");
|
|
10542
|
+
* if (tier === "enterprise") {
|
|
10543
|
+
* // Show enterprise features
|
|
10544
|
+
* }
|
|
10545
|
+
* ```
|
|
10546
|
+
*/
|
|
10547
|
+
declare function getFeatureValue<T>(flagName: string, defaultValue: T): T;
|
|
10548
|
+
/**
|
|
10549
|
+
* Get all resolved flags.
|
|
10550
|
+
*
|
|
10551
|
+
* @returns ReadonlyMap of all flag names to their resolved values
|
|
10552
|
+
* @throws {FeatureFlagsContextError} If no context is set
|
|
10553
|
+
*/
|
|
10554
|
+
declare function getFeatureFlags(): ReadonlyMap<string, unknown>;
|
|
10555
|
+
/**
|
|
10556
|
+
* Try to get the value of a flag without throwing.
|
|
10557
|
+
*
|
|
10558
|
+
* Use this for optional feature flag checks where you want to
|
|
10559
|
+
* gracefully handle the absence of a context.
|
|
10560
|
+
*
|
|
10561
|
+
* @param flagName - The name of the flag
|
|
10562
|
+
* @returns The flag value or undefined if no context or flag not found
|
|
10563
|
+
*
|
|
10564
|
+
* @example
|
|
10565
|
+
* ```typescript
|
|
10566
|
+
* // Optional enhancement - doesn't fail if no context
|
|
10567
|
+
* const tier = tryGetFeatureValue<string>("tier");
|
|
10568
|
+
* if (tier === "enterprise") {
|
|
10569
|
+
* // Enhance with enterprise features
|
|
10570
|
+
* }
|
|
10571
|
+
* ```
|
|
10572
|
+
*/
|
|
10573
|
+
declare function tryGetFeatureValue<T>(flagName: string): T | undefined;
|
|
10574
|
+
/**
|
|
10575
|
+
* Check if a feature flags context is currently set.
|
|
10576
|
+
*
|
|
10577
|
+
* @returns true if a context is set, false otherwise
|
|
10578
|
+
*
|
|
10579
|
+
* @example
|
|
10580
|
+
* ```typescript
|
|
10581
|
+
* if (hasFeatureFlagsContext()) {
|
|
10582
|
+
* // Safe to call isFeatureEnabled()
|
|
10583
|
+
* }
|
|
10584
|
+
* ```
|
|
10585
|
+
*/
|
|
10586
|
+
declare function hasFeatureFlagsContext(): boolean;
|
|
10587
|
+
/**
|
|
10588
|
+
* Execute a synchronous function within a feature flags context.
|
|
10589
|
+
*/
|
|
10590
|
+
declare function runWithFeatureFlags<T>(flags: Map<string, unknown>, fn: () => T): T;
|
|
10591
|
+
/**
|
|
10592
|
+
* Execute an async function within a feature flags context.
|
|
10593
|
+
*/
|
|
10594
|
+
declare function runWithFeatureFlags<T>(flags: Map<string, unknown>, fn: () => Promise<T>): Promise<T>;
|
|
10595
|
+
/**
|
|
10596
|
+
* Convenience helper for NestJS interceptor.
|
|
10597
|
+
*
|
|
10598
|
+
* @param resolvedFlags - Map of resolved flag values
|
|
10599
|
+
* @param fn - The async function to execute
|
|
10600
|
+
* @returns A promise that resolves to the function's return value
|
|
10601
|
+
*/
|
|
10602
|
+
declare function withFeatureFlags<T>(resolvedFlags: Map<string, unknown>, fn: () => Promise<T>): Promise<T>;
|
|
10603
|
+
|
|
10103
10604
|
/**
|
|
10104
10605
|
* Schema Context Module
|
|
10105
10606
|
*
|
|
@@ -10972,6 +11473,7 @@ interface MockStores {
|
|
|
10972
11473
|
files: Map<Uuid, File>;
|
|
10973
11474
|
objectRecords: Map<Uuid, InternalObjectRecord>;
|
|
10974
11475
|
views: Map<Uuid, DBView>;
|
|
11476
|
+
viewOverlays: Map<Uuid, DBViewOverlay>;
|
|
10975
11477
|
roles: Map<Uuid, Role>;
|
|
10976
11478
|
permissions: Map<Uuid, Permission>;
|
|
10977
11479
|
userRoles: Map<Uuid, UserRoleAssignment>;
|
|
@@ -12998,17 +13500,16 @@ declare class GlobalSearchService extends BaseService {
|
|
|
12998
13500
|
}
|
|
12999
13501
|
|
|
13000
13502
|
/**
|
|
13001
|
-
* Input for creating a
|
|
13503
|
+
* Input for creating a view (Architect Mode)
|
|
13002
13504
|
*/
|
|
13003
13505
|
interface CreateViewInput {
|
|
13506
|
+
objectName: string;
|
|
13507
|
+
type: ViewType;
|
|
13004
13508
|
name: string;
|
|
13005
13509
|
label: string;
|
|
13006
|
-
objectName: string;
|
|
13007
13510
|
description?: string;
|
|
13008
13511
|
icon?: IconName;
|
|
13009
|
-
|
|
13010
|
-
layout?: ViewLayout;
|
|
13011
|
-
tabs?: Tab[];
|
|
13512
|
+
config: ViewConfig;
|
|
13012
13513
|
default?: boolean;
|
|
13013
13514
|
metadata?: Record<string, unknown>;
|
|
13014
13515
|
}
|
|
@@ -13019,74 +13520,125 @@ interface UpdateViewInput {
|
|
|
13019
13520
|
label?: string;
|
|
13020
13521
|
description?: string;
|
|
13021
13522
|
icon?: IconName;
|
|
13022
|
-
|
|
13023
|
-
layout?: ViewLayout;
|
|
13024
|
-
tabs?: Tab[];
|
|
13523
|
+
config?: ViewConfig;
|
|
13025
13524
|
default?: boolean;
|
|
13026
13525
|
metadata?: Record<string, unknown>;
|
|
13027
13526
|
}
|
|
13028
13527
|
/**
|
|
13029
|
-
*
|
|
13030
|
-
|
|
13031
|
-
|
|
13528
|
+
* Options for getting views
|
|
13529
|
+
*/
|
|
13530
|
+
interface GetViewsOptions {
|
|
13531
|
+
/** Filter by view type */
|
|
13532
|
+
type?: ViewType;
|
|
13533
|
+
/** User ID for overlay merging */
|
|
13534
|
+
userId?: string;
|
|
13535
|
+
}
|
|
13536
|
+
/**
|
|
13537
|
+
* Options for getting a single view
|
|
13538
|
+
*/
|
|
13539
|
+
interface GetViewOptions {
|
|
13540
|
+
/** Filter by view type (for disambiguation) */
|
|
13541
|
+
type?: ViewType;
|
|
13542
|
+
/** User ID for overlay merging */
|
|
13543
|
+
userId?: string;
|
|
13544
|
+
/** Filter by layout (only for detail views: "page" or "modal") */
|
|
13545
|
+
layout?: "page" | "modal";
|
|
13546
|
+
}
|
|
13547
|
+
/**
|
|
13548
|
+
* Service for managing unified views with overlay customizations.
|
|
13032
13549
|
*
|
|
13033
|
-
*
|
|
13034
|
-
*
|
|
13550
|
+
* Architecture:
|
|
13551
|
+
* - Views (sources) are created by architects or auto-generated on first access
|
|
13552
|
+
* - Overlays store user-specific customizations (delta only)
|
|
13553
|
+
* - Default views are lazily created and persisted on first access
|
|
13554
|
+
*
|
|
13555
|
+
* Lazy Creation Pattern:
|
|
13556
|
+
* - No views are created on object creation
|
|
13557
|
+
* - First navigation auto-creates a default view in DB
|
|
13558
|
+
* - Architect Mode modifies real views in DB
|
|
13559
|
+
* - User customizations create overlays (not views)
|
|
13035
13560
|
*/
|
|
13036
13561
|
declare class ViewService extends BaseService {
|
|
13037
|
-
|
|
13038
|
-
constructor(adapter: DatabaseAdapter, nativeViews: typeof viewRegistry);
|
|
13039
|
-
/**
|
|
13040
|
-
* Invalidate cached views for an object.
|
|
13041
|
-
* Called automatically after view mutations.
|
|
13042
|
-
*/
|
|
13562
|
+
constructor(adapter: DatabaseAdapter);
|
|
13043
13563
|
private invalidateViewCache;
|
|
13044
13564
|
/**
|
|
13045
|
-
* Get all views for
|
|
13046
|
-
*
|
|
13565
|
+
* Get all views for the current tenant.
|
|
13566
|
+
* Optionally filter by view type.
|
|
13047
13567
|
*
|
|
13048
|
-
*
|
|
13568
|
+
* @param type - Optional view type filter
|
|
13569
|
+
* @returns All views for the tenant
|
|
13570
|
+
*/
|
|
13571
|
+
getAllViews(type?: ViewType): Promise<ViewDefinition[]>;
|
|
13572
|
+
/**
|
|
13573
|
+
* Get a specific view by its ID.
|
|
13574
|
+
* Returns null if not found.
|
|
13049
13575
|
*
|
|
13050
|
-
* @param
|
|
13051
|
-
* @returns
|
|
13576
|
+
* @param viewId - View ID (UUID)
|
|
13577
|
+
* @returns View definition or null
|
|
13052
13578
|
*/
|
|
13053
|
-
|
|
13579
|
+
getViewById(viewId: string): Promise<ViewDefinition | null>;
|
|
13054
13580
|
/**
|
|
13055
|
-
*
|
|
13581
|
+
* Get all views for an object from the database.
|
|
13582
|
+
* Optionally filter by type and merge with user overlays.
|
|
13583
|
+
*
|
|
13584
|
+
* @param objectName - Object name
|
|
13585
|
+
* @param options - Filter and overlay options
|
|
13586
|
+
* @returns Views from database
|
|
13056
13587
|
*/
|
|
13057
|
-
|
|
13588
|
+
getViews(objectName: string, options?: GetViewsOptions): Promise<ViewDefinition[]>;
|
|
13058
13589
|
/**
|
|
13059
13590
|
* Get a specific view by name.
|
|
13060
|
-
*
|
|
13591
|
+
* Returns null if not found (use getDefaultView for fallback behavior).
|
|
13061
13592
|
*
|
|
13062
13593
|
* @param objectName - Object name
|
|
13063
13594
|
* @param viewName - View name
|
|
13064
|
-
* @
|
|
13595
|
+
* @param options - Type filter and overlay options
|
|
13596
|
+
* @returns View or null
|
|
13065
13597
|
*/
|
|
13066
|
-
getView(objectName: string, viewName: string): Promise<ViewDefinition | null>;
|
|
13598
|
+
getView(objectName: string, viewName: string, options?: GetViewOptions): Promise<ViewDefinition | null>;
|
|
13067
13599
|
/**
|
|
13068
|
-
* Get the default view for an object
|
|
13600
|
+
* Get the default view for an object and type.
|
|
13601
|
+
* If no view exists in DB, auto-creates and persists a default view.
|
|
13069
13602
|
*
|
|
13070
13603
|
* Priority:
|
|
13071
|
-
* 1.
|
|
13072
|
-
* 2.
|
|
13073
|
-
* 3. First available view (
|
|
13604
|
+
* 1. User's preferred view (from overlay with isUserDefault=true)
|
|
13605
|
+
* 2. View marked as default in DB (with matching layout if specified)
|
|
13606
|
+
* 3. First available view (with matching layout if specified)
|
|
13607
|
+
* 4. Auto-created default view (persisted to DB)
|
|
13074
13608
|
*
|
|
13075
13609
|
* @param objectName - Object name
|
|
13076
|
-
* @param
|
|
13077
|
-
* @
|
|
13610
|
+
* @param type - View type
|
|
13611
|
+
* @param objectDefinition - Object definition (for default generation)
|
|
13612
|
+
* @param options - Optional filters (userId, layout for detail views)
|
|
13613
|
+
* @returns View definition (existing or auto-created)
|
|
13614
|
+
*/
|
|
13615
|
+
getDefaultView(objectName: string, type: ViewType, objectDefinition: ObjectDefinition, options?: {
|
|
13616
|
+
userId?: string;
|
|
13617
|
+
layout?: "page" | "modal";
|
|
13618
|
+
}): Promise<ViewDefinition>;
|
|
13619
|
+
/**
|
|
13620
|
+
* Ensure a default view exists in DB for the given object and type.
|
|
13621
|
+
* If no view exists, generates and persists one.
|
|
13622
|
+
* Idempotent — safe to call concurrently (uses upsert).
|
|
13078
13623
|
*/
|
|
13079
|
-
|
|
13624
|
+
private ensureDefaultView;
|
|
13080
13625
|
/**
|
|
13081
|
-
*
|
|
13082
|
-
*
|
|
13626
|
+
* Generate default view config for an object.
|
|
13627
|
+
* Used by ensureDefaultView() and resetViewToDefault().
|
|
13628
|
+
*/
|
|
13629
|
+
generateDefaultViewConfig(objectName: string, type: ViewType, objectDefinition: ObjectDefinition, layout?: "page" | "modal"): ViewDefinition;
|
|
13630
|
+
private generateDefaultDetailConfig;
|
|
13631
|
+
private generateDefaultListConfig;
|
|
13632
|
+
private getDefaultFieldSpan;
|
|
13633
|
+
/**
|
|
13634
|
+
* Create a new view (Architect Mode).
|
|
13083
13635
|
*
|
|
13084
13636
|
* @param input - View definition
|
|
13085
13637
|
* @returns Created view
|
|
13086
13638
|
*/
|
|
13087
13639
|
createView(input: CreateViewInput): Promise<ViewDefinition>;
|
|
13088
13640
|
/**
|
|
13089
|
-
* Update
|
|
13641
|
+
* Update an existing view.
|
|
13090
13642
|
*
|
|
13091
13643
|
* @param viewId - View ID
|
|
13092
13644
|
* @param input - Update data
|
|
@@ -13094,29 +13646,76 @@ declare class ViewService extends BaseService {
|
|
|
13094
13646
|
*/
|
|
13095
13647
|
updateView(viewId: string, input: UpdateViewInput): Promise<ViewDefinition>;
|
|
13096
13648
|
/**
|
|
13097
|
-
* Delete a
|
|
13649
|
+
* Delete a view.
|
|
13650
|
+
* Overlays are automatically deleted (cascade).
|
|
13098
13651
|
*
|
|
13099
13652
|
* @param viewId - View ID
|
|
13100
13653
|
*/
|
|
13101
13654
|
deleteView(viewId: string): Promise<void>;
|
|
13102
13655
|
/**
|
|
13103
|
-
* Set a view as default for its object and
|
|
13104
|
-
* Only unsets other defaults for the same layout.
|
|
13105
|
-
* Automatically uses tenant context from AsyncLocalStorage.
|
|
13656
|
+
* Set a view as default for its object and type.
|
|
13106
13657
|
*
|
|
13107
13658
|
* @param viewId - View ID
|
|
13108
13659
|
* @returns Updated view
|
|
13109
13660
|
*/
|
|
13110
13661
|
setDefaultView(viewId: string): Promise<ViewDefinition>;
|
|
13111
13662
|
/**
|
|
13112
|
-
*
|
|
13663
|
+
* Reset a view to its default (auto-generated) state.
|
|
13664
|
+
* Regenerates the view config based on the object definition.
|
|
13665
|
+
*
|
|
13666
|
+
* @param viewId - View ID
|
|
13667
|
+
* @param objectDefinition - Object definition for regeneration
|
|
13668
|
+
* @returns Updated view
|
|
13113
13669
|
*/
|
|
13114
|
-
|
|
13670
|
+
resetViewToDefault(viewId: string, objectDefinition: ObjectDefinition): Promise<ViewDefinition>;
|
|
13671
|
+
/**
|
|
13672
|
+
* Reset user customizations for a view.
|
|
13673
|
+
* Deletes the overlay, returning to source/fallback view.
|
|
13674
|
+
*
|
|
13675
|
+
* @param viewId - View ID (can be UUID or fallback ID)
|
|
13676
|
+
* @param userId - User ID
|
|
13677
|
+
*/
|
|
13678
|
+
resetUserCustomizations(viewId: string, userId: string): Promise<void>;
|
|
13679
|
+
/**
|
|
13680
|
+
* Set a view as the user's default for an object and type.
|
|
13681
|
+
*
|
|
13682
|
+
* @param viewId - View ID (can be UUID or fallback ID)
|
|
13683
|
+
* @param userId - User ID
|
|
13684
|
+
* @param objectName - Object name
|
|
13685
|
+
* @param type - View type
|
|
13686
|
+
*/
|
|
13687
|
+
setUserDefaultView(viewId: string, userId: string, objectName: string, type: ViewType): Promise<void>;
|
|
13688
|
+
/**
|
|
13689
|
+
* Check if a user has customized a view.
|
|
13690
|
+
*
|
|
13691
|
+
* @param viewId - View ID
|
|
13692
|
+
* @param userId - User ID
|
|
13693
|
+
* @returns True if overlay exists
|
|
13694
|
+
*/
|
|
13695
|
+
hasUserCustomizations(viewId: string, userId: string): Promise<boolean>;
|
|
13115
13696
|
/**
|
|
13116
|
-
*
|
|
13117
|
-
*
|
|
13697
|
+
* Apply an overlay to a view definition.
|
|
13698
|
+
* Implements merge semantics defined in the plan.
|
|
13699
|
+
*
|
|
13700
|
+
* @param view - Source view definition
|
|
13701
|
+
* @param overlay - User overlay
|
|
13702
|
+
* @returns Merged view definition
|
|
13118
13703
|
*/
|
|
13119
|
-
|
|
13704
|
+
applyOverlay(view: ViewDefinition, overlay: DBViewOverlay): ViewDefinition;
|
|
13705
|
+
private applyListViewOverlay;
|
|
13706
|
+
private applyDetailViewOverlay;
|
|
13707
|
+
/**
|
|
13708
|
+
* Merge source tabs with overlay tabs.
|
|
13709
|
+
* - Source tabs are visible to all
|
|
13710
|
+
* - Overlay tabs are appended (user-private)
|
|
13711
|
+
* - hiddenTabIds allows hiding source tabs
|
|
13712
|
+
*/
|
|
13713
|
+
private mergeViewTabs;
|
|
13714
|
+
/**
|
|
13715
|
+
* Merge detail tabs (form, activity, etc.)
|
|
13716
|
+
*/
|
|
13717
|
+
private mergeDetailTabs;
|
|
13718
|
+
private validateViewName;
|
|
13120
13719
|
/**
|
|
13121
13720
|
* Convert database view to ViewDefinition
|
|
13122
13721
|
*/
|
|
@@ -13130,7 +13729,7 @@ interface ViewSyncResult {
|
|
|
13130
13729
|
success: boolean;
|
|
13131
13730
|
viewsSynced: number;
|
|
13132
13731
|
viewsCreated: number;
|
|
13133
|
-
|
|
13732
|
+
viewsSkipped: number;
|
|
13134
13733
|
viewsDeleted: number;
|
|
13135
13734
|
errors: Array<{
|
|
13136
13735
|
viewName: string;
|
|
@@ -13151,62 +13750,83 @@ interface ViewSyncOptions {
|
|
|
13151
13750
|
dryRun?: boolean;
|
|
13152
13751
|
verbose?: boolean;
|
|
13153
13752
|
logger?: ViewSyncLogger;
|
|
13753
|
+
/**
|
|
13754
|
+
* Delete views in DB that are not in registry.
|
|
13755
|
+
* @default false
|
|
13756
|
+
*/
|
|
13757
|
+
deleteOrphans?: boolean;
|
|
13154
13758
|
}
|
|
13155
13759
|
/**
|
|
13156
|
-
*
|
|
13760
|
+
* Seed registry views to database
|
|
13157
13761
|
*
|
|
13158
13762
|
* This function:
|
|
13159
|
-
* 1. Reads all registered
|
|
13160
|
-
* 2.
|
|
13161
|
-
* 3.
|
|
13162
|
-
* 4.
|
|
13763
|
+
* 1. Reads all registered views from the registry
|
|
13764
|
+
* 2. Creates them in the database if they don't exist (INSERT if not exists)
|
|
13765
|
+
* 3. Skips views that already exist (no overwrite)
|
|
13766
|
+
* 4. Optionally removes orphan views (views in DB not in registry)
|
|
13767
|
+
*
|
|
13768
|
+
* Seeding behavior:
|
|
13769
|
+
* - INSERT if view doesn't exist in DB
|
|
13770
|
+
* - SKIP if view already exists (no overwrite)
|
|
13771
|
+
* - To force update: delete the view in DB, then restart app
|
|
13163
13772
|
*
|
|
13164
13773
|
* @param adapter - Database adapter implementing DatabaseAdapter interface
|
|
13165
|
-
* @param
|
|
13166
|
-
* @param options - Sync options (dryRun, verbose,
|
|
13774
|
+
* @param registry - Registry containing view definitions
|
|
13775
|
+
* @param options - Sync options (dryRun, verbose, deleteOrphans)
|
|
13167
13776
|
* @returns Sync result with statistics
|
|
13168
13777
|
*
|
|
13169
13778
|
* @example
|
|
13170
13779
|
* ```typescript
|
|
13171
|
-
* import {
|
|
13780
|
+
* import { seedRegistryViews, viewRegistry } from "@stndrds/schema";
|
|
13172
13781
|
* import { drizzleAdapter } from "./db/adapter";
|
|
13173
13782
|
*
|
|
13174
|
-
* const result = await
|
|
13783
|
+
* const result = await seedRegistryViews(drizzleAdapter, viewRegistry, {
|
|
13175
13784
|
* verbose: true,
|
|
13176
|
-
* tenantId: "default"
|
|
13177
13785
|
* });
|
|
13178
13786
|
*
|
|
13179
13787
|
* if (result.success) {
|
|
13180
|
-
* console.log(`✓
|
|
13788
|
+
* console.log(`✓ Seeded ${result.viewsCreated} views`);
|
|
13181
13789
|
* }
|
|
13182
13790
|
* ```
|
|
13183
13791
|
*/
|
|
13184
|
-
declare function
|
|
13792
|
+
declare function seedRegistryViews(adapter: DatabaseAdapter, registry: typeof viewRegistry, options?: ViewSyncOptions): Promise<ViewSyncResult>;
|
|
13793
|
+
/**
|
|
13794
|
+
* @deprecated Use seedRegistryViews instead
|
|
13795
|
+
*/
|
|
13796
|
+
declare const syncNativeViews: typeof seedRegistryViews;
|
|
13185
13797
|
/**
|
|
13186
|
-
* Verify that all
|
|
13798
|
+
* Verify that all registry views are seeded to database
|
|
13187
13799
|
*
|
|
13188
13800
|
* @param adapter - Database adapter
|
|
13189
|
-
* @param
|
|
13190
|
-
* @returns true if all views are
|
|
13801
|
+
* @param registry - Registry containing view definitions
|
|
13802
|
+
* @returns true if all views are seeded, false otherwise
|
|
13191
13803
|
*
|
|
13192
13804
|
* @example
|
|
13193
13805
|
* ```typescript
|
|
13194
|
-
* const
|
|
13195
|
-
* if (!
|
|
13196
|
-
* console.warn("
|
|
13197
|
-
* await
|
|
13806
|
+
* const isSeeded = await verifyRegistryViewsSeeded(adapter, viewRegistry);
|
|
13807
|
+
* if (!isSeeded) {
|
|
13808
|
+
* console.warn("Registry views not seeded, running seed...");
|
|
13809
|
+
* await seedRegistryViews(adapter, viewRegistry);
|
|
13198
13810
|
* }
|
|
13199
13811
|
* ```
|
|
13200
13812
|
*/
|
|
13201
|
-
declare function
|
|
13813
|
+
declare function verifyRegistryViewsSeeded(adapter: DatabaseAdapter, registry: typeof viewRegistry): Promise<boolean>;
|
|
13814
|
+
/**
|
|
13815
|
+
* @deprecated Use verifyRegistryViewsSeeded instead
|
|
13816
|
+
*/
|
|
13817
|
+
declare const verifyNativeViewsSync: typeof verifyRegistryViewsSeeded;
|
|
13202
13818
|
/**
|
|
13203
|
-
* Get
|
|
13819
|
+
* Get seed preview without modifying database
|
|
13204
13820
|
*
|
|
13205
13821
|
* @param adapter - Database adapter
|
|
13206
|
-
* @param
|
|
13207
|
-
* @returns
|
|
13822
|
+
* @param registry - Registry containing view definitions
|
|
13823
|
+
* @returns Seed result (dry run)
|
|
13824
|
+
*/
|
|
13825
|
+
declare function getViewSeedPreview(adapter: DatabaseAdapter, registry: typeof viewRegistry): Promise<ViewSyncResult>;
|
|
13826
|
+
/**
|
|
13827
|
+
* @deprecated Use getViewSeedPreview instead
|
|
13208
13828
|
*/
|
|
13209
|
-
declare
|
|
13829
|
+
declare const getViewSyncPreview: typeof getViewSeedPreview;
|
|
13210
13830
|
|
|
13211
13831
|
/**
|
|
13212
13832
|
* Result of sync operation
|
|
@@ -13344,4 +13964,4 @@ interface FullSyncOptions extends SyncOptions, ViewSyncOptions {
|
|
|
13344
13964
|
*/
|
|
13345
13965
|
declare function syncAll(adapter: DatabaseAdapter, objectRegistry: typeof registry, nativeViewRegistry: typeof viewRegistry, options?: FullSyncOptions): Promise<FullSyncResult>;
|
|
13346
13966
|
|
|
13347
|
-
export { type OcrAdapter as $, type Attribute as A, type SortRule as B, type CheckboxAttribute as C, type DateAttribute as D, type DirectTableTab as E, type FileAttribute as F, type Group as G, type WorkflowConfig as H, type InferAttributeValue as I, type SlotMode as J, type ConditionGroup as K, type LocationAttribute as L, type MultiselectAttribute as M, type NumberAttribute as N, type ObjectAction as O, type PhoneAttribute as P, type ConditionRule as Q, type RichtextAttribute as R, type SystemResource as S, type TextAttribute as T, type UserAttribute as U, type ViewLayout as V, type WorkflowTheme as W, type WorkflowNode as X, type WorkflowDefinition as Y, type FlowRow as Z, type DocumentTemplate as _, type DocumentAttribute as a, type AuditActorType as a$, type OcrInput as a0, type OcrOptions as a1, type OcrResult as a2, type OcrPage as a3, type OcrTextBlock as a4, type BoundingBox as a5, type SignatureAdapter as a6, type CreateSignatureInput as a7, type SignerRequest as a8, type SignaturePosition as a9, type AIBatchQuestionAnswer as aA, type AITodoStatus as aB, type AITodoItem as aC, type AITodoList as aD, type AIMessageAttachment as aE, type AIConversation as aF, type AIMessage as aG, type AIToolCallRecord as aH, type AIUserMemory as aI, type AIUsageMetrics as aJ, type AIProviderMetrics as aK, type CreateAIMessageInput as aL, type StatusGroup as aM, type AttributeGroup as aN, type BaseAttribute as aO, type NumberUnit as aP, type DateFormat as aQ, type DateValue as aR, type Phone as aS, type Currency as aT, type Location as aU, type LocationGranularity as aV, RELATION_TARGET_ANY as aW, type RelationAttribute as aX, isUniversalRelation as aY, type AuditResourceType as aZ, type AuditAction as a_, type SignatureRequestResult as aa, type SignatureStatusResult as ab, type SignerStatus as ac, type SignatureStatus as ad, type IdentityVerificationAdapter as ae, type VerifyInput as af, type VerificationResult as ag, type DocumentData as ah, type VerificationCheck as ai, type AIMessageRole as aj, type AIThinkingLevel as ak, type AIToolCallStatus as al, type AIToolCall as am, type AIChatMessagePartType as an, type TextPartData as ao, type ToolPartData as ap, type ThinkingPartData as aq, type ReasoningPartData as ar, type AIChatMessagePart as as, type AIChatMessage as at, type AIQuestionType as au, type AIQuestionOption as av, type AIQuestion as aw, type AIQuestionAnswer as ax, type AIBatchQuestionOption as ay, type AIBatchQuestion as az, type SystemAction as b, type NoValueOperator as b$, type AuditChange as b0, type AuditLogEntry as b1, type CreateAuditLogInput as b2, type AuditListOptions as b3, type AuditServiceOptions as b4, type VariableMapping as b5, type PdfTemplateField as b6, type TemplateSource as b7, type DocumentGenerationTemplate as b8, type CreateDocumentGenerationTemplate as b9, type FileVisibility as bA, type File as bB, type CreateFile as bC, type UpdateFile as bD, type TextFilterOperator as bE, type NumberFilterOperator as bF, type CheckboxFilterOperator as bG, type DateFilterOperator as bH, type SelectFilterOperator as bI, type MultiselectFilterOperator as bJ, type RelationFilterOperator as bK, type FilterOperator as bL, type RelativeDateValue as bM, type CurrencyFilterValue as bN, type PhoneFilterValue as bO, type FilterValue as bP, type FilterRule as bQ, type ExtendedFilterRule as bR, type FilterCombinator as bS, type FilterGroup as bT, type AdvancedFilterState as bU, isAdvancedFilterState as bV, toAdvancedFilterState as bW, toSimpleFilterState as bX, type SortDirection as bY, type QueryState as bZ, OPERATORS_BY_TYPE as b_, type UpdateDocumentGenerationTemplate as ba, type PendingDocumentRequest as bb, isPdfTemplateSource as bc, isDocxTemplateSource as bd, type DocumentSlotDefinition as be, type DocumentAutoProcessing as bf, type ExtractionMapping as bg, type ExtractionField as bh, type Document as bi, type DocumentStatus as bj, type DocumentSlot as bk, type SlotStatus as bl, type ProcessingJob as bm, type ProcessingJobType as bn, type ProcessingJobStatus as bo, type CreateDocument as bp, type UpdateDocument as bq, type CreateDocumentTemplate as br, type UpdateDocumentTemplate as bs, type CreateDocumentSlot as bt, type UpdateDocumentSlot as bu, type CreateProcessingJob as bv, type UpdateProcessingJob as bw, type DocumentListOptions as bx, type DocumentTemplateListOptions as by, type StorageProvider as bz, type TextAreaAttribute as c, type UserRole as c$, NO_VALUE_OPERATORS as c0, isNoValueOperator as c1, type FlowSlot as c2, type FlowRowField as c3, type FlowPage as c4, type FlowRelation as c5, type FlowStatus as c6, type FlowDefinition as c7, isFlowDefinition as c8, isFlowPublished as c9, type ExtractAttributes as cA, type TypedObjectRecord as cB, type ExtractObjectRecord as cC, type ExtractObjectRecordWithCustom as cD, RESERVED_ATTRIBUTE_NAMES as cE, SYSTEM_FIELD_NAMES as cF, type ReservedAttributeName as cG, type SystemFieldName as cH, type Timestamps as cI, type SharingMode as cJ, type ObjectAttribute as cK, type CompletionStatus as cL, type ObjectRecord as cM, type PermissionScope as cN, type Role as cO, type Permission as cP, type UserRoleAssignment as cQ, type EffectivePermissions as cR, type ObjectPermissions as cS, type SystemPermissions as cT, type CreateRoleInput as cU, type UpdateRoleInput as cV, type CreatePermissionInput as cW, type AssignRoleInput as cX, type PolicyContext as cY, type RecordPolicy as cZ, PolicyViolationError as c_, isSystemFlow as ca, type GeocodingSuggestion as cb, type GeocodingAutocompleteParams as cc, type ReverseGeocodingParams as cd, type GeocodingParams as ce, type GeocodingAdapter as cf, NoopGeocodingAdapter as cg, type AttributeSchema as ch, type InferRecordFromSchema as ci, type InferRecordWithRequirements as cj, type TypedAttribute as ck, type AttributeMap as cl, type AddAttribute as cm, type InferRecord as cn, type InferRecordInput as co, type InferRecordUpdate as cp, type CustomAttributeValue as cq, type WithCustomAttributes as cr, type RecordMetadata as cs, type SystemFields as ct, type ExtractRecord as cu, type ExtractRecordStrict as cv, type ExtractRecordInput as cw, type ExtractRecordInputStrict as cx, type ExtractRecordUpdate as cy, type ExtractRecordUpdateStrict as cz, type RichtextFeature as d, type CreateInvitationInput as d$, type UserStatus as d0, type UserProfile as d1, type CreateUserProfile as d2, type UpdateUserProfile as d3, type InviteUserInput as d4, type TabType as d5, type FormTab as d6, type CustomTab as d7, type ActivityTab as d8, type NotesTab as d9, isStartNode as dA, type ConditionOperator as dB, and as dC, eq as dD, inValues as dE, isConditionGroup as dF, isConditionRule as dG, isEmpty as dH, isNotEmpty as dI, neq as dJ, or as dK, type CanvasViewport as dL, type NodePosition as dM, type WorkflowLayout as dN, type WorkflowSlot as dO, type WorkflowStatus as dP, isSystemWorkflow as dQ, isWorkflowDefinition as dR, isWorkflowPublished as dS, type PendingAction as dT, type WorkflowError as dU, type WorkflowInstance as dV, type WorkflowTransition as dW, canResumeInstance as dX, createStartTransition as dY, isInstanceTerminal as dZ, isInstanceWaiting as d_, type FlowsTab as da, type DocumentsTab as db, isFormTab as dc, isTableTab as dd, isDirectTableTab as de, isInverseTableTab as df, isCustomTab as dg, isActivityTab as dh, isNotesTab as di, isFlowsTab as dj, isDocumentsTab as dk, type ConditionNode as dl, type DocumentNode as dm, type EndNode as dn, type FormFieldRef as dp, type FormNode as dq, type StartNode as dr, type WorkflowNodeType as ds, getNodeOutputs as dt, isAdvancedFormNode as du, isConditionNode as dv, isDocumentNode as dw, isEndNode as dx, isFormNode as dy, isSimpleFormNode as dz, type CurrencyAttribute as e, attributeConfigSchemas as e$, type CreateInvitationResult as e0, type InvitationStatus as e1, type WorkflowInvitation as e2, isInvitationAccepted as e3, isInvitationExpired as e4, isInvitationValid as e5, type CreateGrantInput as e6, type WorkflowAccessGrant as e7, canAccessNode as e8, isGrantExpired as e9, generateId as eA, generatePrefixedId as eB, slugify as eC, generateTemplateName as eD, registry as eE, viewRegistry as eF, type ValidationMessages as eG, DEFAULT_VALIDATION_MESSAGES as eH, textConfigSchema as eI, textareaConfigSchema as eJ, richtextConfigSchema as eK, numberConfigSchema as eL, checkboxConfigSchema as eM, dateConfigSchema as eN, phoneConfigSchema as eO, currencyConfigSchema as eP, statusConfigSchema as eQ, locationConfigSchema as eR, selectConfigSchema as eS, multiselectConfigSchema as eT, fileConfigSchema as eU, userConfigSchema as eV, relationConfigSchema as eW, ratingConfigSchema as eX, formulaConfigSchema as eY, rollupConfigSchema as eZ, documentConfigSchema as e_, isGrantRevoked as ea, isGrantValid as eb, isTokenRevoked as ec, type GeneratedDocument as ed, type WorkflowExecutionContext as ee, createEmptyContext as ef, getContextValue as eg, mergeFormToSlot as eh, setContextValue as ei, type FormContextResponse as ej, type FormFieldContext as ek, type FormFieldRow as el, type FormNodeInfo as em, type ReadOnlyReason as en, type WorkflowAccessMode as eo, type ThemeColors as ep, type ThemeLogo as eq, type ThemeTypography as er, DEFAULT_THEME as es, generateCssVariables as et, mergeWithDefaults as eu, type Uuid as ev, type TenantId as ew, type UserId as ex, asTenantId as ey, asUserId as ez, type Option as f, QueryMultipleResultsError as f$, getAttributeConfigSchema as f0, validateAttributeConfig as f1, parseAttributeConfig as f2, safeParseAttributeConfig as f3, createTextValidator as f4, createNumberValidator as f5, createCheckboxValidator as f6, createDateValidator as f7, createPhoneValidator as f8, createCurrencyValidator as f9, computeRecordStatus as fA, type DatabaseAdapter as fB, WorkflowJwtService as fC, type JwtVerificationResult as fD, type MagicLinkPayload as fE, type WorkflowAccessPayload as fF, type WorkflowJwtConfig as fG, type WorkflowJwtPayload as fH, type CacheKeyType as fI, hashOptions as fJ, type CacheAdapter as fK, type CacheOptions as fL, cacheKeys as fM, cacheTtl as fN, defaultTtl as fO, NoopCacheAdapter as fP, type FetchResult as fQ, type FormattedRecord as fR, type GroupedFetchResult as fS, type InsertOptions as fT, type QueryBuilderState as fU, type RegistryMap as fV, type RegistryObjectNames as fW, type ShortcutOperator as fX, createDefaultState as fY, formatRecord as fZ, formatRecords as f_, createStatusValidator as fa, createSelectValidator as fb, createMultiselectValidator as fc, createLocationValidator as fd, createFileValidator as fe, createUserValidator as ff, createSingleRelationValidator as fg, createMultiRelationValidator as fh, createRelationValidator as fi, createRatingValidator as fj, createFormulaValidator as fk, createRollupValidator as fl, createTextAreaValidator as fm, createRichtextValidator as fn, createAttributeValidator as fo, createFormAttributeValidator as fp, createObjectValidator as fq, type ValidationResult as fr, validateAttribute as fs, validateObject as ft, validateObjectOrThrow as fu, createDraftValidator as fv, validateDraft as fw, validateDraftOrThrow as fx, getMissingRequiredAttributes as fy, isRecordComplete as fz, type StatusAttribute as g, parsePath as g$, QueryNoResultError as g0, SHORTCUT_TO_FILTER_OPERATOR as g1, createQueryBuilder as g2, QueryBuilder as g3, type QueryBuilderOptions as g4, type EvaluationResult as g5, type EvaluationTrace as g6, evaluateCondition as g7, evaluate as g8, evaluateWithTrace as g9, error as gA, ExecutorRegistry as gB, success as gC, wait as gD, ConditionExecutor as gE, DocumentExecutor as gF, EndExecutor as gG, FormExecutor as gH, StartExecutor as gI, evaluateFormula as gJ, evaluateFormulaAttribute as gK, evaluateFormulaAttributeWithRelations as gL, evaluateFormulaWithRelations as gM, evaluateFormulaWithResult as gN, extractFormulaVariables as gO, extractRelationNames as gP, extractRelationReferences as gQ, flattenRelationsForEval as gR, formatFormulaResult as gS, hasRelationReferences as gT, validateFormulaExpression as gU, type FormulaResult as gV, getPathDepth as gW, getRelationPath as gX, getTargetAttributeName as gY, InvalidPathError as gZ, MaxDepthExceededError as g_, TenantContextError as ga, addSchemaToContext as gb, getSchemaByNameFromContext as gc, getSchemaContext as gd, getSchemaFromContext as ge, hasSchemaContext as gf, runWithMergedSchemaContext as gg, runWithSchemaContext as gh, type SchemaContext as gi, getContext as gj, getTenantId as gk, getUserId as gl, hasContext as gm, runWithContext as gn, withTenantContext as go, type TenantContext as gp, createDefaultExecutorRegistry as gq, getDefaultExecutorRegistry as gr, type ExecutorCompleteResult as gs, type ExecutorContext as gt, type ExecutorErrorResult as gu, type ExecutorResult as gv, type ExecutorSuccessResult as gw, type ExecutorWaitResult as gx, type NodeExecutor as gy, complete as gz, type SelectAttribute as h, type RelationOptionsResponse as h$, pathHasManyCardinality as h0, validatePath as h1, type PathCardinality as h2, type PathSegment as h3, type PathSegmentType as h4, type SchemaResolver as h5, resolveMultiplePaths as h6, resolveSingleValue as h7, traversePath as h8, type TraversalOptions as h9, type DocumentsRepository as hA, type DocumentSlotsRepository as hB, type DocumentJobsRepository as hC, type DocumentGenerationTemplateListOptions as hD, type DocumentGenerationTemplatesRepository as hE, type AIConversationsRepository as hF, type AIUserMemoryRepository as hG, type AIUsageMetricsRepository as hH, BaseService as hI, BaseRepository as hJ, type SchemaContextAware as hK, SchemaContextAwareRepository as hL, type CreateCustomObjectInput as hM, type AddAttributeInput as hN, type UpdateObjectInput as hO, type ObjectSchemaServiceOptions as hP, ObjectSchemaService as hQ, type RecordServiceOptions as hR, RecordService as hS, type RecordQueryServiceOptions as hT, type QueryOptions as hU, type SearchQueryOptions as hV, type QueryResult as hW, RecordQueryService as hX, type RelationValidationResult as hY, type RelationValidationError as hZ, type RelationOption as h_, type TraversalResult as ha, type AttributeChange as hb, type HookContext as hc, type HookDefinition as hd, type HookHandler as he, type HookType as hf, NoopHookRegistry as hg, type HookRegistry as hh, createMockAdapter as hi, type MockStores as hj, defaultPolicyRegistry as hk, PolicyRegistry as hl, notesPolicy as hm, type ObjectsRepository as hn, type AttributesRepository as ho, type ObjectRecordsRepository as hp, type ViewsRepository as hq, type UserProfilesRepository as hr, type FilesRepository as hs, type AuditRepository as ht, type PermissionsRepository as hu, type WorkflowsRepository as hv, type WorkflowInstancesRepository as hw, type WorkflowInvitationsRepository as hx, type WorkflowAccessGrantsRepository as hy, type DocumentTemplatesRepository as hz, type SingleRelationAttribute as i, UserProfileService as i$, type GetRelationOptionsParams as i0, type RelationServiceOptions as i1, type ResolveIdsBatchRequest as i2, type ResolveIdsBatchResponse as i3, RelationService as i4, RecordResolverService as i5, type ResolvedRelations as i6, type FormulaResolverServiceOptions as i7, FormulaResolverService as i8, type RollupResult as i9, GrantNotFoundError as iA, GrantExpiredError as iB, GrantRevokedError as iC, TokenRevokedError as iD, type GrantServiceConfig as iE, type CreateGrantResult as iF, WorkflowAccessGrantService as iG, type StartWorkflowInput as iH, type ResumeWorkflowInput as iI, type WorkflowInstanceServiceOptions as iJ, WorkflowInstanceService as iK, type InvitationServiceConfig as iL, InvitationNotFoundError as iM, InvitationExpiredError as iN, InvitationAlreadyAcceptedError as iO, InvitationRevokedError as iP, WorkflowInvitationService as iQ, type FieldReadOnlyResult as iR, WorkflowRelationService as iS, type CreateWorkflowInput as iT, type UpdateWorkflowInput as iU, type WorkflowServiceOptions as iV, WorkflowService as iW, type UserValidationResult as iX, type UserValidationError as iY, UserService as iZ, type UserProfileServiceOptions as i_, type RollupServiceOptions as ia, RollupService as ib, type RollupSchedulerOptions as ic, RollupScheduler as id, applyDefaultValues as ie, checkPermission as ig, getPolicy as ih, buildPolicyContext as ii, checkRecordAccess as ij, checkRecordModifyOrThrow as ik, checkRecordDeleteOrThrow as il, checkSharedObjectWriteAccess as im, computeLabel as io, type LabelResolver as ip, enrichWithFormulas as iq, enrichRecordsWithFormulas as ir, createContextForCreate as is, createContextForUpdate as it, createContextForDelete as iu, createContextForRestore as iv, recalculateParentRollups as iw, type RollupCascadeContext as ix, type DocumentProcessingHookOptions as iy, DocumentProcessingHook as iz, type MultiRelationAttribute as j, type GlobalSearchResultItem as j$, AuditService as j0, buildAuditChanges as j1, DocumentGenerationTemplateNotFoundError as j2, DocumentGenerationNotConfiguredError as j3, DocumentGenerationService as j4, type DocumentProcessingConfig as j5, DocumentProcessingService as j6, type RenderDocumentInput as j7, type DocumentRendererOptions as j8, type RenderDocumentResult as j9, syncNativeObjects as jA, verifyNativeObjectsSync as jB, getSyncPreview as jC, type FullSyncResult as jD, type FullSyncOptions as jE, syncAll as jF, DEFAULT_LABEL_FALLBACK as jG, renderLabelExpression as jH, isLabelExpression as jI, extractAttributeNames as jJ, enrichValuesForDisplay as jK, enrichValuesWithSelectLabels as jL, extractRelationIds as jM, type RelationLabelResolver as jN, computeLabelWithRelations as jO, type DBObject as jP, type CreateDBObject as jQ, type UpdateDBObject as jR, type UpsertDBObject as jS, type DBAttribute as jT, type CreateDBAttribute as jU, type UpdateDBAttribute as jV, type UpsertDBAttribute as jW, type CreateObjectRecord as jX, type ListOptions as jY, type SearchOptions as jZ, type GlobalSearchOptions as j_, DocumentRenderError as ja, StorageDownloadNotSupportedError as jb, DocumentRendererService as jc, DocumentTemplateService as jd, type RecordDocumentsResult as je, type CreateRecordDocumentInput as jf, type CreateRecordDocumentResult as jg, type DocumentServiceOptions as jh, DocumentService as ji, type FileServiceOptions as jj, FileService as jk, GeocodingService as jl, GlobalSearchService as jm, type PermissionServiceOptions as jn, PermissionService as jo, type CreateViewInput as jp, type UpdateViewInput as jq, ViewService as jr, type FileContent as js, type StorageUploadInput as jt, type StorageUploadResult as ju, type SignedUrlOptions as jv, type StorageAdapter as jw, type UploadFileInput as jx, type SyncResult as jy, type SyncOptions as jz, type RelationTarget as k, type FileListOptions as k0, type DBView as k1, type CreateDBView as k2, type UpdateDBView as k3, type UpsertDBView as k4, type DBWorkflow as k5, type CreateDBWorkflow as k6, type UpdateDBWorkflow as k7, type DBWorkflowInstance as k8, type CreateDBWorkflowInstance as k9, type UpdateDBWorkflowInstance as ka, type DBWorkflowInvitation as kb, type CreateDBWorkflowInvitation as kc, type UpdateDBWorkflowInvitation as kd, type DBWorkflowAccessGrant as ke, type CreateDBWorkflowAccessGrant as kf, type UpdateDBWorkflowAccessGrant as kg, type OperationResult as kh, type ViewSyncResult as ki, type ViewSyncLogger as kj, type ViewSyncOptions as kk, syncNativeViews as kl, verifyNativeViewsSync as km, getViewSyncPreview as kn, type RatingAttribute as l, type FormulaAttribute as m, type FormulaReturnType as n, type RollupAttribute as o, type RollupFunction as p, type AttributeType as q, type ObjectDefinition as r, type Field as s, type AttributeGroupField as t, type TableTab as u, type InverseTableTab as v, type ViewDefinition as w, type InstanceStatus as x, type Tab as y, type FilterState as z };
|
|
13967
|
+
export { type FlowRow as $, type Attribute as A, type Tab as B, type CheckboxAttribute as C, type DateAttribute as D, type FilterState as E, type FeatureGate as F, type Group as G, type SortRule as H, type InferAttributeValue as I, type DirectTableTab as J, type ListViewDefinition as K, type LocationAttribute as L, type MultiselectAttribute as M, type NumberAttribute as N, type ObjectAction as O, type PhoneAttribute as P, type WorkflowConfig as Q, type RichtextAttribute as R, type SystemResource as S, type TextAttribute as T, type UserAttribute as U, type SlotMode as V, type WorkflowTheme as W, type ConditionGroup as X, type ConditionRule as Y, type WorkflowNode as Z, type WorkflowDefinition as _, type DocumentAttribute as a, type DateValue as a$, type FlagValueType as a0, type FeatureFlagDefinition as a1, type FlagLevel as a2, type FeatureFlagsRepository as a3, type StaticFlagDefault as a4, type ResolvedFlag as a5, type ViewType as a6, type ViewDefinition as a7, type DocumentTemplate as a8, type OcrAdapter as a9, type ThinkingPartData as aA, type ReasoningPartData as aB, type AIChatMessagePart as aC, type AIChatMessage as aD, type AIQuestionType as aE, type AIQuestionOption as aF, type AIQuestion as aG, type AIQuestionAnswer as aH, type AIBatchQuestionOption as aI, type AIBatchQuestion as aJ, type AIBatchQuestionAnswer as aK, type AITodoStatus as aL, type AITodoItem as aM, type AITodoList as aN, type AIMessageAttachment as aO, type AIConversation as aP, type AIMessage as aQ, type AIToolCallRecord as aR, type AIUserMemory as aS, type AIUsageMetrics as aT, type AIProviderMetrics as aU, type CreateAIMessageInput as aV, type StatusGroup as aW, type AttributeGroup as aX, type BaseAttribute as aY, type NumberUnit as aZ, type DateFormat as a_, type OcrInput as aa, type OcrOptions as ab, type OcrResult as ac, type OcrPage as ad, type OcrTextBlock as ae, type BoundingBox as af, type SignatureAdapter as ag, type CreateSignatureInput as ah, type SignerRequest as ai, type SignaturePosition as aj, type SignatureRequestResult as ak, type SignatureStatusResult as al, type SignerStatus as am, type SignatureStatus as an, type IdentityVerificationAdapter as ao, type VerifyInput as ap, type VerificationResult as aq, type DocumentData as ar, type VerificationCheck as as, type AIMessageRole as at, type AIThinkingLevel as au, type AIToolCallStatus as av, type AIToolCall as aw, type AIChatMessagePartType as ax, type TextPartData as ay, type ToolPartData as az, type SystemAction as b, type FilterValue as b$, type Phone as b0, type Currency as b1, type Location as b2, type LocationGranularity as b3, RELATION_TARGET_ANY as b4, type RelationAttribute as b5, isUniversalRelation as b6, type AuditResourceType as b7, type AuditAction as b8, type AuditActorType as b9, type UpdateDocument as bA, type CreateDocumentTemplate as bB, type UpdateDocumentTemplate as bC, type CreateDocumentSlot as bD, type UpdateDocumentSlot as bE, type CreateProcessingJob as bF, type UpdateProcessingJob as bG, type DocumentListOptions as bH, type DocumentTemplateListOptions as bI, type FlagOverride as bJ, type FeatureFlagsConfig as bK, type StorageProvider as bL, type FileVisibility as bM, type File as bN, type CreateFile as bO, type UpdateFile as bP, type TextFilterOperator as bQ, type NumberFilterOperator as bR, type CheckboxFilterOperator as bS, type DateFilterOperator as bT, type SelectFilterOperator as bU, type MultiselectFilterOperator as bV, type RelationFilterOperator as bW, type FilterOperator as bX, type RelativeDateValue as bY, type CurrencyFilterValue as bZ, type PhoneFilterValue as b_, type AuditChange as ba, type AuditLogEntry as bb, type CreateAuditLogInput as bc, type AuditListOptions as bd, type AuditServiceOptions as be, type VariableMapping as bf, type PdfTemplateField as bg, type TemplateSource as bh, type DocumentGenerationTemplate as bi, type CreateDocumentGenerationTemplate as bj, type UpdateDocumentGenerationTemplate as bk, type PendingDocumentRequest as bl, isPdfTemplateSource as bm, isDocxTemplateSource as bn, type DocumentSlotDefinition as bo, type DocumentAutoProcessing as bp, type ExtractionMapping as bq, type ExtractionField as br, type Document as bs, type DocumentStatus as bt, type DocumentSlot as bu, type SlotStatus as bv, type ProcessingJob as bw, type ProcessingJobType as bx, type ProcessingJobStatus as by, type CreateDocument as bz, type TextAreaAttribute as c, type Permission as c$, type FilterRule as c0, type ExtendedFilterRule as c1, type FilterCombinator as c2, type FilterGroup as c3, type AdvancedFilterState as c4, isAdvancedFilterState as c5, toAdvancedFilterState as c6, toSimpleFilterState as c7, type SortDirection as c8, type QueryState as c9, type InferRecordInput as cA, type InferRecordUpdate as cB, type CustomAttributeValue as cC, type WithCustomAttributes as cD, type RecordMetadata as cE, type SystemFields as cF, type ExtractRecord as cG, type ExtractRecordStrict as cH, type ExtractRecordInput as cI, type ExtractRecordInputStrict as cJ, type ExtractRecordUpdate as cK, type ExtractRecordUpdateStrict as cL, type ExtractAttributes as cM, type TypedObjectRecord as cN, type ExtractObjectRecord as cO, type ExtractObjectRecordWithCustom as cP, RESERVED_ATTRIBUTE_NAMES as cQ, SYSTEM_FIELD_NAMES as cR, type ReservedAttributeName as cS, type SystemFieldName as cT, type Timestamps as cU, type SharingMode as cV, type ObjectAttribute as cW, type CompletionStatus as cX, type ObjectRecord as cY, type PermissionScope as cZ, type Role as c_, OPERATORS_BY_TYPE as ca, type NoValueOperator as cb, NO_VALUE_OPERATORS as cc, isNoValueOperator as cd, type FlowSlot as ce, type FlowRowField as cf, type FlowPage as cg, type FlowRelation as ch, type FlowStatus as ci, type FlowDefinition as cj, isFlowDefinition as ck, isFlowPublished as cl, isSystemFlow as cm, type GeocodingSuggestion as cn, type GeocodingAutocompleteParams as co, type ReverseGeocodingParams as cp, type GeocodingParams as cq, type GeocodingAdapter as cr, NoopGeocodingAdapter as cs, type AttributeSchema as ct, type InferRecordFromSchema as cu, type InferRecordWithRequirements as cv, type TypedAttribute as cw, type AttributeMap as cx, type AddAttribute as cy, type InferRecord as cz, type RichtextFeature as d, isDocumentNode as d$, type UserRoleAssignment as d0, type EffectivePermissions as d1, type ObjectPermissions as d2, type SystemPermissions as d3, type CreateRoleInput as d4, type UpdateRoleInput as d5, type CreatePermissionInput as d6, type AssignRoleInput as d7, type PolicyContext as d8, type RecordPolicy as d9, type GalleryViewDefinition as dA, type ConfigOverrides as dB, type ViewOverlay as dC, isDetailView as dD, isListView as dE, isCalendarView as dF, isTimelineView as dG, isGalleryView as dH, isFormTab as dI, isTableTab as dJ, isDirectTableTab as dK, isInverseTableTab as dL, isCustomTab as dM, isActivityTab as dN, isNotesTab as dO, isFlowsTab as dP, isDocumentsTab as dQ, type ConditionNode as dR, type DocumentNode as dS, type EndNode as dT, type FormFieldRef as dU, type FormNode as dV, type StartNode as dW, type WorkflowNodeType as dX, getNodeOutputs as dY, isAdvancedFormNode as dZ, isConditionNode as d_, PolicyViolationError as da, type UserRole as db, type UserStatus as dc, type UserProfile as dd, type CreateUserProfile as de, type UpdateUserProfile as df, type InviteUserInput as dg, type TabType as dh, type FormTab as di, type CustomTab as dj, type ActivityTab as dk, type NotesTab as dl, type FlowsTab as dm, type DocumentsTab as dn, type ListViewLayout as dp, type ViewLayout as dq, type ViewTab as dr, type DetailViewConfig as ds, type ListViewConfig as dt, type CalendarViewConfig as du, type TimelineViewConfig as dv, type GalleryViewConfig as dw, type ViewConfig as dx, type CalendarViewDefinition as dy, type TimelineViewDefinition as dz, type CurrencyAttribute as e, type TenantId as e$, isEndNode as e0, isFormNode as e1, isSimpleFormNode as e2, isStartNode as e3, type ConditionOperator as e4, and as e5, eq as e6, inValues as e7, isConditionGroup as e8, isConditionRule as e9, isInvitationValid as eA, type CreateGrantInput as eB, type WorkflowAccessGrant as eC, canAccessNode as eD, isGrantExpired as eE, isGrantRevoked as eF, isGrantValid as eG, isTokenRevoked as eH, type GeneratedDocument as eI, type WorkflowExecutionContext as eJ, createEmptyContext as eK, getContextValue as eL, mergeFormToSlot as eM, setContextValue as eN, type FormContextResponse as eO, type FormFieldContext as eP, type FormFieldRow as eQ, type FormNodeInfo as eR, type ReadOnlyReason as eS, type WorkflowAccessMode as eT, type ThemeColors as eU, type ThemeLogo as eV, type ThemeTypography as eW, DEFAULT_THEME as eX, generateCssVariables as eY, mergeWithDefaults as eZ, type Uuid as e_, isEmpty as ea, isNotEmpty as eb, neq as ec, or as ed, type CanvasViewport as ee, type NodePosition as ef, type WorkflowLayout as eg, type WorkflowSlot as eh, type WorkflowStatus as ei, isSystemWorkflow as ej, isWorkflowDefinition as ek, isWorkflowPublished as el, type PendingAction as em, type WorkflowError as en, type WorkflowInstance as eo, type WorkflowTransition as ep, canResumeInstance as eq, createStartTransition as er, isInstanceTerminal as es, isInstanceWaiting as et, type CreateInvitationInput as eu, type CreateInvitationResult as ev, type InvitationStatus as ew, type WorkflowInvitation as ex, isInvitationAccepted as ey, isInvitationExpired as ez, type Option as f, validateDraft as f$, type UserId as f0, asTenantId as f1, asUserId as f2, generateId as f3, generatePrefixedId as f4, slugify as f5, generateTemplateName as f6, registry as f7, viewRegistry as f8, type ValidationMessages as f9, createNumberValidator as fA, createCheckboxValidator as fB, createDateValidator as fC, createPhoneValidator as fD, createCurrencyValidator as fE, createStatusValidator as fF, createSelectValidator as fG, createMultiselectValidator as fH, createLocationValidator as fI, createFileValidator as fJ, createUserValidator as fK, createSingleRelationValidator as fL, createMultiRelationValidator as fM, createRelationValidator as fN, createRatingValidator as fO, createFormulaValidator as fP, createRollupValidator as fQ, createTextAreaValidator as fR, createRichtextValidator as fS, createAttributeValidator as fT, createFormAttributeValidator as fU, createObjectValidator as fV, type ValidationResult as fW, validateAttribute as fX, validateObject as fY, validateObjectOrThrow as fZ, createDraftValidator as f_, DEFAULT_VALIDATION_MESSAGES as fa, textConfigSchema as fb, textareaConfigSchema as fc, richtextConfigSchema as fd, numberConfigSchema as fe, checkboxConfigSchema as ff, dateConfigSchema as fg, phoneConfigSchema as fh, currencyConfigSchema as fi, statusConfigSchema as fj, locationConfigSchema as fk, selectConfigSchema as fl, multiselectConfigSchema as fm, fileConfigSchema as fn, userConfigSchema as fo, relationConfigSchema as fp, ratingConfigSchema as fq, formulaConfigSchema as fr, rollupConfigSchema as fs, documentConfigSchema as ft, attributeConfigSchemas as fu, getAttributeConfigSchema as fv, validateAttributeConfig as fw, parseAttributeConfig as fx, safeParseAttributeConfig as fy, createTextValidator as fz, type StatusAttribute as g, hasContext as g$, validateDraftOrThrow as g0, getMissingRequiredAttributes as g1, isRecordComplete as g2, computeRecordStatus as g3, type ViewOverlaysRepository as g4, type DatabaseAdapter as g5, WorkflowJwtService as g6, type JwtVerificationResult as g7, type MagicLinkPayload as g8, type WorkflowAccessPayload as g9, type QueryBuilderOptions as gA, type EvaluationResult as gB, type EvaluationTrace as gC, evaluateCondition as gD, evaluate as gE, evaluateWithTrace as gF, TenantContextError as gG, FeatureFlagsContextError as gH, getFeatureFlags as gI, getFeatureValue as gJ, hasFeatureFlagsContext as gK, isFeatureEnabled as gL, runWithFeatureFlags as gM, tryGetFeatureValue as gN, withFeatureFlags as gO, type FeatureFlagsContext as gP, addSchemaToContext as gQ, getSchemaByNameFromContext as gR, getSchemaContext as gS, getSchemaFromContext as gT, hasSchemaContext as gU, runWithMergedSchemaContext as gV, runWithSchemaContext as gW, type SchemaContext as gX, getContext as gY, getTenantId as gZ, getUserId as g_, type WorkflowJwtConfig as ga, type WorkflowJwtPayload as gb, type CacheKeyType as gc, hashOptions as gd, type CacheAdapter as ge, type CacheOptions as gf, cacheKeys as gg, cacheTtl as gh, defaultTtl as gi, NoopCacheAdapter as gj, type FetchResult as gk, type FormattedRecord as gl, type GroupedFetchResult as gm, type InsertOptions as gn, type QueryBuilderState as go, type RegistryMap as gp, type RegistryObjectNames as gq, type ShortcutOperator as gr, createDefaultState as gs, formatRecord as gt, formatRecords as gu, QueryMultipleResultsError as gv, QueryNoResultError as gw, SHORTCUT_TO_FILTER_OPERATOR as gx, createQueryBuilder as gy, QueryBuilder as gz, type SelectAttribute as h, notesPolicy as h$, runWithContext as h0, withTenantContext as h1, type TenantContext as h2, createDefaultExecutorRegistry as h3, getDefaultExecutorRegistry as h4, type ExecutorCompleteResult as h5, type ExecutorContext as h6, type ExecutorErrorResult as h7, type ExecutorResult as h8, type ExecutorSuccessResult as h9, getRelationPath as hA, getTargetAttributeName as hB, InvalidPathError as hC, MaxDepthExceededError as hD, parsePath as hE, pathHasManyCardinality as hF, validatePath as hG, type PathCardinality as hH, type PathSegment as hI, type PathSegmentType as hJ, type SchemaResolver as hK, resolveMultiplePaths as hL, resolveSingleValue as hM, traversePath as hN, type TraversalOptions as hO, type TraversalResult as hP, type AttributeChange as hQ, type HookContext as hR, type HookDefinition as hS, type HookHandler as hT, type HookType as hU, NoopHookRegistry as hV, type HookRegistry as hW, createMockAdapter as hX, type MockStores as hY, defaultPolicyRegistry as hZ, PolicyRegistry as h_, type ExecutorWaitResult as ha, type NodeExecutor as hb, complete as hc, error as hd, ExecutorRegistry as he, success as hf, wait as hg, ConditionExecutor as hh, DocumentExecutor as hi, EndExecutor as hj, FormExecutor as hk, StartExecutor as hl, evaluateFormula as hm, evaluateFormulaAttribute as hn, evaluateFormulaAttributeWithRelations as ho, evaluateFormulaWithRelations as hp, evaluateFormulaWithResult as hq, extractFormulaVariables as hr, extractRelationNames as hs, extractRelationReferences as ht, flattenRelationsForEval as hu, formatFormulaResult as hv, hasRelationReferences as hw, validateFormulaExpression as hx, type FormulaResult as hy, getPathDepth as hz, type FileAttribute as i, checkRecordDeleteOrThrow as i$, type AIConversationsRepository as i0, type AIUsageMetricsRepository as i1, type AIUserMemoryRepository as i2, type AttributesRepository as i3, type AuditRepository as i4, type DocumentGenerationTemplateListOptions as i5, type DocumentGenerationTemplatesRepository as i6, type DocumentJobsRepository as i7, type DocumentSlotsRepository as i8, type DocumentsRepository as i9, type SearchQueryOptions as iA, type QueryResult as iB, RecordQueryService as iC, type RelationValidationResult as iD, type RelationValidationError as iE, type RelationOption as iF, type RelationOptionsResponse as iG, type GetRelationOptionsParams as iH, type RelationServiceOptions as iI, type ResolveIdsBatchRequest as iJ, type ResolveIdsBatchResponse as iK, RelationService as iL, RecordResolverService as iM, type ResolvedRelations as iN, type FormulaResolverServiceOptions as iO, FormulaResolverService as iP, type RollupResult as iQ, type RollupServiceOptions as iR, RollupService as iS, type RollupSchedulerOptions as iT, RollupScheduler as iU, applyDefaultValues as iV, checkPermission as iW, getPolicy as iX, buildPolicyContext as iY, checkRecordAccess as iZ, checkRecordModifyOrThrow as i_, type DocumentTemplatesRepository as ia, type FilesRepository as ib, type ObjectRecordsRepository as ic, type ObjectsRepository as id, type PermissionsRepository as ie, type UserProfilesRepository as ig, type ViewsRepository as ih, type WorkflowAccessGrantsRepository as ii, type WorkflowInstancesRepository as ij, type WorkflowInvitationsRepository as ik, type WorkflowsRepository as il, BaseService as im, BaseRepository as io, type SchemaContextAware as ip, SchemaContextAwareRepository as iq, type CreateCustomObjectInput as ir, type AddAttributeInput as is, type UpdateObjectInput as it, type ObjectSchemaServiceOptions as iu, ObjectSchemaService as iv, type RecordServiceOptions as iw, RecordService as ix, type RecordQueryServiceOptions as iy, type QueryOptions as iz, type SingleRelationAttribute as j, GlobalSearchService as j$, checkSharedObjectWriteAccess as j0, computeLabel as j1, type LabelResolver as j2, enrichWithFormulas as j3, enrichRecordsWithFormulas as j4, createContextForCreate as j5, createContextForUpdate as j6, createContextForDelete as j7, createContextForRestore as j8, recalculateParentRollups as j9, type UserValidationResult as jA, type UserValidationError as jB, UserService as jC, type UserProfileServiceOptions as jD, UserProfileService as jE, AuditService as jF, buildAuditChanges as jG, DocumentGenerationTemplateNotFoundError as jH, DocumentGenerationNotConfiguredError as jI, DocumentGenerationService as jJ, type DocumentProcessingConfig as jK, DocumentProcessingService as jL, type RenderDocumentInput as jM, type DocumentRendererOptions as jN, type RenderDocumentResult as jO, DocumentRenderError as jP, StorageDownloadNotSupportedError as jQ, DocumentRendererService as jR, DocumentTemplateService as jS, type RecordDocumentsResult as jT, type CreateRecordDocumentInput as jU, type CreateRecordDocumentResult as jV, type DocumentServiceOptions as jW, DocumentService as jX, type FileServiceOptions as jY, FileService as jZ, GeocodingService as j_, type RollupCascadeContext as ja, type DocumentProcessingHookOptions as jb, DocumentProcessingHook as jc, GrantNotFoundError as jd, GrantExpiredError as je, GrantRevokedError as jf, TokenRevokedError as jg, type GrantServiceConfig as jh, type CreateGrantResult as ji, WorkflowAccessGrantService as jj, type StartWorkflowInput as jk, type ResumeWorkflowInput as jl, type WorkflowInstanceServiceOptions as jm, WorkflowInstanceService as jn, type InvitationServiceConfig as jo, InvitationNotFoundError as jp, InvitationExpiredError as jq, InvitationAlreadyAcceptedError as jr, InvitationRevokedError as js, WorkflowInvitationService as jt, type FieldReadOnlyResult as ju, WorkflowRelationService as jv, type CreateWorkflowInput as jw, type UpdateWorkflowInput as jx, type WorkflowServiceOptions as jy, WorkflowService as jz, type MultiRelationAttribute as k, type OperationResult as k$, type PermissionServiceOptions as k0, PermissionService as k1, type CreateViewInput as k2, type UpdateViewInput as k3, type GetViewsOptions as k4, type GetViewOptions as k5, ViewService as k6, type FileContent as k7, type StorageUploadInput as k8, type StorageUploadResult as k9, type UpdateDBAttribute as kA, type UpsertDBAttribute as kB, type CreateObjectRecord as kC, type ListOptions as kD, type SearchOptions as kE, type GlobalSearchOptions as kF, type GlobalSearchResultItem as kG, type FileListOptions as kH, type DBView as kI, type CreateDBView as kJ, type UpdateDBView as kK, type UpsertDBView as kL, type DBViewOverlay as kM, type CreateDBViewOverlay as kN, type UpdateDBViewOverlay as kO, type DBWorkflow as kP, type CreateDBWorkflow as kQ, type UpdateDBWorkflow as kR, type DBWorkflowInstance as kS, type CreateDBWorkflowInstance as kT, type UpdateDBWorkflowInstance as kU, type DBWorkflowInvitation as kV, type CreateDBWorkflowInvitation as kW, type UpdateDBWorkflowInvitation as kX, type DBWorkflowAccessGrant as kY, type CreateDBWorkflowAccessGrant as kZ, type UpdateDBWorkflowAccessGrant as k_, type SignedUrlOptions as ka, type StorageAdapter as kb, type UploadFileInput as kc, type SyncResult as kd, type SyncOptions as ke, syncNativeObjects as kf, verifyNativeObjectsSync as kg, getSyncPreview as kh, type FullSyncResult as ki, type FullSyncOptions as kj, syncAll as kk, DEFAULT_LABEL_FALLBACK as kl, renderLabelExpression as km, isLabelExpression as kn, extractAttributeNames as ko, enrichValuesForDisplay as kp, enrichValuesWithSelectLabels as kq, extractRelationIds as kr, type RelationLabelResolver as ks, computeLabelWithRelations as kt, type DBObject as ku, type CreateDBObject as kv, type UpdateDBObject as kw, type UpsertDBObject as kx, type DBAttribute as ky, type CreateDBAttribute as kz, type RelationTarget as l, type ViewSyncResult as l0, type ViewSyncLogger as l1, type ViewSyncOptions as l2, seedRegistryViews as l3, syncNativeViews as l4, verifyRegistryViewsSeeded as l5, verifyNativeViewsSync as l6, getViewSeedPreview as l7, getViewSyncPreview as l8, type RatingAttribute as m, type FormulaAttribute as n, type FormulaReturnType as o, type RollupAttribute as p, type RollupFunction as q, type AttributeType as r, type ObjectDefinition as s, type Field as t, type AttributeGroupField as u, type TableTab as v, type DetailViewLayout as w, type InverseTableTab as x, type DetailViewDefinition as y, type InstanceStatus as z };
|