node-type-registry 0.19.0 → 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 (149) 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.js +1 -1
  20. package/codegen/generate-types.js +1 -1
  21. package/data/data-composite-field.js +27 -25
  22. package/data/data-direct-owner.js +24 -23
  23. package/data/data-entity-membership.js +24 -23
  24. package/data/data-force-current-user.js +17 -16
  25. package/data/data-id.js +16 -15
  26. package/data/data-immutable-fields.js +20 -19
  27. package/data/data-inflection.js +33 -32
  28. package/data/data-inherit-from-parent.js +31 -29
  29. package/data/data-job-trigger.js +87 -84
  30. package/data/data-jsonb.js +27 -26
  31. package/data/data-owned-fields.js +25 -23
  32. package/data/data-ownership-in-entity.js +21 -21
  33. package/data/data-peoplestamps.js +19 -19
  34. package/data/data-publishable.js +16 -16
  35. package/data/data-slug.js +21 -19
  36. package/data/data-soft-delete.js +14 -14
  37. package/data/data-status-field.js +32 -31
  38. package/data/data-tags.js +23 -22
  39. package/data/data-timestamps.js +15 -15
  40. package/data/index.d.ts +17 -17
  41. package/data/index.js +35 -35
  42. package/data/search-bm25.js +34 -33
  43. package/data/search-full-text.js +49 -47
  44. package/data/search-spatial-aggregate.js +77 -74
  45. package/data/search-spatial.js +51 -50
  46. package/data/search-trgm.js +20 -19
  47. package/data/search-unified.js +170 -162
  48. package/data/search-vector.js +104 -101
  49. package/data/table-organization-settings.js +13 -13
  50. package/data/table-user-profiles.js +13 -13
  51. package/data/table-user-settings.js +13 -13
  52. package/esm/authz/authz-allow-all.js +10 -10
  53. package/esm/authz/authz-composite.js +28 -28
  54. package/esm/authz/authz-deny-all.js +10 -10
  55. package/esm/authz/authz-direct-owner-any.js +19 -18
  56. package/esm/authz/authz-direct-owner.js +17 -16
  57. package/esm/authz/authz-entity-membership.js +39 -38
  58. package/esm/authz/authz-member-list.js +17 -16
  59. package/esm/authz/authz-membership-check.js +34 -34
  60. package/esm/authz/authz-not-read-only.js +23 -22
  61. package/esm/authz/authz-org-hierarchy.js +33 -31
  62. package/esm/authz/authz-peer-ownership.js +40 -39
  63. package/esm/authz/authz-publishable.js +26 -24
  64. package/esm/authz/authz-related-entity-membership.js +57 -55
  65. package/esm/authz/authz-related-member-list.js +35 -32
  66. package/esm/authz/authz-related-peer-ownership.js +62 -59
  67. package/esm/authz/authz-temporal.js +32 -30
  68. package/esm/authz/index.d.ts +9 -9
  69. package/esm/authz/index.js +9 -9
  70. package/esm/blueprint-types.generated.js +1 -1
  71. package/esm/codegen/generate-types.js +1 -1
  72. package/esm/data/data-composite-field.js +27 -25
  73. package/esm/data/data-direct-owner.js +24 -23
  74. package/esm/data/data-entity-membership.js +24 -23
  75. package/esm/data/data-force-current-user.js +17 -16
  76. package/esm/data/data-id.js +16 -15
  77. package/esm/data/data-immutable-fields.js +20 -19
  78. package/esm/data/data-inflection.js +33 -32
  79. package/esm/data/data-inherit-from-parent.js +31 -29
  80. package/esm/data/data-job-trigger.js +87 -84
  81. package/esm/data/data-jsonb.js +27 -26
  82. package/esm/data/data-owned-fields.js +25 -23
  83. package/esm/data/data-ownership-in-entity.js +21 -21
  84. package/esm/data/data-peoplestamps.js +19 -19
  85. package/esm/data/data-publishable.js +16 -16
  86. package/esm/data/data-slug.js +21 -19
  87. package/esm/data/data-soft-delete.js +14 -14
  88. package/esm/data/data-status-field.js +32 -31
  89. package/esm/data/data-tags.js +23 -22
  90. package/esm/data/data-timestamps.js +15 -15
  91. package/esm/data/index.d.ts +17 -17
  92. package/esm/data/index.js +17 -17
  93. package/esm/data/search-bm25.js +34 -33
  94. package/esm/data/search-full-text.js +49 -47
  95. package/esm/data/search-spatial-aggregate.js +77 -74
  96. package/esm/data/search-spatial.js +51 -50
  97. package/esm/data/search-trgm.js +20 -19
  98. package/esm/data/search-unified.js +170 -162
  99. package/esm/data/search-vector.js +104 -101
  100. package/esm/data/table-organization-settings.js +13 -13
  101. package/esm/data/table-user-profiles.js +13 -13
  102. package/esm/data/table-user-settings.js +13 -13
  103. package/esm/index.d.ts +3 -3
  104. package/esm/index.js +3 -3
  105. package/esm/module-presets/auth-email-magic.js +2 -2
  106. package/esm/module-presets/auth-email.js +8 -8
  107. package/esm/module-presets/auth-passkey.js +4 -4
  108. package/esm/module-presets/auth-sso.js +7 -7
  109. package/esm/module-presets/full.js +1 -1
  110. package/esm/module-presets/index.d.ts +5 -5
  111. package/esm/module-presets/index.js +4 -4
  112. package/esm/relation/index.d.ts +1 -1
  113. package/esm/relation/index.js +1 -1
  114. package/esm/relation/relation-belongs-to.js +41 -40
  115. package/esm/relation/relation-has-many.js +42 -41
  116. package/esm/relation/relation-has-one.js +42 -41
  117. package/esm/relation/relation-many-to-many.js +70 -68
  118. package/esm/relation/relation-spatial.js +54 -54
  119. package/esm/view/index.d.ts +3 -3
  120. package/esm/view/index.js +3 -3
  121. package/esm/view/view-aggregated.js +50 -48
  122. package/esm/view/view-composite.js +18 -18
  123. package/esm/view/view-filtered-table.js +37 -36
  124. package/esm/view/view-joined-tables.js +65 -61
  125. package/esm/view/view-table-projection.js +29 -28
  126. package/index.d.ts +3 -3
  127. package/index.js +3 -3
  128. package/module-presets/auth-email-magic.js +2 -2
  129. package/module-presets/auth-email.js +8 -8
  130. package/module-presets/auth-passkey.js +4 -4
  131. package/module-presets/auth-sso.js +7 -7
  132. package/module-presets/full.js +1 -1
  133. package/module-presets/index.d.ts +5 -5
  134. package/module-presets/index.js +7 -7
  135. package/package.json +2 -2
  136. package/relation/index.d.ts +1 -1
  137. package/relation/index.js +3 -3
  138. package/relation/relation-belongs-to.js +41 -40
  139. package/relation/relation-has-many.js +42 -41
  140. package/relation/relation-has-one.js +42 -41
  141. package/relation/relation-many-to-many.js +70 -68
  142. package/relation/relation-spatial.js +54 -54
  143. package/view/index.d.ts +3 -3
  144. package/view/index.js +7 -7
  145. package/view/view-aggregated.js +50 -48
  146. package/view/view-composite.js +18 -18
  147. package/view/view-filtered-table.js +37 -36
  148. package/view/view-joined-tables.js +65 -61
  149. package/view/view-table-projection.js +29 -28
package/view/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ViewComposite = exports.ViewAggregated = exports.ViewJoinedTables = exports.ViewFilteredTable = exports.ViewTableProjection = void 0;
4
- var view_table_projection_1 = require("./view-table-projection");
5
- Object.defineProperty(exports, "ViewTableProjection", { enumerable: true, get: function () { return view_table_projection_1.ViewTableProjection; } });
6
- var view_filtered_table_1 = require("./view-filtered-table");
7
- Object.defineProperty(exports, "ViewFilteredTable", { enumerable: true, get: function () { return view_filtered_table_1.ViewFilteredTable; } });
8
- var view_joined_tables_1 = require("./view-joined-tables");
9
- Object.defineProperty(exports, "ViewJoinedTables", { enumerable: true, get: function () { return view_joined_tables_1.ViewJoinedTables; } });
3
+ exports.ViewTableProjection = exports.ViewJoinedTables = exports.ViewFilteredTable = exports.ViewComposite = exports.ViewAggregated = void 0;
10
4
  var view_aggregated_1 = require("./view-aggregated");
11
5
  Object.defineProperty(exports, "ViewAggregated", { enumerable: true, get: function () { return view_aggregated_1.ViewAggregated; } });
12
6
  var view_composite_1 = require("./view-composite");
13
7
  Object.defineProperty(exports, "ViewComposite", { enumerable: true, get: function () { return view_composite_1.ViewComposite; } });
8
+ var view_filtered_table_1 = require("./view-filtered-table");
9
+ Object.defineProperty(exports, "ViewFilteredTable", { enumerable: true, get: function () { return view_filtered_table_1.ViewFilteredTable; } });
10
+ var view_joined_tables_1 = require("./view-joined-tables");
11
+ Object.defineProperty(exports, "ViewJoinedTables", { enumerable: true, get: function () { return view_joined_tables_1.ViewJoinedTables; } });
12
+ var view_table_projection_1 = require("./view-table-projection");
13
+ Object.defineProperty(exports, "ViewTableProjection", { enumerable: true, get: function () { return view_table_projection_1.ViewTableProjection; } });
@@ -2,67 +2,69 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ViewAggregated = void 0;
4
4
  exports.ViewAggregated = {
5
- "name": "ViewAggregated",
6
- "slug": "view_aggregated",
7
- "category": "view",
8
- "display_name": "Aggregated View",
9
- "description": "View with GROUP BY and aggregate functions. Useful for summary/reporting views.",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "source_table_id": {
14
- "type": "string",
15
- "format": "uuid",
16
- "description": "UUID of the source table"
5
+ name: 'ViewAggregated',
6
+ slug: 'view_aggregated',
7
+ category: 'view',
8
+ display_name: 'Aggregated View',
9
+ description: 'View with GROUP BY and aggregate functions. Useful for summary/reporting views.',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ source_table_id: {
14
+ type: 'string',
15
+ format: 'uuid',
16
+ description: 'UUID of the source table'
17
17
  },
18
- "group_by_fields": {
19
- "type": "array",
20
- "items": {
21
- "type": "string"
18
+ group_by_fields: {
19
+ type: 'array',
20
+ items: {
21
+ type: 'string',
22
+ format: 'column-ref'
22
23
  },
23
- "description": "Field names to group by"
24
+ description: 'Field names to group by'
24
25
  },
25
- "aggregates": {
26
- "type": "array",
27
- "items": {
28
- "type": "object",
29
- "properties": {
30
- "function": {
31
- "type": "string",
32
- "enum": [
33
- "COUNT",
34
- "SUM",
35
- "AVG",
36
- "MIN",
37
- "MAX"
26
+ aggregates: {
27
+ type: 'array',
28
+ items: {
29
+ type: 'object',
30
+ properties: {
31
+ function: {
32
+ type: 'string',
33
+ enum: [
34
+ 'COUNT',
35
+ 'SUM',
36
+ 'AVG',
37
+ 'MIN',
38
+ 'MAX'
38
39
  ]
39
40
  },
40
- "field": {
41
- "type": "string",
42
- "description": "Field to aggregate (or * for COUNT)"
41
+ field: {
42
+ type: 'string',
43
+ format: 'column-ref',
44
+ description: 'Field to aggregate (or * for COUNT)'
43
45
  },
44
- "alias": {
45
- "type": "string",
46
- "description": "Output column name"
46
+ alias: {
47
+ type: 'string',
48
+ description: 'Output column name'
47
49
  }
48
50
  },
49
- "required": [
50
- "function",
51
- "alias"
51
+ required: [
52
+ 'function',
53
+ 'alias'
52
54
  ]
53
55
  },
54
- "description": "Array of aggregate specifications"
56
+ description: 'Array of aggregate specifications'
55
57
  }
56
58
  },
57
- "required": [
58
- "source_table_id",
59
- "group_by_fields",
60
- "aggregates"
59
+ required: [
60
+ 'source_table_id',
61
+ 'group_by_fields',
62
+ 'aggregates'
61
63
  ]
62
64
  },
63
- "tags": [
64
- "view",
65
- "aggregate",
66
- "reporting"
65
+ tags: [
66
+ 'view',
67
+ 'aggregate',
68
+ 'reporting'
67
69
  ]
68
70
  };
@@ -2,27 +2,27 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ViewComposite = void 0;
4
4
  exports.ViewComposite = {
5
- "name": "ViewComposite",
6
- "slug": "view_composite",
7
- "category": "view",
8
- "display_name": "Composite View",
9
- "description": "Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "query_ast": {
14
- "type": "object",
15
- "description": "Composite SELECT query AST (JSONB)"
5
+ name: 'ViewComposite',
6
+ slug: 'view_composite',
7
+ category: 'view',
8
+ display_name: 'Composite View',
9
+ description: 'Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ query_ast: {
14
+ type: 'object',
15
+ description: 'Composite SELECT query AST (JSONB)'
16
16
  }
17
17
  },
18
- "required": [
19
- "query_ast"
18
+ required: [
19
+ 'query_ast'
20
20
  ]
21
21
  },
22
- "tags": [
23
- "view",
24
- "advanced",
25
- "composite",
26
- "ast"
22
+ tags: [
23
+ 'view',
24
+ 'advanced',
25
+ 'composite',
26
+ 'ast'
27
27
  ]
28
28
  };
@@ -2,51 +2,52 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ViewFilteredTable = void 0;
4
4
  exports.ViewFilteredTable = {
5
- "name": "ViewFilteredTable",
6
- "slug": "view_filtered_table",
7
- "category": "view",
8
- "display_name": "Filtered Table",
9
- "description": "Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "source_table_id": {
14
- "type": "string",
15
- "format": "uuid",
16
- "description": "UUID of the source table"
5
+ name: 'ViewFilteredTable',
6
+ slug: 'view_filtered_table',
7
+ category: 'view',
8
+ display_name: 'Filtered Table',
9
+ description: 'Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ source_table_id: {
14
+ type: 'string',
15
+ format: 'uuid',
16
+ description: 'UUID of the source table'
17
17
  },
18
- "filter_type": {
19
- "type": "string",
20
- "description": "Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)"
18
+ filter_type: {
19
+ type: 'string',
20
+ description: 'Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)'
21
21
  },
22
- "filter_data": {
23
- "type": "object",
24
- "description": "Parameters for the Authz* filter type"
22
+ filter_data: {
23
+ type: 'object',
24
+ description: 'Parameters for the Authz* filter type'
25
25
  },
26
- "field_ids": {
27
- "type": "array",
28
- "items": {
29
- "type": "string",
30
- "format": "uuid"
26
+ field_ids: {
27
+ type: 'array',
28
+ items: {
29
+ type: 'string',
30
+ format: 'uuid'
31
31
  },
32
- "description": "Optional array of field UUIDs to include (alternative to field_names)"
32
+ description: 'Optional array of field UUIDs to include (alternative to field_names)'
33
33
  },
34
- "field_names": {
35
- "type": "array",
36
- "items": {
37
- "type": "string"
34
+ field_names: {
35
+ type: 'array',
36
+ items: {
37
+ type: 'string',
38
+ format: 'column-ref'
38
39
  },
39
- "description": "Optional array of field names to include (alternative to field_ids)"
40
+ description: 'Optional array of field names to include (alternative to field_ids)'
40
41
  }
41
42
  },
42
- "required": [
43
- "source_table_id",
44
- "filter_type"
43
+ required: [
44
+ 'source_table_id',
45
+ 'filter_type'
45
46
  ]
46
47
  },
47
- "tags": [
48
- "view",
49
- "filter",
50
- "authz"
48
+ tags: [
49
+ 'view',
50
+ 'filter',
51
+ 'authz'
51
52
  ]
52
53
  };
@@ -2,85 +2,89 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ViewJoinedTables = void 0;
4
4
  exports.ViewJoinedTables = {
5
- "name": "ViewJoinedTables",
6
- "slug": "view_joined_tables",
7
- "category": "view",
8
- "display_name": "Joined Tables",
9
- "description": "View that joins multiple tables together. Supports INNER, LEFT, RIGHT, and FULL joins.",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "primary_table_id": {
14
- "type": "string",
15
- "format": "uuid",
16
- "description": "UUID of the primary (left-most) table"
5
+ name: 'ViewJoinedTables',
6
+ slug: 'view_joined_tables',
7
+ category: 'view',
8
+ display_name: 'Joined Tables',
9
+ description: 'View that joins multiple tables together. Supports INNER, LEFT, RIGHT, and FULL joins.',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ primary_table_id: {
14
+ type: 'string',
15
+ format: 'uuid',
16
+ description: 'UUID of the primary (left-most) table'
17
17
  },
18
- "primary_columns": {
19
- "type": "array",
20
- "items": {
21
- "type": "string"
18
+ primary_columns: {
19
+ type: 'array',
20
+ items: {
21
+ type: 'string',
22
+ format: 'column-ref'
22
23
  },
23
- "description": "Optional array of column names to include from the primary table"
24
+ description: 'Optional array of column names to include from the primary table'
24
25
  },
25
- "joins": {
26
- "type": "array",
27
- "items": {
28
- "type": "object",
29
- "properties": {
30
- "table_id": {
31
- "type": "string",
32
- "format": "uuid",
33
- "description": "UUID of the joined table"
26
+ joins: {
27
+ type: 'array',
28
+ items: {
29
+ type: 'object',
30
+ properties: {
31
+ table_id: {
32
+ type: 'string',
33
+ format: 'uuid',
34
+ description: 'UUID of the joined table'
34
35
  },
35
- "join_type": {
36
- "type": "string",
37
- "enum": [
38
- "INNER",
39
- "LEFT",
40
- "RIGHT",
41
- "FULL"
36
+ join_type: {
37
+ type: 'string',
38
+ enum: [
39
+ 'INNER',
40
+ 'LEFT',
41
+ 'RIGHT',
42
+ 'FULL'
42
43
  ]
43
44
  },
44
- "primary_field": {
45
- "type": "string",
46
- "description": "Field on primary table"
45
+ primary_field: {
46
+ type: 'string',
47
+ format: 'column-ref',
48
+ description: 'Field on primary table'
47
49
  },
48
- "join_field": {
49
- "type": "string",
50
- "description": "Field on joined table"
50
+ join_field: {
51
+ type: 'string',
52
+ format: 'column-ref',
53
+ description: 'Field on joined table'
51
54
  },
52
- "columns": {
53
- "type": "array",
54
- "items": {
55
- "type": "string"
55
+ columns: {
56
+ type: 'array',
57
+ items: {
58
+ type: 'string',
59
+ format: 'column-ref'
56
60
  },
57
- "description": "Optional column names to include from this joined table"
61
+ description: 'Optional column names to include from this joined table'
58
62
  }
59
63
  },
60
- "required": [
61
- "table_id",
62
- "primary_field",
63
- "join_field"
64
+ required: [
65
+ 'table_id',
66
+ 'primary_field',
67
+ 'join_field'
64
68
  ]
65
69
  },
66
- "description": "Array of join specifications"
70
+ description: 'Array of join specifications'
67
71
  },
68
- "field_ids": {
69
- "type": "array",
70
- "items": {
71
- "type": "string",
72
- "format": "uuid"
72
+ field_ids: {
73
+ type: 'array',
74
+ items: {
75
+ type: 'string',
76
+ format: 'uuid'
73
77
  },
74
- "description": "Optional array of field UUIDs to include (alternative to per-table columns)"
78
+ description: 'Optional array of field UUIDs to include (alternative to per-table columns)'
75
79
  }
76
80
  },
77
- "required": [
78
- "primary_table_id",
79
- "joins"
81
+ required: [
82
+ 'primary_table_id',
83
+ 'joins'
80
84
  ]
81
85
  },
82
- "tags": [
83
- "view",
84
- "join"
86
+ tags: [
87
+ 'view',
88
+ 'join'
85
89
  ]
86
90
  };
@@ -2,41 +2,42 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ViewTableProjection = void 0;
4
4
  exports.ViewTableProjection = {
5
- "name": "ViewTableProjection",
6
- "slug": "view_table_projection",
7
- "category": "view",
8
- "display_name": "Table Projection",
9
- "description": "Simple column selection from a single source table. Projects all or specific fields.",
10
- "parameter_schema": {
11
- "type": "object",
12
- "properties": {
13
- "source_table_id": {
14
- "type": "string",
15
- "format": "uuid",
16
- "description": "UUID of the source table to project from"
5
+ name: 'ViewTableProjection',
6
+ slug: 'view_table_projection',
7
+ category: 'view',
8
+ display_name: 'Table Projection',
9
+ description: 'Simple column selection from a single source table. Projects all or specific fields.',
10
+ parameter_schema: {
11
+ type: 'object',
12
+ properties: {
13
+ source_table_id: {
14
+ type: 'string',
15
+ format: 'uuid',
16
+ description: 'UUID of the source table to project from'
17
17
  },
18
- "field_ids": {
19
- "type": "array",
20
- "items": {
21
- "type": "string",
22
- "format": "uuid"
18
+ field_ids: {
19
+ type: 'array',
20
+ items: {
21
+ type: 'string',
22
+ format: 'uuid'
23
23
  },
24
- "description": "Optional array of field UUIDs to include (all fields if omitted)"
24
+ description: 'Optional array of field UUIDs to include (all fields if omitted)'
25
25
  },
26
- "field_names": {
27
- "type": "array",
28
- "items": {
29
- "type": "string"
26
+ field_names: {
27
+ type: 'array',
28
+ items: {
29
+ type: 'string',
30
+ format: 'column-ref'
30
31
  },
31
- "description": "Optional array of field names to include (alternative to field_ids)"
32
+ description: 'Optional array of field names to include (alternative to field_ids)'
32
33
  }
33
34
  },
34
- "required": [
35
- "source_table_id"
35
+ required: [
36
+ 'source_table_id'
36
37
  ]
37
38
  },
38
- "tags": [
39
- "view",
40
- "projection"
39
+ tags: [
40
+ 'view',
41
+ 'projection'
41
42
  ]
42
43
  };