@osdk/maker 0.14.0-beta.2 → 0.14.0-beta.4

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 (120) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build/browser/api/defineAction.js +121 -413
  3. package/build/browser/api/defineAction.js.map +1 -1
  4. package/build/browser/api/defineCreateInterfaceObjectAction.js +69 -0
  5. package/build/browser/api/defineCreateInterfaceObjectAction.js.map +1 -0
  6. package/build/browser/api/defineCreateObjectAction.js +76 -0
  7. package/build/browser/api/defineCreateObjectAction.js.map +1 -0
  8. package/build/browser/api/defineCreateOrModifyObjectAction.js +92 -0
  9. package/build/browser/api/defineCreateOrModifyObjectAction.js.map +1 -0
  10. package/build/browser/api/defineDeleteObjectAction.js +56 -0
  11. package/build/browser/api/defineDeleteObjectAction.js.map +1 -0
  12. package/build/browser/api/defineModifyInterfaceObjectAction.js +68 -0
  13. package/build/browser/api/defineModifyInterfaceObjectAction.js.map +1 -0
  14. package/build/browser/api/defineModifyObjectAction.js +91 -0
  15. package/build/browser/api/defineModifyObjectAction.js.map +1 -0
  16. package/build/browser/api/test/actions.test.js +12014 -0
  17. package/build/browser/api/test/actions.test.js.map +1 -0
  18. package/build/browser/api/test/interfaces.test.js +924 -0
  19. package/build/browser/api/test/interfaces.test.js.map +1 -0
  20. package/build/browser/api/test/links.test.js +1974 -0
  21. package/build/browser/api/test/links.test.js.map +1 -0
  22. package/build/browser/api/{markingconstraint.test.js → test/markingconstraint.test.js} +28 -2
  23. package/build/browser/api/test/markingconstraint.test.js.map +1 -0
  24. package/build/browser/api/test/misc.test.js +1058 -0
  25. package/build/browser/api/test/misc.test.js.map +1 -0
  26. package/build/browser/api/{objectStatus.test.js → test/objectStatus.test.js} +2 -2
  27. package/build/browser/api/test/objectStatus.test.js.map +1 -0
  28. package/build/browser/api/test/objects.test.js +1494 -0
  29. package/build/browser/api/test/objects.test.js.map +1 -0
  30. package/build/browser/api/test/spt.test.js +387 -0
  31. package/build/browser/api/test/spt.test.js.map +1 -0
  32. package/build/browser/api/test/valueTypes.test.js +156 -0
  33. package/build/browser/api/test/valueTypes.test.js.map +1 -0
  34. package/build/browser/cli/main.js +1 -1
  35. package/build/browser/index.js +7 -1
  36. package/build/browser/index.js.map +1 -1
  37. package/build/cjs/index.cjs +561 -503
  38. package/build/cjs/index.cjs.map +1 -1
  39. package/build/cjs/index.d.cts +27 -13
  40. package/build/esm/api/defineAction.js +121 -413
  41. package/build/esm/api/defineAction.js.map +1 -1
  42. package/build/esm/api/defineCreateInterfaceObjectAction.js +69 -0
  43. package/build/esm/api/defineCreateInterfaceObjectAction.js.map +1 -0
  44. package/build/esm/api/defineCreateObjectAction.js +76 -0
  45. package/build/esm/api/defineCreateObjectAction.js.map +1 -0
  46. package/build/esm/api/defineCreateOrModifyObjectAction.js +92 -0
  47. package/build/esm/api/defineCreateOrModifyObjectAction.js.map +1 -0
  48. package/build/esm/api/defineDeleteObjectAction.js +56 -0
  49. package/build/esm/api/defineDeleteObjectAction.js.map +1 -0
  50. package/build/esm/api/defineModifyInterfaceObjectAction.js +68 -0
  51. package/build/esm/api/defineModifyInterfaceObjectAction.js.map +1 -0
  52. package/build/esm/api/defineModifyObjectAction.js +91 -0
  53. package/build/esm/api/defineModifyObjectAction.js.map +1 -0
  54. package/build/esm/api/test/actions.test.js +12014 -0
  55. package/build/esm/api/test/actions.test.js.map +1 -0
  56. package/build/esm/api/test/interfaces.test.js +924 -0
  57. package/build/esm/api/test/interfaces.test.js.map +1 -0
  58. package/build/esm/api/test/links.test.js +1974 -0
  59. package/build/esm/api/test/links.test.js.map +1 -0
  60. package/build/esm/api/{markingconstraint.test.js → test/markingconstraint.test.js} +28 -2
  61. package/build/esm/api/test/markingconstraint.test.js.map +1 -0
  62. package/build/esm/api/test/misc.test.js +1058 -0
  63. package/build/esm/api/test/misc.test.js.map +1 -0
  64. package/build/esm/api/{objectStatus.test.js → test/objectStatus.test.js} +2 -2
  65. package/build/esm/api/test/objectStatus.test.js.map +1 -0
  66. package/build/esm/api/test/objects.test.js +1494 -0
  67. package/build/esm/api/test/objects.test.js.map +1 -0
  68. package/build/esm/api/test/spt.test.js +387 -0
  69. package/build/esm/api/test/spt.test.js.map +1 -0
  70. package/build/esm/api/test/valueTypes.test.js +156 -0
  71. package/build/esm/api/test/valueTypes.test.js.map +1 -0
  72. package/build/esm/cli/main.js +1 -1
  73. package/build/esm/index.js +7 -1
  74. package/build/esm/index.js.map +1 -1
  75. package/build/types/api/defineAction.d.ts +22 -6
  76. package/build/types/api/defineAction.d.ts.map +1 -1
  77. package/build/types/api/defineCreateInterfaceObjectAction.d.ts +3 -0
  78. package/build/types/api/defineCreateInterfaceObjectAction.d.ts.map +1 -0
  79. package/build/types/api/defineCreateObjectAction.d.ts +3 -0
  80. package/build/types/api/defineCreateObjectAction.d.ts.map +1 -0
  81. package/build/types/api/defineCreateOrModifyObjectAction.d.ts +3 -0
  82. package/build/types/api/defineCreateOrModifyObjectAction.d.ts.map +1 -0
  83. package/build/types/api/defineDeleteObjectAction.d.ts +3 -0
  84. package/build/types/api/defineDeleteObjectAction.d.ts.map +1 -0
  85. package/build/types/api/defineModifyInterfaceObjectAction.d.ts +3 -0
  86. package/build/types/api/defineModifyInterfaceObjectAction.d.ts.map +1 -0
  87. package/build/types/api/defineModifyObjectAction.d.ts +3 -0
  88. package/build/types/api/defineModifyObjectAction.d.ts.map +1 -0
  89. package/build/types/api/test/actions.test.d.ts.map +1 -0
  90. package/build/types/api/test/interfaces.test.d.ts.map +1 -0
  91. package/build/types/api/test/links.test.d.ts.map +1 -0
  92. package/build/types/api/test/markingconstraint.test.d.ts +1 -0
  93. package/build/types/api/test/markingconstraint.test.d.ts.map +1 -0
  94. package/build/types/api/test/misc.test.d.ts +1 -0
  95. package/build/types/api/test/misc.test.d.ts.map +1 -0
  96. package/build/types/api/test/objectStatus.test.d.ts +1 -0
  97. package/build/types/api/test/objectStatus.test.d.ts.map +1 -0
  98. package/build/types/api/test/objects.test.d.ts +1 -0
  99. package/build/types/api/test/objects.test.d.ts.map +1 -0
  100. package/build/types/api/test/spt.test.d.ts +1 -0
  101. package/build/types/api/test/spt.test.d.ts.map +1 -0
  102. package/build/types/api/test/valueTypes.test.d.ts +1 -0
  103. package/build/types/api/test/valueTypes.test.d.ts.map +1 -0
  104. package/build/types/index.d.ts +7 -1
  105. package/build/types/index.d.ts.map +1 -1
  106. package/package.json +3 -3
  107. package/build/browser/api/markingconstraint.test.js.map +0 -1
  108. package/build/browser/api/objectStatus.test.js.map +0 -1
  109. package/build/browser/api/overall.test.js +0 -14002
  110. package/build/browser/api/overall.test.js.map +0 -1
  111. package/build/esm/api/markingconstraint.test.js.map +0 -1
  112. package/build/esm/api/objectStatus.test.js.map +0 -1
  113. package/build/esm/api/overall.test.js +0 -14002
  114. package/build/esm/api/overall.test.js.map +0 -1
  115. package/build/types/api/markingconstraint.test.d.ts.map +0 -1
  116. package/build/types/api/objectStatus.test.d.ts.map +0 -1
  117. package/build/types/api/overall.test.d.ts.map +0 -1
  118. /package/build/types/api/{markingconstraint.test.d.ts → test/actions.test.d.ts} +0 -0
  119. /package/build/types/api/{objectStatus.test.d.ts → test/interfaces.test.d.ts} +0 -0
  120. /package/build/types/api/{overall.test.d.ts → test/links.test.d.ts} +0 -0
@@ -14,395 +14,18 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { consola } from "consola";
18
17
  import invariant from "tiny-invariant";
19
18
  import { convertConditionDefinition } from "../conversion/toMarketplace/convertConditionDefinition.js";
20
- import { convertMappingValue } from "../conversion/toMarketplace/convertMappingValue.js";
21
19
  import { isActionParameterTypePrimitive } from "./action/ActionParameterType.js";
22
20
  import { OntologyEntityTypeEnum } from "./common/OntologyEntityTypeEnum.js";
23
21
  import { uppercaseFirstLetter } from "./defineObject.js";
24
- import { importedTypes, namespace, ontologyDefinition, updateOntology } from "./defineOntology.js";
22
+ import { addNamespaceIfNone, importedTypes, namespace, ontologyDefinition, updateOntology } from "./defineOntology.js";
25
23
  import { getFlattenedInterfaceProperties } from "./interface/getFlattenedInterfaceProperties.js";
26
24
  import { isStruct } from "./properties/PropertyTypeType.js";
27
25
  export const MODIFY_OBJECT_PARAMETER = "objectToModifyParameter";
28
26
  export const CREATE_OR_MODIFY_OBJECT_PARAMETER = "objectToCreateOrModifyParameter";
29
- export function defineCreateInterfaceObjectAction(def) {
30
- const allProperties = Object.entries(getFlattenedInterfaceProperties(def.interfaceType)).filter(([_, prop]) => !isStruct(prop.sharedPropertyType.type) && !(def.excludedProperties ?? []).includes(prop.sharedPropertyType.nonNameSpacedApiName));
31
- if (allProperties.length !== Object.entries(getFlattenedInterfaceProperties(def.interfaceType)).length) {
32
- consola.info(`Some properties on ${def.interfaceType.apiName} were skipped in the create action because they are structs`);
33
- }
34
- return defineAction({
35
- apiName: `create-${kebab(def.interfaceType.apiName.split(".").pop() ?? def.interfaceType.apiName)}${def.objectType === undefined ? "" : `-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`}`,
36
- displayName: `Create ${def.interfaceType.displayMetadata.displayName}`,
37
- parameters: [{
38
- id: "objectTypeParameter",
39
- displayName: "Object type to create",
40
- type: {
41
- type: "objectTypeReference",
42
- objectTypeReference: {
43
- interfaceTypeRids: [def.interfaceType.apiName]
44
- }
45
- },
46
- validation: {
47
- required: true,
48
- allowedValues: def.objectType === undefined ? {
49
- type: "objectTypeReference",
50
- interfaceTypes: [def.interfaceType.apiName]
51
- } : {
52
- type: "oneOf",
53
- oneOf: [{
54
- label: def.objectType.displayName,
55
- value: {
56
- type: "objectType",
57
- objectType: {
58
- objectTypeId: def.objectType.apiName
59
- }
60
- }
61
- }]
62
- }
63
- }
64
- }, ...allProperties.map(([id, prop]) => ({
65
- id,
66
- displayName: prop.sharedPropertyType.displayName ?? prop.sharedPropertyType.nonNameSpacedApiName,
67
- type: extractActionParameterType(prop.sharedPropertyType),
68
- typeClasses: prop.sharedPropertyType.typeClasses ?? [],
69
- validation: {
70
- required: prop.sharedPropertyType.array ?? false ? {
71
- listLength: {}
72
- } : prop.required,
73
- allowedValues: extractAllowedValuesFromPropertyType(prop.sharedPropertyType.type)
74
- }
75
- }))],
76
- status: def.interfaceType.status.type !== "deprecated" ? def.interfaceType.status.type : def.interfaceType.status,
77
- entities: {
78
- affectedInterfaceTypes: [def.interfaceType.apiName],
79
- affectedObjectTypes: [],
80
- affectedLinkTypes: [],
81
- typeGroups: []
82
- },
83
- rules: [{
84
- type: "addInterfaceRule",
85
- addInterfaceRule: {
86
- interfaceApiName: def.interfaceType.apiName,
87
- objectTypeParameter: "objectTypeParameter",
88
- sharedPropertyValues: Object.fromEntries(allProperties.map(([id, _prop]) => [id, {
89
- type: "parameterId",
90
- parameterId: id
91
- }]))
92
- }
93
- }],
94
- ...(def.validation ? {
95
- validation: convertValidationRule(def.validation)
96
- } : {})
97
- });
98
- }
99
- export function defineCreateObjectAction(def) {
100
- validateActionParameters(def);
101
- const propertyParameters = Object.keys(def.objectType.properties ?? {}).filter(id => !Object.keys(def.nonParameterMappings ?? {}).includes(id) && !def.excludedProperties?.includes(id) && !isStruct(def.objectType.properties?.[id].type));
102
- const parameterNames = new Set(propertyParameters);
103
- Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(param));
104
- const actionApiName = def.apiName ?? `create-object-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`;
105
- if (def.parameterOrdering) {
106
- validateParameterOrdering(def.parameterOrdering, parameterNames, actionApiName);
107
- }
108
- const parameters = createParameters(def, parameterNames);
109
- const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
110
- return defineAction({
111
- apiName: actionApiName,
112
- displayName: def.displayName ?? `Create ${def.objectType.displayName}`,
113
- parameters: parameters,
114
- status: def.status ?? "active",
115
- entities: {
116
- affectedInterfaceTypes: [],
117
- affectedObjectTypes: [def.objectType.apiName],
118
- affectedLinkTypes: [],
119
- typeGroups: []
120
- },
121
- rules: [{
122
- type: "addObjectRule",
123
- addObjectRule: {
124
- objectTypeId: def.objectType.apiName,
125
- propertyValues: {
126
- ...Object.fromEntries(propertyParameters.map(p => [p, {
127
- type: "parameterId",
128
- parameterId: p
129
- }])),
130
- ...mappings
131
- },
132
- structFieldValues: {}
133
- }
134
- }],
135
- parameterOrdering: def.parameterOrdering ?? createDefaultParameterOrdering(def, parameters),
136
- ...(def.actionLevelValidation ? {
137
- validation: convertValidationRule(def.actionLevelValidation, parameters)
138
- } : {}),
139
- ...(def.defaultFormat && {
140
- defaultFormat: def.defaultFormat
141
- }),
142
- ...(def.enableLayoutSwitch && {
143
- enableLayoutSwitch: def.enableLayoutSwitch
144
- }),
145
- ...(def.displayAndFormat && {
146
- displayAndFormat: def.displayAndFormat
147
- }),
148
- ...(def.sections && {
149
- sections: Object.fromEntries(def.sections.map(section => [section.id, section]))
150
- }),
151
- ...(def.submissionMetadata && {
152
- submissionMetadata: def.submissionMetadata
153
- })
154
- });
155
- }
156
- export function defineModifyInterfaceObjectAction(def) {
157
- const allProperties = Object.entries(getFlattenedInterfaceProperties(def.interfaceType)).filter(([_, prop]) => !isStruct(prop.sharedPropertyType.type) && !(def.excludedProperties ?? []).includes(prop.sharedPropertyType.nonNameSpacedApiName));
158
- if (allProperties.length !== Object.entries(getFlattenedInterfaceProperties(def.interfaceType)).length) {
159
- consola.info(`Some properties on ${def.interfaceType.apiName} were skipped in the modify action because they are structs`);
160
- }
161
- return defineAction({
162
- apiName: `modify-${kebab(def.interfaceType.apiName.split(".").pop() ?? def.interfaceType.apiName)}${def.objectType === undefined ? "" : `-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`}`,
163
- displayName: `Modify ${def.interfaceType.displayMetadata.displayName}`,
164
- parameters: [{
165
- id: "interfaceObjectToModifyParameter",
166
- displayName: "Object type to modify",
167
- type: {
168
- type: "interfaceReference",
169
- interfaceReference: {
170
- interfaceTypeRid: def.interfaceType.apiName
171
- }
172
- },
173
- validation: {
174
- required: true,
175
- allowedValues: def.objectType === undefined ? {
176
- type: "interfaceObjectQuery"
177
- } : {
178
- type: "oneOf",
179
- oneOf: [{
180
- label: def.objectType.displayName,
181
- value: {
182
- type: "objectType",
183
- objectType: {
184
- objectTypeId: def.objectType.apiName
185
- }
186
- }
187
- }]
188
- }
189
- }
190
- }, ...allProperties.map(([id, prop]) => ({
191
- id,
192
- displayName: prop.sharedPropertyType.displayName ?? prop.sharedPropertyType.nonNameSpacedApiName,
193
- type: extractActionParameterType(prop.sharedPropertyType),
194
- typeClasses: prop.sharedPropertyType.typeClasses ?? [],
195
- validation: {
196
- required: prop.sharedPropertyType.array ?? false ? {
197
- listLength: {}
198
- } : prop.required,
199
- allowedValues: extractAllowedValuesFromPropertyType(prop.sharedPropertyType.type)
200
- }
201
- }))],
202
- status: def.interfaceType.status.type !== "deprecated" ? def.interfaceType.status.type : def.interfaceType.status,
203
- entities: {
204
- affectedInterfaceTypes: [def.interfaceType.apiName],
205
- affectedObjectTypes: [],
206
- affectedLinkTypes: [],
207
- typeGroups: []
208
- },
209
- rules: [{
210
- type: "modifyInterfaceRule",
211
- modifyInterfaceRule: {
212
- interfaceObjectToModifyParameter: "interfaceObjectToModifyParameter",
213
- sharedPropertyValues: Object.fromEntries(allProperties.map(([id, _prop]) => [id, {
214
- type: "parameterId",
215
- parameterId: id
216
- }]))
217
- }
218
- }],
219
- ...(def.validation ? {
220
- validation: convertValidationRule(def.validation)
221
- } : {})
222
- });
223
- }
224
- export function defineModifyObjectAction(def) {
225
- validateActionParameters(def);
226
- const propertyParameters = Object.keys(def.objectType.properties ?? {}).filter(id => !Object.keys(def.nonParameterMappings ?? {}).includes(id) && !def.excludedProperties?.includes(id) && !isStruct(def.objectType.properties?.[id].type) && id !== def.objectType.primaryKeyPropertyApiName);
227
- const parameterNames = new Set(propertyParameters);
228
- Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(param));
229
- parameterNames.add(MODIFY_OBJECT_PARAMETER);
230
- const actionApiName = def.apiName ?? `modify-object-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`;
231
- if (def.parameterOrdering) {
232
- if (!def.parameterOrdering.includes(MODIFY_OBJECT_PARAMETER)) {
233
- def.parameterOrdering = [MODIFY_OBJECT_PARAMETER, ...def.parameterOrdering];
234
- }
235
- validateParameterOrdering(def.parameterOrdering, parameterNames, actionApiName);
236
- }
237
- const parameters = createParameters(def, parameterNames);
238
- parameters.forEach(p => {
239
- if (p.id !== MODIFY_OBJECT_PARAMETER && p.defaultValue === undefined) {
240
- p.defaultValue = {
241
- type: "objectParameterPropertyValue",
242
- objectParameterPropertyValue: {
243
- parameterId: MODIFY_OBJECT_PARAMETER,
244
- propertyTypeId: p.id
245
- }
246
- };
247
- }
248
- });
249
- const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
250
- return defineAction({
251
- apiName: actionApiName,
252
- displayName: def.displayName ?? `Modify ${def.objectType.displayName}`,
253
- parameters: parameters,
254
- status: def.status ?? "active",
255
- rules: [{
256
- type: "modifyObjectRule",
257
- modifyObjectRule: {
258
- objectToModify: MODIFY_OBJECT_PARAMETER,
259
- propertyValues: {
260
- ...Object.fromEntries(propertyParameters.map(p => [p, {
261
- type: "parameterId",
262
- parameterId: p
263
- }])),
264
- ...mappings
265
- },
266
- structFieldValues: {}
267
- }
268
- }],
269
- entities: {
270
- affectedInterfaceTypes: [],
271
- affectedObjectTypes: [def.objectType.apiName],
272
- affectedLinkTypes: [],
273
- typeGroups: []
274
- },
275
- parameterOrdering: def.parameterOrdering ?? createDefaultParameterOrdering(def, parameters, MODIFY_OBJECT_PARAMETER),
276
- ...(def.actionLevelValidation ? {
277
- validation: convertValidationRule(def.actionLevelValidation, parameters)
278
- } : {}),
279
- ...(def.defaultFormat && {
280
- defaultFormat: def.defaultFormat
281
- }),
282
- ...(def.enableLayoutSwitch && {
283
- enableLayoutSwitch: def.enableLayoutSwitch
284
- }),
285
- ...(def.displayAndFormat && {
286
- displayAndFormat: def.displayAndFormat
287
- }),
288
- ...(def.sections && {
289
- sections: Object.fromEntries(def.sections.map(section => [section.id, section]))
290
- }),
291
- ...(def.submissionMetadata && {
292
- submissionMetadata: def.submissionMetadata
293
- })
294
- });
295
- }
296
- export function defineDeleteObjectAction(def) {
297
- return defineAction({
298
- apiName: def.apiName ?? `delete-object-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`,
299
- displayName: def.displayName ?? `Delete ${def.objectType.displayName}`,
300
- parameters: [{
301
- id: "objectToDeleteParameter",
302
- displayName: "Delete object",
303
- type: {
304
- type: "objectReference",
305
- objectReference: {
306
- objectTypeId: def.objectType.apiName
307
- }
308
- },
309
- validation: {
310
- required: true,
311
- allowedValues: {
312
- type: "objectQuery"
313
- }
314
- }
315
- }],
316
- status: def.status ?? "active",
317
- rules: [{
318
- type: "deleteObjectRule",
319
- deleteObjectRule: {
320
- objectToDelete: "objectToDeleteParameter"
321
- }
322
- }],
323
- entities: {
324
- affectedInterfaceTypes: [],
325
- affectedObjectTypes: [def.objectType.apiName],
326
- affectedLinkTypes: [],
327
- typeGroups: []
328
- },
329
- ...(def.actionLevelValidation ? {
330
- validation: convertValidationRule(def.actionLevelValidation)
331
- } : {})
332
- });
333
- }
334
- export function defineCreateOrModifyObjectAction(def) {
335
- validateActionParameters(def);
336
- const propertyParameters = Object.keys(def.objectType.properties ?? {}).filter(id => !Object.keys(def.nonParameterMappings ?? {}).includes(id) && !def.excludedProperties?.includes(id) && !isStruct(def.objectType.properties?.[id].type) && id !== def.objectType.primaryKeyPropertyApiName);
337
- const parameterNames = new Set(propertyParameters);
338
- Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(param));
339
- parameterNames.add(CREATE_OR_MODIFY_OBJECT_PARAMETER);
340
- const actionApiName = def.apiName ?? `create-or-modify-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`;
341
- if (def.parameterOrdering) {
342
- if (!def.parameterOrdering.includes(CREATE_OR_MODIFY_OBJECT_PARAMETER)) {
343
- def.parameterOrdering = [CREATE_OR_MODIFY_OBJECT_PARAMETER, ...def.parameterOrdering];
344
- }
345
- validateParameterOrdering(def.parameterOrdering, parameterNames, actionApiName);
346
- }
347
- const parameters = createParameters(def, parameterNames);
348
- parameters.forEach(p => {
349
- if (p.id !== CREATE_OR_MODIFY_OBJECT_PARAMETER && p.defaultValue === undefined) {
350
- p.defaultValue = {
351
- type: "objectParameterPropertyValue",
352
- objectParameterPropertyValue: {
353
- parameterId: CREATE_OR_MODIFY_OBJECT_PARAMETER,
354
- propertyTypeId: p.id
355
- }
356
- };
357
- }
358
- });
359
- const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
360
- return defineAction({
361
- apiName: actionApiName,
362
- displayName: def.displayName ?? `Create or Modify ${def.objectType.displayName}`,
363
- parameters: parameters,
364
- status: def.status ?? "active",
365
- rules: [{
366
- type: "addOrModifyObjectRuleV2",
367
- addOrModifyObjectRuleV2: {
368
- objectToModify: CREATE_OR_MODIFY_OBJECT_PARAMETER,
369
- propertyValues: {
370
- ...Object.fromEntries(propertyParameters.map(p => [p, {
371
- type: "parameterId",
372
- parameterId: p
373
- }])),
374
- ...mappings
375
- },
376
- structFieldValues: {}
377
- }
378
- }],
379
- entities: {
380
- affectedInterfaceTypes: [],
381
- affectedObjectTypes: [def.objectType.apiName],
382
- affectedLinkTypes: [],
383
- typeGroups: []
384
- },
385
- parameterOrdering: def.parameterOrdering ?? createDefaultParameterOrdering(def, parameters, CREATE_OR_MODIFY_OBJECT_PARAMETER),
386
- ...(def.actionLevelValidation ? {
387
- validation: convertValidationRule(def.actionLevelValidation, parameters)
388
- } : {}),
389
- ...(def.defaultFormat && {
390
- defaultFormat: def.defaultFormat
391
- }),
392
- ...(def.enableLayoutSwitch && {
393
- enableLayoutSwitch: def.enableLayoutSwitch
394
- }),
395
- ...(def.displayAndFormat && {
396
- displayAndFormat: def.displayAndFormat
397
- }),
398
- ...(def.sections && {
399
- sections: Object.fromEntries(def.sections.map(section => [section.id, section]))
400
- }),
401
- ...(def.submissionMetadata && {
402
- submissionMetadata: def.submissionMetadata
403
- })
404
- });
405
- }
27
+ export const CREATE_INTERFACE_OBJECT_PARAMETER = "objectTypeParameter";
28
+ export const MODIFY_INTERFACE_OBJECT_PARAMETER = "interfaceObjectToModifyParameter";
406
29
  export function defineAction(actionDef) {
407
30
  const apiName = namespace + actionDef.apiName;
408
31
  const parameterIds = (actionDef.parameters ?? []).map(p => p.id);
@@ -464,11 +87,36 @@ export function defineAction(actionDef) {
464
87
  updateOntology(fullAction);
465
88
  return fullAction;
466
89
  }
467
- function createParameters(def, parameterSet) {
468
- const targetParam = [];
90
+ export function isPropertyParameter(def, name, type) {
91
+ return !Object.keys(def.nonParameterMappings ?? {}).includes(name) && !isStruct(type) && !def.excludedProperties?.includes(name);
92
+ }
93
+ export function createParameters(def, propertyMap, parameterSet, requiredMap) {
94
+ const targetParams = getTargetParameters(def, parameterSet);
95
+ return [...targetParams, ...Array.from(parameterSet).map(id => ({
96
+ id,
97
+ displayName: def.parameterConfiguration?.[id]?.displayName ?? propertyMap[id]?.displayName ?? uppercaseFirstLetter(id),
98
+ type: def.parameterConfiguration?.[id]?.customParameterType ?? extractActionParameterType(propertyMap[id]),
99
+ validation: def.parameterConfiguration?.[id] !== undefined ? {
100
+ ...def.parameterConfiguration?.[id],
101
+ allowedValues: def.parameterConfiguration?.[id].allowedValues ?? (def.parameterConfiguration?.[id].customParameterType ? extractAllowedValuesFromActionParameterType(def.parameterConfiguration?.[id].customParameterType) : extractAllowedValuesFromPropertyType(propertyMap[id]?.type)),
102
+ required: def.parameterConfiguration?.[id].required ?? propertyMap[id]?.nullability?.noNulls ?? false
103
+ } : {
104
+ required: propertyMap[id]?.array ?? false ? {
105
+ listLength: propertyMap[id]?.nullability?.noEmptyCollections ? {
106
+ min: 1
107
+ } : {}
108
+ } : requiredMap?.[id] ?? propertyMap[id]?.nullability?.noNulls ?? false,
109
+ allowedValues: extractAllowedValuesFromPropertyType(propertyMap[id]?.type)
110
+ },
111
+ defaultValue: def.parameterConfiguration?.[id]?.defaultValue,
112
+ description: def.parameterConfiguration?.[id]?.description
113
+ }))];
114
+ }
115
+ function getTargetParameters(def, parameterSet) {
116
+ const targetParams = [];
469
117
  parameterSet.forEach(name => {
470
118
  if (name === MODIFY_OBJECT_PARAMETER) {
471
- targetParam.push({
119
+ targetParams.push({
472
120
  id: MODIFY_OBJECT_PARAMETER,
473
121
  displayName: def.parameterConfiguration?.[name]?.displayName ?? "Modify object",
474
122
  type: {
@@ -490,14 +138,17 @@ function createParameters(def, parameterSet) {
490
138
  parameterSet.delete(MODIFY_OBJECT_PARAMETER);
491
139
  }
492
140
  if (name === CREATE_OR_MODIFY_OBJECT_PARAMETER) {
493
- targetParam.push({
141
+ targetParams.push({
494
142
  id: CREATE_OR_MODIFY_OBJECT_PARAMETER,
495
143
  displayName: def.parameterConfiguration?.[name]?.displayName ?? "Create or modify object",
496
144
  type: {
497
145
  type: "objectReference",
498
146
  objectReference: {
499
147
  objectTypeId: def.objectType.apiName,
500
- maybeCreateObjectOption: !def.primaryKeyOption || def.primaryKeyOption === "autoGenerated" ? {
148
+ maybeCreateObjectOption: !("primaryKeyOption" in def) ? {
149
+ type: "autoGenerated",
150
+ autoGenerated: {}
151
+ } : def.primaryKeyOption === "autoGenerated" ? {
501
152
  type: "autoGenerated",
502
153
  autoGenerated: {}
503
154
  } : {
@@ -518,26 +169,75 @@ function createParameters(def, parameterSet) {
518
169
  });
519
170
  parameterSet.delete(CREATE_OR_MODIFY_OBJECT_PARAMETER);
520
171
  }
172
+ if (name === CREATE_INTERFACE_OBJECT_PARAMETER && "interfaceType" in def) {
173
+ targetParams.push({
174
+ id: CREATE_INTERFACE_OBJECT_PARAMETER,
175
+ displayName: def.parameterConfiguration?.[name]?.displayName ?? "Object type to create",
176
+ type: {
177
+ type: "objectTypeReference",
178
+ objectTypeReference: {
179
+ interfaceTypeRids: [def.interfaceType.apiName]
180
+ }
181
+ },
182
+ validation: {
183
+ ...def.parameterConfiguration?.[name],
184
+ required: true,
185
+ allowedValues: def.objectType === undefined ? {
186
+ type: "objectTypeReference",
187
+ interfaceTypes: [def.interfaceType.apiName]
188
+ } : {
189
+ type: "oneOf",
190
+ oneOf: [{
191
+ label: def.objectType.displayName,
192
+ value: {
193
+ type: "objectType",
194
+ objectType: {
195
+ objectTypeId: def.objectType.apiName
196
+ }
197
+ }
198
+ }]
199
+ }
200
+ },
201
+ defaultValue: def.parameterConfiguration?.[name]?.defaultValue,
202
+ description: def.parameterConfiguration?.[name]?.description
203
+ });
204
+ parameterSet.delete(CREATE_INTERFACE_OBJECT_PARAMETER);
205
+ }
206
+ if (name === MODIFY_INTERFACE_OBJECT_PARAMETER && "interfaceType" in def) {
207
+ targetParams.push({
208
+ id: MODIFY_INTERFACE_OBJECT_PARAMETER,
209
+ displayName: def.parameterConfiguration?.[name]?.displayName ?? "Object type to modify",
210
+ type: {
211
+ type: "interfaceReference",
212
+ interfaceReference: {
213
+ interfaceTypeRid: def.interfaceType.apiName
214
+ }
215
+ },
216
+ validation: {
217
+ ...def.parameterConfiguration?.[name],
218
+ required: true,
219
+ allowedValues: def.objectType === undefined ? {
220
+ type: "interfaceObjectQuery"
221
+ } : {
222
+ type: "oneOf",
223
+ oneOf: [{
224
+ label: def.objectType.displayName,
225
+ value: {
226
+ type: "objectType",
227
+ objectType: {
228
+ objectTypeId: def.objectType.apiName
229
+ }
230
+ }
231
+ }]
232
+ }
233
+ },
234
+ defaultValue: def.parameterConfiguration?.[name]?.defaultValue,
235
+ description: def.parameterConfiguration?.[name]?.description
236
+ });
237
+ parameterSet.delete(MODIFY_INTERFACE_OBJECT_PARAMETER);
238
+ }
521
239
  });
522
- return [...targetParam, ...Array.from(parameterSet).map(id => ({
523
- id,
524
- displayName: def.parameterConfiguration?.[id]?.displayName ?? def.objectType.properties?.[id]?.displayName ?? uppercaseFirstLetter(id),
525
- type: def.parameterConfiguration?.[id]?.customParameterType ?? extractActionParameterType(def.objectType.properties?.[id]),
526
- validation: def.parameterConfiguration?.[id] !== undefined ? {
527
- ...def.parameterConfiguration?.[id],
528
- allowedValues: def.parameterConfiguration?.[id].allowedValues ?? (def.parameterConfiguration?.[id].customParameterType ? extractAllowedValuesFromActionParameterType(def.parameterConfiguration?.[id].customParameterType) : extractAllowedValuesFromPropertyType(def.objectType.properties?.[id].type)),
529
- required: def.parameterConfiguration?.[id].required ?? def.objectType.properties?.[id]?.nullability?.noNulls ?? false
530
- } : {
531
- required: def.objectType.properties?.[id].array ?? false ? {
532
- listLength: def.objectType.properties?.[id].nullability?.noEmptyCollections ? {
533
- min: 1
534
- } : {}
535
- } : def.objectType.properties?.[id].nullability?.noNulls ?? false,
536
- allowedValues: extractAllowedValuesFromPropertyType(def.objectType.properties?.[id].type)
537
- },
538
- defaultValue: def.parameterConfiguration?.[id]?.defaultValue,
539
- description: def.parameterConfiguration?.[id]?.description
540
- }))];
240
+ return targetParams;
541
241
  }
542
242
  function referencedParameterIds(actionDef) {
543
243
  const parameterIds = new Set();
@@ -804,13 +504,13 @@ function extractActionParameterType(pt) {
804
504
  function maybeAddList(type, pt) {
805
505
  return pt.array ?? false ? type + "List" : type;
806
506
  }
807
- function kebab(s) {
507
+ export function kebab(s) {
808
508
  return s.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").replace(/\./g, "-").toLowerCase();
809
509
  }
810
510
  function sanitize(s) {
811
511
  return s.includes(".") ? s : namespace + s;
812
512
  }
813
- function convertValidationRule(actionValidation, actionParameters) {
513
+ export function convertValidationRule(actionValidation, actionParameters) {
814
514
  return actionValidation.map(rule => {
815
515
  return {
816
516
  condition: convertConditionDefinition(rule.condition, actionParameters),
@@ -888,25 +588,33 @@ function validateParameterPrefill(currentParameterId, seenParameterIds, paramete
888
588
  throw new Error(`Unknown default value type for parameter ${currentParameterId}`);
889
589
  }
890
590
  }
891
- function validateActionParameters(def) {
591
+ export function validateActionParameters(def, properties, name) {
892
592
  // validates that parameters either exist as object properties or have a type defined
893
593
  [...Object.keys(def.parameterConfiguration ?? {})].forEach(id => {
894
- !(def.objectType.properties?.[id] !== undefined || def.parameterConfiguration?.[id].customParameterType !== undefined || id === MODIFY_OBJECT_PARAMETER || id === CREATE_OR_MODIFY_OBJECT_PARAMETER) ? process.env.NODE_ENV !== "production" ? invariant(false, `Parameter ${id} does not exist as a property on ${def.objectType.apiName} and its type is not explicitly defined`) : invariant(false) : void 0;
594
+ !(properties.includes(id) || properties.includes(addNamespaceIfNone(id)) || def.parameterConfiguration?.[id].customParameterType !== undefined || isTargetParameter(id)) ? process.env.NODE_ENV !== "production" ? invariant(false, `Parameter ${id} does not exist as a property on ${name} and its type is not explicitly defined`) : invariant(false) : void 0;
895
595
  });
896
596
  [...Object.keys(def.nonParameterMappings ?? {}), ...(def.excludedProperties ?? [])].forEach(id => {
897
- !(def.objectType.properties?.[id] !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property ${id} does not exist as a property on ${def.objectType.apiName}`) : invariant(false) : void 0;
597
+ !(properties.includes(id) || properties.includes(addNamespaceIfNone(id))) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property ${id} does not exist as a property on ${name}`) : invariant(false) : void 0;
898
598
  });
899
599
  }
900
600
 
901
601
  // Parameters with configurations will be ordered first in the order they were defined
902
- // followed by the rest of the parameters in the order they were defined on the object type
903
- function createDefaultParameterOrdering(def, parameters, priorityId) {
904
- return [...(priorityId ? [priorityId] : []), ...Object.keys(def.parameterConfiguration ?? {}), ...Object.keys(def.objectType.properties ?? {}).filter(id => !def.parameterConfiguration?.[id] && parameters.some(p => p.id === id))];
602
+ // followed by the rest of the parameters in the order they were defined on the object type.
603
+ export function createDefaultParameterOrdering(def, properties, parameters, priorityId) {
604
+ return [...(priorityId ? [priorityId] : []), ...Object.keys(def.parameterConfiguration ?? {}).filter(id => id !== priorityId), ...properties.filter(id => !def.parameterConfiguration?.[id] && parameters.some(p => p.id === id))];
905
605
  }
906
- function validateParameterOrdering(parameterOrdering, parameterSet, actionApiName) {
606
+ export function validateParameterOrdering(parameterOrdering, parameterSet, actionApiName) {
907
607
  const orderingSet = new Set(parameterOrdering);
908
608
  const missingParameters = [...parameterSet].filter(param => !orderingSet.has(param));
909
609
  const extraneousParameters = parameterOrdering.filter(param => !parameterSet.has(param));
910
610
  !(extraneousParameters.length === 0 && missingParameters.length === 0) ? process.env.NODE_ENV !== "production" ? invariant(false, `Action parameter ordering for ${actionApiName} does not match expected parameters. Extraneous parameters in ordering: {${extraneousParameters}}, Missing parameters in ordering: {${missingParameters}}`) : invariant(false) : void 0;
911
611
  }
612
+ export function isTargetParameter(parameterId) {
613
+ return parameterId === MODIFY_OBJECT_PARAMETER || parameterId === CREATE_OR_MODIFY_OBJECT_PARAMETER || parameterId === CREATE_INTERFACE_OBJECT_PARAMETER || parameterId === MODIFY_INTERFACE_OBJECT_PARAMETER;
614
+ }
615
+ export function addNamespaceToActionDefinition(def) {
616
+ def.parameterConfiguration = Object.fromEntries(Object.entries(def.parameterConfiguration ?? {}).map(([id, config]) => [isTargetParameter(id) ? id : addNamespaceIfNone(id), config]));
617
+ def.nonParameterMappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [addNamespaceIfNone(id), value]));
618
+ def.excludedProperties = def.excludedProperties ?? [].map(id => addNamespaceIfNone(id));
619
+ }
912
620
  //# sourceMappingURL=defineAction.js.map