@osdk/generator 2.4.0-beta.9 → 2.4.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +107 -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/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js +10 -10
  7. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js.map +1 -1
  8. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js +23 -0
  9. package/build/browser/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js.map +1 -1
  10. package/build/browser/v2.0/generateClientSdkVersionTwoPointZero.test.js +7 -4
  11. package/build/browser/v2.0/generateClientSdkVersionTwoPointZero.test.js.map +1 -1
  12. package/build/browser/v2.0/generatePerActionDataFiles.js +1 -1
  13. package/build/browser/v2.0/generatePerActionDataFiles.js.map +1 -1
  14. package/build/browser/v2.0/generatePerInterfaceDataFiles.js +2 -1
  15. package/build/browser/v2.0/generatePerInterfaceDataFiles.js.map +1 -1
  16. package/build/browser/v2.0/generatePerQueryDataFiles.js +10 -2
  17. package/build/browser/v2.0/generatePerQueryDataFiles.js.map +1 -1
  18. package/build/browser/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js +4 -2
  19. package/build/browser/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js.map +1 -1
  20. package/build/cjs/index.cjs +84 -13
  21. package/build/cjs/index.cjs.map +1 -1
  22. package/build/esm/shared/getInterfaceTypeApiNamesFromQuery.js +28 -0
  23. package/build/esm/shared/getInterfaceTypeApiNamesFromQuery.js.map +1 -0
  24. package/build/esm/shared/getInterfaceTypesFromQueryDataType.js +63 -0
  25. package/build/esm/shared/getInterfaceTypesFromQueryDataType.js.map +1 -0
  26. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js +10 -10
  27. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.js.map +1 -1
  28. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js +23 -0
  29. package/build/esm/v2.0/UNSTABLE_wireInterfaceTypeV2ToSdkObjectConst.test.js.map +1 -1
  30. package/build/esm/v2.0/generateClientSdkVersionTwoPointZero.test.js +7 -4
  31. package/build/esm/v2.0/generateClientSdkVersionTwoPointZero.test.js.map +1 -1
  32. package/build/esm/v2.0/generatePerActionDataFiles.js +1 -1
  33. package/build/esm/v2.0/generatePerActionDataFiles.js.map +1 -1
  34. package/build/esm/v2.0/generatePerInterfaceDataFiles.js +2 -1
  35. package/build/esm/v2.0/generatePerInterfaceDataFiles.js.map +1 -1
  36. package/build/esm/v2.0/generatePerQueryDataFiles.js +10 -2
  37. package/build/esm/v2.0/generatePerQueryDataFiles.js.map +1 -1
  38. package/build/esm/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js +4 -2
  39. package/build/esm/v2.0/wireObjectTypeV2ToSdkObjectConstV2.js.map +1 -1
  40. package/build/types/shared/getInterfaceTypeApiNamesFromQuery.d.ts +3 -0
  41. package/build/types/shared/getInterfaceTypeApiNamesFromQuery.d.ts.map +1 -0
  42. package/build/types/shared/getInterfaceTypesFromQueryDataType.d.ts +2 -0
  43. package/build/types/shared/getInterfaceTypesFromQueryDataType.d.ts.map +1 -0
  44. package/build/types/v2.0/generatePerQueryDataFiles.d.ts.map +1 -1
  45. package/build/types/v2.0/wireObjectTypeV2ToSdkObjectConstV2.d.ts.map +1 -1
  46. package/package.json +5 -5
@@ -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) {
@@ -1094,8 +1158,9 @@ async function generatePerQueryDataFilesV2({
1094
1158
  async function generateV2QueryFile(fs2, outDir, relOutDir, query, importExt, ontology, forInternalUse, fixedVersionQueryTypes) {
1095
1159
  const relFilePath = path8__namespace.default.join(relOutDir, `${query.shortApiName}.ts`);
1096
1160
  const objectTypes = getObjectTypeApiNamesFromQuery(query);
1097
- const objectTypeObjects = new Set(objectTypes.map((o) => ontology.requireObjectType(o)));
1098
- 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);
1099
1164
  const baseProps = deleteUndefineds(generatorConverters.wireQueryTypeV2ToSdkQueryDefinitionNoParams(query.raw));
1100
1165
  const outputBase = deleteUndefineds(generatorConverters.wireQueryDataTypeToQueryDataTypeDefinition(query.output));
1101
1166
  const isUsingFixedVersion = fixedVersionQueryTypes.includes(query.fullApiName);
@@ -1246,9 +1311,15 @@ function getQueryParamType(enhancedOntology, input, type, isMapKey = false) {
1246
1311
  }
1247
1312
  inner = `Query${type}.ObjectType<${enhancedOntology.requireObjectType(input.object).getImportedDefinitionIdentifier(true)}>`;
1248
1313
  break;
1314
+ case "interface":
1315
+ inner = `Query${type}.InterfaceType<${enhancedOntology.requireInterfaceType(input.interface).getImportedDefinitionIdentifier(true)}>`;
1316
+ break;
1249
1317
  case "objectSet":
1250
1318
  inner = `Query${type}.ObjectSetType<${enhancedOntology.requireObjectType(input.objectSet).getImportedDefinitionIdentifier(true)}>`;
1251
1319
  break;
1320
+ case "interfaceObjectSet":
1321
+ inner = `Query${type}.ObjectSetType<${enhancedOntology.requireInterfaceType(input.objectSet).getImportedDefinitionIdentifier(true)}>`;
1322
+ break;
1252
1323
  case "set":
1253
1324
  inner = `${type === "Param" ? "Readonly" : ""}Set<${getQueryParamType(enhancedOntology, input.set, type)}>`;
1254
1325
  break;