node-type-registry 0.17.1 → 0.18.1
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/blueprint-types.generated.d.ts +132 -83
- package/blueprint-types.generated.js +1 -0
- package/codegen/generate-types.js +82 -30
- package/esm/blueprint-types.generated.d.ts +132 -83
- package/esm/blueprint-types.generated.js +1 -0
- package/esm/codegen/generate-types.js +83 -31
- package/package.json +2 -2
|
@@ -39,12 +39,12 @@ export interface DataSoftDeleteParams {
|
|
|
39
39
|
/** 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
40
|
export interface DataJobTriggerParams {
|
|
41
41
|
task_identifier: string;
|
|
42
|
-
payload_strategy?:
|
|
42
|
+
payload_strategy?: 'row' | 'row_id' | 'fields' | 'custom';
|
|
43
43
|
payload_fields?: string[];
|
|
44
44
|
payload_custom?: {
|
|
45
45
|
[key: string]: unknown;
|
|
46
46
|
};
|
|
47
|
-
events?: (
|
|
47
|
+
events?: ('INSERT' | 'UPDATE' | 'DELETE')[];
|
|
48
48
|
include_old?: boolean;
|
|
49
49
|
include_meta?: boolean;
|
|
50
50
|
condition_field?: string;
|
|
@@ -85,7 +85,7 @@ export interface DataSlugParams {
|
|
|
85
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
86
|
export interface DataInflectionParams {
|
|
87
87
|
field_name: string;
|
|
88
|
-
ops: (
|
|
88
|
+
ops: ('plural' | 'singular' | 'camel' | 'pascal' | 'dashed' | 'slugify' | 'underscore' | 'lower' | 'upper')[];
|
|
89
89
|
}
|
|
90
90
|
/** 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
91
|
export interface DataOwnedFieldsParams {
|
|
@@ -111,7 +111,7 @@ export interface DataImmutableFieldsParams {
|
|
|
111
111
|
export interface DataCompositeFieldParams {
|
|
112
112
|
target?: string;
|
|
113
113
|
source_fields: string[];
|
|
114
|
-
format?:
|
|
114
|
+
format?: 'labeled' | 'plain';
|
|
115
115
|
}
|
|
116
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
117
|
export type TableUserProfilesParams = {};
|
|
@@ -123,8 +123,8 @@ export type TableUserSettingsParams = {};
|
|
|
123
123
|
export interface SearchVectorParams {
|
|
124
124
|
field_name?: string;
|
|
125
125
|
dimensions?: number;
|
|
126
|
-
index_method?:
|
|
127
|
-
metric?:
|
|
126
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
127
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
128
128
|
index_options?: {
|
|
129
129
|
[key: string]: unknown;
|
|
130
130
|
};
|
|
@@ -132,12 +132,12 @@ export interface SearchVectorParams {
|
|
|
132
132
|
source_fields?: string[];
|
|
133
133
|
enqueue_job?: boolean;
|
|
134
134
|
job_task_name?: string;
|
|
135
|
-
stale_strategy?:
|
|
135
|
+
stale_strategy?: 'column' | 'null' | 'hash';
|
|
136
136
|
chunks?: {
|
|
137
137
|
content_field_name?: string;
|
|
138
138
|
chunk_size?: number;
|
|
139
139
|
chunk_overlap?: number;
|
|
140
|
-
chunk_strategy?:
|
|
140
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
141
141
|
metadata_fields?: {
|
|
142
142
|
[key: string]: unknown;
|
|
143
143
|
};
|
|
@@ -150,7 +150,7 @@ export interface SearchFullTextParams {
|
|
|
150
150
|
field_name?: string;
|
|
151
151
|
source_fields: {
|
|
152
152
|
field: string;
|
|
153
|
-
weight?:
|
|
153
|
+
weight?: 'A' | 'B' | 'C' | 'D';
|
|
154
154
|
lang?: string;
|
|
155
155
|
}[];
|
|
156
156
|
search_score_weight?: number;
|
|
@@ -169,7 +169,7 @@ export interface SearchUnifiedParams {
|
|
|
169
169
|
field_name?: string;
|
|
170
170
|
source_fields?: {
|
|
171
171
|
field: string;
|
|
172
|
-
weight?:
|
|
172
|
+
weight?: 'A' | 'B' | 'C' | 'D';
|
|
173
173
|
lang?: string;
|
|
174
174
|
}[];
|
|
175
175
|
search_score_weight?: number;
|
|
@@ -184,15 +184,15 @@ export interface SearchUnifiedParams {
|
|
|
184
184
|
embedding?: {
|
|
185
185
|
field_name?: string;
|
|
186
186
|
dimensions?: number;
|
|
187
|
-
index_method?:
|
|
188
|
-
metric?:
|
|
187
|
+
index_method?: 'hnsw' | 'ivfflat';
|
|
188
|
+
metric?: 'cosine' | 'l2' | 'ip';
|
|
189
189
|
source_fields?: string[];
|
|
190
190
|
search_score_weight?: number;
|
|
191
191
|
chunks?: {
|
|
192
192
|
content_field_name?: string;
|
|
193
193
|
chunk_size?: number;
|
|
194
194
|
chunk_overlap?: number;
|
|
195
|
-
chunk_strategy?:
|
|
195
|
+
chunk_strategy?: 'fixed' | 'sentence' | 'paragraph' | 'semantic';
|
|
196
196
|
metadata_fields?: {
|
|
197
197
|
[key: string]: unknown;
|
|
198
198
|
};
|
|
@@ -205,7 +205,7 @@ export interface SearchUnifiedParams {
|
|
|
205
205
|
weights?: {
|
|
206
206
|
[key: string]: unknown;
|
|
207
207
|
};
|
|
208
|
-
normalization?:
|
|
208
|
+
normalization?: 'linear' | 'sigmoid';
|
|
209
209
|
boost_recent?: boolean;
|
|
210
210
|
boost_recency_field?: string;
|
|
211
211
|
boost_recency_decay?: number;
|
|
@@ -214,11 +214,11 @@ export interface SearchUnifiedParams {
|
|
|
214
214
|
/** 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). */
|
|
215
215
|
export interface SearchSpatialParams {
|
|
216
216
|
field_name?: string;
|
|
217
|
-
geometry_type?:
|
|
217
|
+
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
218
218
|
srid?: number;
|
|
219
219
|
dimension?: 2 | 3 | 4;
|
|
220
220
|
use_geography?: boolean;
|
|
221
|
-
index_method?:
|
|
221
|
+
index_method?: 'gist' | 'spgist';
|
|
222
222
|
}
|
|
223
223
|
/** 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. */
|
|
224
224
|
export interface SearchSpatialAggregateParams {
|
|
@@ -226,12 +226,12 @@ export interface SearchSpatialAggregateParams {
|
|
|
226
226
|
source_table_id: string;
|
|
227
227
|
source_geom_field?: string;
|
|
228
228
|
source_fk_field: string;
|
|
229
|
-
aggregate_function?:
|
|
230
|
-
geometry_type?:
|
|
229
|
+
aggregate_function?: 'union' | 'collect' | 'convex_hull' | 'concave_hull';
|
|
230
|
+
geometry_type?: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Geometry';
|
|
231
231
|
srid?: number;
|
|
232
232
|
dimension?: 2 | 3 | 4;
|
|
233
233
|
use_geography?: boolean;
|
|
234
|
-
index_method?:
|
|
234
|
+
index_method?: 'gist' | 'spgist';
|
|
235
235
|
}
|
|
236
236
|
/** 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. */
|
|
237
237
|
export interface SearchTrgmParams {
|
|
@@ -281,7 +281,7 @@ export interface AuthzRelatedEntityMembershipParams {
|
|
|
281
281
|
}
|
|
282
282
|
/** Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data. */
|
|
283
283
|
export interface AuthzOrgHierarchyParams {
|
|
284
|
-
direction:
|
|
284
|
+
direction: 'up' | 'down';
|
|
285
285
|
entity_field?: string;
|
|
286
286
|
anchor_field: string;
|
|
287
287
|
max_depth?: number;
|
|
@@ -318,7 +318,7 @@ export type AuthzDenyAllParams = {};
|
|
|
318
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
319
|
export interface AuthzCompositeParams {
|
|
320
320
|
BoolExpr?: {
|
|
321
|
-
boolop?:
|
|
321
|
+
boolop?: 'AND_EXPR' | 'OR_EXPR' | 'NOT_EXPR';
|
|
322
322
|
args?: {
|
|
323
323
|
[key: string]: unknown;
|
|
324
324
|
}[];
|
|
@@ -360,7 +360,7 @@ export interface RelationBelongsToParams {
|
|
|
360
360
|
source_table_id: string;
|
|
361
361
|
target_table_id: string;
|
|
362
362
|
field_name?: string;
|
|
363
|
-
delete_action:
|
|
363
|
+
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
364
364
|
is_required?: boolean;
|
|
365
365
|
}
|
|
366
366
|
/** 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. */
|
|
@@ -368,7 +368,7 @@ export interface RelationHasOneParams {
|
|
|
368
368
|
source_table_id: string;
|
|
369
369
|
target_table_id: string;
|
|
370
370
|
field_name?: string;
|
|
371
|
-
delete_action:
|
|
371
|
+
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
372
372
|
is_required?: boolean;
|
|
373
373
|
}
|
|
374
374
|
/** 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. */
|
|
@@ -376,7 +376,7 @@ export interface RelationHasManyParams {
|
|
|
376
376
|
source_table_id: string;
|
|
377
377
|
target_table_id: string;
|
|
378
378
|
field_name?: string;
|
|
379
|
-
delete_action:
|
|
379
|
+
delete_action: 'c' | 'r' | 'n' | 'd' | 'a';
|
|
380
380
|
is_required?: boolean;
|
|
381
381
|
}
|
|
382
382
|
/** Creates a junction table between source and target tables with auto-derived naming and FK fields. The trigger creates a bare table (no implicit DataId), adds FK fields to both tables, optionally creates a composite PK (use_composite_key), then forwards all security config to secure_table_provision as-is. The trigger never injects values the caller did not provide. Junction table FKs always CASCADE on delete. */
|
|
@@ -413,7 +413,7 @@ export interface RelationSpatialParams {
|
|
|
413
413
|
target_table_id: string;
|
|
414
414
|
target_field_id: string;
|
|
415
415
|
name: string;
|
|
416
|
-
operator:
|
|
416
|
+
operator: 'st_contains' | 'st_within' | 'st_intersects' | 'st_covers' | 'st_coveredby' | 'st_overlaps' | 'st_touches' | 'st_dwithin';
|
|
417
417
|
param_name?: string;
|
|
418
418
|
}
|
|
419
419
|
/** Simple column selection from a single source table. Projects all or specific fields. */
|
|
@@ -438,7 +438,7 @@ export interface ViewJoinedTablesParams {
|
|
|
438
438
|
primary_columns?: string[];
|
|
439
439
|
joins: {
|
|
440
440
|
table_id: string;
|
|
441
|
-
join_type?:
|
|
441
|
+
join_type?: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
|
|
442
442
|
primary_field: string;
|
|
443
443
|
join_field: string;
|
|
444
444
|
columns?: string[];
|
|
@@ -450,7 +450,7 @@ export interface ViewAggregatedParams {
|
|
|
450
450
|
source_table_id: string;
|
|
451
451
|
group_by_fields: string[];
|
|
452
452
|
aggregates: {
|
|
453
|
-
function:
|
|
453
|
+
function: 'COUNT' | 'SUM' | 'AVG' | 'MIN' | 'MAX';
|
|
454
454
|
field?: string;
|
|
455
455
|
alias: string;
|
|
456
456
|
}[];
|
|
@@ -477,7 +477,7 @@ export interface BlueprintField {
|
|
|
477
477
|
/** An RLS policy entry for a blueprint table. Uses $type to match the blueprint JSON convention. */
|
|
478
478
|
export interface BlueprintPolicy {
|
|
479
479
|
/** Authz* policy type name (e.g., "AuthzDirectOwner", "AuthzAllowAll"). */
|
|
480
|
-
$type:
|
|
480
|
+
$type: 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzMembership' | 'AuthzEntityMembership' | 'AuthzRelatedEntityMembership' | 'AuthzOrgHierarchy' | 'AuthzTemporal' | 'AuthzPublishable' | 'AuthzMemberList' | 'AuthzRelatedMemberList' | 'AuthzAllowAll' | 'AuthzDenyAll' | 'AuthzComposite' | 'AuthzNotReadOnly' | 'AuthzPeerOwnership' | 'AuthzRelatedPeerOwnership';
|
|
481
481
|
/** Privileges this policy applies to (e.g., ["select"], ["insert", "update", "delete"]). */
|
|
482
482
|
privileges?: string[];
|
|
483
483
|
/** Whether this policy is permissive (true) or restrictive (false). Defaults to true. */
|
|
@@ -574,7 +574,50 @@ export interface BlueprintTableUniqueConstraint {
|
|
|
574
574
|
/** Optional schema name override. */
|
|
575
575
|
schema_name?: string;
|
|
576
576
|
}
|
|
577
|
-
/**
|
|
577
|
+
/** A storage-specific RLS policy object for apply_storage_security(). Each entry defines an Authz* policy with explicit privileges, scoped to specific storage tables. */
|
|
578
|
+
export interface BlueprintStoragePolicy {
|
|
579
|
+
/** Authz* policy generator type (e.g., "AuthzPublishable", "AuthzDirectOwner", "AuthzEntityMembership"). */
|
|
580
|
+
$type: string;
|
|
581
|
+
/** Privilege array (e.g., ["select", "insert", "update", "delete"]). Intersected with each storage table's supported operations. */
|
|
582
|
+
privileges: string[];
|
|
583
|
+
/** Policy data config. Auto-derived from $type when omitted (e.g., AuthzPublishable defaults to {"is_published_field": "is_public", "require_published_at": false}). */
|
|
584
|
+
data?: Record<string, unknown>;
|
|
585
|
+
/** Which storage tables to apply this policy to. Defaults to all three when omitted. Uses logical names (not prefixed). */
|
|
586
|
+
tables?: ('buckets' | 'files' | 'upload_requests')[];
|
|
587
|
+
/** Custom RLS policy name suffix. Auto-derived from $type when omitted (pub/own/mem). */
|
|
588
|
+
policy_name?: string;
|
|
589
|
+
}
|
|
590
|
+
/** A bucket seed entry for storage_config.buckets[]. Creates an initial bucket row in the {prefix}_buckets table during entity type provisioning. Only used for app-level storage (not entity-scoped). */
|
|
591
|
+
export interface BlueprintBucketSeed {
|
|
592
|
+
/** Bucket key name (e.g., "avatars", "documents"). Becomes the key column value. */
|
|
593
|
+
name: string;
|
|
594
|
+
/** Human-readable description of this bucket. */
|
|
595
|
+
description?: string;
|
|
596
|
+
/** Whether the bucket is publicly readable. Defaults to false. */
|
|
597
|
+
is_public?: boolean;
|
|
598
|
+
/** MIME type allowlist (e.g., ["image/png", "image/jpeg"]). NULL means all types allowed. */
|
|
599
|
+
allowed_mime_types?: string[];
|
|
600
|
+
/** Maximum file size in bytes for this bucket. NULL means no limit. */
|
|
601
|
+
max_file_size?: number;
|
|
602
|
+
/** CORS allowed origins for this bucket. */
|
|
603
|
+
allowed_origins?: string[];
|
|
604
|
+
}
|
|
605
|
+
/** Storage configuration for an entity type. Controls RLS policies on storage tables, seeds initial buckets, and overrides module-level settings (expiry times, file size limits, CORS). */
|
|
606
|
+
export interface BlueprintStorageConfig {
|
|
607
|
+
/** Custom RLS policies for storage tables. When provided, replaces the default policy set (AuthzPublishable + membership + AuthzDirectOwner). Each entry is a policy object with $type, privileges, and optional data/tables/policy_name. */
|
|
608
|
+
policies?: BlueprintStoragePolicy[];
|
|
609
|
+
/** Initial bucket seed entries. Each creates a row in {prefix}_buckets during provisioning. Only used for app-level storage (not entity-scoped). */
|
|
610
|
+
buckets?: BlueprintBucketSeed[];
|
|
611
|
+
/** Override for presigned upload URL expiry time in seconds. */
|
|
612
|
+
upload_url_expiry_seconds?: number;
|
|
613
|
+
/** Override for presigned download URL expiry time in seconds. */
|
|
614
|
+
download_url_expiry_seconds?: number;
|
|
615
|
+
/** Default maximum file size in bytes for the storage module. */
|
|
616
|
+
default_max_file_size?: number;
|
|
617
|
+
/** CORS allowed origins for the storage module. */
|
|
618
|
+
allowed_origins?: string[];
|
|
619
|
+
}
|
|
620
|
+
/** 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. */
|
|
578
621
|
export interface BlueprintEntityTableProvision {
|
|
579
622
|
/** Whether to enable RLS on the entity table. Forwarded to secure_table_provision. Defaults to true. */
|
|
580
623
|
use_rls?: boolean;
|
|
@@ -590,8 +633,8 @@ export interface BlueprintEntityTableProvision {
|
|
|
590
633
|
/** RLS policies for the entity table. When present, these policies fully replace the five default entity-table policies (is_visible becomes a no-op). */
|
|
591
634
|
policies?: BlueprintPolicy[];
|
|
592
635
|
}
|
|
593
|
-
/**
|
|
594
|
-
export interface
|
|
636
|
+
/** An entity type entry for Phase 0 of construct_blueprint(). Provisions a full entity type with its own entity table, membership modules, and security policies via entity_type_provision. */
|
|
637
|
+
export interface BlueprintEntityType {
|
|
595
638
|
/** Entity type name (e.g., "data_room", "channel", "department"). Must be unique per database. */
|
|
596
639
|
name: string;
|
|
597
640
|
/** Short prefix for generated objects (e.g., "dr", "ch", "dept"). Used in table/trigger naming. */
|
|
@@ -610,179 +653,183 @@ export interface BlueprintMembershipType {
|
|
|
610
653
|
has_profiles?: boolean;
|
|
611
654
|
/** Whether to provision a levels module for this entity type. Defaults to false. */
|
|
612
655
|
has_levels?: boolean;
|
|
656
|
+
/** Whether to provision a storage module (buckets, files, upload_requests tables) for this entity type. Defaults to false. */
|
|
657
|
+
has_storage?: boolean;
|
|
613
658
|
/** Escape hatch: when true AND table_provision is NULL, zero policies are provisioned on the entity table. Defaults to false. */
|
|
614
659
|
skip_entity_policies?: boolean;
|
|
615
660
|
/** Override for the entity table. Shape mirrors BlueprintTable / secure_table_provision vocabulary. When supplied, its policies[] replaces the five default entity-table policies; is_visible becomes a no-op. When NULL (default), the five default policies are applied (gated by is_visible). */
|
|
616
661
|
table_provision?: BlueprintEntityTableProvision;
|
|
662
|
+
/** Storage configuration. Only used when has_storage is true. Controls RLS policies on storage tables, seeds initial buckets, and overrides module-level settings (expiry times, file size limits, CORS). */
|
|
663
|
+
storage?: BlueprintStorageConfig;
|
|
617
664
|
}
|
|
618
665
|
/** String shorthand -- just the node type name. */
|
|
619
|
-
export type BlueprintNodeShorthand =
|
|
666
|
+
export type BlueprintNodeShorthand = 'AuthzDirectOwner' | 'AuthzDirectOwnerAny' | 'AuthzMembership' | 'AuthzEntityMembership' | 'AuthzRelatedEntityMembership' | 'AuthzOrgHierarchy' | 'AuthzTemporal' | 'AuthzPublishable' | 'AuthzMemberList' | 'AuthzRelatedMemberList' | 'AuthzAllowAll' | 'AuthzDenyAll' | 'AuthzComposite' | 'AuthzNotReadOnly' | 'AuthzPeerOwnership' | 'AuthzRelatedPeerOwnership' | 'DataId' | 'DataDirectOwner' | 'DataEntityMembership' | 'DataOwnershipInEntity' | 'DataTimestamps' | 'DataPeoplestamps' | 'DataPublishable' | 'DataSoftDelete' | 'SearchVector' | 'SearchFullText' | 'SearchBm25' | 'SearchUnified' | 'SearchSpatial' | 'SearchSpatialAggregate' | 'DataJobTrigger' | 'DataTags' | 'DataStatusField' | 'DataJsonb' | 'SearchTrgm' | 'DataSlug' | 'DataInflection' | 'DataOwnedFields' | 'DataInheritFromParent' | 'DataForceCurrentUser' | 'DataImmutableFields' | 'DataCompositeField' | 'TableUserProfiles' | 'TableOrganizationSettings' | 'TableUserSettings';
|
|
620
667
|
/** Object form -- { $type, data } with typed parameters. */
|
|
621
668
|
export type BlueprintNodeObject = {
|
|
622
|
-
$type:
|
|
669
|
+
$type: 'AuthzDirectOwner';
|
|
623
670
|
data: AuthzDirectOwnerParams;
|
|
624
671
|
} | {
|
|
625
|
-
$type:
|
|
672
|
+
$type: 'AuthzDirectOwnerAny';
|
|
626
673
|
data: AuthzDirectOwnerAnyParams;
|
|
627
674
|
} | {
|
|
628
|
-
$type:
|
|
675
|
+
$type: 'AuthzMembership';
|
|
629
676
|
data: AuthzMembershipParams;
|
|
630
677
|
} | {
|
|
631
|
-
$type:
|
|
678
|
+
$type: 'AuthzEntityMembership';
|
|
632
679
|
data: AuthzEntityMembershipParams;
|
|
633
680
|
} | {
|
|
634
|
-
$type:
|
|
681
|
+
$type: 'AuthzRelatedEntityMembership';
|
|
635
682
|
data: AuthzRelatedEntityMembershipParams;
|
|
636
683
|
} | {
|
|
637
|
-
$type:
|
|
684
|
+
$type: 'AuthzOrgHierarchy';
|
|
638
685
|
data: AuthzOrgHierarchyParams;
|
|
639
686
|
} | {
|
|
640
|
-
$type:
|
|
687
|
+
$type: 'AuthzTemporal';
|
|
641
688
|
data: AuthzTemporalParams;
|
|
642
689
|
} | {
|
|
643
|
-
$type:
|
|
690
|
+
$type: 'AuthzPublishable';
|
|
644
691
|
data: AuthzPublishableParams;
|
|
645
692
|
} | {
|
|
646
|
-
$type:
|
|
693
|
+
$type: 'AuthzMemberList';
|
|
647
694
|
data: AuthzMemberListParams;
|
|
648
695
|
} | {
|
|
649
|
-
$type:
|
|
696
|
+
$type: 'AuthzRelatedMemberList';
|
|
650
697
|
data: AuthzRelatedMemberListParams;
|
|
651
698
|
} | {
|
|
652
|
-
$type:
|
|
699
|
+
$type: 'AuthzAllowAll';
|
|
653
700
|
data?: Record<string, never>;
|
|
654
701
|
} | {
|
|
655
|
-
$type:
|
|
702
|
+
$type: 'AuthzDenyAll';
|
|
656
703
|
data?: Record<string, never>;
|
|
657
704
|
} | {
|
|
658
|
-
$type:
|
|
705
|
+
$type: 'AuthzComposite';
|
|
659
706
|
data: AuthzCompositeParams;
|
|
660
707
|
} | {
|
|
661
|
-
$type:
|
|
708
|
+
$type: 'AuthzNotReadOnly';
|
|
662
709
|
data: AuthzNotReadOnlyParams;
|
|
663
710
|
} | {
|
|
664
|
-
$type:
|
|
711
|
+
$type: 'AuthzPeerOwnership';
|
|
665
712
|
data: AuthzPeerOwnershipParams;
|
|
666
713
|
} | {
|
|
667
|
-
$type:
|
|
714
|
+
$type: 'AuthzRelatedPeerOwnership';
|
|
668
715
|
data: AuthzRelatedPeerOwnershipParams;
|
|
669
716
|
} | {
|
|
670
|
-
$type:
|
|
717
|
+
$type: 'DataId';
|
|
671
718
|
data: DataIdParams;
|
|
672
719
|
} | {
|
|
673
|
-
$type:
|
|
720
|
+
$type: 'DataDirectOwner';
|
|
674
721
|
data: DataDirectOwnerParams;
|
|
675
722
|
} | {
|
|
676
|
-
$type:
|
|
723
|
+
$type: 'DataEntityMembership';
|
|
677
724
|
data: DataEntityMembershipParams;
|
|
678
725
|
} | {
|
|
679
|
-
$type:
|
|
726
|
+
$type: 'DataOwnershipInEntity';
|
|
680
727
|
data: DataOwnershipInEntityParams;
|
|
681
728
|
} | {
|
|
682
|
-
$type:
|
|
729
|
+
$type: 'DataTimestamps';
|
|
683
730
|
data: DataTimestampsParams;
|
|
684
731
|
} | {
|
|
685
|
-
$type:
|
|
732
|
+
$type: 'DataPeoplestamps';
|
|
686
733
|
data: DataPeoplestampsParams;
|
|
687
734
|
} | {
|
|
688
|
-
$type:
|
|
735
|
+
$type: 'DataPublishable';
|
|
689
736
|
data: DataPublishableParams;
|
|
690
737
|
} | {
|
|
691
|
-
$type:
|
|
738
|
+
$type: 'DataSoftDelete';
|
|
692
739
|
data: DataSoftDeleteParams;
|
|
693
740
|
} | {
|
|
694
|
-
$type:
|
|
741
|
+
$type: 'SearchVector';
|
|
695
742
|
data: SearchVectorParams;
|
|
696
743
|
} | {
|
|
697
|
-
$type:
|
|
744
|
+
$type: 'SearchFullText';
|
|
698
745
|
data: SearchFullTextParams;
|
|
699
746
|
} | {
|
|
700
|
-
$type:
|
|
747
|
+
$type: 'SearchBm25';
|
|
701
748
|
data: SearchBm25Params;
|
|
702
749
|
} | {
|
|
703
|
-
$type:
|
|
750
|
+
$type: 'SearchUnified';
|
|
704
751
|
data: SearchUnifiedParams;
|
|
705
752
|
} | {
|
|
706
|
-
$type:
|
|
753
|
+
$type: 'SearchSpatial';
|
|
707
754
|
data: SearchSpatialParams;
|
|
708
755
|
} | {
|
|
709
|
-
$type:
|
|
756
|
+
$type: 'SearchSpatialAggregate';
|
|
710
757
|
data: SearchSpatialAggregateParams;
|
|
711
758
|
} | {
|
|
712
|
-
$type:
|
|
759
|
+
$type: 'DataJobTrigger';
|
|
713
760
|
data: DataJobTriggerParams;
|
|
714
761
|
} | {
|
|
715
|
-
$type:
|
|
762
|
+
$type: 'DataTags';
|
|
716
763
|
data: DataTagsParams;
|
|
717
764
|
} | {
|
|
718
|
-
$type:
|
|
765
|
+
$type: 'DataStatusField';
|
|
719
766
|
data: DataStatusFieldParams;
|
|
720
767
|
} | {
|
|
721
|
-
$type:
|
|
768
|
+
$type: 'DataJsonb';
|
|
722
769
|
data: DataJsonbParams;
|
|
723
770
|
} | {
|
|
724
|
-
$type:
|
|
771
|
+
$type: 'SearchTrgm';
|
|
725
772
|
data: SearchTrgmParams;
|
|
726
773
|
} | {
|
|
727
|
-
$type:
|
|
774
|
+
$type: 'DataSlug';
|
|
728
775
|
data: DataSlugParams;
|
|
729
776
|
} | {
|
|
730
|
-
$type:
|
|
777
|
+
$type: 'DataInflection';
|
|
731
778
|
data: DataInflectionParams;
|
|
732
779
|
} | {
|
|
733
|
-
$type:
|
|
780
|
+
$type: 'DataOwnedFields';
|
|
734
781
|
data: DataOwnedFieldsParams;
|
|
735
782
|
} | {
|
|
736
|
-
$type:
|
|
783
|
+
$type: 'DataInheritFromParent';
|
|
737
784
|
data: DataInheritFromParentParams;
|
|
738
785
|
} | {
|
|
739
|
-
$type:
|
|
786
|
+
$type: 'DataForceCurrentUser';
|
|
740
787
|
data: DataForceCurrentUserParams;
|
|
741
788
|
} | {
|
|
742
|
-
$type:
|
|
789
|
+
$type: 'DataImmutableFields';
|
|
743
790
|
data: DataImmutableFieldsParams;
|
|
744
791
|
} | {
|
|
745
|
-
$type:
|
|
792
|
+
$type: 'DataCompositeField';
|
|
746
793
|
data: DataCompositeFieldParams;
|
|
747
794
|
} | {
|
|
748
|
-
$type:
|
|
795
|
+
$type: 'TableUserProfiles';
|
|
749
796
|
data?: Record<string, never>;
|
|
750
797
|
} | {
|
|
751
|
-
$type:
|
|
798
|
+
$type: 'TableOrganizationSettings';
|
|
752
799
|
data?: Record<string, never>;
|
|
753
800
|
} | {
|
|
754
|
-
$type:
|
|
801
|
+
$type: 'TableUserSettings';
|
|
755
802
|
data?: Record<string, never>;
|
|
756
803
|
};
|
|
757
804
|
/** A node entry in a blueprint table. Either a string shorthand or a typed object. */
|
|
758
805
|
export type BlueprintNode = BlueprintNodeShorthand | BlueprintNodeObject;
|
|
759
806
|
/** A relation entry in a blueprint definition. */
|
|
760
807
|
export type BlueprintRelation = {
|
|
761
|
-
$type:
|
|
808
|
+
$type: 'RelationBelongsTo';
|
|
762
809
|
source_table: string;
|
|
763
810
|
target_table: string;
|
|
764
811
|
source_schema_name?: string;
|
|
765
812
|
target_schema_name?: string;
|
|
766
813
|
} & Partial<RelationBelongsToParams> | {
|
|
767
|
-
$type:
|
|
814
|
+
$type: 'RelationHasOne';
|
|
768
815
|
source_table: string;
|
|
769
816
|
target_table: string;
|
|
770
817
|
source_schema_name?: string;
|
|
771
818
|
target_schema_name?: string;
|
|
772
819
|
} & Partial<RelationHasOneParams> | {
|
|
773
|
-
$type:
|
|
820
|
+
$type: 'RelationHasMany';
|
|
774
821
|
source_table: string;
|
|
775
822
|
target_table: string;
|
|
776
823
|
source_schema_name?: string;
|
|
777
824
|
target_schema_name?: string;
|
|
778
825
|
} & Partial<RelationHasManyParams> | {
|
|
779
|
-
$type:
|
|
826
|
+
$type: 'RelationManyToMany';
|
|
780
827
|
source_table: string;
|
|
781
828
|
target_table: string;
|
|
782
829
|
source_schema_name?: string;
|
|
783
830
|
target_schema_name?: string;
|
|
784
831
|
} & Partial<RelationManyToManyParams> | {
|
|
785
|
-
$type:
|
|
832
|
+
$type: 'RelationSpatial';
|
|
786
833
|
source_table: string;
|
|
787
834
|
target_table: string;
|
|
788
835
|
source_schema_name?: string;
|
|
@@ -829,5 +876,7 @@ export interface BlueprintDefinition {
|
|
|
829
876
|
/** Unique constraints on table columns. */
|
|
830
877
|
unique_constraints?: BlueprintUniqueConstraint[];
|
|
831
878
|
/** Entity types to provision in Phase 0 (before tables). Each entry creates an entity table with membership modules and security. */
|
|
832
|
-
|
|
879
|
+
entity_types?: BlueprintEntityType[];
|
|
880
|
+
/** App-level storage configuration. Creates a storage_module (membership_type = NULL) with the specified policies, seeds initial buckets, and overrides module-level settings (expiry times, file size limits, CORS). For entity-scoped storage, use entity_types[].has_storage + entity_types[].storage instead. */
|
|
881
|
+
storage?: BlueprintStorageConfig;
|
|
833
882
|
}
|