eventmodeler 0.5.0 → 0.6.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/api/client-config.js +10 -0
- package/dist/api/generated/client/client.gen.js +235 -0
- package/dist/api/generated/client/index.js +6 -0
- package/dist/api/generated/client/types.gen.js +2 -0
- package/dist/api/generated/client/utils.gen.js +228 -0
- package/dist/api/generated/client.gen.js +4 -0
- package/dist/api/generated/core/auth.gen.js +14 -0
- package/dist/api/generated/core/bodySerializer.gen.js +57 -0
- package/dist/api/generated/core/params.gen.js +100 -0
- package/dist/api/generated/core/pathSerializer.gen.js +106 -0
- package/dist/api/generated/core/queryKeySerializer.gen.js +92 -0
- package/dist/api/generated/core/serverSentEvents.gen.js +133 -0
- package/dist/api/generated/core/types.gen.js +2 -0
- package/dist/api/generated/core/utils.gen.js +87 -0
- package/dist/api/generated/index.js +2 -0
- package/dist/api/generated/sdk.gen.js +4222 -0
- package/dist/api/generated/types.gen.js +2 -0
- package/dist/api/generated/zod.gen.js +7217 -0
- package/dist/commands/add.js +315 -0
- package/dist/commands/auth.js +14 -0
- package/dist/commands/create.js +192 -0
- package/dist/commands/design.js +108 -0
- package/dist/commands/guide.js +15 -0
- package/dist/commands/init.js +21 -0
- package/dist/commands/list-schemas.js +177 -0
- package/dist/commands/list.js +39 -0
- package/dist/commands/loop.js +101 -0
- package/dist/commands/map.js +40 -0
- package/dist/commands/mark.js +27 -0
- package/dist/commands/move.js +35 -0
- package/dist/commands/remove.js +170 -0
- package/dist/commands/rename.js +53 -0
- package/dist/commands/resize.js +30 -0
- package/dist/commands/search.js +14 -0
- package/dist/commands/set.js +199 -0
- package/dist/commands/show-schemas.js +259 -0
- package/dist/commands/show.js +56 -0
- package/dist/commands/summary.js +13 -0
- package/dist/commands/update.js +240 -0
- package/dist/index.js +46 -2379
- package/dist/lib/auth.js +1 -1
- package/dist/lib/config.js +0 -15
- package/dist/lib/excalidraw-schema.js +66 -0
- package/dist/lib/globals.js +8 -0
- package/dist/lib/model.js +11 -0
- package/dist/lib/project-config.js +20 -0
- package/dist/lib/resolve.js +59 -0
- package/dist/lib/scenario.js +15 -0
- package/dist/slices/add-scenario/index.js +2 -206
- package/dist/slices/guide/guides/codegen.js +1 -1
- package/dist/slices/guide/guides/connect-slices.js +38 -38
- package/dist/slices/guide/guides/create-slices.js +110 -140
- package/dist/slices/guide/guides/explore.js +37 -50
- package/dist/slices/guide/guides/information-flow.js +70 -84
- package/dist/slices/guide/guides/scenarios.js +82 -137
- package/dist/slices/guide/index.js +6 -6
- package/dist/slices/help/index.js +96 -0
- package/dist/slices/help/topics/build-codegen.js +109 -0
- package/dist/slices/help/topics/build-slice.js +147 -0
- package/dist/slices/help/topics/check-completeness.js +57 -0
- package/dist/slices/help/topics/connect-slices.js +99 -0
- package/dist/slices/help/topics/explore-model.js +112 -0
- package/dist/slices/help/topics/json-reference.js +188 -0
- package/dist/slices/help/topics/linked-copies.js +89 -0
- package/dist/slices/help/topics/manipulate-canvas.js +150 -0
- package/dist/slices/help/topics/write-scenarios.js +162 -0
- package/dist/slices/init/index.js +10 -4
- package/dist/slices/init/loop.js +60 -0
- package/dist/slices/login/index.js +2 -2
- package/dist/slices/logout/index.js +2 -2
- package/dist/slices/whoami/index.js +11 -36
- package/package.json +8 -3
- package/dist/api/index.d.ts +0 -285
- package/dist/api/index.js +0 -323
- package/dist/cloud/slices/index.d.ts +0 -276
- package/dist/cloud/slices/index.js +0 -406
- package/dist/eventmodeler.js +0 -5646
- package/dist/formatters.d.ts +0 -17
- package/dist/formatters.js +0 -482
- package/dist/index.d.ts +0 -2
- package/dist/lib/auth.d.ts +0 -24
- package/dist/lib/backend.d.ts +0 -43
- package/dist/lib/backend.js +0 -73
- package/dist/lib/chapter-utils.d.ts +0 -13
- package/dist/lib/chapter-utils.js +0 -71
- package/dist/lib/cloud-client.d.ts +0 -69
- package/dist/lib/cloud-client.js +0 -364
- package/dist/lib/config.d.ts +0 -30
- package/dist/lib/diff/merge-rules.d.ts +0 -45
- package/dist/lib/diff/merge-rules.js +0 -210
- package/dist/lib/diff/model-differ.d.ts +0 -8
- package/dist/lib/diff/model-differ.js +0 -568
- package/dist/lib/diff/three-way-merge.d.ts +0 -7
- package/dist/lib/diff/three-way-merge.js +0 -390
- package/dist/lib/diff/types.d.ts +0 -75
- package/dist/lib/diff/types.js +0 -1
- package/dist/lib/element-lookup.d.ts +0 -58
- package/dist/lib/element-lookup.js +0 -126
- package/dist/lib/file-loader.d.ts +0 -8
- package/dist/lib/file-loader.js +0 -108
- package/dist/lib/flow-utils.d.ts +0 -53
- package/dist/lib/flow-utils.js +0 -348
- package/dist/lib/format.d.ts +0 -10
- package/dist/lib/format.js +0 -23
- package/dist/lib/project-config.d.ts +0 -27
- package/dist/lib/slice-utils.d.ts +0 -59
- package/dist/lib/slice-utils.js +0 -140
- package/dist/local/slices/index.d.ts +0 -11
- package/dist/local/slices/index.js +0 -13
- package/dist/projection.d.ts +0 -3
- package/dist/projection.js +0 -828
- package/dist/slices/add-field/index.d.ts +0 -8
- package/dist/slices/add-field/index.js +0 -211
- package/dist/slices/add-scenario/index.d.ts +0 -27
- package/dist/slices/codegen-chapter-events/index.d.ts +0 -2
- package/dist/slices/codegen-chapter-events/index.js +0 -145
- package/dist/slices/codegen-slice/index.d.ts +0 -2
- package/dist/slices/codegen-slice/index.js +0 -448
- package/dist/slices/create-automation-slice/index.d.ts +0 -2
- package/dist/slices/create-automation-slice/index.js +0 -304
- package/dist/slices/create-flow/index.d.ts +0 -2
- package/dist/slices/create-flow/index.js +0 -183
- package/dist/slices/create-state-change-slice/index.d.ts +0 -2
- package/dist/slices/create-state-change-slice/index.js +0 -263
- package/dist/slices/create-state-view-slice/index.d.ts +0 -2
- package/dist/slices/create-state-view-slice/index.js +0 -128
- package/dist/slices/diff/index.d.ts +0 -11
- package/dist/slices/diff/index.js +0 -293
- package/dist/slices/export-eventmodel-to-json/index.d.ts +0 -2
- package/dist/slices/export-eventmodel-to-json/index.js +0 -355
- package/dist/slices/git/index.d.ts +0 -2
- package/dist/slices/git/index.js +0 -125
- package/dist/slices/guide/guides/codegen.d.ts +0 -5
- package/dist/slices/guide/guides/connect-slices.d.ts +0 -5
- package/dist/slices/guide/guides/create-slices.d.ts +0 -5
- package/dist/slices/guide/guides/explore.d.ts +0 -5
- package/dist/slices/guide/guides/information-flow.d.ts +0 -5
- package/dist/slices/guide/guides/scenarios.d.ts +0 -5
- package/dist/slices/guide/index.d.ts +0 -1
- package/dist/slices/import/index.d.ts +0 -8
- package/dist/slices/import/index.js +0 -63
- package/dist/slices/init/index.d.ts +0 -5
- package/dist/slices/list-chapters/index.d.ts +0 -3
- package/dist/slices/list-chapters/index.js +0 -21
- package/dist/slices/list-commands/index.d.ts +0 -3
- package/dist/slices/list-commands/index.js +0 -20
- package/dist/slices/list-events/index.d.ts +0 -3
- package/dist/slices/list-events/index.js +0 -98
- package/dist/slices/list-processors/index.d.ts +0 -3
- package/dist/slices/list-processors/index.js +0 -20
- package/dist/slices/list-readmodels/index.d.ts +0 -3
- package/dist/slices/list-readmodels/index.js +0 -21
- package/dist/slices/list-scenarios/index.d.ts +0 -3
- package/dist/slices/list-scenarios/index.js +0 -35
- package/dist/slices/list-screens/index.d.ts +0 -3
- package/dist/slices/list-screens/index.js +0 -47
- package/dist/slices/list-slices/index.d.ts +0 -3
- package/dist/slices/list-slices/index.js +0 -35
- package/dist/slices/login/index.d.ts +0 -1
- package/dist/slices/logout/index.d.ts +0 -1
- package/dist/slices/map-fields/index.d.ts +0 -2
- package/dist/slices/map-fields/index.js +0 -269
- package/dist/slices/mark-slice-status/index.d.ts +0 -2
- package/dist/slices/mark-slice-status/index.js +0 -31
- package/dist/slices/merge/index.d.ts +0 -19
- package/dist/slices/merge/index.js +0 -147
- package/dist/slices/open-app/index.d.ts +0 -1
- package/dist/slices/remove-field/index.d.ts +0 -8
- package/dist/slices/remove-field/index.js +0 -167
- package/dist/slices/remove-scenario/index.d.ts +0 -2
- package/dist/slices/remove-scenario/index.js +0 -77
- package/dist/slices/search/index.d.ts +0 -3
- package/dist/slices/search/index.js +0 -302
- package/dist/slices/show-actor/index.d.ts +0 -4
- package/dist/slices/show-actor/index.js +0 -115
- package/dist/slices/show-aggregate/index.d.ts +0 -3
- package/dist/slices/show-aggregate/index.js +0 -108
- package/dist/slices/show-aggregate-completeness/index.d.ts +0 -4
- package/dist/slices/show-aggregate-completeness/index.js +0 -181
- package/dist/slices/show-chapter/index.d.ts +0 -3
- package/dist/slices/show-chapter/index.js +0 -195
- package/dist/slices/show-command/index.d.ts +0 -3
- package/dist/slices/show-command/index.js +0 -133
- package/dist/slices/show-completeness/index.d.ts +0 -4
- package/dist/slices/show-completeness/index.js +0 -731
- package/dist/slices/show-event/index.d.ts +0 -3
- package/dist/slices/show-event/index.js +0 -118
- package/dist/slices/show-model-summary/index.d.ts +0 -3
- package/dist/slices/show-model-summary/index.js +0 -31
- package/dist/slices/show-processor/index.d.ts +0 -3
- package/dist/slices/show-processor/index.js +0 -111
- package/dist/slices/show-readmodel/index.d.ts +0 -3
- package/dist/slices/show-readmodel/index.js +0 -158
- package/dist/slices/show-scenario/index.d.ts +0 -3
- package/dist/slices/show-scenario/index.js +0 -196
- package/dist/slices/show-screen/index.d.ts +0 -3
- package/dist/slices/show-screen/index.js +0 -139
- package/dist/slices/show-slice/index.d.ts +0 -3
- package/dist/slices/show-slice/index.js +0 -696
- package/dist/slices/update-field/index.d.ts +0 -15
- package/dist/slices/update-field/index.js +0 -208
- package/dist/slices/whoami/index.d.ts +0 -2
- package/dist/types.d.ts +0 -195
- package/dist/types.js +0 -1
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { getGlobalId } from '../lib/globals';
|
|
2
|
+
import { requireModelId } from '../lib/model';
|
|
3
|
+
import { resolveAnyElement, unwrap, elementIdKey } from '../lib/resolve';
|
|
4
|
+
import * as sdk from '../api/generated/sdk.gen';
|
|
5
|
+
const RENAME_FIELD_MAP = {
|
|
6
|
+
command: sdk.renameCommandField,
|
|
7
|
+
event: sdk.renameEventField,
|
|
8
|
+
readmodel: sdk.renameReadModelField,
|
|
9
|
+
screen: sdk.renameScreenField,
|
|
10
|
+
processor: sdk.renameProcessorField,
|
|
11
|
+
'external-event': sdk.renameExternalEventField,
|
|
12
|
+
};
|
|
13
|
+
const CHANGE_TYPE_MAP = {
|
|
14
|
+
command: sdk.changeCommandFieldType,
|
|
15
|
+
event: sdk.changeEventFieldType,
|
|
16
|
+
readmodel: sdk.changeReadModelFieldType,
|
|
17
|
+
screen: sdk.changeScreenFieldType,
|
|
18
|
+
processor: sdk.changeProcessorFieldType,
|
|
19
|
+
'external-event': sdk.changeExternalEventFieldType,
|
|
20
|
+
};
|
|
21
|
+
const REORDER_FIELD_MAP = {
|
|
22
|
+
command: sdk.reorderCommandField,
|
|
23
|
+
event: sdk.reorderEventField,
|
|
24
|
+
readmodel: sdk.reorderReadModelField,
|
|
25
|
+
screen: sdk.reorderScreenField,
|
|
26
|
+
processor: sdk.reorderProcessorField,
|
|
27
|
+
'external-event': sdk.reorderExternalEventField,
|
|
28
|
+
};
|
|
29
|
+
const RENAME_SUBFIELD_MAP = {
|
|
30
|
+
command: sdk.renameCommandSubfield,
|
|
31
|
+
event: sdk.renameEventSubfield,
|
|
32
|
+
readmodel: sdk.renameReadModelSubfield,
|
|
33
|
+
screen: sdk.renameScreenSubfield,
|
|
34
|
+
processor: sdk.renameProcessorSubfield,
|
|
35
|
+
'external-event': sdk.renameExternalEventSubfield,
|
|
36
|
+
};
|
|
37
|
+
const CHANGE_SUBFIELD_TYPE_MAP = {
|
|
38
|
+
command: sdk.changeCommandSubfieldType,
|
|
39
|
+
event: sdk.changeEventSubfieldType,
|
|
40
|
+
readmodel: sdk.changeReadModelSubfieldType,
|
|
41
|
+
screen: sdk.changeScreenSubfieldType,
|
|
42
|
+
processor: sdk.changeProcessorSubfieldType,
|
|
43
|
+
'external-event': sdk.changeExternalEventSubfieldType,
|
|
44
|
+
};
|
|
45
|
+
const REORDER_SUBFIELD_MAP = {
|
|
46
|
+
command: sdk.reorderCommandSubfield,
|
|
47
|
+
event: sdk.reorderEventSubfield,
|
|
48
|
+
readmodel: sdk.reorderReadModelSubfield,
|
|
49
|
+
screen: sdk.reorderScreenSubfield,
|
|
50
|
+
processor: sdk.reorderProcessorSubfield,
|
|
51
|
+
'external-event': sdk.reorderExternalEventSubfield,
|
|
52
|
+
};
|
|
53
|
+
const buildMarkMap = () => ({
|
|
54
|
+
command: {
|
|
55
|
+
optional: { mark: sdk.markCommandFieldAsOptional, unmark: sdk.unmarkCommandFieldAsOptional },
|
|
56
|
+
generated: { mark: sdk.markCommandFieldAsGenerated, unmark: sdk.unmarkCommandFieldAsGenerated },
|
|
57
|
+
list: { mark: sdk.markCommandFieldAsList, unmark: sdk.unmarkCommandFieldAsList },
|
|
58
|
+
},
|
|
59
|
+
event: {
|
|
60
|
+
optional: { mark: sdk.markEventFieldAsOptional, unmark: sdk.unmarkEventFieldAsOptional },
|
|
61
|
+
generated: { mark: sdk.markEventFieldAsGenerated, unmark: sdk.unmarkEventFieldAsGenerated },
|
|
62
|
+
list: { mark: sdk.markEventFieldAsList, unmark: sdk.unmarkEventFieldAsList },
|
|
63
|
+
},
|
|
64
|
+
readmodel: {
|
|
65
|
+
optional: { mark: sdk.markReadModelFieldAsOptional, unmark: sdk.unmarkReadModelFieldAsOptional },
|
|
66
|
+
generated: { mark: sdk.markReadModelFieldAsGenerated, unmark: sdk.unmarkReadModelFieldAsGenerated },
|
|
67
|
+
list: { mark: sdk.markReadModelFieldAsList, unmark: sdk.unmarkReadModelFieldAsList },
|
|
68
|
+
},
|
|
69
|
+
screen: {
|
|
70
|
+
optional: { mark: sdk.markScreenFieldAsOptional, unmark: sdk.unmarkScreenFieldAsOptional },
|
|
71
|
+
generated: { mark: sdk.markScreenFieldAsGenerated, unmark: sdk.unmarkScreenFieldAsGenerated },
|
|
72
|
+
list: { mark: sdk.markScreenFieldAsList, unmark: sdk.unmarkScreenFieldAsList },
|
|
73
|
+
'user-input': { mark: sdk.markScreenFieldAsUserInput, unmark: sdk.unmarkScreenFieldAsUserInput },
|
|
74
|
+
},
|
|
75
|
+
processor: {
|
|
76
|
+
optional: { mark: sdk.markProcessorFieldAsOptional, unmark: sdk.unmarkProcessorFieldAsOptional },
|
|
77
|
+
generated: { mark: sdk.markProcessorFieldAsGenerated, unmark: sdk.unmarkProcessorFieldAsGenerated },
|
|
78
|
+
list: { mark: sdk.markProcessorFieldAsList, unmark: sdk.unmarkProcessorFieldAsList },
|
|
79
|
+
},
|
|
80
|
+
'external-event': {
|
|
81
|
+
optional: { mark: sdk.markExternalEventFieldAsOptional, unmark: sdk.unmarkExternalEventFieldAsOptional },
|
|
82
|
+
list: { mark: sdk.markExternalEventFieldAsList, unmark: sdk.unmarkExternalEventFieldAsList },
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
const buildSubfieldMarkMap = () => ({
|
|
86
|
+
command: {
|
|
87
|
+
optional: { mark: sdk.markCommandSubfieldAsOptional, unmark: sdk.unmarkCommandSubfieldAsOptional },
|
|
88
|
+
generated: { mark: sdk.markCommandSubfieldAsGenerated, unmark: sdk.unmarkCommandSubfieldAsGenerated },
|
|
89
|
+
list: { mark: sdk.markCommandSubfieldAsList, unmark: sdk.unmarkCommandSubfieldAsList },
|
|
90
|
+
},
|
|
91
|
+
event: {
|
|
92
|
+
optional: { mark: sdk.markEventSubfieldAsOptional, unmark: sdk.unmarkEventSubfieldAsOptional },
|
|
93
|
+
generated: { mark: sdk.markEventSubfieldAsGenerated, unmark: sdk.unmarkEventSubfieldAsGenerated },
|
|
94
|
+
list: { mark: sdk.markEventSubfieldAsList, unmark: sdk.unmarkEventSubfieldAsList },
|
|
95
|
+
},
|
|
96
|
+
readmodel: {
|
|
97
|
+
optional: { mark: sdk.markReadModelSubfieldAsOptional, unmark: sdk.unmarkReadModelSubfieldAsOptional },
|
|
98
|
+
generated: { mark: sdk.markReadModelSubfieldAsGenerated, unmark: sdk.unmarkReadModelSubfieldAsGenerated },
|
|
99
|
+
list: { mark: sdk.markReadModelSubfieldAsList, unmark: sdk.unmarkReadModelSubfieldAsList },
|
|
100
|
+
},
|
|
101
|
+
screen: {
|
|
102
|
+
optional: { mark: sdk.markScreenSubfieldAsOptional, unmark: sdk.unmarkScreenSubfieldAsOptional },
|
|
103
|
+
generated: { mark: sdk.markScreenSubfieldAsGenerated, unmark: sdk.unmarkScreenSubfieldAsGenerated },
|
|
104
|
+
list: { mark: sdk.markScreenSubfieldAsList, unmark: sdk.unmarkScreenSubfieldAsList },
|
|
105
|
+
'user-input': { mark: sdk.markScreenSubfieldAsUserInput, unmark: sdk.unmarkScreenSubfieldAsUserInput },
|
|
106
|
+
},
|
|
107
|
+
processor: {
|
|
108
|
+
optional: { mark: sdk.markProcessorSubfieldAsOptional, unmark: sdk.unmarkProcessorSubfieldAsOptional },
|
|
109
|
+
generated: { mark: sdk.markProcessorSubfieldAsGenerated, unmark: sdk.unmarkProcessorSubfieldAsGenerated },
|
|
110
|
+
list: { mark: sdk.markProcessorSubfieldAsList, unmark: sdk.unmarkProcessorSubfieldAsList },
|
|
111
|
+
},
|
|
112
|
+
'external-event': {
|
|
113
|
+
optional: { mark: sdk.markExternalEventSubfieldAsOptional, unmark: sdk.unmarkExternalEventSubfieldAsOptional },
|
|
114
|
+
list: { mark: sdk.markExternalEventSubfieldAsList, unmark: sdk.unmarkExternalEventSubfieldAsList },
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
export function registerUpdateCommands(program) {
|
|
118
|
+
const update = program.command('update').description('Update fields and subfields');
|
|
119
|
+
update.command('field [elementName]')
|
|
120
|
+
.description('Update field properties')
|
|
121
|
+
.requiredOption('--field <name>', 'Field name')
|
|
122
|
+
.option('--name <newName>', 'Rename the field')
|
|
123
|
+
.option('--type <newType>', 'Change the field type')
|
|
124
|
+
.option('--optional <bool>', 'Mark as optional (true/false)')
|
|
125
|
+
.option('--generated <bool>', 'Mark as generated (true/false)')
|
|
126
|
+
.option('--list <bool>', 'Mark as list (true/false)')
|
|
127
|
+
.option('--user-input <bool>', 'Mark as user input (true/false, screens only)')
|
|
128
|
+
.action(async (elementName, opts, cmd) => {
|
|
129
|
+
const modelId = requireModelId();
|
|
130
|
+
const { elementId, elementType } = await resolveAnyElement(modelId, elementName ?? '', getGlobalId());
|
|
131
|
+
const key = elementIdKey(elementType);
|
|
132
|
+
const fieldResult = unwrap(await sdk.resolveField({
|
|
133
|
+
query: { modelId, elementId, fieldName: opts.field }
|
|
134
|
+
}));
|
|
135
|
+
const fieldId = fieldResult.fieldId;
|
|
136
|
+
if (opts.name) {
|
|
137
|
+
const fn = RENAME_FIELD_MAP[elementType];
|
|
138
|
+
if (!fn)
|
|
139
|
+
throw new Error(`Cannot rename fields on type: ${elementType}`);
|
|
140
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, fieldId, fieldName: opts.name } }));
|
|
141
|
+
console.log(`Renamed field to "${opts.name}".`);
|
|
142
|
+
}
|
|
143
|
+
if (opts.type) {
|
|
144
|
+
const fn = CHANGE_TYPE_MAP[elementType];
|
|
145
|
+
if (!fn)
|
|
146
|
+
throw new Error(`Cannot change field type on: ${elementType}`);
|
|
147
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, fieldId, fieldType: opts.type } }));
|
|
148
|
+
console.log(`Changed field type to "${opts.type}".`);
|
|
149
|
+
}
|
|
150
|
+
const markMap = buildMarkMap();
|
|
151
|
+
for (const flag of ['optional', 'generated', 'list', 'user-input']) {
|
|
152
|
+
const value = opts[flag === 'user-input' ? 'userInput' : flag];
|
|
153
|
+
if (value === undefined)
|
|
154
|
+
continue;
|
|
155
|
+
const boolVal = value === 'true';
|
|
156
|
+
const entry = markMap[elementType]?.[flag];
|
|
157
|
+
if (!entry)
|
|
158
|
+
throw new Error(`Cannot set ${flag} on type: ${elementType}`);
|
|
159
|
+
const fn = boolVal ? entry.mark : entry.unmark;
|
|
160
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, fieldId } }));
|
|
161
|
+
console.log(`${boolVal ? 'Marked' : 'Unmarked'} field as ${flag}.`);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
// update subfield [elementName] --subfield <subfieldId> [--name <newName>] [--type <newType>] [--list <bool>] ...
|
|
165
|
+
update.command('subfield [elementName]')
|
|
166
|
+
.description('Update subfield properties')
|
|
167
|
+
.requiredOption('--subfield <id>', 'Subfield ID (from show output)')
|
|
168
|
+
.option('--name <newName>', 'Rename the subfield')
|
|
169
|
+
.option('--type <newType>', 'Change the subfield type')
|
|
170
|
+
.option('--optional <bool>', 'Mark as optional (true/false)')
|
|
171
|
+
.option('--generated <bool>', 'Mark as generated (true/false)')
|
|
172
|
+
.option('--list <bool>', 'Mark as list (true/false)')
|
|
173
|
+
.option('--user-input <bool>', 'Mark as user input (true/false, screens only)')
|
|
174
|
+
.action(async (elementName, opts, cmd) => {
|
|
175
|
+
const modelId = requireModelId();
|
|
176
|
+
const { elementId, elementType } = await resolveAnyElement(modelId, elementName ?? '', getGlobalId());
|
|
177
|
+
const key = elementIdKey(elementType);
|
|
178
|
+
if (opts.name) {
|
|
179
|
+
const fn = RENAME_SUBFIELD_MAP[elementType];
|
|
180
|
+
if (!fn)
|
|
181
|
+
throw new Error(`Cannot rename subfields on type: ${elementType}`);
|
|
182
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, subfieldId: opts.subfield, fieldName: opts.name } }));
|
|
183
|
+
console.log(`Renamed subfield to "${opts.name}".`);
|
|
184
|
+
}
|
|
185
|
+
if (opts.type) {
|
|
186
|
+
const fn = CHANGE_SUBFIELD_TYPE_MAP[elementType];
|
|
187
|
+
if (!fn)
|
|
188
|
+
throw new Error(`Cannot change subfield type on: ${elementType}`);
|
|
189
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, subfieldId: opts.subfield, fieldType: opts.type } }));
|
|
190
|
+
console.log(`Changed subfield type to "${opts.type}".`);
|
|
191
|
+
}
|
|
192
|
+
const markMap = buildSubfieldMarkMap();
|
|
193
|
+
for (const flag of ['optional', 'generated', 'list', 'user-input']) {
|
|
194
|
+
const value = opts[flag === 'user-input' ? 'userInput' : flag];
|
|
195
|
+
if (value === undefined)
|
|
196
|
+
continue;
|
|
197
|
+
const boolVal = value === 'true';
|
|
198
|
+
const entry = markMap[elementType]?.[flag];
|
|
199
|
+
if (!entry)
|
|
200
|
+
throw new Error(`Cannot set ${flag} on type: ${elementType}`);
|
|
201
|
+
const fn = boolVal ? entry.mark : entry.unmark;
|
|
202
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, subfieldId: opts.subfield } }));
|
|
203
|
+
console.log(`${boolVal ? 'Marked' : 'Unmarked'} subfield as ${flag}.`);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
// update reorder [elementName] --field <name> --position <n>
|
|
207
|
+
update.command('reorder [elementName]')
|
|
208
|
+
.description('Reorder a field on an element')
|
|
209
|
+
.requiredOption('--field <name>', 'Field name')
|
|
210
|
+
.requiredOption('--position <n>', 'New position (0-based)', parseInt)
|
|
211
|
+
.action(async (elementName, opts, cmd) => {
|
|
212
|
+
const modelId = requireModelId();
|
|
213
|
+
const { elementId, elementType } = await resolveAnyElement(modelId, elementName ?? '', getGlobalId());
|
|
214
|
+
const fn = REORDER_FIELD_MAP[elementType];
|
|
215
|
+
if (!fn)
|
|
216
|
+
throw new Error(`Cannot reorder fields on type: ${elementType}`);
|
|
217
|
+
const fieldResult = unwrap(await sdk.resolveField({
|
|
218
|
+
query: { modelId, elementId, fieldName: opts.field }
|
|
219
|
+
}));
|
|
220
|
+
const fieldId = fieldResult.fieldId;
|
|
221
|
+
const key = elementIdKey(elementType);
|
|
222
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, fieldId, position: opts.position } }));
|
|
223
|
+
console.log(`Moved field "${opts.field}" to position ${opts.position}.`);
|
|
224
|
+
});
|
|
225
|
+
// update reorder-subfield [elementName] --subfield <id> --position <n>
|
|
226
|
+
update.command('reorder-subfield [elementName]')
|
|
227
|
+
.description('Reorder a subfield within its parent')
|
|
228
|
+
.requiredOption('--subfield <id>', 'Subfield ID (from show output)')
|
|
229
|
+
.requiredOption('--position <n>', 'New position (0-based)', parseInt)
|
|
230
|
+
.action(async (elementName, opts, cmd) => {
|
|
231
|
+
const modelId = requireModelId();
|
|
232
|
+
const { elementId, elementType } = await resolveAnyElement(modelId, elementName ?? '', getGlobalId());
|
|
233
|
+
const fn = REORDER_SUBFIELD_MAP[elementType];
|
|
234
|
+
if (!fn)
|
|
235
|
+
throw new Error(`Cannot reorder subfields on type: ${elementType}`);
|
|
236
|
+
const key = elementIdKey(elementType);
|
|
237
|
+
unwrap(await fn({ body: { modelId, [key]: elementId, subfieldId: opts.subfield, position: opts.position } }));
|
|
238
|
+
console.log(`Moved subfield to position ${opts.position}.`);
|
|
239
|
+
});
|
|
240
|
+
}
|