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,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataJobTrigger = void 0;
4
+ exports.DataJobTrigger = {
5
+ name: 'DataJobTrigger',
6
+ slug: 'data_job_trigger',
7
+ category: 'data',
8
+ display_name: 'Job Trigger',
9
+ description: '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).',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "task_identifier": {
14
+ "type": "string",
15
+ "description": "Job task identifier passed to add_job (e.g., process_invoice, sync_to_stripe)"
16
+ },
17
+ "payload_strategy": {
18
+ "type": "string",
19
+ "enum": [
20
+ "row",
21
+ "row_id",
22
+ "fields",
23
+ "custom"
24
+ ],
25
+ "description": "How to build the job payload: row (full NEW/OLD), row_id (just id), fields (selected columns), custom (mapped columns)",
26
+ "default": "row_id"
27
+ },
28
+ "payload_fields": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "string"
32
+ },
33
+ "description": "Column names to include in payload (only for fields strategy)"
34
+ },
35
+ "payload_custom": {
36
+ "type": "object",
37
+ "additionalProperties": {
38
+ "type": "string"
39
+ },
40
+ "description": "Key-to-column mapping for custom payload (e.g., {\"invoice_id\": \"id\", \"total\": \"amount\"})"
41
+ },
42
+ "events": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "string",
46
+ "enum": [
47
+ "INSERT",
48
+ "UPDATE",
49
+ "DELETE"
50
+ ]
51
+ },
52
+ "description": "Trigger events to create",
53
+ "default": [
54
+ "INSERT",
55
+ "UPDATE"
56
+ ]
57
+ },
58
+ "include_old": {
59
+ "type": "boolean",
60
+ "description": "Include OLD row in payload (for UPDATE triggers)",
61
+ "default": false
62
+ },
63
+ "include_meta": {
64
+ "type": "boolean",
65
+ "description": "Include table/schema metadata in payload",
66
+ "default": false
67
+ },
68
+ "condition_field": {
69
+ "type": "string",
70
+ "description": "Column name for conditional WHEN clause (fires only when field equals condition_value)"
71
+ },
72
+ "condition_value": {
73
+ "type": "string",
74
+ "description": "Value to compare against condition_field in WHEN clause"
75
+ },
76
+ "watch_fields": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "string"
80
+ },
81
+ "description": "For UPDATE triggers, only fire when these fields change (uses DISTINCT FROM)"
82
+ },
83
+ "job_key": {
84
+ "type": "string",
85
+ "description": "Static job key for upsert semantics (prevents duplicate jobs)"
86
+ },
87
+ "queue_name": {
88
+ "type": "string",
89
+ "description": "Job queue name for routing to specific workers"
90
+ },
91
+ "priority": {
92
+ "type": "integer",
93
+ "description": "Job priority (lower = higher priority)",
94
+ "default": 0
95
+ },
96
+ "run_at_delay": {
97
+ "type": "string",
98
+ "description": "Delay before job runs as PostgreSQL interval (e.g., 30 seconds, 5 minutes)"
99
+ },
100
+ "max_attempts": {
101
+ "type": "integer",
102
+ "description": "Maximum retry attempts for the job",
103
+ "default": 25
104
+ }
105
+ },
106
+ "required": [
107
+ "task_identifier"
108
+ ]
109
+ },
110
+ tags: ['jobs', 'triggers', 'async'],
111
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataJsonb: NodeTypeDefinition;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataJsonb = void 0;
4
+ exports.DataJsonb = {
5
+ name: 'DataJsonb',
6
+ slug: 'data_jsonb',
7
+ category: 'data',
8
+ display_name: 'JSONB Field',
9
+ description: 'Adds a JSONB column with optional GIN index for containment queries (@>, ?, ?|, ?&). Standard pattern for semi-structured metadata.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "field_name": {
14
+ "type": "string",
15
+ "description": "Column name for the JSONB field",
16
+ "default": "metadata"
17
+ },
18
+ "default_value": {
19
+ "type": "string",
20
+ "description": "Default value expression"
21
+ },
22
+ "is_required": {
23
+ "type": "boolean",
24
+ "description": "Whether the column has a NOT NULL constraint",
25
+ "default": false
26
+ },
27
+ "create_index": {
28
+ "type": "boolean",
29
+ "description": "Whether to create a GIN index",
30
+ "default": true
31
+ }
32
+ }
33
+ },
34
+ tags: ['jsonb', 'schema'],
35
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataOwnershipInEntity: NodeTypeDefinition;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataOwnershipInEntity = void 0;
4
+ exports.DataOwnershipInEntity = {
5
+ name: 'DataOwnershipInEntity',
6
+ slug: 'data_ownership_in_entity',
7
+ category: 'data',
8
+ display_name: 'Ownership In Entity',
9
+ description: 'Combines direct ownership with entity scoping. Adds both owner_id and entity_id columns. Enables AuthzDirectOwner, AuthzEntityMembership, and AuthzOrgHierarchy authorization. Particularly useful for OrgHierarchy where a user owns a row (owner_id) within an entity (entity_id), and managers above can see subordinate-owned records via the hierarchy closure table.',
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
+ "include_user_fk": {
19
+ "type": "boolean",
20
+ "description": "If true, adds foreign key constraints from owner_id and entity_id to the users table",
21
+ "default": true
22
+ }
23
+ }
24
+ },
25
+ tags: ['ownership', 'membership', 'hierarchy', 'schema'],
26
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataPeoplestamps: NodeTypeDefinition;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataPeoplestamps = void 0;
4
+ exports.DataPeoplestamps = {
5
+ name: 'DataPeoplestamps',
6
+ slug: 'data_peoplestamps',
7
+ category: 'data',
8
+ display_name: 'Peoplestamps',
9
+ description: 'Adds user tracking for creates/updates with created_by and updated_by 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
+ "include_user_fk": {
19
+ "type": "boolean",
20
+ "description": "If true, adds foreign key constraints from created_by and updated_by to the users table",
21
+ "default": false
22
+ }
23
+ }
24
+ },
25
+ tags: ['timestamps', 'schema'],
26
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataPostGISAggregate: NodeTypeDefinition;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataPostGISAggregate = void 0;
4
+ exports.DataPostGISAggregate = {
5
+ name: 'DataPostGISAggregate',
6
+ slug: 'data_postgis_aggregate',
7
+ category: 'data',
8
+ display_name: 'PostGIS Aggregate Geometry',
9
+ description: '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.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "field_name": {
14
+ "type": "string",
15
+ "description": "Name of the aggregate geometry column on the parent table",
16
+ "default": "geom_aggregate"
17
+ },
18
+ "source_table_id": {
19
+ "type": "string",
20
+ "format": "uuid",
21
+ "description": "UUID of the source (child) table containing individual geometries"
22
+ },
23
+ "source_geom_field": {
24
+ "type": "string",
25
+ "description": "Name of the geometry column on the source table",
26
+ "default": "geom"
27
+ },
28
+ "source_fk_field": {
29
+ "type": "string",
30
+ "description": "Name of the foreign key column on the source table pointing to the parent"
31
+ },
32
+ "aggregate_function": {
33
+ "type": "string",
34
+ "enum": [
35
+ "union",
36
+ "collect",
37
+ "convex_hull",
38
+ "concave_hull"
39
+ ],
40
+ "description": "PostGIS aggregation function: union (ST_Union, merges overlapping), collect (ST_Collect, groups without merging), convex_hull (smallest convex polygon), concave_hull (tighter boundary)",
41
+ "default": "union"
42
+ },
43
+ "geometry_type": {
44
+ "type": "string",
45
+ "enum": [
46
+ "Point",
47
+ "LineString",
48
+ "Polygon",
49
+ "MultiPoint",
50
+ "MultiLineString",
51
+ "MultiPolygon",
52
+ "GeometryCollection",
53
+ "Geometry"
54
+ ],
55
+ "description": "Output geometry type constraint for the aggregate field",
56
+ "default": "MultiPolygon"
57
+ },
58
+ "srid": {
59
+ "type": "integer",
60
+ "description": "Spatial Reference System Identifier (e.g. 4326 for WGS84)",
61
+ "default": 4326
62
+ },
63
+ "dimension": {
64
+ "type": "integer",
65
+ "enum": [
66
+ 2,
67
+ 3,
68
+ 4
69
+ ],
70
+ "description": "Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)",
71
+ "default": 2
72
+ },
73
+ "use_geography": {
74
+ "type": "boolean",
75
+ "description": "Use geography type instead of geometry",
76
+ "default": false
77
+ },
78
+ "index_method": {
79
+ "type": "string",
80
+ "enum": [
81
+ "gist",
82
+ "spgist"
83
+ ],
84
+ "description": "Spatial index method for the aggregate field",
85
+ "default": "gist"
86
+ }
87
+ },
88
+ "required": [
89
+ "source_table_id",
90
+ "source_fk_field"
91
+ ]
92
+ },
93
+ tags: ['spatial', 'postgis', 'geometry', 'aggregate', 'schema'],
94
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataPostGIS: NodeTypeDefinition;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataPostGIS = void 0;
4
+ exports.DataPostGIS = {
5
+ name: 'DataPostGIS',
6
+ slug: 'data_postgis',
7
+ category: 'data',
8
+ display_name: 'PostGIS Geometry',
9
+ description: '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).',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "field_name": {
14
+ "type": "string",
15
+ "description": "Name of the geometry/geography column",
16
+ "default": "geom"
17
+ },
18
+ "geometry_type": {
19
+ "type": "string",
20
+ "enum": [
21
+ "Point",
22
+ "LineString",
23
+ "Polygon",
24
+ "MultiPoint",
25
+ "MultiLineString",
26
+ "MultiPolygon",
27
+ "GeometryCollection",
28
+ "Geometry"
29
+ ],
30
+ "description": "PostGIS geometry type constraint",
31
+ "default": "Point"
32
+ },
33
+ "srid": {
34
+ "type": "integer",
35
+ "description": "Spatial Reference System Identifier (e.g. 4326 for WGS84)",
36
+ "default": 4326
37
+ },
38
+ "dimension": {
39
+ "type": "integer",
40
+ "enum": [
41
+ 2,
42
+ 3,
43
+ 4
44
+ ],
45
+ "description": "Coordinate dimension (2=XY, 3=XYZ, 4=XYZM)",
46
+ "default": 2
47
+ },
48
+ "use_geography": {
49
+ "type": "boolean",
50
+ "description": "Use geography type instead of geometry (for geodetic calculations on the sphere)",
51
+ "default": false
52
+ },
53
+ "index_method": {
54
+ "type": "string",
55
+ "enum": [
56
+ "gist",
57
+ "spgist"
58
+ ],
59
+ "description": "Spatial index method",
60
+ "default": "gist"
61
+ }
62
+ }
63
+ },
64
+ tags: ['spatial', 'postgis', 'geometry', 'schema'],
65
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataPublishable: NodeTypeDefinition;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataPublishable = void 0;
4
+ exports.DataPublishable = {
5
+ name: 'DataPublishable',
6
+ slug: 'data_publishable',
7
+ category: 'data',
8
+ display_name: 'Publishable',
9
+ description: 'Adds publish state columns (is_published, published_at) for content visibility. Enables AuthzPublishable and AuthzTemporal authorization.',
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: ['publishing', 'temporal', 'schema'],
21
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataSearch: NodeTypeDefinition;
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataSearch = void 0;
4
+ exports.DataSearch = {
5
+ name: 'DataSearch',
6
+ slug: 'data_search',
7
+ category: 'data',
8
+ display_name: 'Unified Search',
9
+ description: 'Composite node type that orchestrates multiple search modalities (full-text search, BM25, embeddings, trigram) on a single table. Configures per-table search score weights, normalization strategy, and recency boost via the @searchConfig smart tag.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "full_text_search": {
14
+ "type": "object",
15
+ "description": "DataFullTextSearch parameters. Omit to skip FTS setup.",
16
+ "properties": {
17
+ "field_name": {
18
+ "type": "string",
19
+ "default": "search"
20
+ },
21
+ "source_fields": {
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "properties": {
26
+ "field": {
27
+ "type": "string"
28
+ },
29
+ "weight": {
30
+ "type": "string",
31
+ "enum": [
32
+ "A",
33
+ "B",
34
+ "C",
35
+ "D"
36
+ ]
37
+ },
38
+ "lang": {
39
+ "type": "string"
40
+ }
41
+ },
42
+ "required": [
43
+ "field"
44
+ ]
45
+ }
46
+ },
47
+ "search_score_weight": {
48
+ "type": "number",
49
+ "default": 1
50
+ }
51
+ }
52
+ },
53
+ "bm25": {
54
+ "type": "object",
55
+ "description": "DataBm25 parameters. Omit to skip BM25 setup.",
56
+ "properties": {
57
+ "field_name": {
58
+ "type": "string"
59
+ },
60
+ "text_config": {
61
+ "type": "string",
62
+ "default": "english"
63
+ },
64
+ "k1": {
65
+ "type": "number"
66
+ },
67
+ "b": {
68
+ "type": "number"
69
+ },
70
+ "search_score_weight": {
71
+ "type": "number",
72
+ "default": 1
73
+ }
74
+ }
75
+ },
76
+ "embedding": {
77
+ "type": "object",
78
+ "description": "DataEmbedding parameters. Omit to skip embedding setup.",
79
+ "properties": {
80
+ "field_name": {
81
+ "type": "string",
82
+ "default": "embedding"
83
+ },
84
+ "dimensions": {
85
+ "type": "integer",
86
+ "default": 768
87
+ },
88
+ "index_method": {
89
+ "type": "string",
90
+ "enum": [
91
+ "hnsw",
92
+ "ivfflat"
93
+ ]
94
+ },
95
+ "metric": {
96
+ "type": "string",
97
+ "enum": [
98
+ "cosine",
99
+ "l2",
100
+ "ip"
101
+ ]
102
+ },
103
+ "source_fields": {
104
+ "type": "array",
105
+ "items": {
106
+ "type": "string"
107
+ }
108
+ },
109
+ "search_score_weight": {
110
+ "type": "number",
111
+ "default": 1
112
+ }
113
+ }
114
+ },
115
+ "trgm_fields": {
116
+ "type": "array",
117
+ "items": {
118
+ "type": "string"
119
+ },
120
+ "description": "Field names to tag with @trgmSearch for fuzzy/typo-tolerant matching"
121
+ },
122
+ "search_config": {
123
+ "type": "object",
124
+ "description": "Unified search score configuration written to @searchConfig smart tag",
125
+ "properties": {
126
+ "weights": {
127
+ "type": "object",
128
+ "description": "Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}"
129
+ },
130
+ "normalization": {
131
+ "type": "string",
132
+ "enum": [
133
+ "linear",
134
+ "sigmoid"
135
+ ],
136
+ "description": "Score normalization strategy",
137
+ "default": "linear"
138
+ },
139
+ "boost_recent": {
140
+ "type": "boolean",
141
+ "description": "Enable recency boost for search results",
142
+ "default": false
143
+ },
144
+ "boost_recency_field": {
145
+ "type": "string",
146
+ "description": "Timestamp field for recency boost (e.g. created_at, updated_at)"
147
+ },
148
+ "boost_recency_decay": {
149
+ "type": "number",
150
+ "description": "Decay rate for recency boost (0-1, lower = faster decay)",
151
+ "default": 0.5
152
+ }
153
+ }
154
+ }
155
+ }
156
+ },
157
+ tags: ['search', 'composite', 'schema'],
158
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataSoftDelete: NodeTypeDefinition;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataSoftDelete = void 0;
4
+ exports.DataSoftDelete = {
5
+ name: 'DataSoftDelete',
6
+ slug: 'data_soft_delete',
7
+ category: 'data',
8
+ display_name: 'Soft Delete',
9
+ description: 'Adds soft delete support with deleted_at and is_deleted 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: ['schema'],
21
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataStatusField: NodeTypeDefinition;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataStatusField = void 0;
4
+ exports.DataStatusField = {
5
+ name: 'DataStatusField',
6
+ slug: 'data_status_field',
7
+ category: 'data',
8
+ display_name: 'Status Field',
9
+ description: 'Adds a status column with B-tree index for efficient equality filtering and sorting. Optionally constrains values via CHECK constraint when allowed_values is provided.',
10
+ parameter_schema: {
11
+ "type": "object",
12
+ "properties": {
13
+ "field_name": {
14
+ "type": "string",
15
+ "description": "Column name for the status field",
16
+ "default": "status"
17
+ },
18
+ "type": {
19
+ "type": "string",
20
+ "description": "Column type (text or citext)",
21
+ "default": "text"
22
+ },
23
+ "default_value": {
24
+ "type": "string",
25
+ "description": "Default value expression (e.g., active)"
26
+ },
27
+ "is_required": {
28
+ "type": "boolean",
29
+ "description": "Whether the column has a NOT NULL constraint",
30
+ "default": true
31
+ },
32
+ "allowed_values": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "string"
36
+ },
37
+ "description": "If provided, creates a CHECK constraint restricting the column to these values"
38
+ }
39
+ }
40
+ },
41
+ tags: ['status', 'schema'],
42
+ };
@@ -0,0 +1,2 @@
1
+ import type { NodeTypeDefinition } from '../types';
2
+ export declare const DataTags: NodeTypeDefinition;