@osdk/maker 0.12.0-beta.16 → 0.12.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @osdk/maker
2
2
 
3
+ ## 0.12.0-beta.18
4
+
5
+ ### Patch Changes
6
+
7
+ - @osdk/api@2.4.0-beta.15
8
+
9
+ ## 0.12.0-beta.17
10
+
11
+ ### Minor Changes
12
+
13
+ - f1f587b: Support custom parameters in OAC actions
14
+ - 641bc0c: Fix create-or-modify non parameter mapped property bug
15
+ - 25bae67: OAC modify object actions set parameter defaults to match the selected object
16
+ - 5c76e33: Trim value type before putting it in SPT IR
17
+
18
+ ### Patch Changes
19
+
20
+ - @osdk/api@2.4.0-beta.14
21
+
3
22
  ## 0.12.0-beta.16
4
23
 
5
24
  ### Patch Changes
@@ -64,7 +64,7 @@ export function defineCreateInterfaceObjectAction(interfaceType, objectType, val
64
64
  required: prop.sharedPropertyType.array ?? false ? {
65
65
  listLength: {}
66
66
  } : prop.required,
67
- allowedValues: extractAllowedValuesFromType(prop.sharedPropertyType.type)
67
+ allowedValues: extractAllowedValuesFromPropertyType(prop.sharedPropertyType.type)
68
68
  }
69
69
  }))],
70
70
  status: interfaceType.status.type !== "deprecated" ? interfaceType.status.type : interfaceType.status,
@@ -91,10 +91,10 @@ export function defineCreateInterfaceObjectAction(interfaceType, objectType, val
91
91
  });
92
92
  }
93
93
  export function defineCreateObjectAction(def) {
94
- [...Object.keys(def.parameterConfiguration ?? {}), ...Object.keys(def.nonParameterMappings ?? {}), ...(def.excludedProperties ?? [])].forEach(id => {
95
- !(def.objectType.properties?.[id] !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property ${id} does not exist on ${def.objectType.apiName}`) : invariant(false) : void 0;
96
- });
97
- const parameterNames = Object.keys(def.objectType.properties ?? {}).filter(id => !Object.keys(def.nonParameterMappings ?? {}).includes(id) && !def.excludedProperties?.includes(id) && !isStruct(def.objectType.properties?.[id].type));
94
+ validateActionParameters(def);
95
+ 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));
96
+ const parameterNames = new Set(propertyParameters);
97
+ Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(param));
98
98
  if (def.parameterOrdering) {
99
99
  const sortedOrdering = [...def.parameterOrdering].sort();
100
100
  const sortedParameterNames = [...parameterNames].sort();
@@ -118,9 +118,9 @@ export function defineCreateObjectAction(def) {
118
118
  addObjectRule: {
119
119
  objectTypeId: def.objectType.apiName,
120
120
  propertyValues: {
121
- ...Object.fromEntries(parameters.map(p => [p.id, {
121
+ ...Object.fromEntries(propertyParameters.map(p => [p, {
122
122
  type: "parameterId",
123
- parameterId: p.id
123
+ parameterId: p
124
124
  }])),
125
125
  ...mappings
126
126
  },
@@ -190,7 +190,7 @@ export function defineModifyInterfaceObjectAction(interfaceType, objectType, val
190
190
  required: prop.sharedPropertyType.array ?? false ? {
191
191
  listLength: {}
192
192
  } : prop.required,
193
- allowedValues: extractAllowedValuesFromType(prop.sharedPropertyType.type)
193
+ allowedValues: extractAllowedValuesFromPropertyType(prop.sharedPropertyType.type)
194
194
  }
195
195
  }))],
196
196
  status: interfaceType.status.type !== "deprecated" ? interfaceType.status.type : interfaceType.status,
@@ -216,16 +216,27 @@ export function defineModifyInterfaceObjectAction(interfaceType, objectType, val
216
216
  });
217
217
  }
218
218
  export function defineModifyObjectAction(def) {
219
- [...Object.keys(def.parameterConfiguration ?? {}), ...Object.keys(def.nonParameterMappings ?? {}), ...(def.excludedProperties ?? [])].forEach(id => {
220
- !(def.objectType.properties?.[id] !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property ${id} does not exist on ${def.objectType.apiName}`) : invariant(false) : void 0;
221
- });
222
- const parameterNames = 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);
219
+ validateActionParameters(def);
220
+ 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);
221
+ const parameterNames = new Set(propertyParameters);
222
+ Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(param));
223
223
  if (def.parameterOrdering) {
224
224
  const sortedOrdering = [...def.parameterOrdering].sort();
225
225
  const sortedParameterNames = [...parameterNames].sort();
226
226
  !(sortedOrdering.length === sortedParameterNames.length && sortedOrdering.every((name, index) => name === sortedParameterNames[index])) ? process.env.NODE_ENV !== "production" ? invariant(false, `Action parameter ordering for ${def.objectType.apiName} does not match non-excluded properties`) : invariant(false) : void 0;
227
227
  }
228
228
  const parameters = createParameters(def, parameterNames, false);
229
+ parameters.forEach(p => {
230
+ if (p.defaultValue === undefined) {
231
+ p.defaultValue = {
232
+ type: "objectParameterPropertyValue",
233
+ objectParameterPropertyValue: {
234
+ parameterId: "objectToModifyParameter",
235
+ propertyTypeId: p.id
236
+ }
237
+ };
238
+ }
239
+ });
229
240
  const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
230
241
  return defineAction({
231
242
  apiName: def.apiName ?? `modify-object-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`,
@@ -252,9 +263,9 @@ export function defineModifyObjectAction(def) {
252
263
  modifyObjectRule: {
253
264
  objectToModify: "objectToModifyParameter",
254
265
  propertyValues: {
255
- ...Object.fromEntries(parameters.map(p => [p.id, {
266
+ ...Object.fromEntries(propertyParameters.map(p => [p, {
256
267
  type: "parameterId",
257
- parameterId: p.id
268
+ parameterId: p
258
269
  }])),
259
270
  ...mappings
260
271
  },
@@ -326,13 +337,10 @@ export function defineDeleteObjectAction(def) {
326
337
  });
327
338
  }
328
339
  export function defineCreateOrModifyObjectAction(def) {
329
- Object.keys(def.parameterConfiguration ?? {}).forEach(id => {
330
- !(def.objectType.properties?.[id] !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property ${id} does not exist on ${def.objectType.apiName}`) : invariant(false) : void 0;
331
- });
332
- (def.excludedProperties ?? []).forEach(id => {
333
- !(def.objectType.properties?.[id] !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, `Property ${id} does not exist on ${def.objectType.apiName}`) : invariant(false) : void 0;
334
- });
335
- const parameterNames = Object.keys(def.objectType.properties ?? {}).filter(id => !def.excludedProperties?.includes(id) && !isStruct(def.objectType.properties?.[id].type) && id !== def.objectType.primaryKeyPropertyApiName);
340
+ validateActionParameters(def);
341
+ const propertyParameters = Object.keys(def.objectType.properties ?? {}).filter(id => !def.excludedProperties?.includes(id) && !isStruct(def.objectType.properties?.[id].type) && id !== def.objectType.primaryKeyPropertyApiName);
342
+ const parameterNames = new Set(propertyParameters);
343
+ Object.keys(def.parameterConfiguration ?? {}).forEach(param => parameterNames.add(param));
336
344
  if (def.parameterOrdering) {
337
345
  const sortedOrdering = [...def.parameterOrdering].sort();
338
346
  const sortedParameterNames = [...parameterNames].sort();
@@ -350,7 +358,7 @@ export function defineCreateOrModifyObjectAction(def) {
350
358
  };
351
359
  }
352
360
  });
353
- Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
361
+ const mappings = Object.fromEntries(Object.entries(def.nonParameterMappings ?? {}).map(([id, value]) => [id, convertMappingValue(value)]));
354
362
  return defineAction({
355
363
  apiName: def.apiName ?? `create-or-modify-${kebab(def.objectType.apiName.split(".").pop() ?? def.objectType.apiName)}`,
356
364
  displayName: def.displayName ?? `Create or Modify ${def.objectType.displayName}`,
@@ -382,10 +390,13 @@ export function defineCreateOrModifyObjectAction(def) {
382
390
  type: "addOrModifyObjectRuleV2",
383
391
  addOrModifyObjectRuleV2: {
384
392
  objectToModify: "objectToCreateOrModifyParameter",
385
- propertyValues: Object.fromEntries(parameters.map(p => [p.id, {
386
- type: "parameterId",
387
- parameterId: p.id
388
- }])),
393
+ propertyValues: {
394
+ ...Object.fromEntries(propertyParameters.map(p => [p, {
395
+ type: "parameterId",
396
+ parameterId: p
397
+ }])),
398
+ ...mappings
399
+ },
389
400
  structFieldValues: {}
390
401
  }
391
402
  }],
@@ -453,14 +464,21 @@ export function defineAction(actionDef) {
453
464
  updateOntology(fullAction);
454
465
  return fullAction;
455
466
  }
456
- function createParameters(def, parameterNames, defaultRequired) {
467
+ function createParameters(def, parameterSet, defaultRequired) {
468
+ const parameterNames = Array.from(parameterSet);
469
+ // prefix objectReference parameters with the namespace
470
+ parameterNames.forEach(name => {
471
+ if (typeof def.parameterConfiguration?.[name]?.customParameterType === "object" && def.parameterConfiguration?.[name]?.customParameterType.type === "objectReference") {
472
+ def.parameterConfiguration[name].customParameterType.objectReference.objectTypeId = sanitize(def.parameterConfiguration[name].customParameterType.objectReference.objectTypeId);
473
+ }
474
+ });
457
475
  return Array.from(parameterNames).map(id => ({
458
476
  id,
459
- displayName: def.parameterConfiguration?.[id]?.displayName ?? def.objectType.properties?.[id].displayName ?? convertToDisplayName(id),
460
- type: extractActionParameterType(def.objectType.properties?.[id]),
477
+ displayName: def.parameterConfiguration?.[id]?.displayName ?? def.objectType.properties?.[id]?.displayName ?? convertToDisplayName(id),
478
+ type: def.parameterConfiguration?.[id]?.customParameterType ?? extractActionParameterType(def.objectType.properties?.[id]),
461
479
  validation: def.parameterConfiguration?.[id] !== undefined ? {
462
480
  ...def.parameterConfiguration?.[id],
463
- allowedValues: def.parameterConfiguration?.[id].allowedValues ?? extractAllowedValuesFromType(def.objectType.properties?.[id].type),
481
+ allowedValues: def.parameterConfiguration?.[id].allowedValues ?? (def.parameterConfiguration?.[id].customParameterType ? extractAllowedValuesFromActionParameterType(def.parameterConfiguration?.[id].customParameterType) : extractAllowedValuesFromPropertyType(def.objectType.properties?.[id].type)),
464
482
  required: def.parameterConfiguration?.[id].required ?? defaultRequired
465
483
  } : {
466
484
  required: def.objectType.properties?.[id].array ?? false ? {
@@ -468,7 +486,7 @@ function createParameters(def, parameterNames, defaultRequired) {
468
486
  min: 1
469
487
  } : {}
470
488
  } : def.objectType.properties?.[id].nullability?.noNulls ?? defaultRequired,
471
- allowedValues: extractAllowedValuesFromType(def.objectType.properties?.[id].type)
489
+ allowedValues: extractAllowedValuesFromPropertyType(def.objectType.properties?.[id].type)
472
490
  },
473
491
  defaultValue: def.parameterConfiguration?.[id]?.defaultValue,
474
492
  description: def.parameterConfiguration?.[id]?.description
@@ -537,7 +555,80 @@ function referencedParameterIds(actionDef) {
537
555
  });
538
556
  return parameterIds;
539
557
  }
540
- function extractAllowedValuesFromType(type) {
558
+ function extractAllowedValuesFromActionParameterType(type) {
559
+ if (typeof type === "object") {
560
+ switch (type.type) {
561
+ case "objectReference":
562
+ case "objectReferenceList":
563
+ return {
564
+ type: "objectQuery"
565
+ };
566
+ case "struct":
567
+ case "structList":
568
+ throw new Error("Structs are not supported yet");
569
+ default:
570
+ throw new Error(`Inferred allowed values for ${type.type} not yet supported. Please explicitly provide allowed values.`);
571
+ }
572
+ }
573
+ switch (type) {
574
+ case "boolean":
575
+ case "booleanList":
576
+ return {
577
+ type: "boolean"
578
+ };
579
+ case "integer":
580
+ case "integerList":
581
+ case "decimal":
582
+ case "decimalList":
583
+ case "double":
584
+ case "doubleList":
585
+ case "long":
586
+ case "longList":
587
+ return {
588
+ type: "range"
589
+ };
590
+ case "timestamp":
591
+ case "timestampList":
592
+ case "date":
593
+ case "dateList":
594
+ return {
595
+ type: "datetime"
596
+ };
597
+ case "string":
598
+ case "stringList":
599
+ return {
600
+ type: "text"
601
+ };
602
+ case "geohash":
603
+ case "geohashList":
604
+ return {
605
+ type: "geohash"
606
+ };
607
+ case "geoshape":
608
+ case "geoshapeList":
609
+ return {
610
+ type: "geoshape"
611
+ };
612
+ case "mediaReference":
613
+ case "mediaReferenceList":
614
+ return {
615
+ type: "mediaReference"
616
+ };
617
+ case "geotimeSeriesReference":
618
+ case "geotimeSeriesReferenceList":
619
+ return {
620
+ type: "geotimeSeriesReference"
621
+ };
622
+ case "attachment":
623
+ case "attachmentList":
624
+ return {
625
+ type: "attachment"
626
+ };
627
+ default:
628
+ throw new Error(`Inferred allowed values for ${type} not yet supported. Please explicitly provide allowed values.`);
629
+ }
630
+ }
631
+ function extractAllowedValuesFromPropertyType(type) {
541
632
  switch (type) {
542
633
  case "boolean":
543
634
  return {
@@ -735,4 +826,13 @@ function validateActionCondition(condition, currentParameterId, seenParameterIds
735
826
  throw new Error(`Unknown condition type on parameter ${currentParameterId}`);
736
827
  }
737
828
  }
829
+ function validateActionParameters(def) {
830
+ // validates that parameters either exist as object properties or have a type defined
831
+ [...Object.keys(def.parameterConfiguration ?? {})].forEach(id => {
832
+ !(def.objectType.properties?.[id] !== undefined || def.parameterConfiguration?.[id].customParameterType !== undefined) ? 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;
833
+ });
834
+ [...Object.keys(def.nonParameterMappings ?? {}), ...(def.excludedProperties ?? [])].forEach(id => {
835
+ !(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;
836
+ });
837
+ }
738
838
  //# sourceMappingURL=defineAction.js.map