@dforge-core/metadata 0.0.1

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 (116) hide show
  1. package/dist/actions.d.ts +31 -0
  2. package/dist/actions.d.ts.map +1 -0
  3. package/dist/actions.js +7 -0
  4. package/dist/actions.js.map +1 -0
  5. package/dist/aggregation.d.ts +13 -0
  6. package/dist/aggregation.d.ts.map +1 -0
  7. package/dist/aggregation.js +17 -0
  8. package/dist/aggregation.js.map +1 -0
  9. package/dist/base-datatypes.d.ts +5 -0
  10. package/dist/base-datatypes.d.ts.map +1 -0
  11. package/dist/base-datatypes.js +49 -0
  12. package/dist/base-datatypes.js.map +1 -0
  13. package/dist/column-types.d.ts +5 -0
  14. package/dist/column-types.d.ts.map +1 -0
  15. package/dist/column-types.js +18 -0
  16. package/dist/column-types.js.map +1 -0
  17. package/dist/data-views.d.ts +95 -0
  18. package/dist/data-views.d.ts.map +1 -0
  19. package/dist/data-views.js +17 -0
  20. package/dist/data-views.js.map +1 -0
  21. package/dist/derive.d.ts +19 -0
  22. package/dist/derive.d.ts.map +1 -0
  23. package/dist/derive.js +51 -0
  24. package/dist/derive.js.map +1 -0
  25. package/dist/entity.d.ts +110 -0
  26. package/dist/entity.d.ts.map +1 -0
  27. package/dist/entity.js +7 -0
  28. package/dist/entity.js.map +1 -0
  29. package/dist/field-types.d.ts +260 -0
  30. package/dist/field-types.d.ts.map +1 -0
  31. package/dist/field-types.js +55 -0
  32. package/dist/field-types.js.map +1 -0
  33. package/dist/filter.d.ts +26 -0
  34. package/dist/filter.d.ts.map +1 -0
  35. package/dist/filter.js +7 -0
  36. package/dist/filter.js.map +1 -0
  37. package/dist/folders.d.ts +32 -0
  38. package/dist/folders.d.ts.map +1 -0
  39. package/dist/folders.js +6 -0
  40. package/dist/folders.js.map +1 -0
  41. package/dist/index.d.ts +27 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +31 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/jobs.d.ts +32 -0
  46. package/dist/jobs.d.ts.map +1 -0
  47. package/dist/jobs.js +3 -0
  48. package/dist/jobs.js.map +1 -0
  49. package/dist/manifest.d.ts +53 -0
  50. package/dist/manifest.d.ts.map +1 -0
  51. package/dist/manifest.js +4 -0
  52. package/dist/manifest.js.map +1 -0
  53. package/dist/menus.d.ts +32 -0
  54. package/dist/menus.d.ts.map +1 -0
  55. package/dist/menus.js +3 -0
  56. package/dist/menus.js.map +1 -0
  57. package/dist/print-templates.d.ts +36 -0
  58. package/dist/print-templates.d.ts.map +1 -0
  59. package/dist/print-templates.js +4 -0
  60. package/dist/print-templates.js.map +1 -0
  61. package/dist/reports.d.ts +84 -0
  62. package/dist/reports.d.ts.map +1 -0
  63. package/dist/reports.js +24 -0
  64. package/dist/reports.js.map +1 -0
  65. package/dist/roles.d.ts +10 -0
  66. package/dist/roles.d.ts.map +1 -0
  67. package/dist/roles.js +3 -0
  68. package/dist/roles.js.map +1 -0
  69. package/dist/seed-data.d.ts +8 -0
  70. package/dist/seed-data.d.ts.map +1 -0
  71. package/dist/seed-data.js +4 -0
  72. package/dist/seed-data.js.map +1 -0
  73. package/dist/settings.d.ts +26 -0
  74. package/dist/settings.d.ts.map +1 -0
  75. package/dist/settings.js +3 -0
  76. package/dist/settings.js.map +1 -0
  77. package/dist/traits.d.ts +14 -0
  78. package/dist/traits.d.ts.map +1 -0
  79. package/dist/traits.js +121 -0
  80. package/dist/traits.js.map +1 -0
  81. package/dist/triggers.d.ts +24 -0
  82. package/dist/triggers.d.ts.map +1 -0
  83. package/dist/triggers.js +3 -0
  84. package/dist/triggers.js.map +1 -0
  85. package/dist/types.d.ts +121 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/types.js +7 -0
  88. package/dist/types.js.map +1 -0
  89. package/dist/webhooks.d.ts +31 -0
  90. package/dist/webhooks.d.ts.map +1 -0
  91. package/dist/webhooks.js +3 -0
  92. package/dist/webhooks.js.map +1 -0
  93. package/package.json +54 -0
  94. package/src/actions.ts +38 -0
  95. package/src/aggregation.ts +21 -0
  96. package/src/base-datatypes.ts +53 -0
  97. package/src/column-types.ts +22 -0
  98. package/src/data-views.ts +139 -0
  99. package/src/derive.ts +63 -0
  100. package/src/entity.ts +124 -0
  101. package/src/field-types.ts +68 -0
  102. package/src/filter.ts +34 -0
  103. package/src/folders.ts +39 -0
  104. package/src/index.ts +109 -0
  105. package/src/jobs.ts +34 -0
  106. package/src/manifest.ts +54 -0
  107. package/src/menus.ts +36 -0
  108. package/src/print-templates.ts +41 -0
  109. package/src/reports.ts +111 -0
  110. package/src/roles.ts +12 -0
  111. package/src/seed-data.ts +10 -0
  112. package/src/settings.ts +29 -0
  113. package/src/traits.ts +127 -0
  114. package/src/triggers.ts +27 -0
  115. package/src/types.ts +177 -0
  116. package/src/webhooks.ts +35 -0
package/src/types.ts ADDED
@@ -0,0 +1,177 @@
1
+ // Shared types for the dForge authoring registries.
2
+ //
3
+ // These describe the *authoring* surface (what a module author / visual editor
4
+ // works with), mirrored from the platform metadata seed data. Keep them free of
5
+ // any runtime dependency so this package stays import-safe everywhere.
6
+
7
+ /** A `{ cd, name }` pair for friendly pickers (view kinds, viz types, …). */
8
+ export interface NamedKind {
9
+ cd: string;
10
+ name: string;
11
+ }
12
+
13
+ /** Horizontal alignment for a column's display (authored via `params.align`). */
14
+ export type AlignType = "left" | "right" | "center";
15
+
16
+ /** Column kind letter as stored in entity JSON / the `column` metadata table. */
17
+ export type ColumnTypeCd = "D" | "R" | "S" | "F" | "A" | "L" | "G";
18
+
19
+ /** Abstract data type code from the `base_datatype` table. */
20
+ export type BaseDatatypeCd =
21
+ | "binary"
22
+ | "bool"
23
+ | "culture"
24
+ | "cuid"
25
+ | "date"
26
+ | "guid"
27
+ | "json"
28
+ | "link"
29
+ | "number"
30
+ | "project"
31
+ | "ref"
32
+ | "set"
33
+ | "string"
34
+ | "time"
35
+ | "timestamp"
36
+ | "xml";
37
+
38
+ /** Display flags string characters. V=Visible I=Identity E=Editable M=Mandatory H=Hidden. */
39
+ export type FlagCd = "V" | "I" | "E" | "M" | "H";
40
+
41
+ /** Known field type codes from the field_type seed. */
42
+ export type FieldTypeCd =
43
+ | "text"
44
+ | "email"
45
+ | "phone"
46
+ | "url"
47
+ | "textarea"
48
+ | "number"
49
+ | "currency"
50
+ | "percent"
51
+ | "checkbox"
52
+ | "date"
53
+ | "datetime"
54
+ | "time"
55
+ | "dropdown"
56
+ | "flags"
57
+ | "json"
58
+ | "hidden"
59
+ | "color"
60
+ | "image"
61
+ | "file"
62
+ | "richtext"
63
+ | "lookup"
64
+ | "user"
65
+ | "grid"
66
+ | "tags"
67
+ | "entitylink"
68
+ | "code";
69
+
70
+ /**
71
+ * A UI field type from the `field_type` table. The author picks one of these;
72
+ * the physical `dbDatatype` and `baseDatatypeCd` are derived from it.
73
+ */
74
+ export interface FieldTypeDef {
75
+ /** Stable code stored as `fieldTypeCd` on a field. */
76
+ cd: FieldTypeCd;
77
+ /** Human label for pickers. */
78
+ name: string;
79
+ /** Default column kind this field type implies (D / R / S). */
80
+ columnType: ColumnTypeCd;
81
+ /** Abstract datatype used for platform semantics. */
82
+ baseDatatypeCd: BaseDatatypeCd;
83
+ /** Aggregations this type supports: S=sum C=count A=avg M=min/max (letters). */
84
+ supportedAgg: string | null;
85
+ /** Default maximum length for string-backed types (e.g. color = 20). */
86
+ maxLen: number | null;
87
+ /** Default numeric scale for number-backed types (e.g. currency = 2). */
88
+ precision: number | null;
89
+ /** Whether the value participates in text filters. */
90
+ useStringInFilter: boolean;
91
+ /** Default field-type params merged into `params` when the field is created. */
92
+ defParams?: Record<string, unknown>;
93
+ }
94
+
95
+ /** Relationship link for Reference (R) and Set (S) columns. */
96
+ export interface FieldLink {
97
+ /** Target entity code (the entity being referenced or collected). */
98
+ entity: string;
99
+ /** Column(s) in this entity (comma-separated for compound keys). */
100
+ thisKey: string;
101
+ /** Column(s) in the target entity (comma-separated for compound keys). */
102
+ otherKey: string;
103
+ }
104
+
105
+ /** A dropdown/flags option in `params.options` (rich form). */
106
+ export interface FieldOption {
107
+ value: string;
108
+ label: string;
109
+ icon?: string;
110
+ color?: string;
111
+ }
112
+
113
+ /**
114
+ * A field/column definition as it appears under an entity's `fields` map.
115
+ * Mirrors the `field` $def in entity.schema.json. Trait fields are a subset of
116
+ * this shape, so the same type covers both. The open index signature keeps it
117
+ * tolerant of forward-compatible / type-specific extras (e.g. A/L register
118
+ * config under `params`).
119
+ */
120
+ export interface FieldDef {
121
+ /** PostgreSQL data type (e.g. uuid, varchar, int4, numeric, timestamptz). */
122
+ dbDatatype?: string;
123
+ /** Abstract base datatype; required on Formula (F) columns. */
124
+ baseDatatypeCd?: BaseDatatypeCd;
125
+ /** UI field type code. */
126
+ fieldTypeCd?: FieldTypeCd;
127
+ /** Column kind (defaults to D when omitted). */
128
+ columnType?: ColumnTypeCd;
129
+ /** Display flags string (subset of V/I/E/M/H). */
130
+ flags?: string;
131
+ isPk?: boolean;
132
+ isNullable?: boolean;
133
+ isIdentity?: boolean;
134
+ /** Formula expression (F/G columns) or SQL default value. */
135
+ formula?: string;
136
+ orderNum?: number;
137
+ description?: string;
138
+ maxLen?: number;
139
+ precision?: number;
140
+ /** Input mask pattern for editing. */
141
+ editMask?: string;
142
+ /** Display format pattern. */
143
+ displayFmt?: string;
144
+ /** Relationship link for R and S columns. */
145
+ link?: FieldLink;
146
+ /**
147
+ * On a self-referencing R column, set true to ALLOW parent/child cycles.
148
+ * Absent ⇒ treated as an acyclic hierarchy guarded at the DB level.
149
+ */
150
+ cyclic?: boolean;
151
+ /** Filter criteria for reference lookups. */
152
+ refFilter?: unknown;
153
+ /** Field-type-specific configuration (dropdown options, register config, …). */
154
+ params?: { options?: (string | FieldOption)[] } & Record<string, unknown>;
155
+ [key: string]: unknown;
156
+ }
157
+
158
+ /** A reusable trait that expands into a set of fields (and optional references). */
159
+ export interface TraitDef {
160
+ cd: string;
161
+ description: string;
162
+ /** Other traits this one includes (expanded first). */
163
+ includes?: string[];
164
+ /** Fields injected, keyed by column code. `{entity}` / `{Entity}` are templated. */
165
+ fields: Record<string, FieldDef>;
166
+ /** Foreign-key references injected (legacy `references` block). */
167
+ references?: Record<string, unknown>;
168
+ }
169
+
170
+ /** Description of a column kind for friendly pickers. */
171
+ export interface ColumnTypeDef {
172
+ cd: ColumnTypeCd;
173
+ /** Author-facing label. */
174
+ name: string;
175
+ /** One-line explanation. */
176
+ description: string;
177
+ }
@@ -0,0 +1,35 @@
1
+ // Webhooks — authoring shape of `webhooks.json`. Mirror of webhooks.schema.json.
2
+
3
+ import type { EntityEvent } from "./triggers";
4
+
5
+ /** Outbound payload shaping for a webhook subscription. */
6
+ export interface WebhookPayload {
7
+ /** Field codes to include. If omitted, all visible fields are included. */
8
+ include?: string[];
9
+ /** Include previous field values on update/status_change events. */
10
+ includeOld?: boolean;
11
+ }
12
+
13
+ /** A single webhook subscription. */
14
+ export interface WebhookSubscription {
15
+ /** Unique identifier within the module. */
16
+ code: string;
17
+ description: string;
18
+ /** Entity code that triggers this webhook. */
19
+ entity: string;
20
+ event: EntityEvent;
21
+ /** Formula evaluated against the record; webhook fires only if true. */
22
+ condition?: string;
23
+ /** Default endpoint URL (admin can override). */
24
+ endpointUrl?: string;
25
+ /** Secret code for the API key (from `dforge.secret`). */
26
+ secretCd?: string;
27
+ payload?: WebhookPayload;
28
+ /** Enabled (default true). */
29
+ enabled?: boolean;
30
+ }
31
+
32
+ /** A `webhooks.json` file. */
33
+ export interface WebhooksFile {
34
+ subscriptions: WebhookSubscription[];
35
+ }