node-type-registry 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/authz/authz-app-membership.d.ts +2 -0
- package/authz/{authz-membership-check.js → authz-app-membership.js} +17 -23
- package/authz/index.d.ts +1 -1
- package/authz/index.js +3 -3
- package/blueprint-types.generated.d.ts +339 -270
- package/blueprint-types.generated.js +6 -0
- package/codegen/generate-types.js +105 -4
- package/data/data-feature-flag.d.ts +2 -0
- package/data/data-feature-flag.js +33 -0
- package/data/data-image-embedding.d.ts +2 -0
- package/data/data-image-embedding.js +80 -0
- package/data/data-job-trigger.js +38 -1
- package/data/data-limit-counter.d.ts +2 -0
- package/data/data-limit-counter.js +42 -0
- package/data/data-ownership-in-entity.js +12 -0
- package/data/data-peoplestamps.js +12 -0
- package/data/data-publishable.js +12 -0
- package/data/data-soft-delete.js +12 -0
- package/data/data-timestamps.js +12 -0
- package/data/index.d.ts +3 -0
- package/data/index.js +7 -1
- package/esm/authz/authz-app-membership.d.ts +2 -0
- package/esm/authz/{authz-membership-check.js → authz-app-membership.js} +16 -22
- package/esm/authz/index.d.ts +1 -1
- package/esm/authz/index.js +1 -1
- package/esm/blueprint-types.generated.d.ts +339 -270
- package/esm/blueprint-types.generated.js +6 -0
- package/esm/codegen/generate-types.js +105 -4
- package/esm/data/data-feature-flag.d.ts +2 -0
- package/esm/data/data-feature-flag.js +30 -0
- package/esm/data/data-image-embedding.d.ts +2 -0
- package/esm/data/data-image-embedding.js +77 -0
- package/esm/data/data-job-trigger.js +38 -1
- package/esm/data/data-limit-counter.d.ts +2 -0
- package/esm/data/data-limit-counter.js +39 -0
- package/esm/data/data-ownership-in-entity.js +12 -0
- package/esm/data/data-peoplestamps.js +12 -0
- package/esm/data/data-publishable.js +12 -0
- package/esm/data/data-soft-delete.js +12 -0
- package/esm/data/data-timestamps.js +12 -0
- package/esm/data/index.d.ts +3 -0
- package/esm/data/index.js +3 -0
- package/esm/view/view-aggregated.js +1 -0
- package/package.json +2 -2
- package/view/view-aggregated.js +1 -0
- package/authz/authz-membership-check.d.ts +0 -2
- package/esm/authz/authz-membership-check.d.ts +0 -2
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export interface
|
|
3
|
-
|
|
1
|
+
/** Recursive condition type for compound trigger WHEN clauses. Leaf conditions specify {field, op, value?, row?, ref?}. Combinators nest via AND, OR, NOT. */
|
|
2
|
+
export interface TriggerCondition {
|
|
3
|
+
/** Column name (validated against the table). */
|
|
4
|
+
field?: string;
|
|
5
|
+
/** Comparison operator. */
|
|
6
|
+
op?: '=' | '!=' | '>' | '<' | '>=' | '<=' | 'LIKE' | 'NOT LIKE' | 'IS NULL' | 'IS NOT NULL' | 'IS DISTINCT FROM';
|
|
7
|
+
/** Comparison value. Type is resolved from the column definition. */
|
|
8
|
+
value?: any;
|
|
9
|
+
/** Row reference (default: NEW). */
|
|
10
|
+
row?: 'NEW' | 'OLD';
|
|
11
|
+
/** Column reference for field-to-field comparison (alternative to value). */
|
|
12
|
+
ref?: {
|
|
13
|
+
field?: string;
|
|
14
|
+
row?: 'NEW' | 'OLD';
|
|
15
|
+
};
|
|
16
|
+
/** Array of conditions combined with AND. */
|
|
17
|
+
AND?: TriggerCondition[];
|
|
18
|
+
/** Array of conditions combined with OR. */
|
|
19
|
+
OR?: TriggerCondition[];
|
|
20
|
+
/** Negated condition. */
|
|
21
|
+
NOT?: TriggerCondition;
|
|
22
|
+
}
|
|
23
|
+
/** Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with '_000' prefix to run before Search* triggers alphabetically. */
|
|
24
|
+
export interface DataCompositeFieldParams {
|
|
25
|
+
target?: string;
|
|
26
|
+
source_fields: string[];
|
|
27
|
+
format?: 'labeled' | 'plain';
|
|
4
28
|
}
|
|
5
29
|
/** Adds ownership column for direct user ownership. Enables AuthzDirectOwner authorization. */
|
|
6
30
|
export interface DataDirectOwnerParams {
|
|
@@ -14,27 +38,47 @@ export interface DataEntityMembershipParams {
|
|
|
14
38
|
include_id?: boolean;
|
|
15
39
|
include_user_fk?: boolean;
|
|
16
40
|
}
|
|
17
|
-
/**
|
|
18
|
-
export interface
|
|
19
|
-
|
|
20
|
-
|
|
41
|
+
/** Gates a table behind a feature flag backed by the cap tables. Attaches a BEFORE INSERT trigger that checks whether the named feature cap value is > 0. Features are modeled as caps with max=0 (disabled) or max=1 (enabled) in limit_caps / limit_caps_defaults tables. Resolution: COALESCE(per-entity cap, scope default, 0). */
|
|
42
|
+
export interface DataFeatureFlagParams {
|
|
43
|
+
feature_name: string;
|
|
44
|
+
scope?: 'app' | 'org';
|
|
45
|
+
entity_field?: string;
|
|
21
46
|
}
|
|
22
|
-
/**
|
|
23
|
-
export interface
|
|
24
|
-
|
|
47
|
+
/** BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides. */
|
|
48
|
+
export interface DataForceCurrentUserParams {
|
|
49
|
+
field_name?: string;
|
|
25
50
|
}
|
|
26
|
-
/** Adds
|
|
27
|
-
export interface
|
|
28
|
-
|
|
29
|
-
include_user_fk?: boolean;
|
|
51
|
+
/** Adds a UUID primary key column with auto-generation default (uuidv7). This is the standard primary key pattern for all tables. */
|
|
52
|
+
export interface DataIdParams {
|
|
53
|
+
field_name?: string;
|
|
30
54
|
}
|
|
31
|
-
/**
|
|
32
|
-
export interface
|
|
33
|
-
|
|
55
|
+
/** Composition wrapper that creates a vector embedding field with HNSW/IVFFlat index (via SearchVector) and a job trigger with compound conditions (via DataJobTrigger) that fires on INSERT for image files matching mime_type patterns. Designed for storage file tables. */
|
|
56
|
+
export interface DataImageEmbeddingParams {
|
|
57
|
+
field_name?: string;
|
|
58
|
+
dimensions?: number;
|
|
59
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
60
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
61
|
+
task_identifier?: string;
|
|
62
|
+
mime_patterns?: string[];
|
|
63
|
+
payload_custom?: {
|
|
64
|
+
[key: string]: unknown;
|
|
65
|
+
};
|
|
34
66
|
}
|
|
35
|
-
/**
|
|
36
|
-
export interface
|
|
37
|
-
|
|
67
|
+
/** BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency. */
|
|
68
|
+
export interface DataImmutableFieldsParams {
|
|
69
|
+
fields: string[];
|
|
70
|
+
}
|
|
71
|
+
/** Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb. */
|
|
72
|
+
export interface DataInflectionParams {
|
|
73
|
+
field_name: string;
|
|
74
|
+
ops: ('plural' | 'singular' | 'camel' | 'pascal' | 'dashed' | 'slugify' | 'underscore' | 'lower' | 'upper')[];
|
|
75
|
+
}
|
|
76
|
+
/** BEFORE INSERT trigger that copies specified fields from a parent table via a foreign key. The parent row is looked up through RLS (SECURITY INVOKER), so the insert fails if the caller cannot see the parent. Used by the storage module to inherit owner_id and is_public from buckets to files. */
|
|
77
|
+
export interface DataInheritFromParentParams {
|
|
78
|
+
parent_fk_field: string;
|
|
79
|
+
fields: string[];
|
|
80
|
+
parent_table?: string;
|
|
81
|
+
parent_schema?: string;
|
|
38
82
|
}
|
|
39
83
|
/** Dynamically creates PostgreSQL triggers that enqueue jobs via app_jobs.add_job() when table rows are inserted, updated, or deleted. Supports configurable payload strategies (full row, row ID, selected fields, or custom mapping), conditional firing via WHEN clauses, watched field changes, and extended job options (queue, priority, delay, max attempts). */
|
|
40
84
|
export interface DataJobTriggerParams {
|
|
@@ -49,6 +93,7 @@ export interface DataJobTriggerParams {
|
|
|
49
93
|
include_meta?: boolean;
|
|
50
94
|
condition_field?: string;
|
|
51
95
|
condition_value?: string;
|
|
96
|
+
conditions?: TriggerCondition | TriggerCondition[];
|
|
52
97
|
watch_fields?: string[];
|
|
53
98
|
job_key?: string;
|
|
54
99
|
queue_name?: string;
|
|
@@ -56,19 +101,12 @@ export interface DataJobTriggerParams {
|
|
|
56
101
|
run_at_delay?: string;
|
|
57
102
|
max_attempts?: number;
|
|
58
103
|
}
|
|
59
|
-
/**
|
|
60
|
-
export interface
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/** Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided. */
|
|
66
|
-
export interface DataStatusFieldParams {
|
|
67
|
-
field_name?: string;
|
|
68
|
-
type?: string;
|
|
69
|
-
default_value?: string;
|
|
70
|
-
is_required?: boolean;
|
|
71
|
-
allowed_values?: string[];
|
|
104
|
+
/** Declaratively attaches limit-tracking triggers to a table. On INSERT the named limit is incremented; on DELETE it is decremented. Requires a provisioned limits_module for the target scope. */
|
|
105
|
+
export interface DataLimitCounterParams {
|
|
106
|
+
limit_name: string;
|
|
107
|
+
scope?: 'app' | 'org';
|
|
108
|
+
actor_field?: string;
|
|
109
|
+
events?: ('INSERT' | 'DELETE' | 'UPDATE')[];
|
|
72
110
|
}
|
|
73
111
|
/** Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata. */
|
|
74
112
|
export interface DataJsonbParams {
|
|
@@ -77,73 +115,75 @@ export interface DataJsonbParams {
|
|
|
77
115
|
is_required?: boolean;
|
|
78
116
|
create_index?: boolean;
|
|
79
117
|
}
|
|
80
|
-
/** Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb. */
|
|
81
|
-
export interface DataSlugParams {
|
|
82
|
-
field_name: string;
|
|
83
|
-
source_field_name?: string;
|
|
84
|
-
}
|
|
85
|
-
/** Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb. */
|
|
86
|
-
export interface DataInflectionParams {
|
|
87
|
-
field_name: string;
|
|
88
|
-
ops: ('plural' | 'singular' | 'camel' | 'pascal' | 'dashed' | 'slugify' | 'underscore' | 'lower' | 'upper')[];
|
|
89
|
-
}
|
|
90
118
|
/** Restricts which user can modify specific columns in shared objects. Creates an AFTER UPDATE trigger that throws OWNED_PROPS when a non-owner tries to change protected fields. References fields by name in data jsonb. */
|
|
91
119
|
export interface DataOwnedFieldsParams {
|
|
92
120
|
role_key_field_name: string;
|
|
93
121
|
protected_field_names: string[];
|
|
94
122
|
}
|
|
95
|
-
/**
|
|
96
|
-
export interface
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
123
|
+
/** Combines direct ownership with entity scoping. Adds both owner_id and entity_id columns. Enables AuthzDirectOwner, AuthzEntityMembership, and AuthzOrgHierarchy authorization. Particularly useful for OrgHierarchy where a user owns a row (owner_id) within an entity (entity_id), and managers above can see subordinate-owned records via the hierarchy closure table. */
|
|
124
|
+
export interface DataOwnershipInEntityParams {
|
|
125
|
+
owner_field_name?: string;
|
|
126
|
+
entity_field_name?: string;
|
|
127
|
+
include_id?: boolean;
|
|
128
|
+
include_user_fk?: boolean;
|
|
101
129
|
}
|
|
102
|
-
/**
|
|
103
|
-
export interface
|
|
130
|
+
/** Adds user tracking for creates/updates with created_by and updated_by columns. */
|
|
131
|
+
export interface DataPeoplestampsParams {
|
|
132
|
+
created_by_field?: string;
|
|
133
|
+
updated_by_field?: string;
|
|
134
|
+
include_id?: boolean;
|
|
135
|
+
include_user_fk?: boolean;
|
|
136
|
+
}
|
|
137
|
+
/** Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization. */
|
|
138
|
+
export interface DataPublishableParams {
|
|
139
|
+
is_published_field?: string;
|
|
140
|
+
published_at_field?: string;
|
|
141
|
+
include_id?: boolean;
|
|
142
|
+
}
|
|
143
|
+
/** Auto-generates URL-friendly slugs from field values on insert/update. Attaches BEFORE INSERT and BEFORE UPDATE triggers that call inflection.slugify() on the target field. References fields by name in data jsonb. */
|
|
144
|
+
export interface DataSlugParams {
|
|
145
|
+
field_name: string;
|
|
146
|
+
source_field_name?: string;
|
|
147
|
+
}
|
|
148
|
+
/** Adds soft delete support with deleted_at and is_deleted columns. */
|
|
149
|
+
export interface DataSoftDeleteParams {
|
|
150
|
+
deleted_at_field?: string;
|
|
151
|
+
is_deleted_field?: string;
|
|
152
|
+
include_id?: boolean;
|
|
153
|
+
}
|
|
154
|
+
/** Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided. */
|
|
155
|
+
export interface DataStatusFieldParams {
|
|
104
156
|
field_name?: string;
|
|
157
|
+
type?: string;
|
|
158
|
+
default_value?: string;
|
|
159
|
+
is_required?: boolean;
|
|
160
|
+
allowed_values?: string[];
|
|
105
161
|
}
|
|
106
|
-
/**
|
|
107
|
-
export interface
|
|
108
|
-
|
|
162
|
+
/** Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering. */
|
|
163
|
+
export interface DataTagsParams {
|
|
164
|
+
field_name?: string;
|
|
165
|
+
default_value?: string;
|
|
166
|
+
is_required?: boolean;
|
|
109
167
|
}
|
|
110
|
-
/**
|
|
111
|
-
export interface
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
168
|
+
/** Adds automatic timestamp tracking with created_at and updated_at columns. */
|
|
169
|
+
export interface DataTimestampsParams {
|
|
170
|
+
created_at_field?: string;
|
|
171
|
+
updated_at_field?: string;
|
|
172
|
+
include_id?: boolean;
|
|
115
173
|
}
|
|
116
|
-
/** Creates a user profiles table with standard profile fields (profile_picture, bio, first_name, last_name, tags, desired). Uses AuthzDirectOwner for edit access and AuthzAllowAll for select. */
|
|
117
|
-
export type TableUserProfilesParams = {};
|
|
118
174
|
/** Creates an organization settings table with standard business fields (legal_name, address fields). Uses AuthzEntityMembership for access control. */
|
|
119
175
|
export type TableOrganizationSettingsParams = {};
|
|
176
|
+
/** Creates a user profiles table with standard profile fields (profile_picture, bio, first_name, last_name, tags, desired). Uses AuthzDirectOwner for edit access and AuthzAllowAll for select. */
|
|
177
|
+
export type TableUserProfilesParams = {};
|
|
120
178
|
/** Creates a user settings table for user-specific configuration. Uses AuthzDirectOwner for access control. */
|
|
121
179
|
export type TableUserSettingsParams = {};
|
|
122
|
-
/**
|
|
123
|
-
export interface
|
|
124
|
-
field_name
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
[key: string]: unknown;
|
|
130
|
-
};
|
|
131
|
-
include_stale_field?: boolean;
|
|
132
|
-
source_fields?: string[];
|
|
133
|
-
enqueue_job?: boolean;
|
|
134
|
-
job_task_name?: string;
|
|
135
|
-
stale_strategy?: 'column' | 'null' | 'hash';
|
|
136
|
-
chunks?: {
|
|
137
|
-
content_field_name?: string;
|
|
138
|
-
chunk_size?: number;
|
|
139
|
-
chunk_overlap?: number;
|
|
140
|
-
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
141
|
-
metadata_fields?: {
|
|
142
|
-
[key: string]: unknown;
|
|
143
|
-
};
|
|
144
|
-
enqueue_chunking_job?: boolean;
|
|
145
|
-
chunking_task_name?: string;
|
|
146
|
-
};
|
|
180
|
+
/** Creates a BM25 index on an existing text column using pg_textsearch. Enables statistical relevance ranking with configurable k1 and b parameters. The BM25 index is auto-detected by graphile-search. */
|
|
181
|
+
export interface SearchBm25Params {
|
|
182
|
+
field_name: string;
|
|
183
|
+
text_config?: string;
|
|
184
|
+
k1?: number;
|
|
185
|
+
b?: number;
|
|
186
|
+
search_score_weight?: number;
|
|
147
187
|
}
|
|
148
188
|
/** Adds a tsvector column with GIN index and automatic trigger population from source fields. Enables PostgreSQL full-text search with configurable weights and language support. Leverages the existing metaschema full_text_search infrastructure. */
|
|
149
189
|
export interface SearchFullTextParams {
|
|
@@ -155,13 +195,31 @@ export interface SearchFullTextParams {
|
|
|
155
195
|
}[];
|
|
156
196
|
search_score_weight?: number;
|
|
157
197
|
}
|
|
158
|
-
/**
|
|
159
|
-
export interface
|
|
160
|
-
field_name
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
198
|
+
/** Adds a PostGIS geometry or geography column with a spatial index (GiST or SP-GiST). Supports configurable geometry types (Point, Polygon, etc.), SRID, and dimensionality. The graphile-postgis plugin auto-detects geometry/geography columns by codec type for spatial filtering (ST_Contains, ST_DWithin, bbox operators). */
|
|
199
|
+
export interface SearchSpatialParams {
|
|
200
|
+
field_name?: string;
|
|
201
|
+
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
202
|
+
srid?: number;
|
|
203
|
+
dimension?: 2 | 3 | 4;
|
|
204
|
+
use_geography?: boolean;
|
|
205
|
+
index_method?: 'gist' | 'spgist';
|
|
206
|
+
}
|
|
207
|
+
/** Creates a derived/materialized geometry field on the parent table that automatically aggregates geometries from a source (child) table via triggers. When child rows are inserted/updated/deleted, the parent aggregate field is recalculated using the specified PostGIS aggregation function (ST_Union, ST_Collect, ST_ConvexHull, ST_ConcaveHull). Useful for materializing spatial boundaries from collections of points or polygons. */
|
|
208
|
+
export interface SearchSpatialAggregateParams {
|
|
209
|
+
field_name?: string;
|
|
210
|
+
source_table_id: string;
|
|
211
|
+
source_geom_field?: string;
|
|
212
|
+
source_fk_field: string;
|
|
213
|
+
aggregate_function?: 'union' | 'collect' | 'convex_hull' | 'concave_hull';
|
|
214
|
+
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
215
|
+
srid?: number;
|
|
216
|
+
dimension?: 2 | 3 | 4;
|
|
217
|
+
use_geography?: boolean;
|
|
218
|
+
index_method?: 'gist' | 'spgist';
|
|
219
|
+
}
|
|
220
|
+
/** Creates GIN trigram indexes (gin_trgm_ops) on specified text/citext fields for fuzzy LIKE/ILIKE/similarity search. Adds @trgmSearch smart tag for PostGraphile integration. Fields must already exist on the table. */
|
|
221
|
+
export interface SearchTrgmParams {
|
|
222
|
+
fields: string[];
|
|
165
223
|
}
|
|
166
224
|
/** Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag. */
|
|
167
225
|
export interface SearchUnifiedParams {
|
|
@@ -211,32 +269,54 @@ export interface SearchUnifiedParams {
|
|
|
211
269
|
boost_recency_decay?: number;
|
|
212
270
|
};
|
|
213
271
|
}
|
|
214
|
-
/** Adds a
|
|
215
|
-
export interface
|
|
272
|
+
/** Adds a vector embedding column with HNSW or IVFFlat index for similarity search. Supports configurable dimensions, distance metrics (cosine, l2, ip), stale tracking strategies (column, null, hash), and automatic job enqueue triggers for embedding generation. */
|
|
273
|
+
export interface SearchVectorParams {
|
|
216
274
|
field_name?: string;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
275
|
+
dimensions?: number;
|
|
276
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
277
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
278
|
+
index_options?: {
|
|
279
|
+
[key: string]: unknown;
|
|
280
|
+
};
|
|
281
|
+
include_stale_field?: boolean;
|
|
282
|
+
source_fields?: string[];
|
|
283
|
+
enqueue_job?: boolean;
|
|
284
|
+
job_task_name?: string;
|
|
285
|
+
stale_strategy?: 'column' | 'null' | 'hash';
|
|
286
|
+
chunks?: {
|
|
287
|
+
content_field_name?: string;
|
|
288
|
+
chunk_size?: number;
|
|
289
|
+
chunk_overlap?: number;
|
|
290
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
291
|
+
metadata_fields?: {
|
|
292
|
+
[key: string]: unknown;
|
|
293
|
+
};
|
|
294
|
+
enqueue_chunking_job?: boolean;
|
|
295
|
+
chunking_task_name?: string;
|
|
296
|
+
};
|
|
222
297
|
}
|
|
223
|
-
/**
|
|
224
|
-
export
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
use_geography?: boolean;
|
|
234
|
-
index_method?: 'gist' | 'spgist';
|
|
298
|
+
/** Allows all access. Generates TRUE expression. */
|
|
299
|
+
export type AuthzAllowAllParams = {};
|
|
300
|
+
/** App-level membership check (membership_type=1). Verifies the user has app membership (optionally with specific permission) without binding to any entity from the row. Uses EXISTS subquery against SPRT table. Replaces AuthzMembership for clarity. */
|
|
301
|
+
export interface AuthzAppMembershipParams {
|
|
302
|
+
membership_type?: number | string;
|
|
303
|
+
entity_type?: string;
|
|
304
|
+
permission?: string;
|
|
305
|
+
permissions?: string[];
|
|
306
|
+
is_admin?: boolean;
|
|
307
|
+
is_owner?: boolean;
|
|
235
308
|
}
|
|
236
|
-
/**
|
|
237
|
-
export interface
|
|
238
|
-
|
|
309
|
+
/** Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes. */
|
|
310
|
+
export interface AuthzCompositeParams {
|
|
311
|
+
BoolExpr?: {
|
|
312
|
+
boolop?: 'AND_EXPR' | 'OR_EXPR' | 'NOT_EXPR';
|
|
313
|
+
args?: {
|
|
314
|
+
[key: string]: unknown;
|
|
315
|
+
}[];
|
|
316
|
+
};
|
|
239
317
|
}
|
|
318
|
+
/** Denies all access. Generates FALSE expression. */
|
|
319
|
+
export type AuthzDenyAllParams = {};
|
|
240
320
|
/** Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries. */
|
|
241
321
|
export interface AuthzDirectOwnerParams {
|
|
242
322
|
entity_field: string;
|
|
@@ -245,8 +325,10 @@ export interface AuthzDirectOwnerParams {
|
|
|
245
325
|
export interface AuthzDirectOwnerAnyParams {
|
|
246
326
|
entity_fields: string[];
|
|
247
327
|
}
|
|
248
|
-
/** Membership check
|
|
249
|
-
export interface
|
|
328
|
+
/** Membership check scoped by a field on the row through the SPRT table. Verifies user has membership in the entity referenced by the row. */
|
|
329
|
+
export interface AuthzEntityMembershipParams {
|
|
330
|
+
entity_field: string;
|
|
331
|
+
sel_field?: string;
|
|
250
332
|
membership_type?: number | string;
|
|
251
333
|
entity_type?: string;
|
|
252
334
|
permission?: string;
|
|
@@ -254,9 +336,25 @@ export interface AuthzMembershipParams {
|
|
|
254
336
|
is_admin?: boolean;
|
|
255
337
|
is_owner?: boolean;
|
|
256
338
|
}
|
|
257
|
-
/**
|
|
258
|
-
export interface
|
|
259
|
-
|
|
339
|
+
/** Check if current user is in an array column on the same row. */
|
|
340
|
+
export interface AuthzMemberListParams {
|
|
341
|
+
array_field: string;
|
|
342
|
+
}
|
|
343
|
+
/** Restrictive policy that blocks read-only members from mutations. Checks actor_id + is_read_only IS NOT TRUE on the SPRT. Designed to run as a restrictive counterpart after a permissive AuthzEntityMembership policy has already verified membership. */
|
|
344
|
+
export interface AuthzNotReadOnlyParams {
|
|
345
|
+
entity_field: string;
|
|
346
|
+
membership_type?: number | string;
|
|
347
|
+
}
|
|
348
|
+
/** Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data. */
|
|
349
|
+
export interface AuthzOrgHierarchyParams {
|
|
350
|
+
direction: 'up' | 'down';
|
|
351
|
+
entity_field?: string;
|
|
352
|
+
anchor_field: string;
|
|
353
|
+
max_depth?: number;
|
|
354
|
+
}
|
|
355
|
+
/** Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers. */
|
|
356
|
+
export interface AuthzPeerOwnershipParams {
|
|
357
|
+
owner_field: string;
|
|
260
358
|
membership_type?: number | string;
|
|
261
359
|
entity_type?: string;
|
|
262
360
|
permission?: string;
|
|
@@ -264,9 +362,17 @@ export interface AuthzEntityMembershipParams {
|
|
|
264
362
|
is_admin?: boolean;
|
|
265
363
|
is_owner?: boolean;
|
|
266
364
|
}
|
|
365
|
+
/** Published state access control. Restricts access to records that are published. */
|
|
366
|
+
export interface AuthzPublishableParams {
|
|
367
|
+
is_published_field?: string;
|
|
368
|
+
published_at_field?: string;
|
|
369
|
+
require_published_at?: boolean;
|
|
370
|
+
}
|
|
267
371
|
/** JOIN-based membership verification through related tables. Joins SPRT table with another table to verify membership. */
|
|
268
372
|
export interface AuthzRelatedEntityMembershipParams {
|
|
269
373
|
entity_field: string;
|
|
374
|
+
sel_field?: string;
|
|
375
|
+
sprt_join_field?: string;
|
|
270
376
|
membership_type?: number | string;
|
|
271
377
|
entity_type?: string;
|
|
272
378
|
obj_table_id?: string;
|
|
@@ -279,30 +385,6 @@ export interface AuthzRelatedEntityMembershipParams {
|
|
|
279
385
|
is_admin?: boolean;
|
|
280
386
|
is_owner?: boolean;
|
|
281
387
|
}
|
|
282
|
-
/** Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data. */
|
|
283
|
-
export interface AuthzOrgHierarchyParams {
|
|
284
|
-
direction: 'up' | 'down';
|
|
285
|
-
entity_field?: string;
|
|
286
|
-
anchor_field: string;
|
|
287
|
-
max_depth?: number;
|
|
288
|
-
}
|
|
289
|
-
/** Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided. */
|
|
290
|
-
export interface AuthzTemporalParams {
|
|
291
|
-
valid_from_field?: string;
|
|
292
|
-
valid_until_field?: string;
|
|
293
|
-
valid_from_inclusive?: boolean;
|
|
294
|
-
valid_until_inclusive?: boolean;
|
|
295
|
-
}
|
|
296
|
-
/** Published state access control. Restricts access to records that are published. */
|
|
297
|
-
export interface AuthzPublishableParams {
|
|
298
|
-
is_published_field?: string;
|
|
299
|
-
published_at_field?: string;
|
|
300
|
-
require_published_at?: boolean;
|
|
301
|
-
}
|
|
302
|
-
/** Check if current user is in an array column on the same row. */
|
|
303
|
-
export interface AuthzMemberListParams {
|
|
304
|
-
array_field: string;
|
|
305
|
-
}
|
|
306
388
|
/** Array membership check in a related table. */
|
|
307
389
|
export interface AuthzRelatedMemberListParams {
|
|
308
390
|
owned_schema: string;
|
|
@@ -311,34 +393,6 @@ export interface AuthzRelatedMemberListParams {
|
|
|
311
393
|
owned_table_ref_key: string;
|
|
312
394
|
this_object_key: string;
|
|
313
395
|
}
|
|
314
|
-
/** Allows all access. Generates TRUE expression. */
|
|
315
|
-
export type AuthzAllowAllParams = {};
|
|
316
|
-
/** Denies all access. Generates FALSE expression. */
|
|
317
|
-
export type AuthzDenyAllParams = {};
|
|
318
|
-
/** Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes. */
|
|
319
|
-
export interface AuthzCompositeParams {
|
|
320
|
-
BoolExpr?: {
|
|
321
|
-
boolop?: 'AND_EXPR' | 'OR_EXPR' | 'NOT_EXPR';
|
|
322
|
-
args?: {
|
|
323
|
-
[key: string]: unknown;
|
|
324
|
-
}[];
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
/** Restrictive policy that blocks read-only members from mutations. Checks actor_id + is_read_only IS NOT TRUE on the SPRT. Designed to run as a restrictive counterpart after a permissive AuthzEntityMembership policy has already verified membership. */
|
|
328
|
-
export interface AuthzNotReadOnlyParams {
|
|
329
|
-
entity_field: string;
|
|
330
|
-
membership_type?: number | string;
|
|
331
|
-
}
|
|
332
|
-
/** Peer visibility through shared entity membership. Authorizes access to user-owned rows when the owner and current user are both members of the same entity. Self-joins the SPRT table to find peers. */
|
|
333
|
-
export interface AuthzPeerOwnershipParams {
|
|
334
|
-
owner_field: string;
|
|
335
|
-
membership_type?: number | string;
|
|
336
|
-
entity_type?: string;
|
|
337
|
-
permission?: string;
|
|
338
|
-
permissions?: string[];
|
|
339
|
-
is_admin?: boolean;
|
|
340
|
-
is_owner?: boolean;
|
|
341
|
-
}
|
|
342
396
|
/** Peer visibility through shared entity membership via a related table. Like AuthzPeerOwnership but the owning user is resolved through a FK JOIN to a related table. Combines SPRT self-join with object table JOIN. */
|
|
343
397
|
export interface AuthzRelatedPeerOwnershipParams {
|
|
344
398
|
entity_field: string;
|
|
@@ -355,6 +409,13 @@ export interface AuthzRelatedPeerOwnershipParams {
|
|
|
355
409
|
is_admin?: boolean;
|
|
356
410
|
is_owner?: boolean;
|
|
357
411
|
}
|
|
412
|
+
/** Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided. */
|
|
413
|
+
export interface AuthzTemporalParams {
|
|
414
|
+
valid_from_field?: string;
|
|
415
|
+
valid_until_field?: string;
|
|
416
|
+
valid_from_inclusive?: boolean;
|
|
417
|
+
valid_until_inclusive?: boolean;
|
|
418
|
+
}
|
|
358
419
|
/** Creates a foreign key field on the source table referencing the target table. Auto-derives the FK field name from the target table name using inflection (e.g., projects derives project_id). delete_action is required and must be explicitly provided by the caller. */
|
|
359
420
|
export interface RelationBelongsToParams {
|
|
360
421
|
source_table_id: string;
|
|
@@ -363,16 +424,16 @@ export interface RelationBelongsToParams {
|
|
|
363
424
|
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
364
425
|
is_required?: boolean;
|
|
365
426
|
}
|
|
366
|
-
/** Creates a foreign key field
|
|
367
|
-
export interface
|
|
427
|
+
/** Creates a foreign key field on the target table referencing the source table. Inverse of RelationBelongsTo — same FK, different perspective. "projects has many tasks" creates tasks.project_id. Auto-derives the FK field name from the source table name using inflection. delete_action is required and must be explicitly provided by the caller. */
|
|
428
|
+
export interface RelationHasManyParams {
|
|
368
429
|
source_table_id: string;
|
|
369
430
|
target_table_id: string;
|
|
370
431
|
field_name?: string;
|
|
371
432
|
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
372
433
|
is_required?: boolean;
|
|
373
434
|
}
|
|
374
|
-
/** Creates a foreign key field
|
|
375
|
-
export interface
|
|
435
|
+
/** Creates a foreign key field with a unique constraint on the source table referencing the target table. Enforces 1:1 cardinality. Auto-derives the FK field name from the target table name using inflection. delete_action is required and must be explicitly provided by the caller. */
|
|
436
|
+
export interface RelationHasOneParams {
|
|
376
437
|
source_table_id: string;
|
|
377
438
|
target_table_id: string;
|
|
378
439
|
field_name?: string;
|
|
@@ -416,11 +477,21 @@ export interface RelationSpatialParams {
|
|
|
416
477
|
operator: 'st_contains' | 'st_within' | 'st_intersects' | 'st_covers' | 'st_coveredby' | 'st_overlaps' | 'st_touches' | 'st_dwithin';
|
|
417
478
|
param_name?: string;
|
|
418
479
|
}
|
|
419
|
-
/**
|
|
420
|
-
export interface
|
|
480
|
+
/** View with GROUP BY and aggregate functions. Useful for summary/reporting views. */
|
|
481
|
+
export interface ViewAggregatedParams {
|
|
421
482
|
source_table_id: string;
|
|
422
|
-
|
|
423
|
-
|
|
483
|
+
group_by_fields: string[];
|
|
484
|
+
aggregates: {
|
|
485
|
+
function: 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX';
|
|
486
|
+
field?: string;
|
|
487
|
+
alias: string;
|
|
488
|
+
}[];
|
|
489
|
+
}
|
|
490
|
+
/** Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.). */
|
|
491
|
+
export interface ViewCompositeParams {
|
|
492
|
+
query_ast: {
|
|
493
|
+
[key: string]: unknown;
|
|
494
|
+
};
|
|
424
495
|
}
|
|
425
496
|
/** Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter. */
|
|
426
497
|
export interface ViewFilteredTableParams {
|
|
@@ -445,21 +516,11 @@ export interface ViewJoinedTablesParams {
|
|
|
445
516
|
}[];
|
|
446
517
|
field_ids?: string[];
|
|
447
518
|
}
|
|
448
|
-
/**
|
|
449
|
-
export interface
|
|
519
|
+
/** Simple column selection from a single source table. Projects all or specific fields. */
|
|
520
|
+
export interface ViewTableProjectionParams {
|
|
450
521
|
source_table_id: string;
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
function: 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX';
|
|
454
|
-
field?: string;
|
|
455
|
-
alias: string;
|
|
456
|
-
}[];
|
|
457
|
-
}
|
|
458
|
-
/** Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.). */
|
|
459
|
-
export interface ViewCompositeParams {
|
|
460
|
-
query_ast: {
|
|
461
|
-
[key: string]: unknown;
|
|
462
|
-
};
|
|
522
|
+
field_ids?: string[];
|
|
523
|
+
field_names?: string[];
|
|
463
524
|
}
|
|
464
525
|
/** A custom field (column) to add to a blueprint table. */
|
|
465
526
|
export interface BlueprintField {
|
|
@@ -477,7 +538,7 @@ export interface BlueprintField {
|
|
|
477
538
|
/** An RLS policy entry for a blueprint table. Uses $type to match the blueprint JSON convention. */
|
|
478
539
|
export interface BlueprintPolicy {
|
|
479
540
|
/** Authz* policy type name (e.g., "AuthzDirectOwner", "AuthzAllowAll"). */
|
|
480
|
-
$type: '
|
|
541
|
+
$type: 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal';
|
|
481
542
|
/** Privileges this policy applies to (e.g., ["select"], ["insert", "update", "delete"]). */
|
|
482
543
|
privileges?: string[];
|
|
483
544
|
/** Whether this policy is permissive (true) or restrictive (false). Defaults to true. */
|
|
@@ -601,11 +662,10 @@ export interface BlueprintStorageConfig {
|
|
|
601
662
|
default_max_file_size?: number;
|
|
602
663
|
/** CORS allowed origins for the storage module. */
|
|
603
664
|
allowed_origins?: string[];
|
|
604
|
-
/** Per-table overrides for storage tables. Each key targets a specific storage table (files, buckets
|
|
665
|
+
/** Per-table overrides for storage tables. Each key targets a specific storage table (files, buckets) and uses the same shape as table_provision: { nodes, fields, grants, use_rls, policies }. Fanned out to secure_table_provision targeting the corresponding table. When a key includes policies[], those REPLACE the default storage policies for that table; tables without a key still get defaults. */
|
|
605
666
|
provisions?: {
|
|
606
667
|
files?: BlueprintEntityTableProvision;
|
|
607
668
|
buckets?: BlueprintEntityTableProvision;
|
|
608
|
-
upload_requests?: BlueprintEntityTableProvision;
|
|
609
669
|
};
|
|
610
670
|
}
|
|
611
671
|
/** Override object for the entity table created by a BlueprintEntityType. Shape mirrors BlueprintTable / secure_table_provision vocabulary. When supplied, policies[] replaces the default entity-table policies entirely. */
|
|
@@ -644,7 +704,7 @@ export interface BlueprintEntityType {
|
|
|
644
704
|
has_profiles?: boolean;
|
|
645
705
|
/** Whether to provision a levels module for this entity type. Defaults to false. */
|
|
646
706
|
has_levels?: boolean;
|
|
647
|
-
/** Whether to provision a storage module (buckets, files
|
|
707
|
+
/** Whether to provision a storage module (buckets, files tables) for this entity type. Defaults to false. */
|
|
648
708
|
has_storage?: boolean;
|
|
649
709
|
/** Whether to provision entity-scoped invite tables ({prefix}_invites, {prefix}_claimed_invites) and a submit_{prefix}_invite_code() function. Defaults to false. */
|
|
650
710
|
has_invites?: boolean;
|
|
@@ -656,139 +716,148 @@ export interface BlueprintEntityType {
|
|
|
656
716
|
storage?: BlueprintStorageConfig;
|
|
657
717
|
}
|
|
658
718
|
/** String shorthand -- just the node type name. */
|
|
659
|
-
export type BlueprintNodeShorthand = '
|
|
719
|
+
export type BlueprintNodeShorthand = 'AuthzAllowAll' | 'AuthzAppMembership' | 'AuthzComposite' | 'AuthzDenyAll' | 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzEntityMembership' | 'AuthzMemberList' | 'AuthzNotReadOnly' | 'AuthzOrgHierarchy' | 'AuthzPeerOwnership' | 'AuthzPublishable' | 'AuthzRelatedEntityMembership' | 'AuthzRelatedMemberList' | 'AuthzRelatedPeerOwnership' | 'AuthzTemporal' | 'DataCompositeField' | 'DataDirectOwner' | 'DataEntityMembership' | 'DataFeatureFlag' | 'DataForceCurrentUser' | 'DataId' | 'DataImageEmbedding' | 'DataImmutableFields' | 'DataInflection' | 'DataInheritFromParent' | 'DataJobTrigger' | 'DataLimitCounter' | 'DataJsonb' | 'DataOwnedFields' | 'DataOwnershipInEntity' | 'DataPeoplestamps' | 'DataPublishable' | 'DataSlug' | 'DataSoftDelete' | 'DataStatusField' | 'DataTags' | 'DataTimestamps' | 'SearchBm25' | 'SearchFullText' | 'SearchSpatial' | 'SearchSpatialAggregate' | 'SearchTrgm' | 'SearchUnified' | 'SearchVector' | 'TableOrganizationSettings' | 'TableUserProfiles' | 'TableUserSettings';
|
|
660
720
|
/** Object form -- { $type, data } with typed parameters. */
|
|
661
721
|
export type BlueprintNodeObject = {
|
|
722
|
+
$type: 'AuthzAllowAll';
|
|
723
|
+
data?: Record<string, never>;
|
|
724
|
+
} | {
|
|
725
|
+
$type: 'AuthzAppMembership';
|
|
726
|
+
data: AuthzAppMembershipParams;
|
|
727
|
+
} | {
|
|
728
|
+
$type: 'AuthzComposite';
|
|
729
|
+
data: AuthzCompositeParams;
|
|
730
|
+
} | {
|
|
731
|
+
$type: 'AuthzDenyAll';
|
|
732
|
+
data?: Record<string, never>;
|
|
733
|
+
} | {
|
|
662
734
|
$type: 'AuthzDirectOwner';
|
|
663
735
|
data: AuthzDirectOwnerParams;
|
|
664
736
|
} | {
|
|
665
737
|
$type: 'AuthzDirectOwnerAny';
|
|
666
738
|
data: AuthzDirectOwnerAnyParams;
|
|
667
|
-
} | {
|
|
668
|
-
$type: 'AuthzMembership';
|
|
669
|
-
data: AuthzMembershipParams;
|
|
670
739
|
} | {
|
|
671
740
|
$type: 'AuthzEntityMembership';
|
|
672
741
|
data: AuthzEntityMembershipParams;
|
|
673
742
|
} | {
|
|
674
|
-
$type: '
|
|
675
|
-
data:
|
|
743
|
+
$type: 'AuthzMemberList';
|
|
744
|
+
data: AuthzMemberListParams;
|
|
745
|
+
} | {
|
|
746
|
+
$type: 'AuthzNotReadOnly';
|
|
747
|
+
data: AuthzNotReadOnlyParams;
|
|
676
748
|
} | {
|
|
677
749
|
$type: 'AuthzOrgHierarchy';
|
|
678
750
|
data: AuthzOrgHierarchyParams;
|
|
679
751
|
} | {
|
|
680
|
-
$type: '
|
|
681
|
-
data:
|
|
752
|
+
$type: 'AuthzPeerOwnership';
|
|
753
|
+
data: AuthzPeerOwnershipParams;
|
|
682
754
|
} | {
|
|
683
755
|
$type: 'AuthzPublishable';
|
|
684
756
|
data: AuthzPublishableParams;
|
|
685
757
|
} | {
|
|
686
|
-
$type: '
|
|
687
|
-
data:
|
|
758
|
+
$type: 'AuthzRelatedEntityMembership';
|
|
759
|
+
data: AuthzRelatedEntityMembershipParams;
|
|
688
760
|
} | {
|
|
689
761
|
$type: 'AuthzRelatedMemberList';
|
|
690
762
|
data: AuthzRelatedMemberListParams;
|
|
691
763
|
} | {
|
|
692
|
-
$type: '
|
|
693
|
-
data
|
|
764
|
+
$type: 'AuthzRelatedPeerOwnership';
|
|
765
|
+
data: AuthzRelatedPeerOwnershipParams;
|
|
694
766
|
} | {
|
|
695
|
-
$type: '
|
|
696
|
-
data
|
|
767
|
+
$type: 'AuthzTemporal';
|
|
768
|
+
data: AuthzTemporalParams;
|
|
697
769
|
} | {
|
|
698
|
-
$type: '
|
|
699
|
-
data:
|
|
770
|
+
$type: 'DataCompositeField';
|
|
771
|
+
data: DataCompositeFieldParams;
|
|
700
772
|
} | {
|
|
701
|
-
$type: '
|
|
702
|
-
data:
|
|
773
|
+
$type: 'DataDirectOwner';
|
|
774
|
+
data: DataDirectOwnerParams;
|
|
703
775
|
} | {
|
|
704
|
-
$type: '
|
|
705
|
-
data:
|
|
776
|
+
$type: 'DataEntityMembership';
|
|
777
|
+
data: DataEntityMembershipParams;
|
|
706
778
|
} | {
|
|
707
|
-
$type: '
|
|
708
|
-
data:
|
|
779
|
+
$type: 'DataFeatureFlag';
|
|
780
|
+
data: DataFeatureFlagParams;
|
|
781
|
+
} | {
|
|
782
|
+
$type: 'DataForceCurrentUser';
|
|
783
|
+
data: DataForceCurrentUserParams;
|
|
709
784
|
} | {
|
|
710
785
|
$type: 'DataId';
|
|
711
786
|
data: DataIdParams;
|
|
712
787
|
} | {
|
|
713
|
-
$type: '
|
|
714
|
-
data:
|
|
788
|
+
$type: 'DataImageEmbedding';
|
|
789
|
+
data: DataImageEmbeddingParams;
|
|
715
790
|
} | {
|
|
716
|
-
$type: '
|
|
717
|
-
data:
|
|
791
|
+
$type: 'DataImmutableFields';
|
|
792
|
+
data: DataImmutableFieldsParams;
|
|
793
|
+
} | {
|
|
794
|
+
$type: 'DataInflection';
|
|
795
|
+
data: DataInflectionParams;
|
|
796
|
+
} | {
|
|
797
|
+
$type: 'DataInheritFromParent';
|
|
798
|
+
data: DataInheritFromParentParams;
|
|
799
|
+
} | {
|
|
800
|
+
$type: 'DataJobTrigger';
|
|
801
|
+
data: DataJobTriggerParams;
|
|
802
|
+
} | {
|
|
803
|
+
$type: 'DataLimitCounter';
|
|
804
|
+
data: DataLimitCounterParams;
|
|
805
|
+
} | {
|
|
806
|
+
$type: 'DataJsonb';
|
|
807
|
+
data: DataJsonbParams;
|
|
808
|
+
} | {
|
|
809
|
+
$type: 'DataOwnedFields';
|
|
810
|
+
data: DataOwnedFieldsParams;
|
|
718
811
|
} | {
|
|
719
812
|
$type: 'DataOwnershipInEntity';
|
|
720
813
|
data: DataOwnershipInEntityParams;
|
|
721
|
-
} | {
|
|
722
|
-
$type: 'DataTimestamps';
|
|
723
|
-
data: DataTimestampsParams;
|
|
724
814
|
} | {
|
|
725
815
|
$type: 'DataPeoplestamps';
|
|
726
816
|
data: DataPeoplestampsParams;
|
|
727
817
|
} | {
|
|
728
818
|
$type: 'DataPublishable';
|
|
729
819
|
data: DataPublishableParams;
|
|
820
|
+
} | {
|
|
821
|
+
$type: 'DataSlug';
|
|
822
|
+
data: DataSlugParams;
|
|
730
823
|
} | {
|
|
731
824
|
$type: 'DataSoftDelete';
|
|
732
825
|
data: DataSoftDeleteParams;
|
|
733
826
|
} | {
|
|
734
|
-
$type: '
|
|
735
|
-
data:
|
|
827
|
+
$type: 'DataStatusField';
|
|
828
|
+
data: DataStatusFieldParams;
|
|
736
829
|
} | {
|
|
737
|
-
$type: '
|
|
738
|
-
data:
|
|
830
|
+
$type: 'DataTags';
|
|
831
|
+
data: DataTagsParams;
|
|
832
|
+
} | {
|
|
833
|
+
$type: 'DataTimestamps';
|
|
834
|
+
data: DataTimestampsParams;
|
|
739
835
|
} | {
|
|
740
836
|
$type: 'SearchBm25';
|
|
741
837
|
data: SearchBm25Params;
|
|
742
838
|
} | {
|
|
743
|
-
$type: '
|
|
744
|
-
data:
|
|
839
|
+
$type: 'SearchFullText';
|
|
840
|
+
data: SearchFullTextParams;
|
|
745
841
|
} | {
|
|
746
842
|
$type: 'SearchSpatial';
|
|
747
843
|
data: SearchSpatialParams;
|
|
748
844
|
} | {
|
|
749
845
|
$type: 'SearchSpatialAggregate';
|
|
750
846
|
data: SearchSpatialAggregateParams;
|
|
751
|
-
} | {
|
|
752
|
-
$type: 'DataJobTrigger';
|
|
753
|
-
data: DataJobTriggerParams;
|
|
754
|
-
} | {
|
|
755
|
-
$type: 'DataTags';
|
|
756
|
-
data: DataTagsParams;
|
|
757
|
-
} | {
|
|
758
|
-
$type: 'DataStatusField';
|
|
759
|
-
data: DataStatusFieldParams;
|
|
760
|
-
} | {
|
|
761
|
-
$type: 'DataJsonb';
|
|
762
|
-
data: DataJsonbParams;
|
|
763
847
|
} | {
|
|
764
848
|
$type: 'SearchTrgm';
|
|
765
849
|
data: SearchTrgmParams;
|
|
766
850
|
} | {
|
|
767
|
-
$type: '
|
|
768
|
-
data:
|
|
769
|
-
} | {
|
|
770
|
-
$type: 'DataInflection';
|
|
771
|
-
data: DataInflectionParams;
|
|
772
|
-
} | {
|
|
773
|
-
$type: 'DataOwnedFields';
|
|
774
|
-
data: DataOwnedFieldsParams;
|
|
775
|
-
} | {
|
|
776
|
-
$type: 'DataInheritFromParent';
|
|
777
|
-
data: DataInheritFromParentParams;
|
|
778
|
-
} | {
|
|
779
|
-
$type: 'DataForceCurrentUser';
|
|
780
|
-
data: DataForceCurrentUserParams;
|
|
781
|
-
} | {
|
|
782
|
-
$type: 'DataImmutableFields';
|
|
783
|
-
data: DataImmutableFieldsParams;
|
|
851
|
+
$type: 'SearchUnified';
|
|
852
|
+
data: SearchUnifiedParams;
|
|
784
853
|
} | {
|
|
785
|
-
$type: '
|
|
786
|
-
data:
|
|
854
|
+
$type: 'SearchVector';
|
|
855
|
+
data: SearchVectorParams;
|
|
787
856
|
} | {
|
|
788
|
-
$type: '
|
|
857
|
+
$type: 'TableOrganizationSettings';
|
|
789
858
|
data?: Record<string, never>;
|
|
790
859
|
} | {
|
|
791
|
-
$type: '
|
|
860
|
+
$type: 'TableUserProfiles';
|
|
792
861
|
data?: Record<string, never>;
|
|
793
862
|
} | {
|
|
794
863
|
$type: 'TableUserSettings';
|
|
@@ -804,18 +873,18 @@ export type BlueprintRelation = {
|
|
|
804
873
|
source_schema_name?: string;
|
|
805
874
|
target_schema_name?: string;
|
|
806
875
|
} & Partial<RelationBelongsToParams> | {
|
|
807
|
-
$type: '
|
|
876
|
+
$type: 'RelationHasMany';
|
|
808
877
|
source_table: string;
|
|
809
878
|
target_table: string;
|
|
810
879
|
source_schema_name?: string;
|
|
811
880
|
target_schema_name?: string;
|
|
812
|
-
} & Partial<
|
|
813
|
-
$type: '
|
|
881
|
+
} & Partial<RelationHasManyParams> | {
|
|
882
|
+
$type: 'RelationHasOne';
|
|
814
883
|
source_table: string;
|
|
815
884
|
target_table: string;
|
|
816
885
|
source_schema_name?: string;
|
|
817
886
|
target_schema_name?: string;
|
|
818
|
-
} & Partial<
|
|
887
|
+
} & Partial<RelationHasOneParams> | {
|
|
819
888
|
$type: 'RelationManyToMany';
|
|
820
889
|
source_table: string;
|
|
821
890
|
target_table: string;
|