@osdk/generator 2.4.0-beta.8 → 2.4.0-rc.19

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 (50) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/build/browser/shared/getInterfaceTypeApiNamesFromQuery.js +28 -0
  3. package/build/browser/shared/getInterfaceTypeApiNamesFromQuery.js.map +1 -0
  4. package/build/browser/shared/getInterfaceTypesFromQueryDataType.js +63 -0
  5. package/build/browser/shared/getInterfaceTypesFromQueryDataType.js.map +1 -0
  6. package/build/browser/shared/getObjectTypesFromQueryDataType.js +3 -1
  7. package/build/browser/shared/getObjectTypesFromQueryDataType.js.map +1 -1
  8. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js +10 -10
  9. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js.map +1 -1
  10. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js +23 -0
  11. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js.map +1 -1
  12. package/build/browser/v2.0/generateClientSdkVersionTwoPointZero.test.js +7 -4
  13. package/build/browser/v2.0/generateClientSdkVersionTwoPointZero.test.js.map +1 -1
  14. package/build/browser/v2.0/generatePerActionDataFiles.js +1 -1
  15. package/build/browser/v2.0/generatePerActionDataFiles.js.map +1 -1
  16. package/build/browser/v2.0/generatePerInterfaceDataFiles.js +2 -1
  17. package/build/browser/v2.0/generatePerInterfaceDataFiles.js.map +1 -1
  18. package/build/browser/v2.0/generatePerQueryDataFiles.js +10 -2
  19. package/build/browser/v2.0/generatePerQueryDataFiles.js.map +1 -1
  20. package/build/browser/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js +4 -2
  21. package/build/browser/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js.map +1 -1
  22. package/build/cjs/index.cjs +87 -14
  23. package/build/cjs/index.cjs.map +1 -1
  24. package/build/esm/shared/getInterfaceTypeApiNamesFromQuery.js +28 -0
  25. package/build/esm/shared/getInterfaceTypeApiNamesFromQuery.js.map +1 -0
  26. package/build/esm/shared/getInterfaceTypesFromQueryDataType.js +63 -0
  27. package/build/esm/shared/getInterfaceTypesFromQueryDataType.js.map +1 -0
  28. package/build/esm/shared/getObjectTypesFromQueryDataType.js +3 -1
  29. package/build/esm/shared/getObjectTypesFromQueryDataType.js.map +1 -1
  30. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js +10 -10
  31. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js.map +1 -1
  32. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js +23 -0
  33. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js.map +1 -1
  34. package/build/esm/v2.0/generateClientSdkVersionTwoPointZero.test.js +7 -4
  35. package/build/esm/v2.0/generateClientSdkVersionTwoPointZero.test.js.map +1 -1
  36. package/build/esm/v2.0/generatePerActionDataFiles.js +1 -1
  37. package/build/esm/v2.0/generatePerActionDataFiles.js.map +1 -1
  38. package/build/esm/v2.0/generatePerInterfaceDataFiles.js +2 -1
  39. package/build/esm/v2.0/generatePerInterfaceDataFiles.js.map +1 -1
  40. package/build/esm/v2.0/generatePerQueryDataFiles.js +10 -2
  41. package/build/esm/v2.0/generatePerQueryDataFiles.js.map +1 -1
  42. package/build/esm/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js +4 -2
  43. package/build/esm/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js.map +1 -1
  44. package/build/types/shared/getInterfaceTypeApiNamesFromQuery.d.ts +3 -0
  45. package/build/types/shared/getInterfaceTypeApiNamesFromQuery.d.ts.map +1 -0
  46. package/build/types/shared/getInterfaceTypesFromQueryDataType.d.ts +2 -0
  47. package/build/types/shared/getInterfaceTypesFromQueryDataType.d.ts.map +1 -0
  48. package/build/types/v2.0/generatePerQueryDataFiles.d.ts.map +1 -1
  49. package/build/types/v2.0/wireObjectTypeV2ToSdkObjectConstV2.d.ts.map +1 -1
  50. package/package.json +4 -4
@@ -446,7 +446,7 @@ async function generatePerActionDataFiles({
446
446
  "*": (ogValue, _, ogKey) => {
447
447
  const key = `${getDescriptionIfPresent(ogValue.description)}
448
448
  readonly "${ogKey}"${ogValue.nullable ? "?" : ""}`;
449
- const value = (ogValue.multiplicity ? `ReadonlyArray<${getActionParamType(ogValue.type)}>` : `${getActionParamType(ogValue.type)}`) + (ogValue.nullable ? " | ActionParam.NullValueType" : "");
449
+ const value = ogValue.multiplicity ? `ReadonlyArray<${getActionParamType(ogValue.type)}>` : `${getActionParamType(ogValue.type)}`;
450
450
  jsDocBlock.push(`* @param {${getActionParamType(ogValue.type)}} ${ogValue.nullable ? `[${ogKey}]` : ogKey} ${ogValue.description ?? ""} `);
451
451
  return [key, value];
452
452
  }
@@ -814,8 +814,10 @@ function createDefinition(object, ontology, identifier, {
814
814
  strictProps: ${osdkObjectStrictPropsIdentifier};
815
815
  ${stringify(definition, {
816
816
  links: (_value) => `{
817
- ${stringify(definition.links, {
818
- "*": (definition2) => `$ObjectMetadata.Link<${ontology.requireObjectType(definition2.targetType).getImportedDefinitionIdentifier(true)}, ${definition2.multiplicity}>`
817
+ ${definition.type === "interface" ? stringify(definition.links, {
818
+ "*": (linkDefinition) => `$InterfaceMetadata.Link<${linkDefinition.targetType === "interface" ? ontology.requireInterfaceType(linkDefinition.targetTypeApiName).getImportedDefinitionIdentifier(true) : ontology.requireObjectType(linkDefinition.targetTypeApiName).getImportedDefinitionIdentifier(true)}, ${linkDefinition.multiplicity}>`
819
+ }) : stringify(definition.links, {
820
+ "*": (linkDefinition) => `$ObjectMetadata.Link<${ontology.requireObjectType(linkDefinition.targetType).getImportedDefinitionIdentifier(true)}, ${linkDefinition.multiplicity}>`
819
821
  })}
820
822
  }`,
821
823
  properties: (_value) => `{
@@ -857,8 +859,9 @@ function remapStructType(structType) {
857
859
  }
858
860
 
859
861
  // src/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.ts
860
- function __UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst(interfaceDef, ontology, v2 = false, forInternalUse = false) {
862
+ function __UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst(interfaceDef, ontology, v2 = false, forInternalUse = false, currentFilePath = "") {
861
863
  const definition = deleteUndefineds(generatorConverters.__UNSTABLE_wireInterfaceTypeV2ToSdkObjectDefinition(interfaceDef.raw, v2));
864
+ const uniqueLinkTargetTypes = new Set(definition.links ? Object.values(definition.links).map((a) => a.targetType === "object" ? ontology.requireObjectType(a.targetTypeApiName) : ontology.requireInterfaceType(a.targetTypeApiName)) : []);
862
865
  const objectDefIdentifier = interfaceDef.getDefinitionIdentifier(v2);
863
866
  const parents = definition.implements?.map((p) => {
864
867
  const parent = ontology.requireInterfaceType(p, true);
@@ -908,22 +911,23 @@ function __UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst(interfaceDef, ontology,
908
911
  function getV2Types(forInternalUse2 = false) {
909
912
  return `import type {
910
913
  InterfaceDefinition as $InterfaceDefinition,
914
+ InterfaceMetadata as $InterfaceMetadata,
911
915
  ObjectSet as $ObjectSet,
912
916
  Osdk as $Osdk,
913
917
  PropertyValueWireToClient as $PropType,
914
918
  } from "${forInternalUse2 ? "@osdk/api" : "@osdk/client"}";
915
919
 
916
- ${Object.keys(definition.links).length === 0 ? `export type ${osdkObjectLinksIdentifier} = {};` : `
920
+ ${definition.links ? Object.keys(definition.links).length > 0 ? `
917
921
  export interface ${osdkObjectLinksIdentifier} {
918
922
  ${stringify(definition.links, {
919
923
  "*": (definition2) => {
920
- const linkTarget = ontology.requireObjectType(definition2.targetType).getImportedDefinitionIdentifier(v2);
921
- return `${definition2.multiplicity ? `${linkTarget}["objectSet"]` : `SingleLinkAccessor<${linkTarget}>`}
924
+ const linkTarget = definition2.targetType === "object" ? ontology.requireObjectType(definition2.targetTypeApiName).getImportedDefinitionIdentifier(v2) : ontology.requireInterfaceType(definition2.targetTypeApiName).getImportedDefinitionIdentifier(v2);
925
+ return `${definition2.multiplicity ? `${linkTarget}.ObjectSet` : `${linkTarget}.ObjectSet`}
922
926
  `;
923
927
  }
924
928
  })}
925
929
  }
926
- `}
930
+ ` : `export type ${osdkObjectLinksIdentifier} = {};` : `export type ${osdkObjectLinksIdentifier} = {};`}
927
931
 
928
932
  export namespace ${interfaceDef.shortApiName} {
929
933
 
@@ -944,8 +948,8 @@ ${stringify(definition.links, {
944
948
 
945
949
  `;
946
950
  }
947
- const imports = [];
948
- return `${imports.join("\n")}
951
+ const imports = getObjectImports(uniqueLinkTargetTypes, definition.apiName, currentFilePath, true);
952
+ return `${imports}
949
953
  ${v2 ? getV2Types(forInternalUse) : ""}
950
954
 
951
955
  export const ${interfaceDef.shortApiName}: ${interfaceDef.shortApiName} = {
@@ -969,10 +973,11 @@ async function generatePerInterfaceDataFiles({
969
973
  });
970
974
  for (const obj of Object.values(ontology.interfaceTypes)) {
971
975
  if (obj instanceof ForeignType) continue;
976
+ const relPath = path8__namespace.default.join(".", "ontology", "interfaces", `${obj.shortApiName}.ts`);
972
977
  await fs2.writeFile(path8__namespace.default.join(interfacesDir, `${obj.shortApiName}.ts`), await formatTs(`
973
978
  import type { PropertyDef as $PropertyDef } from "${forInternalUse ? "@osdk/api" : "@osdk/client"}";
974
979
  import { $osdkMetadata } from "../../OntologyMetadata${importExt}";
975
- ${__UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst(obj, ontology, true, forInternalUse)}
980
+ ${__UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst(obj, ontology, true, forInternalUse, relPath)}
976
981
  `));
977
982
  }
978
983
  await fs2.writeFile(interfacesDir + ".ts", await formatTs(`
@@ -1007,6 +1012,65 @@ async function generatePerObjectDataFiles(ctx) {
1007
1012
  `));
1008
1013
  }
1009
1014
 
1015
+ // src/shared/getInterfaceTypesFromQueryDataType.ts
1016
+ function getInterfaceTypesFromQueryDataType(dataType, types) {
1017
+ switch (dataType.type) {
1018
+ case "array":
1019
+ case "set":
1020
+ getInterfaceTypesFromQueryDataType(dataType.subType, types);
1021
+ return;
1022
+ case "interfaceObject":
1023
+ case "interfaceObjectSet":
1024
+ types.add(dataType.interfaceTypeApiName);
1025
+ return;
1026
+ case "struct":
1027
+ for (const prop of Object.values(dataType.fields)) {
1028
+ getInterfaceTypesFromQueryDataType(prop.fieldType, types);
1029
+ }
1030
+ return;
1031
+ case "union":
1032
+ for (const type of dataType.unionTypes) {
1033
+ getInterfaceTypesFromQueryDataType(type, types);
1034
+ }
1035
+ return;
1036
+ case "entrySet":
1037
+ getInterfaceTypesFromQueryDataType(dataType.keyType, types);
1038
+ getInterfaceTypesFromQueryDataType(dataType.valueType, types);
1039
+ return;
1040
+ case "attachment":
1041
+ case "boolean":
1042
+ case "date":
1043
+ case "double":
1044
+ case "float":
1045
+ case "integer":
1046
+ case "long":
1047
+ case "null":
1048
+ case "string":
1049
+ case "threeDimensionalAggregation":
1050
+ case "timestamp":
1051
+ case "twoDimensionalAggregation":
1052
+ case "entrySet":
1053
+ case "unsupported":
1054
+ case "object":
1055
+ case "objectSet":
1056
+ return;
1057
+ default:
1058
+ throw new Error(`Unknown query data type ${dataType.type}`);
1059
+ }
1060
+ }
1061
+
1062
+ // src/shared/getInterfaceTypeApiNamesFromQuery.ts
1063
+ function getInterfaceTypeApiNamesFromQuery(query) {
1064
+ const types = /* @__PURE__ */ new Set();
1065
+ for (const {
1066
+ dataType
1067
+ } of Object.values(query.parameters)) {
1068
+ getInterfaceTypesFromQueryDataType(dataType, types);
1069
+ }
1070
+ getInterfaceTypesFromQueryDataType(query.output, types);
1071
+ return Array.from(types);
1072
+ }
1073
+
1010
1074
  // src/shared/getObjectTypesFromQueryDataType.ts
1011
1075
  function getObjectTypesFromQueryDataType(dataType, types) {
1012
1076
  switch (dataType.type) {
@@ -1048,9 +1112,11 @@ function getObjectTypesFromQueryDataType(dataType, types) {
1048
1112
  case "twoDimensionalAggregation":
1049
1113
  case "entrySet":
1050
1114
  case "unsupported":
1115
+ case "interfaceObject":
1116
+ case "interfaceObjectSet":
1051
1117
  return;
1052
1118
  default:
1053
- throw new Error(`Cannot find object types from unsupported QueryDataType ${dataType.type}`);
1119
+ throw new Error(`Unknown query data type ${dataType.type}`);
1054
1120
  }
1055
1121
  }
1056
1122
 
@@ -1092,8 +1158,9 @@ async function generatePerQueryDataFilesV2({
1092
1158
  async function generateV2QueryFile(fs2, outDir, relOutDir, query, importExt, ontology, forInternalUse, fixedVersionQueryTypes) {
1093
1159
  const relFilePath = path8__namespace.default.join(relOutDir, `${query.shortApiName}.ts`);
1094
1160
  const objectTypes = getObjectTypeApiNamesFromQuery(query);
1095
- const objectTypeObjects = new Set(objectTypes.map((o) => ontology.requireObjectType(o)));
1096
- const importObjects = getObjectImports(objectTypeObjects, "", relFilePath, true);
1161
+ const interfaceTypes = getInterfaceTypeApiNamesFromQuery(query);
1162
+ const interfaceAndObjectTypes = /* @__PURE__ */ new Set([...objectTypes.map((o) => ontology.requireObjectType(o)), ...interfaceTypes.map((o) => ontology.requireInterfaceType(o))]);
1163
+ const importObjects = getObjectImports(interfaceAndObjectTypes, "", relFilePath, true);
1097
1164
  const baseProps = deleteUndefineds(generatorConverters.wireQueryTypeV2ToSdkQueryDefinitionNoParams(query.raw));
1098
1165
  const outputBase = deleteUndefineds(generatorConverters.wireQueryDataTypeToQueryDataTypeDefinition(query.output));
1099
1166
  const isUsingFixedVersion = fixedVersionQueryTypes.includes(query.fullApiName);
@@ -1244,9 +1311,15 @@ function getQueryParamType(enhancedOntology, input, type, isMapKey = false) {
1244
1311
  }
1245
1312
  inner = `Query${type}.ObjectType<${enhancedOntology.requireObjectType(input.object).getImportedDefinitionIdentifier(true)}>`;
1246
1313
  break;
1314
+ case "interface":
1315
+ inner = `Query${type}.InterfaceType<${enhancedOntology.requireInterfaceType(input.interface).getImportedDefinitionIdentifier(true)}>`;
1316
+ break;
1247
1317
  case "objectSet":
1248
1318
  inner = `Query${type}.ObjectSetType<${enhancedOntology.requireObjectType(input.objectSet).getImportedDefinitionIdentifier(true)}>`;
1249
1319
  break;
1320
+ case "interfaceObjectSet":
1321
+ inner = `Query${type}.ObjectSetType<${enhancedOntology.requireInterfaceType(input.objectSet).getImportedDefinitionIdentifier(true)}>`;
1322
+ break;
1250
1323
  case "set":
1251
1324
  inner = `${type === "Param" ? "Readonly" : ""}Set<${getQueryParamType(enhancedOntology, input.set, type)}>`;
1252
1325
  break;