node-type-registry 0.18.1 → 0.20.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.
Files changed (151) hide show
  1. package/authz/authz-allow-all.js +10 -10
  2. package/authz/authz-composite.js +28 -28
  3. package/authz/authz-deny-all.js +10 -10
  4. package/authz/authz-direct-owner-any.js +19 -18
  5. package/authz/authz-direct-owner.js +17 -16
  6. package/authz/authz-entity-membership.js +39 -38
  7. package/authz/authz-member-list.js +17 -16
  8. package/authz/authz-membership-check.js +34 -34
  9. package/authz/authz-not-read-only.js +23 -22
  10. package/authz/authz-org-hierarchy.js +33 -31
  11. package/authz/authz-peer-ownership.js +40 -39
  12. package/authz/authz-publishable.js +26 -24
  13. package/authz/authz-related-entity-membership.js +57 -55
  14. package/authz/authz-related-member-list.js +35 -32
  15. package/authz/authz-related-peer-ownership.js +62 -59
  16. package/authz/authz-temporal.js +32 -30
  17. package/authz/index.d.ts +9 -9
  18. package/authz/index.js +19 -19
  19. package/blueprint-types.generated.d.ts +10 -17
  20. package/blueprint-types.generated.js +1 -1
  21. package/codegen/generate-types.js +10 -21
  22. package/data/data-composite-field.js +27 -25
  23. package/data/data-direct-owner.js +24 -23
  24. package/data/data-entity-membership.js +24 -23
  25. package/data/data-force-current-user.js +17 -16
  26. package/data/data-id.js +16 -15
  27. package/data/data-immutable-fields.js +20 -19
  28. package/data/data-inflection.js +33 -32
  29. package/data/data-inherit-from-parent.js +31 -29
  30. package/data/data-job-trigger.js +87 -84
  31. package/data/data-jsonb.js +27 -26
  32. package/data/data-owned-fields.js +25 -23
  33. package/data/data-ownership-in-entity.js +21 -21
  34. package/data/data-peoplestamps.js +19 -19
  35. package/data/data-publishable.js +16 -16
  36. package/data/data-slug.js +21 -19
  37. package/data/data-soft-delete.js +14 -14
  38. package/data/data-status-field.js +32 -31
  39. package/data/data-tags.js +23 -22
  40. package/data/data-timestamps.js +15 -15
  41. package/data/index.d.ts +17 -17
  42. package/data/index.js +35 -35
  43. package/data/search-bm25.js +34 -33
  44. package/data/search-full-text.js +49 -47
  45. package/data/search-spatial-aggregate.js +77 -74
  46. package/data/search-spatial.js +51 -50
  47. package/data/search-trgm.js +20 -19
  48. package/data/search-unified.js +170 -162
  49. package/data/search-vector.js +104 -101
  50. package/data/table-organization-settings.js +13 -13
  51. package/data/table-user-profiles.js +13 -13
  52. package/data/table-user-settings.js +13 -13
  53. package/esm/authz/authz-allow-all.js +10 -10
  54. package/esm/authz/authz-composite.js +28 -28
  55. package/esm/authz/authz-deny-all.js +10 -10
  56. package/esm/authz/authz-direct-owner-any.js +19 -18
  57. package/esm/authz/authz-direct-owner.js +17 -16
  58. package/esm/authz/authz-entity-membership.js +39 -38
  59. package/esm/authz/authz-member-list.js +17 -16
  60. package/esm/authz/authz-membership-check.js +34 -34
  61. package/esm/authz/authz-not-read-only.js +23 -22
  62. package/esm/authz/authz-org-hierarchy.js +33 -31
  63. package/esm/authz/authz-peer-ownership.js +40 -39
  64. package/esm/authz/authz-publishable.js +26 -24
  65. package/esm/authz/authz-related-entity-membership.js +57 -55
  66. package/esm/authz/authz-related-member-list.js +35 -32
  67. package/esm/authz/authz-related-peer-ownership.js +62 -59
  68. package/esm/authz/authz-temporal.js +32 -30
  69. package/esm/authz/index.d.ts +9 -9
  70. package/esm/authz/index.js +9 -9
  71. package/esm/blueprint-types.generated.d.ts +10 -17
  72. package/esm/blueprint-types.generated.js +1 -1
  73. package/esm/codegen/generate-types.js +10 -21
  74. package/esm/data/data-composite-field.js +27 -25
  75. package/esm/data/data-direct-owner.js +24 -23
  76. package/esm/data/data-entity-membership.js +24 -23
  77. package/esm/data/data-force-current-user.js +17 -16
  78. package/esm/data/data-id.js +16 -15
  79. package/esm/data/data-immutable-fields.js +20 -19
  80. package/esm/data/data-inflection.js +33 -32
  81. package/esm/data/data-inherit-from-parent.js +31 -29
  82. package/esm/data/data-job-trigger.js +87 -84
  83. package/esm/data/data-jsonb.js +27 -26
  84. package/esm/data/data-owned-fields.js +25 -23
  85. package/esm/data/data-ownership-in-entity.js +21 -21
  86. package/esm/data/data-peoplestamps.js +19 -19
  87. package/esm/data/data-publishable.js +16 -16
  88. package/esm/data/data-slug.js +21 -19
  89. package/esm/data/data-soft-delete.js +14 -14
  90. package/esm/data/data-status-field.js +32 -31
  91. package/esm/data/data-tags.js +23 -22
  92. package/esm/data/data-timestamps.js +15 -15
  93. package/esm/data/index.d.ts +17 -17
  94. package/esm/data/index.js +17 -17
  95. package/esm/data/search-bm25.js +34 -33
  96. package/esm/data/search-full-text.js +49 -47
  97. package/esm/data/search-spatial-aggregate.js +77 -74
  98. package/esm/data/search-spatial.js +51 -50
  99. package/esm/data/search-trgm.js +20 -19
  100. package/esm/data/search-unified.js +170 -162
  101. package/esm/data/search-vector.js +104 -101
  102. package/esm/data/table-organization-settings.js +13 -13
  103. package/esm/data/table-user-profiles.js +13 -13
  104. package/esm/data/table-user-settings.js +13 -13
  105. package/esm/index.d.ts +3 -3
  106. package/esm/index.js +3 -3
  107. package/esm/module-presets/auth-email-magic.js +2 -2
  108. package/esm/module-presets/auth-email.js +8 -8
  109. package/esm/module-presets/auth-passkey.js +4 -4
  110. package/esm/module-presets/auth-sso.js +7 -7
  111. package/esm/module-presets/full.js +1 -1
  112. package/esm/module-presets/index.d.ts +5 -5
  113. package/esm/module-presets/index.js +4 -4
  114. package/esm/relation/index.d.ts +1 -1
  115. package/esm/relation/index.js +1 -1
  116. package/esm/relation/relation-belongs-to.js +41 -40
  117. package/esm/relation/relation-has-many.js +42 -41
  118. package/esm/relation/relation-has-one.js +42 -41
  119. package/esm/relation/relation-many-to-many.js +70 -68
  120. package/esm/relation/relation-spatial.js +54 -54
  121. package/esm/view/index.d.ts +3 -3
  122. package/esm/view/index.js +3 -3
  123. package/esm/view/view-aggregated.js +50 -48
  124. package/esm/view/view-composite.js +18 -18
  125. package/esm/view/view-filtered-table.js +37 -36
  126. package/esm/view/view-joined-tables.js +65 -61
  127. package/esm/view/view-table-projection.js +29 -28
  128. package/index.d.ts +3 -3
  129. package/index.js +3 -3
  130. package/module-presets/auth-email-magic.js +2 -2
  131. package/module-presets/auth-email.js +8 -8
  132. package/module-presets/auth-passkey.js +4 -4
  133. package/module-presets/auth-sso.js +7 -7
  134. package/module-presets/full.js +1 -1
  135. package/module-presets/index.d.ts +5 -5
  136. package/module-presets/index.js +7 -7
  137. package/package.json +2 -2
  138. package/relation/index.d.ts +1 -1
  139. package/relation/index.js +3 -3
  140. package/relation/relation-belongs-to.js +41 -40
  141. package/relation/relation-has-many.js +42 -41
  142. package/relation/relation-has-one.js +42 -41
  143. package/relation/relation-many-to-many.js +70 -68
  144. package/relation/relation-spatial.js +54 -54
  145. package/view/index.d.ts +3 -3
  146. package/view/index.js +7 -7
  147. package/view/view-aggregated.js +50 -48
  148. package/view/view-composite.js +18 -18
  149. package/view/view-filtered-table.js +37 -36
  150. package/view/view-joined-tables.js +65 -61
  151. package/view/view-table-projection.js +29 -28
@@ -1,89 +1,91 @@
1
1
  export const RelationManyToMany = {
2
- "name": "RelationManyToMany",
3
- "slug": "relation_many_to_many",
4
- "category": "relation",
5
- "display_name": "Many to Many",
6
- "description": "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.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "source_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "First table in the M:N relationship"
2
+ name: 'RelationManyToMany',
3
+ slug: 'relation_many_to_many',
4
+ category: 'relation',
5
+ display_name: 'Many to Many',
6
+ description: '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.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ source_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'First table in the M:N relationship'
14
14
  },
15
- "target_table_id": {
16
- "type": "string",
17
- "format": "uuid",
18
- "description": "Second table in the M:N relationship"
15
+ target_table_id: {
16
+ type: 'string',
17
+ format: 'uuid',
18
+ description: 'Second table in the M:N relationship'
19
19
  },
20
- "junction_table_id": {
21
- "type": "string",
22
- "format": "uuid",
23
- "description": "Existing junction table to use. If uuid_nil(), a new bare table is created"
20
+ junction_table_id: {
21
+ type: 'string',
22
+ format: 'uuid',
23
+ description: 'Existing junction table to use. If uuid_nil(), a new bare table is created'
24
24
  },
25
- "junction_table_name": {
26
- "type": "string",
27
- "description": "Junction table name. Auto-derived from both table names if omitted (e.g., projects + tags derives project_tags)"
25
+ junction_table_name: {
26
+ type: 'string',
27
+ description: 'Junction table name. Auto-derived from both table names if omitted (e.g., projects + tags derives project_tags)'
28
28
  },
29
- "source_field_name": {
30
- "type": "string",
31
- "description": "FK field name on junction for source table. Auto-derived if omitted (e.g., projects derives project_id)"
29
+ source_field_name: {
30
+ type: 'string',
31
+ format: 'column-ref',
32
+ description: 'FK field name on junction for source table. Auto-derived if omitted (e.g., projects derives project_id)'
32
33
  },
33
- "target_field_name": {
34
- "type": "string",
35
- "description": "FK field name on junction for target table. Auto-derived if omitted (e.g., tags derives tag_id)"
34
+ target_field_name: {
35
+ type: 'string',
36
+ format: 'column-ref',
37
+ description: 'FK field name on junction for target table. Auto-derived if omitted (e.g., tags derives tag_id)'
36
38
  },
37
- "use_composite_key": {
38
- "type": "boolean",
39
- "description": "When true, creates a composite PK from the two FK fields. When false, no PK is created by the trigger (use nodes with DataId for UUID PK). Mutually exclusive with nodes containing DataId.",
40
- "default": false
39
+ use_composite_key: {
40
+ type: 'boolean',
41
+ description: 'When true, creates a composite PK from the two FK fields. When false, no PK is created by the trigger (use nodes with DataId for UUID PK). Mutually exclusive with nodes containing DataId.',
42
+ default: false
41
43
  },
42
- "nodes": {
43
- "type": "array",
44
- "items": {
45
- "type": "object"
44
+ nodes: {
45
+ type: 'array',
46
+ items: {
47
+ type: 'object'
46
48
  },
47
- "description": "Array of node objects for field creation on junction table. Each object has a $type key (e.g. DataId, DataEntityMembership) and optional data keys. Forwarded to secure_table_provision as-is. Empty array means no additional fields."
49
+ description: 'Array of node objects for field creation on junction table. Each object has a $type key (e.g. DataId, DataEntityMembership) and optional data keys. Forwarded to secure_table_provision as-is. Empty array means no additional fields.'
48
50
  },
49
- "grants": {
50
- "type": "array",
51
- "items": {
52
- "type": "object",
53
- "properties": {
54
- "roles": { "type": "array", "items": { "type": "string" } },
55
- "privileges": { "type": "array", "items": { "type": "array", "items": { "type": "string" } } }
51
+ grants: {
52
+ type: 'array',
53
+ items: {
54
+ type: 'object',
55
+ properties: {
56
+ roles: { type: 'array', items: { type: 'string' } },
57
+ privileges: { type: 'array', items: { type: 'array', items: { type: 'string' } } }
56
58
  },
57
- "required": ["roles", "privileges"]
59
+ required: ['roles', 'privileges']
58
60
  },
59
- "description": "Unified grant objects for the junction table. Each entry is { roles: string[], privileges: string[][] }. Forwarded to secure_table_provision as-is. Default: []"
61
+ description: 'Unified grant objects for the junction table. Each entry is { roles: string[], privileges: string[][] }. Forwarded to secure_table_provision as-is. Default: []'
60
62
  },
61
- "policies": {
62
- "type": "array",
63
- "items": {
64
- "type": "object",
65
- "properties": {
66
- "$type": { "type": "string" },
67
- "data": { "type": "object" },
68
- "privileges": { "type": "array", "items": { "type": "string" } },
69
- "policy_role": { "type": "string" },
70
- "permissive": { "type": "boolean" },
71
- "policy_name": { "type": "string" }
63
+ policies: {
64
+ type: 'array',
65
+ items: {
66
+ type: 'object',
67
+ properties: {
68
+ $type: { type: 'string' },
69
+ data: { type: 'object' },
70
+ privileges: { type: 'array', items: { type: 'string' } },
71
+ policy_role: { type: 'string' },
72
+ permissive: { type: 'boolean' },
73
+ policy_name: { type: 'string' }
72
74
  },
73
- "required": ["$type"]
75
+ required: ['$type']
74
76
  },
75
- "description": "RLS policy objects for the junction table. Each entry has $type (Authz* generator), optional data, privileges, policy_role, permissive, policy_name. Forwarded to secure_table_provision as-is. Default: []"
77
+ description: 'RLS policy objects for the junction table. Each entry has $type (Authz* generator), optional data, privileges, policy_role, permissive, policy_name. Forwarded to secure_table_provision as-is. Default: []'
76
78
  }
77
79
  },
78
- "required": [
79
- "source_table_id",
80
- "target_table_id"
80
+ required: [
81
+ 'source_table_id',
82
+ 'target_table_id'
81
83
  ]
82
84
  },
83
- "tags": [
84
- "relation",
85
- "junction",
86
- "many_to_many",
87
- "schema"
85
+ tags: [
86
+ 'relation',
87
+ 'junction',
88
+ 'many_to_many',
89
+ 'schema'
88
90
  ]
89
91
  };
@@ -1,68 +1,68 @@
1
1
  export const RelationSpatial = {
2
- "name": "RelationSpatial",
3
- "slug": "relation_spatial",
4
- "category": "relation",
5
- "display_name": "Spatial Relation",
6
- "description": "Declares a spatial predicate between two existing geometry/geography columns. Inserts a metaschema_public.spatial_relation row; the sync_spatial_relation_tags trigger then projects a @spatialRelation smart tag onto the owner column so graphile-postgis' PostgisSpatialRelationsPlugin can expose it as a cross-table filter in GraphQL. Metadata-only: both source_field and target_field must already exist on their tables. Idempotent on (source_table_id, name). One direction per tag — author two RelationSpatial entries if symmetry is desired.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "source_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "Table that owns the relation (the @spatialRelation tag is emitted on the owner column of this table)"
2
+ name: 'RelationSpatial',
3
+ slug: 'relation_spatial',
4
+ category: 'relation',
5
+ display_name: 'Spatial Relation',
6
+ description: "Declares a spatial predicate between two existing geometry/geography columns. Inserts a metaschema_public.spatial_relation row; the sync_spatial_relation_tags trigger then projects a @spatialRelation smart tag onto the owner column so graphile-postgis' PostgisSpatialRelationsPlugin can expose it as a cross-table filter in GraphQL. Metadata-only: both source_field and target_field must already exist on their tables. Idempotent on (source_table_id, name). One direction per tag — author two RelationSpatial entries if symmetry is desired.",
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ source_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'Table that owns the relation (the @spatialRelation tag is emitted on the owner column of this table)'
14
14
  },
15
- "source_field_id": {
16
- "type": "string",
17
- "format": "uuid",
18
- "description": "Geometry/geography column on source_table that carries the @spatialRelation smart tag"
15
+ source_field_id: {
16
+ type: 'string',
17
+ format: 'uuid',
18
+ description: 'Geometry/geography column on source_table that carries the @spatialRelation smart tag'
19
19
  },
20
- "target_table_id": {
21
- "type": "string",
22
- "format": "uuid",
23
- "description": "Table being referenced by the spatial predicate"
20
+ target_table_id: {
21
+ type: 'string',
22
+ format: 'uuid',
23
+ description: 'Table being referenced by the spatial predicate'
24
24
  },
25
- "target_field_id": {
26
- "type": "string",
27
- "format": "uuid",
28
- "description": "Geometry/geography column on target_table that the predicate is evaluated against"
25
+ target_field_id: {
26
+ type: 'string',
27
+ format: 'uuid',
28
+ description: 'Geometry/geography column on target_table that the predicate is evaluated against'
29
29
  },
30
- "name": {
31
- "type": "string",
32
- "description": "Relation name (stable, snake_case). Becomes the generated filter field name in GraphQL (e.g. nearby_clinic). Unique per (source_table_id, name) — idempotency key."
30
+ name: {
31
+ type: 'string',
32
+ description: 'Relation name (stable, snake_case). Becomes the generated filter field name in GraphQL (e.g. nearby_clinic). Unique per (source_table_id, name) — idempotency key.'
33
33
  },
34
- "operator": {
35
- "type": "string",
36
- "enum": [
37
- "st_contains",
38
- "st_within",
39
- "st_intersects",
40
- "st_covers",
41
- "st_coveredby",
42
- "st_overlaps",
43
- "st_touches",
44
- "st_dwithin"
34
+ operator: {
35
+ type: 'string',
36
+ enum: [
37
+ 'st_contains',
38
+ 'st_within',
39
+ 'st_intersects',
40
+ 'st_covers',
41
+ 'st_coveredby',
42
+ 'st_overlaps',
43
+ 'st_touches',
44
+ 'st_dwithin'
45
45
  ],
46
- "description": "PostGIS spatial predicate. One of the 8 whitelisted operators. st_dwithin requires param_name."
46
+ description: 'PostGIS spatial predicate. One of the 8 whitelisted operators. st_dwithin requires param_name.'
47
47
  },
48
- "param_name": {
49
- "type": "string",
50
- "description": "Parameter name for parametric operators (currently only st_dwithin, which needs a distance argument). Must be NULL for all other operators. Enforced by table CHECK."
48
+ param_name: {
49
+ type: 'string',
50
+ description: 'Parameter name for parametric operators (currently only st_dwithin, which needs a distance argument). Must be NULL for all other operators. Enforced by table CHECK.'
51
51
  }
52
52
  },
53
- "required": [
54
- "source_table_id",
55
- "source_field_id",
56
- "target_table_id",
57
- "target_field_id",
58
- "name",
59
- "operator"
53
+ required: [
54
+ 'source_table_id',
55
+ 'source_field_id',
56
+ 'target_table_id',
57
+ 'target_field_id',
58
+ 'name',
59
+ 'operator'
60
60
  ]
61
61
  },
62
- "tags": [
63
- "relation",
64
- "spatial",
65
- "postgis",
66
- "schema"
62
+ tags: [
63
+ 'relation',
64
+ 'spatial',
65
+ 'postgis',
66
+ 'schema'
67
67
  ]
68
68
  };
@@ -1,5 +1,5 @@
1
- export { ViewTableProjection } from './view-table-projection';
2
- export { ViewFilteredTable } from './view-filtered-table';
3
- export { ViewJoinedTables } from './view-joined-tables';
4
1
  export { ViewAggregated } from './view-aggregated';
5
2
  export { ViewComposite } from './view-composite';
3
+ export { ViewFilteredTable } from './view-filtered-table';
4
+ export { ViewJoinedTables } from './view-joined-tables';
5
+ export { ViewTableProjection } from './view-table-projection';
package/esm/view/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { ViewTableProjection } from './view-table-projection';
2
- export { ViewFilteredTable } from './view-filtered-table';
3
- export { ViewJoinedTables } from './view-joined-tables';
4
1
  export { ViewAggregated } from './view-aggregated';
5
2
  export { ViewComposite } from './view-composite';
3
+ export { ViewFilteredTable } from './view-filtered-table';
4
+ export { ViewJoinedTables } from './view-joined-tables';
5
+ export { ViewTableProjection } from './view-table-projection';
@@ -1,65 +1,67 @@
1
1
  export const ViewAggregated = {
2
- "name": "ViewAggregated",
3
- "slug": "view_aggregated",
4
- "category": "view",
5
- "display_name": "Aggregated View",
6
- "description": "View with GROUP BY and aggregate functions. Useful for summary/reporting views.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "source_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "UUID of the source table"
2
+ name: 'ViewAggregated',
3
+ slug: 'view_aggregated',
4
+ category: 'view',
5
+ display_name: 'Aggregated View',
6
+ description: 'View with GROUP BY and aggregate functions. Useful for summary/reporting views.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ source_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'UUID of the source table'
14
14
  },
15
- "group_by_fields": {
16
- "type": "array",
17
- "items": {
18
- "type": "string"
15
+ group_by_fields: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'string',
19
+ format: 'column-ref'
19
20
  },
20
- "description": "Field names to group by"
21
+ description: 'Field names to group by'
21
22
  },
22
- "aggregates": {
23
- "type": "array",
24
- "items": {
25
- "type": "object",
26
- "properties": {
27
- "function": {
28
- "type": "string",
29
- "enum": [
30
- "COUNT",
31
- "SUM",
32
- "AVG",
33
- "MIN",
34
- "MAX"
23
+ aggregates: {
24
+ type: 'array',
25
+ items: {
26
+ type: 'object',
27
+ properties: {
28
+ function: {
29
+ type: 'string',
30
+ enum: [
31
+ 'COUNT',
32
+ 'SUM',
33
+ 'AVG',
34
+ 'MIN',
35
+ 'MAX'
35
36
  ]
36
37
  },
37
- "field": {
38
- "type": "string",
39
- "description": "Field to aggregate (or * for COUNT)"
38
+ field: {
39
+ type: 'string',
40
+ format: 'column-ref',
41
+ description: 'Field to aggregate (or * for COUNT)'
40
42
  },
41
- "alias": {
42
- "type": "string",
43
- "description": "Output column name"
43
+ alias: {
44
+ type: 'string',
45
+ description: 'Output column name'
44
46
  }
45
47
  },
46
- "required": [
47
- "function",
48
- "alias"
48
+ required: [
49
+ 'function',
50
+ 'alias'
49
51
  ]
50
52
  },
51
- "description": "Array of aggregate specifications"
53
+ description: 'Array of aggregate specifications'
52
54
  }
53
55
  },
54
- "required": [
55
- "source_table_id",
56
- "group_by_fields",
57
- "aggregates"
56
+ required: [
57
+ 'source_table_id',
58
+ 'group_by_fields',
59
+ 'aggregates'
58
60
  ]
59
61
  },
60
- "tags": [
61
- "view",
62
- "aggregate",
63
- "reporting"
62
+ tags: [
63
+ 'view',
64
+ 'aggregate',
65
+ 'reporting'
64
66
  ]
65
67
  };
@@ -1,25 +1,25 @@
1
1
  export const ViewComposite = {
2
- "name": "ViewComposite",
3
- "slug": "view_composite",
4
- "category": "view",
5
- "display_name": "Composite View",
6
- "description": "Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "query_ast": {
11
- "type": "object",
12
- "description": "Composite SELECT query AST (JSONB)"
2
+ name: 'ViewComposite',
3
+ slug: 'view_composite',
4
+ category: 'view',
5
+ display_name: 'Composite View',
6
+ description: 'Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ query_ast: {
11
+ type: 'object',
12
+ description: 'Composite SELECT query AST (JSONB)'
13
13
  }
14
14
  },
15
- "required": [
16
- "query_ast"
15
+ required: [
16
+ 'query_ast'
17
17
  ]
18
18
  },
19
- "tags": [
20
- "view",
21
- "advanced",
22
- "composite",
23
- "ast"
19
+ tags: [
20
+ 'view',
21
+ 'advanced',
22
+ 'composite',
23
+ 'ast'
24
24
  ]
25
25
  };
@@ -1,49 +1,50 @@
1
1
  export const ViewFilteredTable = {
2
- "name": "ViewFilteredTable",
3
- "slug": "view_filtered_table",
4
- "category": "view",
5
- "display_name": "Filtered Table",
6
- "description": "Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "source_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "UUID of the source table"
2
+ name: 'ViewFilteredTable',
3
+ slug: 'view_filtered_table',
4
+ category: 'view',
5
+ display_name: 'Filtered Table',
6
+ description: 'Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ source_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'UUID of the source table'
14
14
  },
15
- "filter_type": {
16
- "type": "string",
17
- "description": "Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)"
15
+ filter_type: {
16
+ type: 'string',
17
+ description: 'Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)'
18
18
  },
19
- "filter_data": {
20
- "type": "object",
21
- "description": "Parameters for the Authz* filter type"
19
+ filter_data: {
20
+ type: 'object',
21
+ description: 'Parameters for the Authz* filter type'
22
22
  },
23
- "field_ids": {
24
- "type": "array",
25
- "items": {
26
- "type": "string",
27
- "format": "uuid"
23
+ field_ids: {
24
+ type: 'array',
25
+ items: {
26
+ type: 'string',
27
+ format: 'uuid'
28
28
  },
29
- "description": "Optional array of field UUIDs to include (alternative to field_names)"
29
+ description: 'Optional array of field UUIDs to include (alternative to field_names)'
30
30
  },
31
- "field_names": {
32
- "type": "array",
33
- "items": {
34
- "type": "string"
31
+ field_names: {
32
+ type: 'array',
33
+ items: {
34
+ type: 'string',
35
+ format: 'column-ref'
35
36
  },
36
- "description": "Optional array of field names to include (alternative to field_ids)"
37
+ description: 'Optional array of field names to include (alternative to field_ids)'
37
38
  }
38
39
  },
39
- "required": [
40
- "source_table_id",
41
- "filter_type"
40
+ required: [
41
+ 'source_table_id',
42
+ 'filter_type'
42
43
  ]
43
44
  },
44
- "tags": [
45
- "view",
46
- "filter",
47
- "authz"
45
+ tags: [
46
+ 'view',
47
+ 'filter',
48
+ 'authz'
48
49
  ]
49
50
  };