node-type-registry 0.48.0 → 0.50.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.
- package/README.md +11 -0
- package/data/data-denormalized.d.ts +2 -0
- package/data/data-denormalized.js +71 -0
- package/data/index.d.ts +1 -0
- package/data/index.js +3 -1
- package/data/search-unified.js +0 -9
- package/esm/data/data-denormalized.d.ts +2 -0
- package/esm/data/data-denormalized.js +68 -0
- package/esm/data/index.d.ts +1 -0
- package/esm/data/index.js +1 -0
- package/esm/data/search-unified.js +0 -9
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -135,6 +135,17 @@ Common issues and solutions for pgpm, PostgreSQL, and testing.
|
|
|
135
135
|
|
|
136
136
|
* [constructive-skills](https://github.com/constructive-io/constructive-skills): **📖 Platform documentation and AI agent skills** — feature catalog, blueprint reference, SDK guides (i18n, billing, limits, events, uploads, security, entities, search, AI), and deployment guides.
|
|
137
137
|
|
|
138
|
+
Install skills for AI coding agents:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# All platform skills (security, blueprints, codegen, billing, etc.)
|
|
142
|
+
npx skills add constructive-io/constructive-skills
|
|
143
|
+
|
|
144
|
+
# Individual repo skills (pgpm, testing, CLI, search, etc.)
|
|
145
|
+
npx skills add https://github.com/constructive-io/constructive --skill pgpm
|
|
146
|
+
npx skills add https://github.com/constructive-io/constructive --skill constructive-testing
|
|
147
|
+
```
|
|
148
|
+
|
|
138
149
|
## Credits
|
|
139
150
|
|
|
140
151
|
**🛠 Built by the [Constructive](https://constructive.io) team — creators of modular Postgres tooling for secure, composable backends. If you like our work, contribute on [GitHub](https://github.com/constructive-io).**
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataDenormalized = void 0;
|
|
4
|
+
exports.DataDenormalized = {
|
|
5
|
+
name: 'DataDenormalized',
|
|
6
|
+
slug: 'data_denormalized',
|
|
7
|
+
category: 'data',
|
|
8
|
+
display_name: 'Denormalized Field',
|
|
9
|
+
description: 'Creates INSERT and UPDATE triggers that copy field values from a referenced (parent) table into the current table whenever the FK changes. Used to denormalize frequently-read columns (e.g. database_id on junction tables) so that RLS and queries can filter locally without joining.',
|
|
10
|
+
parameter_schema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
field: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
format: 'column-ref',
|
|
16
|
+
description: 'FK field on this table that references the parent row (e.g. view_id)'
|
|
17
|
+
},
|
|
18
|
+
set_fields: {
|
|
19
|
+
type: 'array',
|
|
20
|
+
items: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
format: 'column-ref'
|
|
23
|
+
},
|
|
24
|
+
description: 'Field names on this table to be populated from the parent (e.g. ["database_id"])'
|
|
25
|
+
},
|
|
26
|
+
ref_field: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
format: 'column-ref',
|
|
29
|
+
description: 'Field on the parent table that is the FK target (e.g. id)'
|
|
30
|
+
},
|
|
31
|
+
ref_fields: {
|
|
32
|
+
type: 'array',
|
|
33
|
+
items: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
format: 'column-ref'
|
|
36
|
+
},
|
|
37
|
+
description: 'Field names on the parent table to copy from (e.g. ["database_id"])'
|
|
38
|
+
},
|
|
39
|
+
use_updates: {
|
|
40
|
+
type: 'boolean',
|
|
41
|
+
description: 'If true, also creates an UPDATE trigger so changes to the FK re-copy values',
|
|
42
|
+
default: true
|
|
43
|
+
},
|
|
44
|
+
update_defaults: {
|
|
45
|
+
type: 'boolean',
|
|
46
|
+
description: 'If true, sets the default value of set_fields to uuid_nil() so they are populated by the trigger',
|
|
47
|
+
default: true
|
|
48
|
+
},
|
|
49
|
+
func_name: {
|
|
50
|
+
type: 'string',
|
|
51
|
+
description: 'Custom function name suffix (defaults to the FK field name)'
|
|
52
|
+
},
|
|
53
|
+
func_order: {
|
|
54
|
+
type: 'integer',
|
|
55
|
+
description: 'Trigger ordering (0-padded). Lower numbers fire first',
|
|
56
|
+
default: 0
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
required: [
|
|
60
|
+
'field',
|
|
61
|
+
'set_fields',
|
|
62
|
+
'ref_field',
|
|
63
|
+
'ref_fields'
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
tags: [
|
|
67
|
+
'trigger',
|
|
68
|
+
'denormalization',
|
|
69
|
+
'schema'
|
|
70
|
+
]
|
|
71
|
+
};
|
package/data/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { CheckLessThan } from './check-less-than';
|
|
|
3
3
|
export { CheckNotEqual } from './check-not-equal';
|
|
4
4
|
export { CheckOneOf } from './check-one-of';
|
|
5
5
|
export { DataBulk } from './data-bulk';
|
|
6
|
+
export { DataDenormalized } from './data-denormalized';
|
|
6
7
|
export { DataCompositeField } from './data-composite-field';
|
|
7
8
|
export { DataDirectOwner } from './data-direct-owner';
|
|
8
9
|
export { DataEntityMembership } from './data-entity-membership';
|
package/data/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TableUserSettings = exports.TableUserProfiles = exports.TableOrganizationSettings = exports.SearchVector = exports.SearchUnified = exports.SearchTrgm = exports.SearchSpatialAggregate = exports.SearchSpatial = exports.SearchFullText = exports.SearchBm25 = exports.DataTimestamps = exports.DataTags = exports.DataStatusField = exports.DataSoftDelete = exports.DataSlug = exports.DataRealtime = exports.DataPublishable = exports.DataPeoplestamps = exports.DataOwnershipInEntity = exports.DataOwnedFields = exports.DataMemberOwner = exports.DataJsonb = exports.DataInheritFromParent = exports.DataInflection = exports.DataImmutableFields = exports.DataId = exports.DataI18n = exports.DataForceCurrentUser = exports.DataEntityMembership = exports.DataDirectOwner = exports.DataCompositeField = exports.DataBulk = exports.CheckOneOf = exports.CheckNotEqual = exports.CheckLessThan = exports.CheckGreaterThan = void 0;
|
|
3
|
+
exports.TableUserSettings = exports.TableUserProfiles = exports.TableOrganizationSettings = exports.SearchVector = exports.SearchUnified = exports.SearchTrgm = exports.SearchSpatialAggregate = exports.SearchSpatial = exports.SearchFullText = exports.SearchBm25 = exports.DataTimestamps = exports.DataTags = exports.DataStatusField = exports.DataSoftDelete = exports.DataSlug = exports.DataRealtime = exports.DataPublishable = exports.DataPeoplestamps = exports.DataOwnershipInEntity = exports.DataOwnedFields = exports.DataMemberOwner = exports.DataJsonb = exports.DataInheritFromParent = exports.DataInflection = exports.DataImmutableFields = exports.DataId = exports.DataI18n = exports.DataForceCurrentUser = exports.DataEntityMembership = exports.DataDirectOwner = exports.DataCompositeField = exports.DataDenormalized = exports.DataBulk = exports.CheckOneOf = exports.CheckNotEqual = exports.CheckLessThan = exports.CheckGreaterThan = void 0;
|
|
4
4
|
var check_greater_than_1 = require("./check-greater-than");
|
|
5
5
|
Object.defineProperty(exports, "CheckGreaterThan", { enumerable: true, get: function () { return check_greater_than_1.CheckGreaterThan; } });
|
|
6
6
|
var check_less_than_1 = require("./check-less-than");
|
|
@@ -11,6 +11,8 @@ var check_one_of_1 = require("./check-one-of");
|
|
|
11
11
|
Object.defineProperty(exports, "CheckOneOf", { enumerable: true, get: function () { return check_one_of_1.CheckOneOf; } });
|
|
12
12
|
var data_bulk_1 = require("./data-bulk");
|
|
13
13
|
Object.defineProperty(exports, "DataBulk", { enumerable: true, get: function () { return data_bulk_1.DataBulk; } });
|
|
14
|
+
var data_denormalized_1 = require("./data-denormalized");
|
|
15
|
+
Object.defineProperty(exports, "DataDenormalized", { enumerable: true, get: function () { return data_denormalized_1.DataDenormalized; } });
|
|
14
16
|
var data_composite_field_1 = require("./data-composite-field");
|
|
15
17
|
Object.defineProperty(exports, "DataCompositeField", { enumerable: true, get: function () { return data_composite_field_1.DataCompositeField; } });
|
|
16
18
|
var data_direct_owner_1 = require("./data-direct-owner");
|
package/data/search-unified.js
CHANGED
|
@@ -200,15 +200,6 @@ exports.SearchUnified = {
|
|
|
200
200
|
type: 'object',
|
|
201
201
|
description: 'Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}'
|
|
202
202
|
},
|
|
203
|
-
normalization: {
|
|
204
|
-
type: 'string',
|
|
205
|
-
enum: [
|
|
206
|
-
'linear',
|
|
207
|
-
'sigmoid'
|
|
208
|
-
],
|
|
209
|
-
description: 'Score normalization strategy',
|
|
210
|
-
default: 'linear'
|
|
211
|
-
},
|
|
212
203
|
boost_recent: {
|
|
213
204
|
type: 'boolean',
|
|
214
205
|
description: 'Enable recency boost for search results',
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export const DataDenormalized = {
|
|
2
|
+
name: 'DataDenormalized',
|
|
3
|
+
slug: 'data_denormalized',
|
|
4
|
+
category: 'data',
|
|
5
|
+
display_name: 'Denormalized Field',
|
|
6
|
+
description: 'Creates INSERT and UPDATE triggers that copy field values from a referenced (parent) table into the current table whenever the FK changes. Used to denormalize frequently-read columns (e.g. database_id on junction tables) so that RLS and queries can filter locally without joining.',
|
|
7
|
+
parameter_schema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
field: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
format: 'column-ref',
|
|
13
|
+
description: 'FK field on this table that references the parent row (e.g. view_id)'
|
|
14
|
+
},
|
|
15
|
+
set_fields: {
|
|
16
|
+
type: 'array',
|
|
17
|
+
items: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
format: 'column-ref'
|
|
20
|
+
},
|
|
21
|
+
description: 'Field names on this table to be populated from the parent (e.g. ["database_id"])'
|
|
22
|
+
},
|
|
23
|
+
ref_field: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
format: 'column-ref',
|
|
26
|
+
description: 'Field on the parent table that is the FK target (e.g. id)'
|
|
27
|
+
},
|
|
28
|
+
ref_fields: {
|
|
29
|
+
type: 'array',
|
|
30
|
+
items: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
format: 'column-ref'
|
|
33
|
+
},
|
|
34
|
+
description: 'Field names on the parent table to copy from (e.g. ["database_id"])'
|
|
35
|
+
},
|
|
36
|
+
use_updates: {
|
|
37
|
+
type: 'boolean',
|
|
38
|
+
description: 'If true, also creates an UPDATE trigger so changes to the FK re-copy values',
|
|
39
|
+
default: true
|
|
40
|
+
},
|
|
41
|
+
update_defaults: {
|
|
42
|
+
type: 'boolean',
|
|
43
|
+
description: 'If true, sets the default value of set_fields to uuid_nil() so they are populated by the trigger',
|
|
44
|
+
default: true
|
|
45
|
+
},
|
|
46
|
+
func_name: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Custom function name suffix (defaults to the FK field name)'
|
|
49
|
+
},
|
|
50
|
+
func_order: {
|
|
51
|
+
type: 'integer',
|
|
52
|
+
description: 'Trigger ordering (0-padded). Lower numbers fire first',
|
|
53
|
+
default: 0
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
required: [
|
|
57
|
+
'field',
|
|
58
|
+
'set_fields',
|
|
59
|
+
'ref_field',
|
|
60
|
+
'ref_fields'
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
tags: [
|
|
64
|
+
'trigger',
|
|
65
|
+
'denormalization',
|
|
66
|
+
'schema'
|
|
67
|
+
]
|
|
68
|
+
};
|
package/esm/data/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { CheckLessThan } from './check-less-than';
|
|
|
3
3
|
export { CheckNotEqual } from './check-not-equal';
|
|
4
4
|
export { CheckOneOf } from './check-one-of';
|
|
5
5
|
export { DataBulk } from './data-bulk';
|
|
6
|
+
export { DataDenormalized } from './data-denormalized';
|
|
6
7
|
export { DataCompositeField } from './data-composite-field';
|
|
7
8
|
export { DataDirectOwner } from './data-direct-owner';
|
|
8
9
|
export { DataEntityMembership } from './data-entity-membership';
|
package/esm/data/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export { CheckLessThan } from './check-less-than';
|
|
|
3
3
|
export { CheckNotEqual } from './check-not-equal';
|
|
4
4
|
export { CheckOneOf } from './check-one-of';
|
|
5
5
|
export { DataBulk } from './data-bulk';
|
|
6
|
+
export { DataDenormalized } from './data-denormalized';
|
|
6
7
|
export { DataCompositeField } from './data-composite-field';
|
|
7
8
|
export { DataDirectOwner } from './data-direct-owner';
|
|
8
9
|
export { DataEntityMembership } from './data-entity-membership';
|
|
@@ -197,15 +197,6 @@ export const SearchUnified = {
|
|
|
197
197
|
type: 'object',
|
|
198
198
|
description: 'Per-algorithm weights: {tsv: 1.5, bm25: 1.0, pgvector: 0.8, trgm: 0.3}'
|
|
199
199
|
},
|
|
200
|
-
normalization: {
|
|
201
|
-
type: 'string',
|
|
202
|
-
enum: [
|
|
203
|
-
'linear',
|
|
204
|
-
'sigmoid'
|
|
205
|
-
],
|
|
206
|
-
description: 'Score normalization strategy',
|
|
207
|
-
default: 'linear'
|
|
208
|
-
},
|
|
209
200
|
boost_recent: {
|
|
210
201
|
type: 'boolean',
|
|
211
202
|
description: 'Enable recency boost for search results',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-type-registry",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.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": "
|
|
50
|
+
"gitHead": "2558a0cdb58c815933af8bfe6769cd59014c77cf"
|
|
51
51
|
}
|