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,25 +1,25 @@
1
1
  export const ViewComposite = {
2
- "name": "ViewComposite",
3
- "slug": "view_composite",
4
- "category": "view",
5
- "display_name": "Composite View",
6
- "description": "Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "query_ast": {
11
- "type": "object",
12
- "description": "Composite SELECT query AST (JSONB)"
2
+ name: 'ViewComposite',
3
+ slug: 'view_composite',
4
+ category: 'view',
5
+ display_name: 'Composite View',
6
+ description: 'Advanced view using composite AST for the query. Use when other node types are insufficient (CTEs, UNIONs, complex subqueries, etc.).',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ query_ast: {
11
+ type: 'object',
12
+ description: 'Composite SELECT query AST (JSONB)'
13
13
  }
14
14
  },
15
- "required": [
16
- "query_ast"
15
+ required: [
16
+ 'query_ast'
17
17
  ]
18
18
  },
19
- "tags": [
20
- "view",
21
- "advanced",
22
- "composite",
23
- "ast"
19
+ tags: [
20
+ 'view',
21
+ 'advanced',
22
+ 'composite',
23
+ 'ast'
24
24
  ]
25
25
  };
@@ -1,49 +1,50 @@
1
1
  export const ViewFilteredTable = {
2
- "name": "ViewFilteredTable",
3
- "slug": "view_filtered_table",
4
- "category": "view",
5
- "display_name": "Filtered Table",
6
- "description": "Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "source_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "UUID of the source table"
2
+ name: 'ViewFilteredTable',
3
+ slug: 'view_filtered_table',
4
+ category: 'view',
5
+ display_name: 'Filtered Table',
6
+ description: 'Table projection with an Authz* filter baked into the view definition. The view only returns records matching the filter.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ source_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'UUID of the source table'
14
14
  },
15
- "filter_type": {
16
- "type": "string",
17
- "description": "Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)"
15
+ filter_type: {
16
+ type: 'string',
17
+ description: 'Authz* node type name (e.g., AuthzDirectOwner, AuthzPublishable)'
18
18
  },
19
- "filter_data": {
20
- "type": "object",
21
- "description": "Parameters for the Authz* filter type"
19
+ filter_data: {
20
+ type: 'object',
21
+ description: 'Parameters for the Authz* filter type'
22
22
  },
23
- "field_ids": {
24
- "type": "array",
25
- "items": {
26
- "type": "string",
27
- "format": "uuid"
23
+ field_ids: {
24
+ type: 'array',
25
+ items: {
26
+ type: 'string',
27
+ format: 'uuid'
28
28
  },
29
- "description": "Optional array of field UUIDs to include (alternative to field_names)"
29
+ description: 'Optional array of field UUIDs to include (alternative to field_names)'
30
30
  },
31
- "field_names": {
32
- "type": "array",
33
- "items": {
34
- "type": "string"
31
+ field_names: {
32
+ type: 'array',
33
+ items: {
34
+ type: 'string',
35
+ format: 'column-ref'
35
36
  },
36
- "description": "Optional array of field names to include (alternative to field_ids)"
37
+ description: 'Optional array of field names to include (alternative to field_ids)'
37
38
  }
38
39
  },
39
- "required": [
40
- "source_table_id",
41
- "filter_type"
40
+ required: [
41
+ 'source_table_id',
42
+ 'filter_type'
42
43
  ]
43
44
  },
44
- "tags": [
45
- "view",
46
- "filter",
47
- "authz"
45
+ tags: [
46
+ 'view',
47
+ 'filter',
48
+ 'authz'
48
49
  ]
49
50
  };
@@ -1,83 +1,87 @@
1
1
  export const ViewJoinedTables = {
2
- "name": "ViewJoinedTables",
3
- "slug": "view_joined_tables",
4
- "category": "view",
5
- "display_name": "Joined Tables",
6
- "description": "View that joins multiple tables together. Supports INNER, LEFT, RIGHT, and FULL joins.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "primary_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "UUID of the primary (left-most) table"
2
+ name: 'ViewJoinedTables',
3
+ slug: 'view_joined_tables',
4
+ category: 'view',
5
+ display_name: 'Joined Tables',
6
+ description: 'View that joins multiple tables together. Supports INNER, LEFT, RIGHT, and FULL joins.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ primary_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'UUID of the primary (left-most) table'
14
14
  },
15
- "primary_columns": {
16
- "type": "array",
17
- "items": {
18
- "type": "string"
15
+ primary_columns: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'string',
19
+ format: 'column-ref'
19
20
  },
20
- "description": "Optional array of column names to include from the primary table"
21
+ description: 'Optional array of column names to include from the primary table'
21
22
  },
22
- "joins": {
23
- "type": "array",
24
- "items": {
25
- "type": "object",
26
- "properties": {
27
- "table_id": {
28
- "type": "string",
29
- "format": "uuid",
30
- "description": "UUID of the joined table"
23
+ joins: {
24
+ type: 'array',
25
+ items: {
26
+ type: 'object',
27
+ properties: {
28
+ table_id: {
29
+ type: 'string',
30
+ format: 'uuid',
31
+ description: 'UUID of the joined table'
31
32
  },
32
- "join_type": {
33
- "type": "string",
34
- "enum": [
35
- "INNER",
36
- "LEFT",
37
- "RIGHT",
38
- "FULL"
33
+ join_type: {
34
+ type: 'string',
35
+ enum: [
36
+ 'INNER',
37
+ 'LEFT',
38
+ 'RIGHT',
39
+ 'FULL'
39
40
  ]
40
41
  },
41
- "primary_field": {
42
- "type": "string",
43
- "description": "Field on primary table"
42
+ primary_field: {
43
+ type: 'string',
44
+ format: 'column-ref',
45
+ description: 'Field on primary table'
44
46
  },
45
- "join_field": {
46
- "type": "string",
47
- "description": "Field on joined table"
47
+ join_field: {
48
+ type: 'string',
49
+ format: 'column-ref',
50
+ description: 'Field on joined table'
48
51
  },
49
- "columns": {
50
- "type": "array",
51
- "items": {
52
- "type": "string"
52
+ columns: {
53
+ type: 'array',
54
+ items: {
55
+ type: 'string',
56
+ format: 'column-ref'
53
57
  },
54
- "description": "Optional column names to include from this joined table"
58
+ description: 'Optional column names to include from this joined table'
55
59
  }
56
60
  },
57
- "required": [
58
- "table_id",
59
- "primary_field",
60
- "join_field"
61
+ required: [
62
+ 'table_id',
63
+ 'primary_field',
64
+ 'join_field'
61
65
  ]
62
66
  },
63
- "description": "Array of join specifications"
67
+ description: 'Array of join specifications'
64
68
  },
65
- "field_ids": {
66
- "type": "array",
67
- "items": {
68
- "type": "string",
69
- "format": "uuid"
69
+ field_ids: {
70
+ type: 'array',
71
+ items: {
72
+ type: 'string',
73
+ format: 'uuid'
70
74
  },
71
- "description": "Optional array of field UUIDs to include (alternative to per-table columns)"
75
+ description: 'Optional array of field UUIDs to include (alternative to per-table columns)'
72
76
  }
73
77
  },
74
- "required": [
75
- "primary_table_id",
76
- "joins"
78
+ required: [
79
+ 'primary_table_id',
80
+ 'joins'
77
81
  ]
78
82
  },
79
- "tags": [
80
- "view",
81
- "join"
83
+ tags: [
84
+ 'view',
85
+ 'join'
82
86
  ]
83
87
  };
@@ -1,39 +1,40 @@
1
1
  export const ViewTableProjection = {
2
- "name": "ViewTableProjection",
3
- "slug": "view_table_projection",
4
- "category": "view",
5
- "display_name": "Table Projection",
6
- "description": "Simple column selection from a single source table. Projects all or specific fields.",
7
- "parameter_schema": {
8
- "type": "object",
9
- "properties": {
10
- "source_table_id": {
11
- "type": "string",
12
- "format": "uuid",
13
- "description": "UUID of the source table to project from"
2
+ name: 'ViewTableProjection',
3
+ slug: 'view_table_projection',
4
+ category: 'view',
5
+ display_name: 'Table Projection',
6
+ description: 'Simple column selection from a single source table. Projects all or specific fields.',
7
+ parameter_schema: {
8
+ type: 'object',
9
+ properties: {
10
+ source_table_id: {
11
+ type: 'string',
12
+ format: 'uuid',
13
+ description: 'UUID of the source table to project from'
14
14
  },
15
- "field_ids": {
16
- "type": "array",
17
- "items": {
18
- "type": "string",
19
- "format": "uuid"
15
+ field_ids: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'string',
19
+ format: 'uuid'
20
20
  },
21
- "description": "Optional array of field UUIDs to include (all fields if omitted)"
21
+ description: 'Optional array of field UUIDs to include (all fields if omitted)'
22
22
  },
23
- "field_names": {
24
- "type": "array",
25
- "items": {
26
- "type": "string"
23
+ field_names: {
24
+ type: 'array',
25
+ items: {
26
+ type: 'string',
27
+ format: 'column-ref'
27
28
  },
28
- "description": "Optional array of field names to include (alternative to field_ids)"
29
+ description: 'Optional array of field names to include (alternative to field_ids)'
29
30
  }
30
31
  },
31
- "required": [
32
- "source_table_id"
32
+ required: [
33
+ 'source_table_id'
33
34
  ]
34
35
  },
35
- "tags": [
36
- "view",
37
- "projection"
36
+ tags: [
37
+ 'view',
38
+ 'projection'
38
39
  ]
39
40
  };
package/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export type { NodeTypeDefinition, JSONSchema } from './types';
2
1
  export * from './authz';
2
+ export * from './blueprint-types.generated';
3
3
  export * from './data';
4
+ export * from './module-presets';
4
5
  export * from './relation';
6
+ export type { JSONSchema, NodeTypeDefinition } from './types';
5
7
  export * from './view';
6
- export * from './blueprint-types.generated';
7
- export * from './module-presets';
8
8
  import type { NodeTypeDefinition } from './types';
9
9
  export declare const allNodeTypes: NodeTypeDefinition[];
package/index.js CHANGED
@@ -38,11 +38,11 @@ var __importStar = (this && this.__importStar) || (function () {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.allNodeTypes = void 0;
40
40
  __exportStar(require("./authz"), exports);
41
+ __exportStar(require("./blueprint-types.generated"), exports);
41
42
  __exportStar(require("./data"), exports);
43
+ __exportStar(require("./module-presets"), exports);
42
44
  __exportStar(require("./relation"), exports);
43
45
  __exportStar(require("./view"), exports);
44
- __exportStar(require("./blueprint-types.generated"), exports);
45
- __exportStar(require("./module-presets"), exports);
46
46
  const authz = __importStar(require("./authz"));
47
47
  const data = __importStar(require("./data"));
48
48
  const relation = __importStar(require("./relation"));
@@ -51,5 +51,5 @@ exports.allNodeTypes = [
51
51
  ...Object.values(authz),
52
52
  ...Object.values(data),
53
53
  ...Object.values(relation),
54
- ...Object.values(view),
54
+ ...Object.values(view)
55
55
  ];
@@ -22,8 +22,8 @@ exports.PresetAuthEmailMagic = {
22
22
  'generator emits the passwordless procedures: `sign_up_magic_link`, `sign_in_magic_link`, ' +
23
23
  '`sign_in_email_otp`. Password flows still exist — you opt into passwordless-only by ' +
24
24
  'flipping the `allow_password_sign_*` toggles off in `app_settings_auth` after install. ' +
25
- "This is the right step up from `auth:email` when you want to ship magic links without yet " +
26
- "taking on SSO or passkeys.",
25
+ 'This is the right step up from `auth:email` when you want to ship magic links without yet ' +
26
+ 'taking on SSO or passkeys.',
27
27
  good_for: [
28
28
  'Consumer apps that want passwordless from day one',
29
29
  'Apps targeting users who forget passwords (newsletters, one-off tools)',
@@ -20,15 +20,15 @@ exports.PresetAuthEmail = {
20
20
  name: 'auth:email',
21
21
  display_name: 'Email + Password',
22
22
  summary: 'Standard email/password auth flow. No orgs, no SSO, no MFA, no rate limits.',
23
- description: "Installs `user_auth_module` with exactly the table dependencies its insert trigger " +
24
- "hard-requires: users, app-scoped memberships, emails, secrets, encrypted secrets, " +
25
- "sessions, plus RLS. You get the standard password-based auth procedures (sign_up, " +
23
+ description: 'Installs `user_auth_module` with exactly the table dependencies its insert trigger ' +
24
+ 'hard-requires: users, app-scoped memberships, emails, secrets, encrypted secrets, ' +
25
+ 'sessions, plus RLS. You get the standard password-based auth procedures (sign_up, ' +
26
26
  "sign_in, reset_password, verify_email, delete_account, ...) and that's it. " +
27
- "Everything else in the module catalog — SSO, passkeys, SMS, rate limits, orgs, " +
28
- "invites, permissions — is deliberately omitted. This is the right shape for single-tenant " +
29
- "consumer apps in the first weeks, internal tools that need a real login, or anything " +
30
- "where you want the lightest possible working auth and will add complexity only when " +
31
- "forced to.",
27
+ 'Everything else in the module catalog — SSO, passkeys, SMS, rate limits, orgs, ' +
28
+ 'invites, permissions — is deliberately omitted. This is the right shape for single-tenant ' +
29
+ 'consumer apps in the first weeks, internal tools that need a real login, or anything ' +
30
+ 'where you want the lightest possible working auth and will add complexity only when ' +
31
+ 'forced to.',
32
32
  good_for: [
33
33
  'Single-tenant consumer apps in the first week of development',
34
34
  'Internal tools where one simple login is enough',
@@ -18,10 +18,10 @@ exports.PresetAuthPasskey = {
18
18
  display_name: 'Passkeys (WebAuthn)',
19
19
  summary: '`auth:email` plus WebAuthn passkey registration and assertion.',
20
20
  description: "Installs the three modules WebAuthn needs: `webauthn_credentials_module` for each user's " +
21
- "registered public keys, `webauthn_auth_module` for the runtime challenge/assertion flow, " +
22
- "and `session_secrets_module` for the one-time challenge nonces. With these installed, " +
23
- "the generator emits WebAuthn registration/login procs. Keep password flows as a recovery " +
24
- "path, or disable them in `app_settings_auth` for passkey-only deployments.",
21
+ 'registered public keys, `webauthn_auth_module` for the runtime challenge/assertion flow, ' +
22
+ 'and `session_secrets_module` for the one-time challenge nonces. With these installed, ' +
23
+ 'the generator emits WebAuthn registration/login procs. Keep password flows as a recovery ' +
24
+ 'path, or disable them in `app_settings_auth` for passkey-only deployments.',
25
25
  good_for: [
26
26
  'Apps where you want users to adopt phishing-resistant auth',
27
27
  'Consumer apps with a tech-forward audience',
@@ -24,13 +24,13 @@ exports.PresetAuthSso = {
24
24
  name: 'auth:sso',
25
25
  display_name: 'OAuth / OpenID Connect',
26
26
  summary: '`auth:email` plus OAuth providers and connected-account linkage.',
27
- description: "Adds the two modules that make SSO work: `identity_providers_module` (where provider " +
28
- "definitions live — Google, GitHub, Okta, etc., with their URLs, client IDs, and " +
29
- "encrypted client secrets) and `connected_accounts_module` (the junction mapping a " +
30
- "Constructive user to a `(provider, external_id)` pair). The generator emits " +
31
- "`sign_in_identity` and `sign_up_identity` procedures which decrypt the client secret " +
32
- "through `encrypted_secrets_module` at auth time. Keep password flows as break-glass, or " +
33
- "disable them via `app_settings_auth` toggles for strictly-SSO deployments.",
27
+ description: 'Adds the two modules that make SSO work: `identity_providers_module` (where provider ' +
28
+ 'definitions live — Google, GitHub, Okta, etc., with their URLs, client IDs, and ' +
29
+ 'encrypted client secrets) and `connected_accounts_module` (the junction mapping a ' +
30
+ 'Constructive user to a `(provider, external_id)` pair). The generator emits ' +
31
+ '`sign_in_identity` and `sign_up_identity` procedures which decrypt the client secret ' +
32
+ 'through `encrypted_secrets_module` at auth time. Keep password flows as break-glass, or ' +
33
+ 'disable them via `app_settings_auth` toggles for strictly-SSO deployments.',
34
34
  good_for: [
35
35
  'B2B apps where end users sign in via their employer IdP',
36
36
  'Consumer apps that want "Sign in with Google / GitHub"',
@@ -21,7 +21,7 @@ exports.PresetFull = {
21
21
  description: 'Installs every module in the catalog: everything in `b2b` plus `storage_module` ' +
22
22
  'for file uploads and `crypto_addresses_module` / `crypto_auth_module` for ' +
23
23
  'wallet-based sign-in. This matches the current default when `provision_database_modules` ' +
24
- "is called without an explicit `v_modules` argument. Use it for fully-featured " +
24
+ 'is called without an explicit `v_modules` argument. Use it for fully-featured ' +
25
25
  'demo/example databases, kitchen-sink reference deployments, or greenfield apps that ' +
26
26
  'would rather feature-flag at the app_settings level than uninstall modules.',
27
27
  good_for: [
@@ -1,14 +1,14 @@
1
1
  export type { ModulePreset } from './types';
2
- import type { ModulePreset } from './types';
3
- import { PresetMinimal } from './minimal';
4
2
  import { PresetAuthEmail } from './auth-email';
5
3
  import { PresetAuthEmailMagic } from './auth-email-magic';
6
- import { PresetAuthSso } from './auth-sso';
7
- import { PresetAuthPasskey } from './auth-passkey';
8
4
  import { PresetAuthHardened } from './auth-hardened';
5
+ import { PresetAuthPasskey } from './auth-passkey';
6
+ import { PresetAuthSso } from './auth-sso';
9
7
  import { PresetB2b } from './b2b';
10
8
  import { PresetFull } from './full';
11
- export { PresetMinimal, PresetAuthEmail, PresetAuthEmailMagic, PresetAuthSso, PresetAuthPasskey, PresetAuthHardened, PresetB2b, PresetFull };
9
+ import { PresetMinimal } from './minimal';
10
+ import type { ModulePreset } from './types';
11
+ export { PresetAuthEmail, PresetAuthEmailMagic, PresetAuthHardened, PresetAuthPasskey, PresetAuthSso, PresetB2b, PresetFull, PresetMinimal };
12
12
  /**
13
13
  * Ordered list of all shipped module presets, from smallest to largest
14
14
  * module footprint. Stable ordering — CLIs / UIs can present this directly.
@@ -1,23 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.allModulePresets = exports.PresetFull = exports.PresetB2b = exports.PresetAuthHardened = exports.PresetAuthPasskey = exports.PresetAuthSso = exports.PresetAuthEmailMagic = exports.PresetAuthEmail = exports.PresetMinimal = void 0;
3
+ exports.allModulePresets = exports.PresetMinimal = exports.PresetFull = exports.PresetB2b = exports.PresetAuthSso = exports.PresetAuthPasskey = exports.PresetAuthHardened = exports.PresetAuthEmailMagic = exports.PresetAuthEmail = void 0;
4
4
  exports.getModulePreset = getModulePreset;
5
- const minimal_1 = require("./minimal");
6
- Object.defineProperty(exports, "PresetMinimal", { enumerable: true, get: function () { return minimal_1.PresetMinimal; } });
7
5
  const auth_email_1 = require("./auth-email");
8
6
  Object.defineProperty(exports, "PresetAuthEmail", { enumerable: true, get: function () { return auth_email_1.PresetAuthEmail; } });
9
7
  const auth_email_magic_1 = require("./auth-email-magic");
10
8
  Object.defineProperty(exports, "PresetAuthEmailMagic", { enumerable: true, get: function () { return auth_email_magic_1.PresetAuthEmailMagic; } });
11
- const auth_sso_1 = require("./auth-sso");
12
- Object.defineProperty(exports, "PresetAuthSso", { enumerable: true, get: function () { return auth_sso_1.PresetAuthSso; } });
13
- const auth_passkey_1 = require("./auth-passkey");
14
- Object.defineProperty(exports, "PresetAuthPasskey", { enumerable: true, get: function () { return auth_passkey_1.PresetAuthPasskey; } });
15
9
  const auth_hardened_1 = require("./auth-hardened");
16
10
  Object.defineProperty(exports, "PresetAuthHardened", { enumerable: true, get: function () { return auth_hardened_1.PresetAuthHardened; } });
11
+ const auth_passkey_1 = require("./auth-passkey");
12
+ Object.defineProperty(exports, "PresetAuthPasskey", { enumerable: true, get: function () { return auth_passkey_1.PresetAuthPasskey; } });
13
+ const auth_sso_1 = require("./auth-sso");
14
+ Object.defineProperty(exports, "PresetAuthSso", { enumerable: true, get: function () { return auth_sso_1.PresetAuthSso; } });
17
15
  const b2b_1 = require("./b2b");
18
16
  Object.defineProperty(exports, "PresetB2b", { enumerable: true, get: function () { return b2b_1.PresetB2b; } });
19
17
  const full_1 = require("./full");
20
18
  Object.defineProperty(exports, "PresetFull", { enumerable: true, get: function () { return full_1.PresetFull; } });
19
+ const minimal_1 = require("./minimal");
20
+ Object.defineProperty(exports, "PresetMinimal", { enumerable: true, get: function () { return minimal_1.PresetMinimal; } });
21
21
  /**
22
22
  * Ordered list of all shipped module presets, from smallest to largest
23
23
  * module footprint. Stable ordering — CLIs / UIs can present this directly.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-type-registry",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "Node type definitions for the Constructive blueprint system. Single source of truth for all Authz*, Data*, Relation*, and View* node types.",
5
5
  "author": "Constructive <developers@constructive.io>",
6
6
  "main": "index.js",
@@ -47,5 +47,5 @@
47
47
  "registry",
48
48
  "graphile"
49
49
  ],
50
- "gitHead": "4ec54068fedd13e6145808b8059121f4a1b3891d"
50
+ "gitHead": "3f86c5a243633bb086f83866fdfb790ec45558bd"
51
51
  }
@@ -1,5 +1,5 @@
1
1
  export { RelationBelongsTo } from './relation-belongs-to';
2
- export { RelationHasOne } from './relation-has-one';
3
2
  export { RelationHasMany } from './relation-has-many';
3
+ export { RelationHasOne } from './relation-has-one';
4
4
  export { RelationManyToMany } from './relation-many-to-many';
5
5
  export { RelationSpatial } from './relation-spatial';
package/relation/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationSpatial = exports.RelationManyToMany = exports.RelationHasMany = exports.RelationHasOne = exports.RelationBelongsTo = void 0;
3
+ exports.RelationSpatial = exports.RelationManyToMany = exports.RelationHasOne = exports.RelationHasMany = exports.RelationBelongsTo = void 0;
4
4
  var relation_belongs_to_1 = require("./relation-belongs-to");
5
5
  Object.defineProperty(exports, "RelationBelongsTo", { enumerable: true, get: function () { return relation_belongs_to_1.RelationBelongsTo; } });
6
- var relation_has_one_1 = require("./relation-has-one");
7
- Object.defineProperty(exports, "RelationHasOne", { enumerable: true, get: function () { return relation_has_one_1.RelationHasOne; } });
8
6
  var relation_has_many_1 = require("./relation-has-many");
9
7
  Object.defineProperty(exports, "RelationHasMany", { enumerable: true, get: function () { return relation_has_many_1.RelationHasMany; } });
8
+ var relation_has_one_1 = require("./relation-has-one");
9
+ Object.defineProperty(exports, "RelationHasOne", { enumerable: true, get: function () { return relation_has_one_1.RelationHasOne; } });
10
10
  var relation_many_to_many_1 = require("./relation-many-to-many");
11
11
  Object.defineProperty(exports, "RelationManyToMany", { enumerable: true, get: function () { return relation_many_to_many_1.RelationManyToMany; } });
12
12
  var relation_spatial_1 = require("./relation-spatial");