node-type-registry 0.2.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 (243) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +87 -0
  3. package/authz/authz-allow-all.d.ts +2 -0
  4. package/authz/authz-allow-all.js +15 -0
  5. package/authz/authz-composite.d.ts +2 -0
  6. package/authz/authz-composite.js +39 -0
  7. package/authz/authz-deny-all.d.ts +2 -0
  8. package/authz/authz-deny-all.js +15 -0
  9. package/authz/authz-direct-owner-any.d.ts +2 -0
  10. package/authz/authz-direct-owner-any.js +26 -0
  11. package/authz/authz-direct-owner.d.ts +2 -0
  12. package/authz/authz-direct-owner.js +23 -0
  13. package/authz/authz-entity-membership.d.ts +2 -0
  14. package/authz/authz-entity-membership.js +49 -0
  15. package/authz/authz-member-list.d.ts +2 -0
  16. package/authz/authz-member-list.js +23 -0
  17. package/authz/authz-membership-check.d.ts +2 -0
  18. package/authz/authz-membership-check.js +45 -0
  19. package/authz/authz-org-hierarchy.d.ts +2 -0
  20. package/authz/authz-org-hierarchy.js +41 -0
  21. package/authz/authz-peer-ownership.d.ts +2 -0
  22. package/authz/authz-peer-ownership.js +49 -0
  23. package/authz/authz-publishable.d.ts +2 -0
  24. package/authz/authz-publishable.js +31 -0
  25. package/authz/authz-related-entity-membership.d.ts +2 -0
  26. package/authz/authz-related-entity-membership.js +71 -0
  27. package/authz/authz-related-member-list.d.ts +2 -0
  28. package/authz/authz-related-member-list.js +43 -0
  29. package/authz/authz-related-peer-ownership.d.ts +2 -0
  30. package/authz/authz-related-peer-ownership.js +75 -0
  31. package/authz/authz-temporal.d.ts +2 -0
  32. package/authz/authz-temporal.js +46 -0
  33. package/authz/index.d.ts +15 -0
  34. package/authz/index.js +33 -0
  35. package/codegen/generate-seed.d.ts +23 -0
  36. package/codegen/generate-seed.js +155 -0
  37. package/data/data-bm25.d.ts +2 -0
  38. package/data/data-bm25.js +43 -0
  39. package/data/data-direct-owner.d.ts +2 -0
  40. package/data/data-direct-owner.js +31 -0
  41. package/data/data-embedding.d.ts +2 -0
  42. package/data/data-embedding.js +82 -0
  43. package/data/data-entity-membership.d.ts +2 -0
  44. package/data/data-entity-membership.js +31 -0
  45. package/data/data-full-text-search.d.ts +2 -0
  46. package/data/data-full-text-search.js +61 -0
  47. package/data/data-id.d.ts +2 -0
  48. package/data/data-id.js +21 -0
  49. package/data/data-job-trigger.d.ts +2 -0
  50. package/data/data-job-trigger.js +111 -0
  51. package/data/data-jsonb.d.ts +2 -0
  52. package/data/data-jsonb.js +35 -0
  53. package/data/data-ownership-in-entity.d.ts +2 -0
  54. package/data/data-ownership-in-entity.js +26 -0
  55. package/data/data-peoplestamps.d.ts +2 -0
  56. package/data/data-peoplestamps.js +26 -0
  57. package/data/data-postgis-aggregate.d.ts +2 -0
  58. package/data/data-postgis-aggregate.js +94 -0
  59. package/data/data-postgis.d.ts +2 -0
  60. package/data/data-postgis.js +65 -0
  61. package/data/data-publishable.d.ts +2 -0
  62. package/data/data-publishable.js +21 -0
  63. package/data/data-search.d.ts +2 -0
  64. package/data/data-search.js +158 -0
  65. package/data/data-soft-delete.d.ts +2 -0
  66. package/data/data-soft-delete.js +21 -0
  67. package/data/data-status-field.d.ts +2 -0
  68. package/data/data-status-field.js +42 -0
  69. package/data/data-tags.d.ts +2 -0
  70. package/data/data-tags.js +30 -0
  71. package/data/data-timestamps.d.ts +2 -0
  72. package/data/data-timestamps.js +21 -0
  73. package/data/data-trgm.d.ts +2 -0
  74. package/data/data-trgm.js +26 -0
  75. package/data/index.d.ts +19 -0
  76. package/data/index.js +41 -0
  77. package/esm/authz/authz-allow-all.d.ts +2 -0
  78. package/esm/authz/authz-allow-all.js +12 -0
  79. package/esm/authz/authz-composite.d.ts +2 -0
  80. package/esm/authz/authz-composite.js +36 -0
  81. package/esm/authz/authz-deny-all.d.ts +2 -0
  82. package/esm/authz/authz-deny-all.js +12 -0
  83. package/esm/authz/authz-direct-owner-any.d.ts +2 -0
  84. package/esm/authz/authz-direct-owner-any.js +23 -0
  85. package/esm/authz/authz-direct-owner.d.ts +2 -0
  86. package/esm/authz/authz-direct-owner.js +20 -0
  87. package/esm/authz/authz-entity-membership.d.ts +2 -0
  88. package/esm/authz/authz-entity-membership.js +46 -0
  89. package/esm/authz/authz-member-list.d.ts +2 -0
  90. package/esm/authz/authz-member-list.js +20 -0
  91. package/esm/authz/authz-membership-check.d.ts +2 -0
  92. package/esm/authz/authz-membership-check.js +42 -0
  93. package/esm/authz/authz-org-hierarchy.d.ts +2 -0
  94. package/esm/authz/authz-org-hierarchy.js +38 -0
  95. package/esm/authz/authz-peer-ownership.d.ts +2 -0
  96. package/esm/authz/authz-peer-ownership.js +46 -0
  97. package/esm/authz/authz-publishable.d.ts +2 -0
  98. package/esm/authz/authz-publishable.js +28 -0
  99. package/esm/authz/authz-related-entity-membership.d.ts +2 -0
  100. package/esm/authz/authz-related-entity-membership.js +68 -0
  101. package/esm/authz/authz-related-member-list.d.ts +2 -0
  102. package/esm/authz/authz-related-member-list.js +40 -0
  103. package/esm/authz/authz-related-peer-ownership.d.ts +2 -0
  104. package/esm/authz/authz-related-peer-ownership.js +72 -0
  105. package/esm/authz/authz-temporal.d.ts +2 -0
  106. package/esm/authz/authz-temporal.js +43 -0
  107. package/esm/authz/index.d.ts +15 -0
  108. package/esm/authz/index.js +15 -0
  109. package/esm/codegen/generate-seed.d.ts +23 -0
  110. package/esm/codegen/generate-seed.js +153 -0
  111. package/esm/data/data-bm25.d.ts +2 -0
  112. package/esm/data/data-bm25.js +40 -0
  113. package/esm/data/data-direct-owner.d.ts +2 -0
  114. package/esm/data/data-direct-owner.js +28 -0
  115. package/esm/data/data-embedding.d.ts +2 -0
  116. package/esm/data/data-embedding.js +79 -0
  117. package/esm/data/data-entity-membership.d.ts +2 -0
  118. package/esm/data/data-entity-membership.js +28 -0
  119. package/esm/data/data-full-text-search.d.ts +2 -0
  120. package/esm/data/data-full-text-search.js +58 -0
  121. package/esm/data/data-id.d.ts +2 -0
  122. package/esm/data/data-id.js +18 -0
  123. package/esm/data/data-job-trigger.d.ts +2 -0
  124. package/esm/data/data-job-trigger.js +108 -0
  125. package/esm/data/data-jsonb.d.ts +2 -0
  126. package/esm/data/data-jsonb.js +32 -0
  127. package/esm/data/data-ownership-in-entity.d.ts +2 -0
  128. package/esm/data/data-ownership-in-entity.js +23 -0
  129. package/esm/data/data-peoplestamps.d.ts +2 -0
  130. package/esm/data/data-peoplestamps.js +23 -0
  131. package/esm/data/data-postgis-aggregate.d.ts +2 -0
  132. package/esm/data/data-postgis-aggregate.js +91 -0
  133. package/esm/data/data-postgis.d.ts +2 -0
  134. package/esm/data/data-postgis.js +62 -0
  135. package/esm/data/data-publishable.d.ts +2 -0
  136. package/esm/data/data-publishable.js +18 -0
  137. package/esm/data/data-search.d.ts +2 -0
  138. package/esm/data/data-search.js +155 -0
  139. package/esm/data/data-soft-delete.d.ts +2 -0
  140. package/esm/data/data-soft-delete.js +18 -0
  141. package/esm/data/data-status-field.d.ts +2 -0
  142. package/esm/data/data-status-field.js +39 -0
  143. package/esm/data/data-tags.d.ts +2 -0
  144. package/esm/data/data-tags.js +27 -0
  145. package/esm/data/data-timestamps.d.ts +2 -0
  146. package/esm/data/data-timestamps.js +18 -0
  147. package/esm/data/data-trgm.d.ts +2 -0
  148. package/esm/data/data-trgm.js +23 -0
  149. package/esm/data/index.d.ts +19 -0
  150. package/esm/data/index.js +19 -0
  151. package/esm/field/field-immutable.d.ts +2 -0
  152. package/esm/field/field-immutable.js +21 -0
  153. package/esm/field/field-inflection.d.ts +2 -0
  154. package/esm/field/field-inflection.js +29 -0
  155. package/esm/field/field-owned.d.ts +2 -0
  156. package/esm/field/field-owned.js +36 -0
  157. package/esm/field/field-slug.d.ts +2 -0
  158. package/esm/field/field-slug.js +26 -0
  159. package/esm/field/index.d.ts +4 -0
  160. package/esm/field/index.js +4 -0
  161. package/esm/index.d.ts +9 -0
  162. package/esm/index.js +21 -0
  163. package/esm/preset.d.ts +23 -0
  164. package/esm/preset.js +5 -0
  165. package/esm/relation/index.d.ts +4 -0
  166. package/esm/relation/index.js +4 -0
  167. package/esm/relation/relation-belongs-to.d.ts +2 -0
  168. package/esm/relation/relation-belongs-to.js +48 -0
  169. package/esm/relation/relation-has-many.d.ts +2 -0
  170. package/esm/relation/relation-has-many.js +48 -0
  171. package/esm/relation/relation-has-one.d.ts +2 -0
  172. package/esm/relation/relation-has-one.js +48 -0
  173. package/esm/relation/relation-many-to-many.d.ts +2 -0
  174. package/esm/relation/relation-many-to-many.js +92 -0
  175. package/esm/table/index.d.ts +3 -0
  176. package/esm/table/index.js +3 -0
  177. package/esm/table/table-organization-settings.d.ts +2 -0
  178. package/esm/table/table-organization-settings.js +12 -0
  179. package/esm/table/table-user-profiles.d.ts +2 -0
  180. package/esm/table/table-user-profiles.js +12 -0
  181. package/esm/table/table-user-settings.d.ts +2 -0
  182. package/esm/table/table-user-settings.js +12 -0
  183. package/esm/types.d.ts +61 -0
  184. package/esm/types.js +1 -0
  185. package/esm/view/index.d.ts +5 -0
  186. package/esm/view/index.js +5 -0
  187. package/esm/view/view-aggregated.d.ts +2 -0
  188. package/esm/view/view-aggregated.js +61 -0
  189. package/esm/view/view-composite.d.ts +2 -0
  190. package/esm/view/view-composite.js +20 -0
  191. package/esm/view/view-filtered-table.d.ts +2 -0
  192. package/esm/view/view-filtered-table.js +45 -0
  193. package/esm/view/view-joined-tables.d.ts +2 -0
  194. package/esm/view/view-joined-tables.js +80 -0
  195. package/esm/view/view-table-projection.d.ts +2 -0
  196. package/esm/view/view-table-projection.js +36 -0
  197. package/field/field-immutable.d.ts +2 -0
  198. package/field/field-immutable.js +24 -0
  199. package/field/field-inflection.d.ts +2 -0
  200. package/field/field-inflection.js +32 -0
  201. package/field/field-owned.d.ts +2 -0
  202. package/field/field-owned.js +39 -0
  203. package/field/field-slug.d.ts +2 -0
  204. package/field/field-slug.js +29 -0
  205. package/field/index.d.ts +4 -0
  206. package/field/index.js +11 -0
  207. package/index.d.ts +9 -0
  208. package/index.js +60 -0
  209. package/package.json +49 -0
  210. package/preset.d.ts +23 -0
  211. package/preset.js +8 -0
  212. package/relation/index.d.ts +4 -0
  213. package/relation/index.js +11 -0
  214. package/relation/relation-belongs-to.d.ts +2 -0
  215. package/relation/relation-belongs-to.js +51 -0
  216. package/relation/relation-has-many.d.ts +2 -0
  217. package/relation/relation-has-many.js +51 -0
  218. package/relation/relation-has-one.d.ts +2 -0
  219. package/relation/relation-has-one.js +51 -0
  220. package/relation/relation-many-to-many.d.ts +2 -0
  221. package/relation/relation-many-to-many.js +95 -0
  222. package/table/index.d.ts +3 -0
  223. package/table/index.js +9 -0
  224. package/table/table-organization-settings.d.ts +2 -0
  225. package/table/table-organization-settings.js +15 -0
  226. package/table/table-user-profiles.d.ts +2 -0
  227. package/table/table-user-profiles.js +15 -0
  228. package/table/table-user-settings.d.ts +2 -0
  229. package/table/table-user-settings.js +15 -0
  230. package/types.d.ts +61 -0
  231. package/types.js +2 -0
  232. package/view/index.d.ts +5 -0
  233. package/view/index.js +13 -0
  234. package/view/view-aggregated.d.ts +2 -0
  235. package/view/view-aggregated.js +64 -0
  236. package/view/view-composite.d.ts +2 -0
  237. package/view/view-composite.js +23 -0
  238. package/view/view-filtered-table.d.ts +2 -0
  239. package/view/view-filtered-table.js +48 -0
  240. package/view/view-joined-tables.d.ts +2 -0
  241. package/view/view-joined-tables.js +83 -0
  242. package/view/view-table-projection.d.ts +2 -0
  243. package/view/view-table-projection.js +39 -0
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataTags = void 0;
4
+ exports.DataTags = {
5
+ name: 'DataTags',
6
+ slug: 'data_tags',
7
+ category: 'data',
8
+ display_name: 'Tags',
9
+ description: 'Adds a citext[] tags column with GIN index for efficient array containment queries (@>, &&). Standard tagging pattern for categorization and filtering.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "field_name": {
14
+ "type": "string",
15
+ "description": "Column name for the tags array",
16
+ "default": "tags"
17
+ },
18
+ "default_value": {
19
+ "type": "string",
20
+ "description": "Default value expression for the tags column"
21
+ },
22
+ "is_required": {
23
+ "type": "boolean",
24
+ "description": "Whether the column has a NOT NULL constraint",
25
+ "default": false
26
+ }
27
+ }
28
+ },
29
+ tags: ['tags', 'schema'],
30
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataTimestamps: NodeTypeDefinition;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataTimestamps = void 0;
4
+ exports.DataTimestamps = {
5
+ name: 'DataTimestamps',
6
+ slug: 'data_timestamps',
7
+ category: 'data',
8
+ display_name: 'Timestamps',
9
+ description: 'Adds automatic timestamp tracking with created_at and updated_at columns.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "include_id": {
14
+ "type": "boolean",
15
+ "description": "If true, also adds a UUID primary key column with auto-generation",
16
+ "default": true
17
+ }
18
+ }
19
+ },
20
+ tags: ['timestamps', 'schema'],
21
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataTrgm: NodeTypeDefinition;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataTrgm = void 0;
4
+ exports.DataTrgm = {
5
+ name: 'DataTrgm',
6
+ slug: 'data_trgm',
7
+ category: 'data',
8
+ display_name: 'Trigram Search',
9
+ description: '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.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "fields": {
14
+ "type": "array",
15
+ "items": {
16
+ "type": "string"
17
+ },
18
+ "description": "Field names to create trigram indexes on (fields must already exist on the table)"
19
+ }
20
+ },
21
+ "required": [
22
+ "fields"
23
+ ]
24
+ },
25
+ tags: ['search', 'trigram', 'schema'],
26
+ };
@@ -0,0 +1,19 @@
1
+ export { DataId } from './data-id';
2
+ export { DataDirectOwner } from './data-direct-owner';
3
+ export { DataEntityMembership } from './data-entity-membership';
4
+ export { DataOwnershipInEntity } from './data-ownership-in-entity';
5
+ export { DataTimestamps } from './data-timestamps';
6
+ export { DataPeoplestamps } from './data-peoplestamps';
7
+ export { DataPublishable } from './data-publishable';
8
+ export { DataSoftDelete } from './data-soft-delete';
9
+ export { DataEmbedding } from './data-embedding';
10
+ export { DataFullTextSearch } from './data-full-text-search';
11
+ export { DataBm25 } from './data-bm25';
12
+ export { DataSearch } from './data-search';
13
+ export { DataPostGIS } from './data-postgis';
14
+ export { DataPostGISAggregate } from './data-postgis-aggregate';
15
+ export { DataJobTrigger } from './data-job-trigger';
16
+ export { DataTags } from './data-tags';
17
+ export { DataStatusField } from './data-status-field';
18
+ export { DataJsonb } from './data-jsonb';
19
+ export { DataTrgm } from './data-trgm';
package/data/index.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataTrgm = exports.DataJsonb = exports.DataStatusField = exports.DataTags = exports.DataJobTrigger = exports.DataPostGISAggregate = exports.DataPostGIS = exports.DataSearch = exports.DataBm25 = exports.DataFullTextSearch = exports.DataEmbedding = exports.DataSoftDelete = exports.DataPublishable = exports.DataPeoplestamps = exports.DataTimestamps = exports.DataOwnershipInEntity = exports.DataEntityMembership = exports.DataDirectOwner = exports.DataId = void 0;
4
+ var data_id_1 = require("./data-id");
5
+ Object.defineProperty(exports, "DataId", { enumerable: true, get: function () { return data_id_1.DataId; } });
6
+ var data_direct_owner_1 = require("./data-direct-owner");
7
+ Object.defineProperty(exports, "DataDirectOwner", { enumerable: true, get: function () { return data_direct_owner_1.DataDirectOwner; } });
8
+ var data_entity_membership_1 = require("./data-entity-membership");
9
+ Object.defineProperty(exports, "DataEntityMembership", { enumerable: true, get: function () { return data_entity_membership_1.DataEntityMembership; } });
10
+ var data_ownership_in_entity_1 = require("./data-ownership-in-entity");
11
+ Object.defineProperty(exports, "DataOwnershipInEntity", { enumerable: true, get: function () { return data_ownership_in_entity_1.DataOwnershipInEntity; } });
12
+ var data_timestamps_1 = require("./data-timestamps");
13
+ Object.defineProperty(exports, "DataTimestamps", { enumerable: true, get: function () { return data_timestamps_1.DataTimestamps; } });
14
+ var data_peoplestamps_1 = require("./data-peoplestamps");
15
+ Object.defineProperty(exports, "DataPeoplestamps", { enumerable: true, get: function () { return data_peoplestamps_1.DataPeoplestamps; } });
16
+ var data_publishable_1 = require("./data-publishable");
17
+ Object.defineProperty(exports, "DataPublishable", { enumerable: true, get: function () { return data_publishable_1.DataPublishable; } });
18
+ var data_soft_delete_1 = require("./data-soft-delete");
19
+ Object.defineProperty(exports, "DataSoftDelete", { enumerable: true, get: function () { return data_soft_delete_1.DataSoftDelete; } });
20
+ var data_embedding_1 = require("./data-embedding");
21
+ Object.defineProperty(exports, "DataEmbedding", { enumerable: true, get: function () { return data_embedding_1.DataEmbedding; } });
22
+ var data_full_text_search_1 = require("./data-full-text-search");
23
+ Object.defineProperty(exports, "DataFullTextSearch", { enumerable: true, get: function () { return data_full_text_search_1.DataFullTextSearch; } });
24
+ var data_bm25_1 = require("./data-bm25");
25
+ Object.defineProperty(exports, "DataBm25", { enumerable: true, get: function () { return data_bm25_1.DataBm25; } });
26
+ var data_search_1 = require("./data-search");
27
+ Object.defineProperty(exports, "DataSearch", { enumerable: true, get: function () { return data_search_1.DataSearch; } });
28
+ var data_postgis_1 = require("./data-postgis");
29
+ Object.defineProperty(exports, "DataPostGIS", { enumerable: true, get: function () { return data_postgis_1.DataPostGIS; } });
30
+ var data_postgis_aggregate_1 = require("./data-postgis-aggregate");
31
+ Object.defineProperty(exports, "DataPostGISAggregate", { enumerable: true, get: function () { return data_postgis_aggregate_1.DataPostGISAggregate; } });
32
+ var data_job_trigger_1 = require("./data-job-trigger");
33
+ Object.defineProperty(exports, "DataJobTrigger", { enumerable: true, get: function () { return data_job_trigger_1.DataJobTrigger; } });
34
+ var data_tags_1 = require("./data-tags");
35
+ Object.defineProperty(exports, "DataTags", { enumerable: true, get: function () { return data_tags_1.DataTags; } });
36
+ var data_status_field_1 = require("./data-status-field");
37
+ Object.defineProperty(exports, "DataStatusField", { enumerable: true, get: function () { return data_status_field_1.DataStatusField; } });
38
+ var data_jsonb_1 = require("./data-jsonb");
39
+ Object.defineProperty(exports, "DataJsonb", { enumerable: true, get: function () { return data_jsonb_1.DataJsonb; } });
40
+ var data_trgm_1 = require("./data-trgm");
41
+ Object.defineProperty(exports, "DataTrgm", { enumerable: true, get: function () { return data_trgm_1.DataTrgm; } });
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzAllowAll: NodeTypeDefinition;
@@ -0,0 +1,12 @@
1
+ export const AuthzAllowAll = {
2
+ name: 'AuthzAllowAll',
3
+ slug: 'authz_allow_all',
4
+ category: 'authz',
5
+ display_name: 'Public Access',
6
+ description: 'Allows all access. Generates TRUE expression.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {}
10
+ },
11
+ tags: ['authz'],
12
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzComposite: NodeTypeDefinition;
@@ -0,0 +1,36 @@
1
+ export const AuthzComposite = {
2
+ name: 'AuthzComposite',
3
+ slug: 'authz_composite',
4
+ category: 'authz',
5
+ display_name: 'Composite Policy',
6
+ description: 'Composite authorization policy that combines multiple authorization nodes using boolean logic (AND/OR). The data field contains a JSONB AST with nested authorization nodes.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "description": "A composite policy containing nested authorization nodes combined with boolean logic",
10
+ "properties": {
11
+ "BoolExpr": {
12
+ "type": "object",
13
+ "description": "Boolean expression combining multiple authorization nodes",
14
+ "properties": {
15
+ "boolop": {
16
+ "type": "string",
17
+ "enum": [
18
+ "AND_EXPR",
19
+ "OR_EXPR",
20
+ "NOT_EXPR"
21
+ ],
22
+ "description": "Boolean operator: AND_EXPR, OR_EXPR, or NOT_EXPR"
23
+ },
24
+ "args": {
25
+ "type": "array",
26
+ "description": "Array of authorization nodes to combine",
27
+ "items": {
28
+ "type": "object"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ },
35
+ tags: ['composite', 'authz'],
36
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzDenyAll: NodeTypeDefinition;
@@ -0,0 +1,12 @@
1
+ export const AuthzDenyAll = {
2
+ name: 'AuthzDenyAll',
3
+ slug: 'authz_deny_all',
4
+ category: 'authz',
5
+ display_name: 'No Access',
6
+ description: 'Denies all access. Generates FALSE expression.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {}
10
+ },
11
+ tags: ['authz'],
12
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzDirectOwnerAny: NodeTypeDefinition;
@@ -0,0 +1,23 @@
1
+ export const AuthzDirectOwnerAny = {
2
+ name: 'AuthzDirectOwnerAny',
3
+ slug: 'authz_direct_owner_any',
4
+ category: 'authz',
5
+ display_name: 'Multi-Owner Access',
6
+ description: 'OR logic for multiple ownership fields. Checks if current user matches any of the specified fields.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "entity_fields": {
11
+ "type": "array",
12
+ "items": {
13
+ "type": "string"
14
+ },
15
+ "description": "Array of column names to check for ownership"
16
+ }
17
+ },
18
+ "required": [
19
+ "entity_fields"
20
+ ]
21
+ },
22
+ tags: ['ownership', 'authz'],
23
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzDirectOwner: NodeTypeDefinition;
@@ -0,0 +1,20 @@
1
+ export const AuthzDirectOwner = {
2
+ name: 'AuthzDirectOwner',
3
+ slug: 'authz_direct_owner',
4
+ category: 'authz',
5
+ display_name: 'Direct Ownership',
6
+ description: 'Direct equality comparison between a table column and the current user ID. Simplest authorization pattern with no subqueries.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "entity_field": {
11
+ "type": "string",
12
+ "description": "Column name containing the owner user ID (e.g., owner_id)"
13
+ }
14
+ },
15
+ "required": [
16
+ "entity_field"
17
+ ]
18
+ },
19
+ tags: ['ownership', 'authz'],
20
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzEntityMembership: NodeTypeDefinition;
@@ -0,0 +1,46 @@
1
+ export const AuthzEntityMembership = {
2
+ name: 'AuthzEntityMembership',
3
+ slug: 'authz_entity_membership',
4
+ category: 'authz',
5
+ display_name: 'Entity Membership',
6
+ description: 'Membership check scoped by a field on the row through the SPRT table. Verifies user has membership in the entity referenced by the row.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "entity_field": {
11
+ "type": "string",
12
+ "description": "Column name referencing the entity (e.g., entity_id, org_id)"
13
+ },
14
+ "membership_type": {
15
+ "type": [
16
+ "integer",
17
+ "string"
18
+ ],
19
+ "description": "Scope: 1=app, 2=org, 3=group (or string name resolved via membership_types_module)"
20
+ },
21
+ "permission": {
22
+ "type": "string",
23
+ "description": "Single permission name to check (resolved to bitstring mask)"
24
+ },
25
+ "permissions": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "string"
29
+ },
30
+ "description": "Multiple permission names to check (ORed together into mask)"
31
+ },
32
+ "is_admin": {
33
+ "type": "boolean",
34
+ "description": "If true, require is_admin flag"
35
+ },
36
+ "is_owner": {
37
+ "type": "boolean",
38
+ "description": "If true, require is_owner flag"
39
+ }
40
+ },
41
+ "required": [
42
+ "entity_field"
43
+ ]
44
+ },
45
+ tags: ['membership', 'authz'],
46
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzMemberList: NodeTypeDefinition;
@@ -0,0 +1,20 @@
1
+ export const AuthzMemberList = {
2
+ name: 'AuthzMemberList',
3
+ slug: 'authz_member_list',
4
+ category: 'authz',
5
+ display_name: 'Member List',
6
+ description: 'Check if current user is in an array column on the same row.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "array_field": {
11
+ "type": "string",
12
+ "description": "Column name containing the array of user IDs"
13
+ }
14
+ },
15
+ "required": [
16
+ "array_field"
17
+ ]
18
+ },
19
+ tags: ['ownership', 'authz'],
20
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzMembership: NodeTypeDefinition;
@@ -0,0 +1,42 @@
1
+ export const AuthzMembership = {
2
+ name: 'AuthzMembership',
3
+ slug: 'authz_membership_check',
4
+ category: 'authz',
5
+ display_name: 'Membership Check',
6
+ description: 'Membership check that verifies the user has membership (optionally with specific permission) without binding to any entity from the row. Uses EXISTS subquery against SPRT table.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "membership_type": {
11
+ "type": [
12
+ "integer",
13
+ "string"
14
+ ],
15
+ "description": "Scope: 1=app, 2=org, 3=group (or string name resolved via membership_types_module)"
16
+ },
17
+ "permission": {
18
+ "type": "string",
19
+ "description": "Single permission name to check (resolved to bitstring mask)"
20
+ },
21
+ "permissions": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "string"
25
+ },
26
+ "description": "Multiple permission names to check (ORed together into mask)"
27
+ },
28
+ "is_admin": {
29
+ "type": "boolean",
30
+ "description": "If true, require is_admin flag"
31
+ },
32
+ "is_owner": {
33
+ "type": "boolean",
34
+ "description": "If true, require is_owner flag"
35
+ }
36
+ },
37
+ "required": [
38
+ "membership_type"
39
+ ]
40
+ },
41
+ tags: ['membership', 'authz'],
42
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzOrgHierarchy: NodeTypeDefinition;
@@ -0,0 +1,38 @@
1
+ export const AuthzOrgHierarchy = {
2
+ name: 'AuthzOrgHierarchy',
3
+ slug: 'authz_org_hierarchy',
4
+ category: 'authz',
5
+ display_name: 'Org Hierarchy',
6
+ description: 'Organizational hierarchy visibility using closure table. Managers can see subordinate data or subordinates can see manager data.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "direction": {
11
+ "type": "string",
12
+ "enum": [
13
+ "up",
14
+ "down"
15
+ ],
16
+ "description": "down=manager sees subordinates, up=subordinate sees managers"
17
+ },
18
+ "entity_field": {
19
+ "type": "string",
20
+ "description": "Field referencing the org entity",
21
+ "default": "entity_id"
22
+ },
23
+ "anchor_field": {
24
+ "type": "string",
25
+ "description": "Field referencing the user (e.g., owner_id)"
26
+ },
27
+ "max_depth": {
28
+ "type": "integer",
29
+ "description": "Optional max depth to limit visibility"
30
+ }
31
+ },
32
+ "required": [
33
+ "direction",
34
+ "anchor_field"
35
+ ]
36
+ },
37
+ tags: ['membership', 'hierarchy', 'authz'],
38
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzPeerOwnership: NodeTypeDefinition;
@@ -0,0 +1,46 @@
1
+ export const AuthzPeerOwnership = {
2
+ name: 'AuthzPeerOwnership',
3
+ slug: 'authz_peer_ownership',
4
+ category: 'authz',
5
+ display_name: 'Peer Ownership',
6
+ description: '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.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "owner_field": {
11
+ "type": "string",
12
+ "description": "Column name on protected table referencing the owning user (e.g., owner_id)"
13
+ },
14
+ "membership_type": {
15
+ "type": [
16
+ "integer",
17
+ "string"
18
+ ],
19
+ "description": "Scope: 1=app, 2=org, 3=group (or string name resolved via membership_types_module)"
20
+ },
21
+ "permission": {
22
+ "type": "string",
23
+ "description": "Single permission name to check on the current user membership (resolved to bitstring mask)"
24
+ },
25
+ "permissions": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "string"
29
+ },
30
+ "description": "Multiple permission names to check on the current user membership (ORed together into mask)"
31
+ },
32
+ "is_admin": {
33
+ "type": "boolean",
34
+ "description": "If true, require is_admin flag on current user membership"
35
+ },
36
+ "is_owner": {
37
+ "type": "boolean",
38
+ "description": "If true, require is_owner flag on current user membership"
39
+ }
40
+ },
41
+ "required": [
42
+ "owner_field"
43
+ ]
44
+ },
45
+ tags: ['membership', 'peer', 'authz'],
46
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzPublishable: NodeTypeDefinition;
@@ -0,0 +1,28 @@
1
+ export const AuthzPublishable = {
2
+ name: 'AuthzPublishable',
3
+ slug: 'authz_publishable',
4
+ category: 'authz',
5
+ display_name: 'Published Content',
6
+ description: 'Published state access control. Restricts access to records that are published.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "is_published_field": {
11
+ "type": "string",
12
+ "description": "Boolean field indicating published state",
13
+ "default": "is_published"
14
+ },
15
+ "published_at_field": {
16
+ "type": "string",
17
+ "description": "Timestamp field for publish time",
18
+ "default": "published_at"
19
+ },
20
+ "require_published_at": {
21
+ "type": "boolean",
22
+ "description": "Require published_at to be non-null and <= now()",
23
+ "default": true
24
+ }
25
+ }
26
+ },
27
+ tags: ['temporal', 'publishing', 'authz'],
28
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzRelatedEntityMembership: NodeTypeDefinition;
@@ -0,0 +1,68 @@
1
+ export const AuthzRelatedEntityMembership = {
2
+ name: 'AuthzRelatedEntityMembership',
3
+ slug: 'authz_related_entity_membership',
4
+ category: 'authz',
5
+ display_name: 'Related Entity Membership',
6
+ description: 'JOIN-based membership verification through related tables. Joins SPRT table with another table to verify membership.',
7
+ parameter_schema: {
8
+ "type": "object",
9
+ "properties": {
10
+ "entity_field": {
11
+ "type": "string",
12
+ "description": "Column name on protected table referencing the join table"
13
+ },
14
+ "membership_type": {
15
+ "type": [
16
+ "integer",
17
+ "string"
18
+ ],
19
+ "description": "Scope: 1=app, 2=org, 3=group (or string name resolved via membership_types_module)"
20
+ },
21
+ "obj_table_id": {
22
+ "type": "string",
23
+ "format": "uuid",
24
+ "description": "UUID of the join table (alternative to obj_schema/obj_table)"
25
+ },
26
+ "obj_schema": {
27
+ "type": "string",
28
+ "description": "Schema of the join table (or use obj_table_id)"
29
+ },
30
+ "obj_table": {
31
+ "type": "string",
32
+ "description": "Name of the join table (or use obj_table_id)"
33
+ },
34
+ "obj_field_id": {
35
+ "type": "string",
36
+ "format": "uuid",
37
+ "description": "UUID of field on join table (alternative to obj_field)"
38
+ },
39
+ "obj_field": {
40
+ "type": "string",
41
+ "description": "Field name on join table to match against SPRT entity_id"
42
+ },
43
+ "permission": {
44
+ "type": "string",
45
+ "description": "Single permission name to check (resolved to bitstring mask)"
46
+ },
47
+ "permissions": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "Multiple permission names to check (ORed together into mask)"
53
+ },
54
+ "is_admin": {
55
+ "type": "boolean",
56
+ "description": "If true, require is_admin flag"
57
+ },
58
+ "is_owner": {
59
+ "type": "boolean",
60
+ "description": "If true, require is_owner flag"
61
+ }
62
+ },
63
+ "required": [
64
+ "entity_field"
65
+ ]
66
+ },
67
+ tags: ['membership', 'authz'],
68
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const AuthzRelatedMemberList: NodeTypeDefinition;