@docupace/ihub-config 1.1.22 → 1.1.24-admin.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/dist/config-extension.d.ts +23 -0
- package/dist/config-extension.d.ts.map +1 -1
- package/dist/config-extension.js +2 -0
- package/dist/config-extension.js.map +1 -1
- package/dist/config-service.d.ts +12 -3
- package/dist/config-service.d.ts.map +1 -1
- package/dist/config-service.js +313 -22
- package/dist/config-service.js.map +1 -1
- package/dist/mappers/config-mapper.d.ts.map +1 -1
- package/dist/mappers/config-mapper.js +1 -0
- package/dist/mappers/config-mapper.js.map +1 -1
- package/dist/model/graphs/config/fields.graphql +53 -8
- package/dist/model/graphs/config/menu.graphql +6 -0
- package/dist/model/graphs/config/page.graphql +8 -1
- package/dist/model/graphs/config/query.graphql +9 -1
- package/dist/model/graphs/config/rules.graphql +15 -3
- package/dist/model/graphs/config/selectOptions.graphql +1 -0
- package/dist/model/graphs/config/table.graphql +17 -0
- package/dist/types/graphql.d.ts +84 -29
- package/dist/types/graphql.d.ts.map +1 -1
- package/dist/types/graphql.js.map +1 -1
- package/model/graphs/config/fields.graphql +53 -8
- package/model/graphs/config/menu.graphql +6 -0
- package/model/graphs/config/page.graphql +8 -1
- package/model/graphs/config/query.graphql +9 -1
- package/model/graphs/config/rules.graphql +15 -3
- package/model/graphs/config/selectOptions.graphql +1 -0
- package/model/graphs/config/table.graphql +17 -0
- package/package.json +21 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/types/graphql.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,wCAAiB,CAAA;IACjB,yDAAkC,CAAA;AACpC,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/types/graphql.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4CAAqB,CAAA;IACrB,wCAAiB,CAAA;IACjB,yDAAkC,CAAA;AACpC,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAseD,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,6BAAW,CAAA;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAkVD,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,0BAAa,CAAA;AACf,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AA2ZD,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,yCAAmB,CAAA;AACrB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;AAwBD,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,sCAAe,CAAA;AACjB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B"}
|
|
@@ -32,6 +32,8 @@ interface IDateRangeField {
|
|
|
32
32
|
excludeFromQueryInput: Boolean
|
|
33
33
|
visibilityCondition: String
|
|
34
34
|
disabledCondition: String
|
|
35
|
+
validation: GenericFieldValidation
|
|
36
|
+
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
type InputField implements IField & IRowElement & IElement {
|
|
@@ -101,6 +103,36 @@ type ControlGroup implements IRowElement & IElement {
|
|
|
101
103
|
fields: [Fields!]!
|
|
102
104
|
}
|
|
103
105
|
|
|
106
|
+
# Renders the currently-linked records of a multi-valued reference attribute
|
|
107
|
+
# (`path`) as a table (`columns`, reusing Table's Column config), with a quick
|
|
108
|
+
# typeahead (`search`, reusing Table's SimpleSearch/QuerySelectOptions config)
|
|
109
|
+
# to find and add records of `dataType`, and a delete affordance per row.
|
|
110
|
+
# `rowMenuItems` (reusing Table's MenuItem config) adds further per-row actions,
|
|
111
|
+
# e.g. an `action: "details"` item with a `url` to navigate to that record's own
|
|
112
|
+
# details page.
|
|
113
|
+
type ReferenceTable implements IField & IRowElement & IElement {
|
|
114
|
+
cols: Int
|
|
115
|
+
defaultValue: String
|
|
116
|
+
disabledCondition: String
|
|
117
|
+
excludeFromQueryInput: Boolean
|
|
118
|
+
hidden: Boolean
|
|
119
|
+
label: String
|
|
120
|
+
name: String!
|
|
121
|
+
path: String!
|
|
122
|
+
readonly: Boolean
|
|
123
|
+
required: Boolean
|
|
124
|
+
requiredCondition: String
|
|
125
|
+
skipQuery: Boolean
|
|
126
|
+
visibilityCondition: String
|
|
127
|
+
dataType: String!
|
|
128
|
+
columns: [Column!]!
|
|
129
|
+
search: SimpleSearch
|
|
130
|
+
addLabel: String
|
|
131
|
+
confirmDelete: Boolean
|
|
132
|
+
maxRows: Int
|
|
133
|
+
rowMenuItems: [MenuItem!]
|
|
134
|
+
}
|
|
135
|
+
|
|
104
136
|
type PhoneField implements IField & IRowElement & IElement {
|
|
105
137
|
cols: Int
|
|
106
138
|
defaultValue: String
|
|
@@ -116,7 +148,7 @@ type PhoneField implements IField & IRowElement & IElement {
|
|
|
116
148
|
excludeFromQueryInput: Boolean
|
|
117
149
|
visibilityCondition: String
|
|
118
150
|
disabledCondition: String
|
|
119
|
-
validation:
|
|
151
|
+
validation: GenericFieldValidation
|
|
120
152
|
}
|
|
121
153
|
|
|
122
154
|
type DateField implements IField & IRowElement & IElement {
|
|
@@ -135,7 +167,7 @@ type DateField implements IField & IRowElement & IElement {
|
|
|
135
167
|
disabledCondition: String
|
|
136
168
|
minDate: String # e.q. "now" or "2025-03-20"
|
|
137
169
|
maxDate: String # e.q. "now" or "2025-03-20"
|
|
138
|
-
validation:
|
|
170
|
+
validation: GenericFieldValidation
|
|
139
171
|
}
|
|
140
172
|
|
|
141
173
|
type DateRangeField implements IDateRangeField & IRowElement & IElement {
|
|
@@ -154,6 +186,7 @@ type DateRangeField implements IDateRangeField & IRowElement & IElement {
|
|
|
154
186
|
excludeFromQueryInput: Boolean
|
|
155
187
|
visibilityCondition: String
|
|
156
188
|
disabledCondition: String
|
|
189
|
+
validation: GenericFieldValidation
|
|
157
190
|
}
|
|
158
191
|
|
|
159
192
|
type SelectField implements IField & IRowElement & IElement {
|
|
@@ -178,7 +211,7 @@ type SelectField implements IField & IRowElement & IElement {
|
|
|
178
211
|
excludeId: Boolean
|
|
179
212
|
helperText: String
|
|
180
213
|
autoSelectSingleOption: Boolean
|
|
181
|
-
validation:
|
|
214
|
+
validation: GenericFieldValidation
|
|
182
215
|
}
|
|
183
216
|
|
|
184
217
|
type ToggleField implements IField & IRowElement & IElement {
|
|
@@ -200,7 +233,7 @@ type ToggleField implements IField & IRowElement & IElement {
|
|
|
200
233
|
visibilityCondition: String
|
|
201
234
|
disabledCondition: String
|
|
202
235
|
linkedFields: [String!]
|
|
203
|
-
validation:
|
|
236
|
+
validation: GenericFieldValidation
|
|
204
237
|
}
|
|
205
238
|
|
|
206
239
|
type BooleanField implements IField & IRowElement & IElement {
|
|
@@ -218,7 +251,7 @@ type BooleanField implements IField & IRowElement & IElement {
|
|
|
218
251
|
visibilityCondition: String
|
|
219
252
|
disabledCondition: String
|
|
220
253
|
linkedFields: [String!]
|
|
221
|
-
validation:
|
|
254
|
+
validation: GenericFieldValidation
|
|
222
255
|
}
|
|
223
256
|
|
|
224
257
|
type ChipSelectWithInputField implements IField & IRowElement & IElement {
|
|
@@ -262,7 +295,7 @@ type CustomField implements IField & IRowElement & IElement {
|
|
|
262
295
|
excludeFromQueryInput: Boolean
|
|
263
296
|
visibilityCondition: String
|
|
264
297
|
disabledCondition: String
|
|
265
|
-
validation:
|
|
298
|
+
validation: GenericFieldValidation
|
|
266
299
|
}
|
|
267
300
|
|
|
268
301
|
type StatusChipField implements IField & IRowElement & IElement {
|
|
@@ -271,7 +304,7 @@ type StatusChipField implements IField & IRowElement & IElement {
|
|
|
271
304
|
label: String
|
|
272
305
|
name: String!
|
|
273
306
|
path: String!
|
|
274
|
-
validation:
|
|
307
|
+
validation: GenericFieldValidation
|
|
275
308
|
}
|
|
276
309
|
|
|
277
310
|
type CheckboxGroupValue {
|
|
@@ -299,9 +332,19 @@ enum FieldValueType {
|
|
|
299
332
|
Float
|
|
300
333
|
}
|
|
301
334
|
|
|
302
|
-
type
|
|
335
|
+
type GenericFieldValidation {
|
|
336
|
+
custom : CustomFieldValidation
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
type CustomFieldValidation {
|
|
303
340
|
expression: String
|
|
304
341
|
message: String
|
|
342
|
+
"""
|
|
343
|
+
Paths of other fields this expression reads. When one of these fields changes, this
|
|
344
|
+
field's validation is re-triggered so its error state stays in sync without requiring
|
|
345
|
+
the user to re-touch this field directly.
|
|
346
|
+
"""
|
|
347
|
+
dependentPaths: [String!]
|
|
305
348
|
}
|
|
306
349
|
|
|
307
350
|
type StringValidationRule {
|
|
@@ -333,11 +376,13 @@ type InputValidation {
|
|
|
333
376
|
format: [FormatValidationRule!]
|
|
334
377
|
min: FloatValidationRule
|
|
335
378
|
max: FloatValidationRule
|
|
379
|
+
custom: CustomFieldValidation
|
|
336
380
|
}
|
|
337
381
|
|
|
338
382
|
type ChipSelectValidation {
|
|
339
383
|
compatibleWith: CompatibleWithRule
|
|
340
384
|
uniqueInList: UniqueInListRule
|
|
385
|
+
custom : CustomFieldValidation
|
|
341
386
|
}
|
|
342
387
|
|
|
343
388
|
type CompatibleWithRule {
|
|
@@ -25,6 +25,12 @@ type MenuItem implements IMenuItem {
|
|
|
25
25
|
visibilityCondition: String
|
|
26
26
|
disabledCondition: String
|
|
27
27
|
config: JSON
|
|
28
|
+
"""
|
|
29
|
+
Child menu items. When present, this item acts as a collapsible group
|
|
30
|
+
header rather than a navigable leaf (consumers should treat a MenuItem
|
|
31
|
+
with `items` and no `url` as a group).
|
|
32
|
+
"""
|
|
33
|
+
items: [MenuItem!]
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
type ActionButton implements IMenuItem {
|
|
@@ -250,8 +250,15 @@ type Viewer {
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
type Breadcrumb {
|
|
253
|
-
label: String
|
|
253
|
+
label: String
|
|
254
254
|
path: String
|
|
255
255
|
isLabelExpression: Boolean
|
|
256
256
|
isPathExpression: Boolean
|
|
257
|
+
"""
|
|
258
|
+
Dot-notation paths (e.g. "name", "folder.title") to try, in order, against
|
|
259
|
+
the already-fetched page record to compute the breadcrumb label. Used only
|
|
260
|
+
when `isLabelExpression` is not set. If none of the paths resolve to a
|
|
261
|
+
non-empty value, the client falls back to the record's `id`.
|
|
262
|
+
"""
|
|
263
|
+
valuePaths: [String!]
|
|
257
264
|
}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
type PageQuery {
|
|
3
|
-
|
|
3
|
+
"""
|
|
4
|
+
impersonateRoleId / impersonateGeneral: preview this page's config as
|
|
5
|
+
someone else would see it — either a specific role (impersonateRoleId)
|
|
6
|
+
or the site default with no role/personal override at all
|
|
7
|
+
(impersonateGeneral) — restricted to admins by the host's identity
|
|
8
|
+
resolution (see docupace-graphql-server's resolveCurrentIdentity), which
|
|
9
|
+
throws for a non-admin caller.
|
|
10
|
+
"""
|
|
11
|
+
getPageConfig(path: String, context: JSON, impersonateRoleId: ID, impersonateGeneral: Boolean): Page
|
|
4
12
|
getAIConfig(path: String, context: JSON): JSON
|
|
5
13
|
}
|
|
6
14
|
|
|
@@ -15,7 +15,7 @@ type RuleGroup {
|
|
|
15
15
|
validationRules: [ValidationRule!]
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
union ValidationRule = ArrayTotalRule
|
|
18
|
+
union ValidationRule = ArrayTotalRule | ArrayCountRule
|
|
19
19
|
|
|
20
20
|
type ArrayTotalRule {
|
|
21
21
|
name: String
|
|
@@ -37,6 +37,18 @@ type ArrayTotalRule {
|
|
|
37
37
|
emptyIsValid: Boolean
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
"""Validates that the combined count of entries across multiple collections does not exceed a maximum."""
|
|
41
|
+
type ArrayCountRule {
|
|
42
|
+
name: String
|
|
43
|
+
message: String!
|
|
44
|
+
|
|
45
|
+
"""Paths to the collections whose combined count should be validated."""
|
|
46
|
+
paths: [String!]!
|
|
47
|
+
|
|
48
|
+
"""Maximum combined number of entries across all specified paths."""
|
|
49
|
+
maxCount: Int!
|
|
50
|
+
}
|
|
51
|
+
|
|
40
52
|
interface IFieldRule {
|
|
41
53
|
defaultValue: String
|
|
42
54
|
messageLabel: String
|
|
@@ -56,7 +68,7 @@ type ListFieldRule implements IFieldRule {
|
|
|
56
68
|
requiredCondition: String
|
|
57
69
|
availabilityCondition: String # maps to visibilityCondition on UI
|
|
58
70
|
validationRules: [ListFieldValidationRule!]
|
|
59
|
-
validation:
|
|
71
|
+
validation: GenericFieldValidation
|
|
60
72
|
}
|
|
61
73
|
|
|
62
74
|
type ListFieldValidationRule {
|
|
@@ -100,5 +112,5 @@ type DateFieldRule implements IFieldRule {
|
|
|
100
112
|
availabilityCondition: String # maps to visibilityCondition on UI
|
|
101
113
|
minDate: String # e.q. "now" or "2025-03-20"
|
|
102
114
|
maxDate: String # e.q. "now" or "2025-03-20"
|
|
103
|
-
validation:
|
|
115
|
+
validation: GenericFieldValidation
|
|
104
116
|
}
|
|
@@ -9,6 +9,7 @@ type SelectOptionsFilter {
|
|
|
9
9
|
type QuerySelectOptions implements ISelectOptions {
|
|
10
10
|
type: String
|
|
11
11
|
labelProp: String # defaults to "name" in ui
|
|
12
|
+
labelExpression: String # JS expression evaluated against each option (e.g. "`${option.name} (${option.internalId})`"); takes precedence over labelProp when set
|
|
12
13
|
valueProp: String # defaults to "id" in ui
|
|
13
14
|
queryName: String!
|
|
14
15
|
variableDefinitions: JSON
|
|
@@ -34,6 +34,17 @@ interface ITable {
|
|
|
34
34
|
expandable: Expandable
|
|
35
35
|
totals: [TotalsItem!]
|
|
36
36
|
config: JSON
|
|
37
|
+
configPath: String
|
|
38
|
+
configurableAttributes: [ConfigurableAttribute!]
|
|
39
|
+
"""Admin-defined columns not present in this table's own base `columns`, available to add via the Configure Columns dialog. Site/tenant-scoped catalog — see `$.predefinedColumns` under `configurableAttributes`."""
|
|
40
|
+
predefinedColumns: [Column!]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
"""One overridable sub-element of a config object identified by `configPath` — see the parent's own `configPath` field for how the two combine (`${configPath}#${configSubPath}`)."""
|
|
44
|
+
type ConfigurableAttribute {
|
|
45
|
+
name: String! # e.g. "columns", "filter" — matches the field name on the parent type
|
|
46
|
+
configPath: String! # copy of the parent object's own configPath, for convenience
|
|
47
|
+
configSubPath: String! # JSONPath relative to the parent object, e.g. "$.columns"
|
|
37
48
|
}
|
|
38
49
|
|
|
39
50
|
type TotalsItem {
|
|
@@ -91,6 +102,8 @@ enum TablePinnedPosition {
|
|
|
91
102
|
|
|
92
103
|
type Toolbar {
|
|
93
104
|
columns: ToolbarColumns
|
|
105
|
+
configureColumns: ToolbarColumns
|
|
106
|
+
configureFilters: ToolbarColumns
|
|
94
107
|
}
|
|
95
108
|
|
|
96
109
|
type ToolbarColumns {
|
|
@@ -170,12 +183,16 @@ type Column {
|
|
|
170
183
|
visible: Boolean
|
|
171
184
|
paths: [String!]
|
|
172
185
|
expression: String
|
|
186
|
+
"""Which predefined formatter (if any) generated `expression` — e.g. `"commaList"`, `"custom"` — see `EXPRESSION_FORMATTERS`/`CUSTOM_FORMATTER_ID` in docupace-ui-main's `expressionGeneration.ts`. Absent for the raw/no-formatting default, which stores neither this nor `expression` at all. Without this field, a column's `expression` round-trips but the formatter that produced it doesn't, so the Configure Columns editor can't tell "built from a known formatter" apart from "hand-authored custom script" on reload and always falls back to showing the latter."""
|
|
187
|
+
formatterName: String
|
|
173
188
|
component: String
|
|
174
189
|
sortable: Boolean
|
|
175
190
|
flex: Float
|
|
176
191
|
pinned: TablePinnedPosition
|
|
177
192
|
config: JSON
|
|
178
193
|
filter: ColumnFilter
|
|
194
|
+
"""Set when this column was added by `$ref`-referencing a predefined/base column (e.g. `"#$.predefinedColumns[?(@.name=='email')]"`) rather than being copied inline — see the config-path override merge in `config-service.ts`. Clients that re-save this column unchanged should keep sending the same `$ref` (as this value) rather than flattening it into a full copy."""
|
|
195
|
+
ref: String
|
|
179
196
|
}
|
|
180
197
|
|
|
181
198
|
type ColumnFilter {
|
package/package.json
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docupace/ihub-config",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.24-admin.0",
|
|
4
4
|
"description": "Reusable config GraphQL extension and standalone server",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"test": "jest",
|
|
9
|
-
"test:coverage": "jest --coverage",
|
|
10
|
-
"start:dev": "cross-env NODE_ENV=development tsx watch --clear-screen --no-cache src/server.ts --log-level debug | pino-pretty",
|
|
11
|
-
"start": "node dist/server.js",
|
|
12
|
-
"build:code": "tsc -p tsconfig.json",
|
|
13
|
-
"build:assets": "cpx \"model/**/*.yaml\" ./dist/model && cpx \"model/**/*.graphql\" ./dist/model",
|
|
14
|
-
"build": "rimraf dist && pnpm lint && pnpm build:code && pnpm build:assets",
|
|
15
|
-
"watch": "tsc -p tsconfig.json --watch",
|
|
16
|
-
"start:build": "rimraf dist && pnpm build:esm && pnpm build:assets && node dist/server.js",
|
|
17
|
-
"codegen": "graphql-codegen --config codegen.ts",
|
|
18
|
-
"lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\" \"tests/**/*.{js,jsx,ts,tsx}\"",
|
|
19
|
-
"lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx}\" \"tests/**/*.{js,jsx,ts,tsx}\"",
|
|
20
|
-
"prepublishOnly": "pnpm build && pnpm test",
|
|
21
|
-
"sonar": "bash sonar.sh"
|
|
22
|
-
},
|
|
23
7
|
"keywords": [
|
|
24
8
|
"graphql",
|
|
25
9
|
"config",
|
|
@@ -29,12 +13,13 @@
|
|
|
29
13
|
"license": "ISC",
|
|
30
14
|
"dependencies": {
|
|
31
15
|
"@docupace/ihub-cache": "1.0.1",
|
|
32
|
-
"@docupace/ihub-core": "
|
|
16
|
+
"@docupace/ihub-core": "2.0.3-admin.2",
|
|
33
17
|
"axios": "^1.13.5",
|
|
34
18
|
"cross-env": "^7.0.3",
|
|
35
19
|
"dotenv": "^16.4.1",
|
|
36
|
-
"graphql": "^16.
|
|
20
|
+
"graphql": "^16.14.0",
|
|
37
21
|
"js-yaml": "^4.1.0",
|
|
22
|
+
"jsonpath": "^1.1.1",
|
|
38
23
|
"lodash": "^4.17.21",
|
|
39
24
|
"pino": "^10.3.1",
|
|
40
25
|
"rimraf": "^6.1.3",
|
|
@@ -46,6 +31,7 @@
|
|
|
46
31
|
"@graphql-codegen/typescript-resolvers": "4.0.6",
|
|
47
32
|
"@types/jest": "^30.0.0",
|
|
48
33
|
"@types/js-yaml": "^4.0.9",
|
|
34
|
+
"@types/jsonpath": "^0.2.4",
|
|
49
35
|
"@types/lodash": "^4.17.7",
|
|
50
36
|
"@types/node": "^20.10.6",
|
|
51
37
|
"@typescript-eslint/eslint-plugin": "^7.10.0",
|
|
@@ -67,7 +53,6 @@
|
|
|
67
53
|
"tsx": "^4.11.2",
|
|
68
54
|
"typescript": "^5.3.3"
|
|
69
55
|
},
|
|
70
|
-
"packageManager": "pnpm@10.30.3",
|
|
71
56
|
"types": "dist/index.d.ts",
|
|
72
57
|
"files": [
|
|
73
58
|
"dist",
|
|
@@ -77,5 +62,20 @@
|
|
|
77
62
|
],
|
|
78
63
|
"imports": {
|
|
79
64
|
"#module-format": "./dist/lib/module-format.esm.js"
|
|
65
|
+
},
|
|
66
|
+
"scripts": {
|
|
67
|
+
"test": "jest",
|
|
68
|
+
"test:coverage": "jest --coverage",
|
|
69
|
+
"start:dev": "cross-env NODE_ENV=development tsx watch --clear-screen --no-cache src/server.ts --log-level debug | pino-pretty",
|
|
70
|
+
"start": "node dist/server.js",
|
|
71
|
+
"build:code": "tsc -p tsconfig.json",
|
|
72
|
+
"build:assets": "cpx \"model/**/*.yaml\" ./dist/model && cpx \"model/**/*.graphql\" ./dist/model",
|
|
73
|
+
"build": "rimraf dist && pnpm lint && pnpm build:code && pnpm build:assets",
|
|
74
|
+
"watch": "tsc -p tsconfig.json --watch",
|
|
75
|
+
"start:build": "rimraf dist && pnpm build:esm && pnpm build:assets && node dist/server.js",
|
|
76
|
+
"codegen": "graphql-codegen --config codegen.ts",
|
|
77
|
+
"lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\" \"tests/**/*.{js,jsx,ts,tsx}\"",
|
|
78
|
+
"lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx}\" \"tests/**/*.{js,jsx,ts,tsx}\"",
|
|
79
|
+
"sonar": "bash sonar.sh"
|
|
80
80
|
}
|
|
81
|
-
}
|
|
81
|
+
}
|