@dforge-core/metadata 0.0.11 → 0.0.12

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/CHANGELOG.md CHANGED
@@ -5,6 +5,33 @@ All notable changes to `@dforge-core/metadata` are documented here.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this package adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.0.12] — 2026-08-04
9
+
10
+ ### Changed
11
+
12
+ - **`schemas/entity.schema.json` — `flags` and `isNullable` now describe what they
13
+ actually do.** Both are re-vendored from `docs/schemas`; the change is to their
14
+ `description` text only. No constraint moved, so nothing that validated before
15
+ validates differently now — but these strings are what an editor shows on hover,
16
+ and both were misleading after `M` became load-bearing:
17
+ - `flags` — records that `M` is resolved into `isNullable: false` at install (so it
18
+ makes the column `NOT NULL`), that it is inert on virtual (`R`/`S`/`F`) and identity
19
+ columns, and that declaring it alongside `"isNullable": true` is rejected at pack
20
+ time. Previously it read only "M=Mandatory", which was true of the flag's name and
21
+ of nothing else — the flag was inert platform-wide until this release's server change.
22
+ - `isNullable` — records that omitting it means `true` (nullable), that only an
23
+ explicit `false` (or `M`, which resolves to it) makes a column `NOT NULL`, and that
24
+ adding it to a column existing tenant rows leave empty aborts the upgrade. The
25
+ previous text ("Whether the column allows NULL values") said nothing about the
26
+ default, which is the thing authors get wrong.
27
+
28
+ Both correspond to the platform-side change that made an upgrade reconcile column
29
+ nullability in both directions; see `docs/CHANGELOG.md` in `dForge-core`.
30
+
31
+ ## [0.0.11] — 2026-07-30
32
+
33
+ Version-only republish; no content change from `0.0.10`.
34
+
8
35
  ## [0.0.10] — 2026-07-24
9
36
 
10
37
  ### Added
package/dist/traits.js CHANGED
@@ -47,7 +47,7 @@ export const traits = [
47
47
  cd: "sorting",
48
48
  description: "Display order",
49
49
  fields: {
50
- order_num: { dbDatatype: "int4", fieldTypeCd: "number", flags: "VEM", orderNum: 9920, description: "Order" },
50
+ order_num: { dbDatatype: "int4", fieldTypeCd: "number", flags: "VE", orderNum: 9920, description: "Order" },
51
51
  },
52
52
  },
53
53
  { cd: "postable", description: "Document posting support (marker trait — actual state managed by A/L columns)", fields: {} },
@@ -57,11 +57,11 @@ export const traits = [
57
57
  cd: "period",
58
58
  description: "Period entity with key format, closed flag, date range",
59
59
  fields: {
60
- period_key: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VEM", isPk: true, isNullable: false, maxLen: 20, orderNum: 1, description: "Period Key" },
61
- description: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VEM", maxLen: 100, orderNum: 30, description: "Description" },
62
- closed: { dbDatatype: "bool", fieldTypeCd: "checkbox", flags: "VEM", isNullable: false, formula: "false", orderNum: 40, description: "Closed" },
63
- start_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VEM", orderNum: 50, description: "Start Date" },
64
- end_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VEM", orderNum: 60, description: "End Date" },
60
+ period_key: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VE", isPk: true, isNullable: false, maxLen: 20, orderNum: 1, description: "Period Key" },
61
+ description: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VE", maxLen: 100, orderNum: 30, description: "Description" },
62
+ closed: { dbDatatype: "bool", fieldTypeCd: "checkbox", flags: "VE", isNullable: false, formula: "false", orderNum: 40, description: "Closed" },
63
+ start_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VE", orderNum: 50, description: "Start Date" },
64
+ end_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VE", orderNum: 60, description: "End Date" },
65
65
  },
66
66
  },
67
67
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"traits.js","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traits.js","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dforge-core/metadata",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Canonical dForge authoring registries \u2014 field types, base datatypes, column types, traits, data-view kinds and chart types \u2014 with derivation helpers. Runtime-dependency-free; the single source of truth shared by editors, the web app and the CLI.",
5
5
  "license": "MIT",
6
6
  "author": "dForge",
@@ -130,7 +130,7 @@
130
130
  "flags": {
131
131
  "type": "string",
132
132
  "pattern": "^[VIEMH]*$",
133
- "description": "Display flags: V=Visible, I=Identity, E=Editable, M=Mandatory, H=Hidden"
133
+ "description": "Display flags: V=Visible, I=Identity, E=Editable, M=Mandatory, H=Hidden. M is resolved into isNullable:false at install, so it makes the column NOT NULL; it is inert on virtual (R/S/F) and identity columns. Declaring M together with isNullable:true is rejected at pack time."
134
134
  },
135
135
  "isPk": {
136
136
  "type": "boolean",
@@ -138,7 +138,7 @@
138
138
  },
139
139
  "isNullable": {
140
140
  "type": "boolean",
141
- "description": "Whether the column allows NULL values"
141
+ "description": "Whether the column allows NULL values. Omitted means true (nullable) — only an explicit false, or the M flag which resolves to it, makes the column NOT NULL. Adding it to a column that existing tenant rows leave empty aborts the upgrade."
142
142
  },
143
143
  "isIdentity": {
144
144
  "type": "boolean",
@@ -33,7 +33,7 @@
33
33
  "event": {
34
34
  "type": "string",
35
35
  "enum": ["insert", "update", "delete", "status_change", "any"],
36
- "description": "DB event that fires this trigger. 'status_change' only fires when the entity's status field actually changes value. 'any' fires for all insert/update/delete."
36
+ "description": "DB event that fires this trigger. 'status_change' only fires when the entity's status field actually changes value. 'any' fires for all insert/update/delete. Events are raised by the row change itself, whichever path wrote it \u2014 a user edit and an action's `[field] = value` both count \u2014 except for the DSL's insert()/update()/delete()/query() builtins writing OTHER records, which raise nothing."
37
37
  },
38
38
  "condition": {
39
39
  "type": "string",
package/src/traits.ts CHANGED
@@ -50,7 +50,7 @@ export const traits: readonly TraitDef[] = [
50
50
  cd: "sorting",
51
51
  description: "Display order",
52
52
  fields: {
53
- order_num: { dbDatatype: "int4", fieldTypeCd: "number", flags: "VEM", orderNum: 9920, description: "Order" },
53
+ order_num: { dbDatatype: "int4", fieldTypeCd: "number", flags: "VE", orderNum: 9920, description: "Order" },
54
54
  },
55
55
  },
56
56
  { cd: "postable", description: "Document posting support (marker trait — actual state managed by A/L columns)", fields: {} },
@@ -60,11 +60,11 @@ export const traits: readonly TraitDef[] = [
60
60
  cd: "period",
61
61
  description: "Period entity with key format, closed flag, date range",
62
62
  fields: {
63
- period_key: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VEM", isPk: true, isNullable: false, maxLen: 20, orderNum: 1, description: "Period Key" },
64
- description: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VEM", maxLen: 100, orderNum: 30, description: "Description" },
65
- closed: { dbDatatype: "bool", fieldTypeCd: "checkbox", flags: "VEM", isNullable: false, formula: "false", orderNum: 40, description: "Closed" },
66
- start_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VEM", orderNum: 50, description: "Start Date" },
67
- end_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VEM", orderNum: 60, description: "End Date" },
63
+ period_key: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VE", isPk: true, isNullable: false, maxLen: 20, orderNum: 1, description: "Period Key" },
64
+ description: { dbDatatype: "varchar", fieldTypeCd: "text", flags: "VE", maxLen: 100, orderNum: 30, description: "Description" },
65
+ closed: { dbDatatype: "bool", fieldTypeCd: "checkbox", flags: "VE", isNullable: false, formula: "false", orderNum: 40, description: "Closed" },
66
+ start_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VE", orderNum: 50, description: "Start Date" },
67
+ end_date: { dbDatatype: "date", fieldTypeCd: "date", flags: "VE", orderNum: 60, description: "End Date" },
68
68
  },
69
69
  },
70
70
  ] as const;