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
@@ -1,46 +1,48 @@
1
1
  export const AuthzTemporal = {
2
- "name": "AuthzTemporal",
3
- "slug": "authz_temporal",
4
- "category": "authz",
5
- "display_name": "Temporal Access",
6
- "description": "Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "valid_from_field": {
11
- "type": "string",
12
- "description": "Column for start time (at least one of valid_from_field or valid_until_field required)"
2
+ name: 'AuthzTemporal',
3
+ slug: 'authz_temporal',
4
+ category: 'authz',
5
+ display_name: 'Temporal Access',
6
+ description: 'Time-window based access control. Restricts access based on valid_from and/or valid_until timestamps. At least one of valid_from_field or valid_until_field must be provided.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ valid_from_field: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Column for start time (at least one of valid_from_field or valid_until_field required)'
13
14
  },
14
- "valid_until_field": {
15
- "type": "string",
16
- "description": "Column for end time (at least one of valid_from_field or valid_until_field required)"
15
+ valid_until_field: {
16
+ type: 'string',
17
+ format: 'column-ref',
18
+ description: 'Column for end time (at least one of valid_from_field or valid_until_field required)'
17
19
  },
18
- "valid_from_inclusive": {
19
- "type": "boolean",
20
- "description": "Include start boundary",
21
- "default": true
20
+ valid_from_inclusive: {
21
+ type: 'boolean',
22
+ description: 'Include start boundary',
23
+ default: true
22
24
  },
23
- "valid_until_inclusive": {
24
- "type": "boolean",
25
- "description": "Include end boundary",
26
- "default": false
25
+ valid_until_inclusive: {
26
+ type: 'boolean',
27
+ description: 'Include end boundary',
28
+ default: false
27
29
  }
28
30
  },
29
- "anyOf": [
31
+ anyOf: [
30
32
  {
31
- "required": [
32
- "valid_from_field"
33
+ required: [
34
+ 'valid_from_field'
33
35
  ]
34
36
  },
35
37
  {
36
- "required": [
37
- "valid_until_field"
38
+ required: [
39
+ 'valid_until_field'
38
40
  ]
39
41
  }
40
42
  ]
41
43
  },
42
- "tags": [
43
- "temporal",
44
- "authz"
44
+ tags: [
45
+ 'temporal',
46
+ 'authz'
45
47
  ]
46
48
  };
@@ -1,16 +1,16 @@
1
+ export { AuthzAllowAll } from './authz-allow-all';
2
+ export { AuthzComposite } from './authz-composite';
3
+ export { AuthzDenyAll } from './authz-deny-all';
1
4
  export { AuthzDirectOwner } from './authz-direct-owner';
2
5
  export { AuthzDirectOwnerAny } from './authz-direct-owner-any';
3
- export { AuthzMembership } from './authz-membership-check';
4
6
  export { AuthzEntityMembership } from './authz-entity-membership';
5
- export { AuthzRelatedEntityMembership } from './authz-related-entity-membership';
6
- export { AuthzOrgHierarchy } from './authz-org-hierarchy';
7
- export { AuthzTemporal } from './authz-temporal';
8
- export { AuthzPublishable } from './authz-publishable';
9
7
  export { AuthzMemberList } from './authz-member-list';
10
- export { AuthzRelatedMemberList } from './authz-related-member-list';
11
- export { AuthzAllowAll } from './authz-allow-all';
12
- export { AuthzDenyAll } from './authz-deny-all';
13
- export { AuthzComposite } from './authz-composite';
8
+ export { AuthzMembership } from './authz-membership-check';
14
9
  export { AuthzNotReadOnly } from './authz-not-read-only';
10
+ export { AuthzOrgHierarchy } from './authz-org-hierarchy';
15
11
  export { AuthzPeerOwnership } from './authz-peer-ownership';
12
+ export { AuthzPublishable } from './authz-publishable';
13
+ export { AuthzRelatedEntityMembership } from './authz-related-entity-membership';
14
+ export { AuthzRelatedMemberList } from './authz-related-member-list';
16
15
  export { AuthzRelatedPeerOwnership } from './authz-related-peer-ownership';
16
+ export { AuthzTemporal } from './authz-temporal';
@@ -1,16 +1,16 @@
1
+ export { AuthzAllowAll } from './authz-allow-all';
2
+ export { AuthzComposite } from './authz-composite';
3
+ export { AuthzDenyAll } from './authz-deny-all';
1
4
  export { AuthzDirectOwner } from './authz-direct-owner';
2
5
  export { AuthzDirectOwnerAny } from './authz-direct-owner-any';
3
- export { AuthzMembership } from './authz-membership-check';
4
6
  export { AuthzEntityMembership } from './authz-entity-membership';
5
- export { AuthzRelatedEntityMembership } from './authz-related-entity-membership';
6
- export { AuthzOrgHierarchy } from './authz-org-hierarchy';
7
- export { AuthzTemporal } from './authz-temporal';
8
- export { AuthzPublishable } from './authz-publishable';
9
7
  export { AuthzMemberList } from './authz-member-list';
10
- export { AuthzRelatedMemberList } from './authz-related-member-list';
11
- export { AuthzAllowAll } from './authz-allow-all';
12
- export { AuthzDenyAll } from './authz-deny-all';
13
- export { AuthzComposite } from './authz-composite';
8
+ export { AuthzMembership } from './authz-membership-check';
14
9
  export { AuthzNotReadOnly } from './authz-not-read-only';
10
+ export { AuthzOrgHierarchy } from './authz-org-hierarchy';
15
11
  export { AuthzPeerOwnership } from './authz-peer-ownership';
12
+ export { AuthzPublishable } from './authz-publishable';
13
+ export { AuthzRelatedEntityMembership } from './authz-related-entity-membership';
14
+ export { AuthzRelatedMemberList } from './authz-related-member-list';
16
15
  export { AuthzRelatedPeerOwnership } from './authz-related-peer-ownership';
16
+ export { AuthzTemporal } from './authz-temporal';
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable @typescript-eslint/no-empty-object-type */
3
3
  //
4
4
  // Regenerate with:
5
- // cd graphql/node-type-registry && pnpm generate:types
5
+ // cd packages/node-type-registry && pnpm generate:types
6
6
  //
7
7
  // These types match the JSONB shape expected by construct_blueprint().
8
8
  // All field names are snake_case to match the SQL convention.
@@ -524,7 +524,7 @@ function buildProgram(meta) {
524
524
  '/* eslint-disable @typescript-eslint/no-empty-object-type */',
525
525
  '//',
526
526
  '// Regenerate with:',
527
- '// cd graphql/node-type-registry && pnpm generate:types',
527
+ '// cd packages/node-type-registry && pnpm generate:types',
528
528
  '//',
529
529
  '// These types match the JSONB shape expected by construct_blueprint().',
530
530
  '// All field names are snake_case to match the SQL convention.',
@@ -1,35 +1,37 @@
1
1
  export const DataCompositeField = {
2
- "name": "DataCompositeField",
3
- "slug": "data_composite_field",
4
- "category": "data",
5
- "display_name": "Composite Field",
6
- "description": "Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with '_000' prefix to run before Search* triggers alphabetically.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "target": {
11
- "type": "string",
12
- "description": "Name of the derived text field to create (default: 'embedding_text')"
2
+ name: 'DataCompositeField',
3
+ slug: 'data_composite_field',
4
+ category: 'data',
5
+ display_name: 'Composite Field',
6
+ description: "Creates a derived text field that automatically concatenates multiple source fields via BEFORE INSERT/UPDATE triggers. Used to produce a unified text representation (e.g., embedding_text) from multiple columns on a table. The trigger fires with '_000' prefix to run before Search* triggers alphabetically.",
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ target: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: "Name of the derived text field to create (default: 'embedding_text')"
13
14
  },
14
- "source_fields": {
15
- "type": "array",
16
- "items": {
17
- "type": "string"
15
+ source_fields: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'string',
19
+ format: 'column-ref'
18
20
  },
19
- "description": "Array of source field names to concatenate into the target field"
21
+ description: 'Array of source field names to concatenate into the target field'
20
22
  },
21
- "format": {
22
- "type": "string",
23
- "enum": ["labeled", "plain"],
24
- "description": "Output format: 'labeled' (field_name: value) or 'plain' (values only). Default: 'labeled'"
23
+ format: {
24
+ type: 'string',
25
+ enum: ['labeled', 'plain'],
26
+ description: "Output format: 'labeled' (field_name: value) or 'plain' (values only). Default: 'labeled'"
25
27
  }
26
28
  },
27
- "required": [
28
- "source_fields"
29
+ required: [
30
+ 'source_fields'
29
31
  ]
30
32
  },
31
- "tags": [
32
- "transform",
33
- "behavior"
33
+ tags: [
34
+ 'transform',
35
+ 'behavior'
34
36
  ]
35
37
  };
@@ -1,31 +1,32 @@
1
1
  export const DataDirectOwner = {
2
- "name": "DataDirectOwner",
3
- "slug": "data_direct_owner",
4
- "category": "data",
5
- "display_name": "Ownership",
6
- "description": "Adds ownership column for direct user ownership. Enables AuthzDirectOwner authorization.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "owner_field_name": {
11
- "type": "string",
12
- "description": "Column name for owner ID",
13
- "default": "owner_id"
2
+ name: 'DataDirectOwner',
3
+ slug: 'data_direct_owner',
4
+ category: 'data',
5
+ display_name: 'Ownership',
6
+ description: 'Adds ownership column for direct user ownership. Enables AuthzDirectOwner authorization.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ owner_field_name: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Column name for owner ID',
14
+ default: 'owner_id'
14
15
  },
15
- "include_id": {
16
- "type": "boolean",
17
- "description": "If true, also adds a UUID primary key column with auto-generation",
18
- "default": true
16
+ include_id: {
17
+ type: 'boolean',
18
+ description: 'If true, also adds a UUID primary key column with auto-generation',
19
+ default: true
19
20
  },
20
- "include_user_fk": {
21
- "type": "boolean",
22
- "description": "If true, adds a foreign key constraint from owner_id to the users table",
23
- "default": true
21
+ include_user_fk: {
22
+ type: 'boolean',
23
+ description: 'If true, adds a foreign key constraint from owner_id to the users table',
24
+ default: true
24
25
  }
25
26
  }
26
27
  },
27
- "tags": [
28
- "ownership",
29
- "schema"
28
+ tags: [
29
+ 'ownership',
30
+ 'schema'
30
31
  ]
31
32
  };
@@ -1,31 +1,32 @@
1
1
  export const DataEntityMembership = {
2
- "name": "DataEntityMembership",
3
- "slug": "data_entity_membership",
4
- "category": "data",
5
- "display_name": "Entity Membership",
6
- "description": "Adds entity reference for organization/group scoping. Enables AuthzEntityMembership, AuthzMembership, AuthzOrgHierarchy authorization.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "entity_field_name": {
11
- "type": "string",
12
- "description": "Column name for entity ID",
13
- "default": "entity_id"
2
+ name: 'DataEntityMembership',
3
+ slug: 'data_entity_membership',
4
+ category: 'data',
5
+ display_name: 'Entity Membership',
6
+ description: 'Adds entity reference for organization/group scoping. Enables AuthzEntityMembership, AuthzMembership, AuthzOrgHierarchy authorization.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ entity_field_name: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Column name for entity ID',
14
+ default: 'entity_id'
14
15
  },
15
- "include_id": {
16
- "type": "boolean",
17
- "description": "If true, also adds a UUID primary key column with auto-generation",
18
- "default": true
16
+ include_id: {
17
+ type: 'boolean',
18
+ description: 'If true, also adds a UUID primary key column with auto-generation',
19
+ default: true
19
20
  },
20
- "include_user_fk": {
21
- "type": "boolean",
22
- "description": "If true, adds a foreign key constraint from entity_id to the users table",
23
- "default": true
21
+ include_user_fk: {
22
+ type: 'boolean',
23
+ description: 'If true, adds a foreign key constraint from entity_id to the users table',
24
+ default: true
24
25
  }
25
26
  }
26
27
  },
27
- "tags": [
28
- "membership",
29
- "schema"
28
+ tags: [
29
+ 'membership',
30
+ 'schema'
30
31
  ]
31
32
  };
@@ -1,22 +1,23 @@
1
1
  export const DataForceCurrentUser = {
2
- "name": "DataForceCurrentUser",
3
- "slug": "data_force_current_user",
4
- "category": "data",
5
- "display_name": "Force Current User",
6
- "description": "BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "field_name": {
11
- "type": "string",
12
- "description": "Name of the field to force to current_user_id()",
13
- "default": "actor_id"
2
+ name: 'DataForceCurrentUser',
3
+ slug: 'data_force_current_user',
4
+ category: 'data',
5
+ display_name: 'Force Current User',
6
+ description: 'BEFORE INSERT trigger that forces a field to the value of jwt_public.current_user_id(). Prevents clients from spoofing the actor/uploader identity. The field value is always overwritten regardless of what the client provides.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ field_name: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Name of the field to force to current_user_id()',
14
+ default: 'actor_id'
14
15
  }
15
16
  }
16
17
  },
17
- "tags": [
18
- "trigger",
19
- "security",
20
- "schema"
18
+ tags: [
19
+ 'trigger',
20
+ 'security',
21
+ 'schema'
21
22
  ]
22
23
  };
@@ -1,21 +1,22 @@
1
1
  export const DataId = {
2
- "name": "DataId",
3
- "slug": "data_id",
4
- "category": "data",
5
- "display_name": "Primary Key ID",
6
- "description": "Adds a UUID primary key column with auto-generation default (uuidv7). This is the standard primary key pattern for all tables.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "field_name": {
11
- "type": "string",
12
- "description": "Column name for the primary key",
13
- "default": "id"
2
+ name: 'DataId',
3
+ slug: 'data_id',
4
+ category: 'data',
5
+ display_name: 'Primary Key ID',
6
+ description: 'Adds a UUID primary key column with auto-generation default (uuidv7). This is the standard primary key pattern for all tables.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ field_name: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Column name for the primary key',
14
+ default: 'id'
14
15
  }
15
16
  }
16
17
  },
17
- "tags": [
18
- "primary_key",
19
- "schema"
18
+ tags: [
19
+ 'primary_key',
20
+ 'schema'
20
21
  ]
21
22
  };
@@ -1,27 +1,28 @@
1
1
  export const DataImmutableFields = {
2
- "name": "DataImmutableFields",
3
- "slug": "data_immutable_fields",
4
- "category": "data",
5
- "display_name": "Immutable Fields",
6
- "description": "BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "fields": {
11
- "type": "array",
12
- "items": {
13
- "type": "string"
2
+ name: 'DataImmutableFields',
3
+ slug: 'data_immutable_fields',
4
+ category: 'data',
5
+ display_name: 'Immutable Fields',
6
+ description: 'BEFORE UPDATE trigger that prevents changes to a list of specified fields after INSERT. Raises an exception if any of the listed fields have changed. Unlike FieldImmutable (single-field), this handles multiple fields in a single trigger for efficiency.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ fields: {
11
+ type: 'array',
12
+ items: {
13
+ type: 'string',
14
+ format: 'column-ref'
14
15
  },
15
- "description": "Field names that cannot be modified after INSERT (e.g. [\"key\", \"bucket_id\", \"owner_id\"])"
16
+ description: 'Field names that cannot be modified after INSERT (e.g. ["key", "bucket_id", "owner_id"])'
16
17
  }
17
18
  },
18
- "required": [
19
- "fields"
19
+ required: [
20
+ 'fields'
20
21
  ]
21
22
  },
22
- "tags": [
23
- "trigger",
24
- "constraint",
25
- "schema"
23
+ tags: [
24
+ 'trigger',
25
+ 'constraint',
26
+ 'schema'
26
27
  ]
27
28
  };
@@ -1,42 +1,43 @@
1
1
  export const DataInflection = {
2
- "name": "DataInflection",
3
- "slug": "data_inflection",
4
- "category": "data",
5
- "display_name": "Inflection",
6
- "description": "Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "field_name": {
11
- "type": "string",
12
- "description": "Name of the field to transform"
2
+ name: 'DataInflection',
3
+ slug: 'data_inflection',
4
+ category: 'data',
5
+ display_name: 'Inflection',
6
+ description: 'Transforms field values using inflection operations (snake_case, camelCase, slugify, plural, singular, etc). Attaches BEFORE INSERT and BEFORE UPDATE triggers. References fields by name in data jsonb.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ field_name: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Name of the field to transform'
13
14
  },
14
- "ops": {
15
- "type": "array",
16
- "items": {
17
- "type": "string",
18
- "enum": [
19
- "plural",
20
- "singular",
21
- "camel",
22
- "pascal",
23
- "dashed",
24
- "slugify",
25
- "underscore",
26
- "lower",
27
- "upper"
15
+ ops: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'string',
19
+ enum: [
20
+ 'plural',
21
+ 'singular',
22
+ 'camel',
23
+ 'pascal',
24
+ 'dashed',
25
+ 'slugify',
26
+ 'underscore',
27
+ 'lower',
28
+ 'upper'
28
29
  ]
29
30
  },
30
- "description": "Inflection operations to apply in order"
31
+ description: 'Inflection operations to apply in order'
31
32
  }
32
33
  },
33
- "required": [
34
- "field_name",
35
- "ops"
34
+ required: [
35
+ 'field_name',
36
+ 'ops'
36
37
  ]
37
38
  },
38
- "tags": [
39
- "transform",
40
- "behavior"
39
+ tags: [
40
+ 'transform',
41
+ 'behavior'
41
42
  ]
42
43
  };
@@ -1,40 +1,42 @@
1
1
  export const DataInheritFromParent = {
2
- "name": "DataInheritFromParent",
3
- "slug": "data_inherit_from_parent",
4
- "category": "data",
5
- "display_name": "Inherit From Parent",
6
- "description": "BEFORE INSERT trigger that copies specified fields from a parent table via a foreign key. The parent row is looked up through RLS (SECURITY INVOKER), so the insert fails if the caller cannot see the parent. Used by the storage module to inherit owner_id and is_public from buckets to files.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "parent_fk_field": {
11
- "type": "string",
12
- "description": "Name of the FK field on this table that references the parent (e.g. bucket_id)"
2
+ name: 'DataInheritFromParent',
3
+ slug: 'data_inherit_from_parent',
4
+ category: 'data',
5
+ display_name: 'Inherit From Parent',
6
+ description: 'BEFORE INSERT trigger that copies specified fields from a parent table via a foreign key. The parent row is looked up through RLS (SECURITY INVOKER), so the insert fails if the caller cannot see the parent. Used by the storage module to inherit owner_id and is_public from buckets to files.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ parent_fk_field: {
11
+ type: 'string',
12
+ format: 'column-ref',
13
+ description: 'Name of the FK field on this table that references the parent (e.g. bucket_id)'
13
14
  },
14
- "fields": {
15
- "type": "array",
16
- "items": {
17
- "type": "string"
15
+ fields: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'string',
19
+ format: 'column-ref'
18
20
  },
19
- "description": "Field names to copy from the parent row (e.g. [\"owner_id\", \"is_public\"])"
21
+ description: 'Field names to copy from the parent row (e.g. ["owner_id", "is_public"])'
20
22
  },
21
- "parent_table": {
22
- "type": "string",
23
- "description": "Parent table name (optional fallback if FK not yet registered in metaschema)"
23
+ parent_table: {
24
+ type: 'string',
25
+ description: 'Parent table name (optional fallback if FK not yet registered in metaschema)'
24
26
  },
25
- "parent_schema": {
26
- "type": "string",
27
- "description": "Parent table schema (optional, defaults to same schema as child table)"
27
+ parent_schema: {
28
+ type: 'string',
29
+ description: 'Parent table schema (optional, defaults to same schema as child table)'
28
30
  }
29
31
  },
30
- "required": [
31
- "parent_fk_field",
32
- "fields"
32
+ required: [
33
+ 'parent_fk_field',
34
+ 'fields'
33
35
  ]
34
36
  },
35
- "tags": [
36
- "trigger",
37
- "inheritance",
38
- "schema"
37
+ tags: [
38
+ 'trigger',
39
+ 'inheritance',
40
+ 'schema'
39
41
  ]
40
42
  };