@osdk/client 0.20.0-beta.3 → 0.20.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 (43) hide show
  1. package/CHANGELOG.md +28 -5
  2. package/build/browser/{chunk-M3BF5ESV.js → chunk-3ZYIZQ7V.js} +290 -8
  3. package/build/browser/chunk-3ZYIZQ7V.js.map +1 -0
  4. package/build/browser/index.js +2 -2
  5. package/build/browser/public/unstable-do-not-use.js +2 -2
  6. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  7. package/build/cjs/{chunk-EP4KLU3N.cjs → chunk-4FXEPHWC.cjs} +290 -8
  8. package/build/cjs/chunk-4FXEPHWC.cjs.map +1 -0
  9. package/build/cjs/index.cjs +5 -5
  10. package/build/cjs/public/unstable-do-not-use.cjs +8 -8
  11. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  12. package/build/esm/Client.d.ts +3 -2
  13. package/build/esm/Client.d.ts.map +1 -1
  14. package/build/esm/{chunk-JRG5V55N.js → chunk-MD6R46EZ.js} +290 -8
  15. package/build/esm/chunk-MD6R46EZ.js.map +1 -0
  16. package/build/esm/createClient.d.ts.map +1 -1
  17. package/build/esm/index.js +2 -2
  18. package/build/esm/object/Cache.d.ts +1 -1
  19. package/build/esm/object/SimpleCache.d.ts +1 -1
  20. package/build/esm/objectSet/createObjectSet.d.ts.map +1 -1
  21. package/build/esm/ontology/loadFullObjectMetadata.d.ts +1 -1
  22. package/build/esm/ontology/loadFullObjectMetadata.d.ts.map +1 -1
  23. package/build/esm/ontology/loadInterfaceDefinition.d.ts +1 -1
  24. package/build/esm/ontology/loadInterfaceDefinition.d.ts.map +1 -1
  25. package/build/esm/public/unstable-do-not-use.js +2 -2
  26. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  27. package/build/esm/queries/applyQuery.d.ts +6 -0
  28. package/build/esm/queries/applyQuery.d.ts.map +1 -0
  29. package/build/esm/queries/createQueryInvoker.d.ts +5 -0
  30. package/build/esm/queries/createQueryInvoker.d.ts.map +1 -0
  31. package/build/esm/queries/queries.test.d.ts +2 -0
  32. package/build/esm/queries/queries.test.d.ts.map +1 -0
  33. package/build/esm/util/isOsdkBaseObject.d.ts +3 -0
  34. package/build/esm/util/isOsdkBaseObject.d.ts.map +1 -0
  35. package/build/esm/util/isOsdkObject.d.ts +3 -0
  36. package/build/esm/util/isOsdkObject.d.ts.map +1 -0
  37. package/build/esm/util/toDataValue.d.ts.map +1 -1
  38. package/build/esm/util/toDataValueQueries.d.ts +10 -0
  39. package/build/esm/util/toDataValueQueries.d.ts.map +1 -0
  40. package/package.json +22 -15
  41. package/build/browser/chunk-M3BF5ESV.js.map +0 -1
  42. package/build/cjs/chunk-EP4KLU3N.cjs.map +0 -1
  43. package/build/esm/chunk-JRG5V55N.js.map +0 -1
@@ -1250,6 +1250,7 @@ function createObjectSet(objectType, clientCtx, objectSet = {
1250
1250
  const result = await base.fetchPage({
1251
1251
  $nextPageToken
1252
1252
  });
1253
+ $nextPageToken = result.nextPageToken;
1253
1254
  for (const obj of result.data) {
1254
1255
  yield obj;
1255
1256
  }
@@ -1606,7 +1607,7 @@ function applyFetchArgs(args, body) {
1606
1607
  async function fetchObjectPage(client, objectType, args, objectSet) {
1607
1608
  const r = await esm_exports2.OntologyObjectSets.loadObjectSetV2(addUserAgent(client, objectType), await client.ontologyRid, applyFetchArgs(args, {
1608
1609
  objectSet,
1609
- // We have to do the following case because LoadObjectSetRequestV2 isnt readonly
1610
+ // We have to do the following case because LoadObjectSetRequestV2 isn't readonly
1610
1611
  select: args?.$select ?? [],
1611
1612
  // FIXME?
1612
1613
  excludeRid: !args?.$includeRid
@@ -1635,6 +1636,11 @@ function isOntologyObjectV2(o) {
1635
1636
  return o && typeof o === "object" && typeof o.__apiName === "string" && o.__primaryKey != null;
1636
1637
  }
1637
1638
 
1639
+ // src/util/isOsdkObject.ts
1640
+ function isOsdkBaseObject(o) {
1641
+ return o && typeof o === "object" && typeof o.$apiName === "string" && o.$primaryKey != null;
1642
+ }
1643
+
1638
1644
  // src/util/toDataValue.ts
1639
1645
  async function toDataValue(value, client) {
1640
1646
  if (value == null) {
@@ -1656,6 +1662,9 @@ async function toDataValue(value, client) {
1656
1662
  if (isOntologyObjectV2(value)) {
1657
1663
  return await toDataValue(value.__primaryKey, client);
1658
1664
  }
1665
+ if (isOsdkBaseObject(value)) {
1666
+ return await toDataValue(value.$primaryKey, client);
1667
+ }
1659
1668
  if (isWireObjectSet(value)) {
1660
1669
  return value;
1661
1670
  }
@@ -1717,19 +1726,19 @@ async function remapBatchActionParams(params, client) {
1717
1726
  }));
1718
1727
  return remappedParams;
1719
1728
  }
1720
- async function loadFullObjectMetadata(client, objtype) {
1721
- const full = await esm_exports2.OntologyObjectsV2.getObjectTypeFullMetadata(client, await client.ontologyRid, objtype, {
1729
+ async function loadFullObjectMetadata(client, objectType) {
1730
+ const full = await esm_exports2.OntologyObjectsV2.getObjectTypeFullMetadata(client, await client.ontologyRid, objectType, {
1722
1731
  preview: true
1723
1732
  });
1724
1733
  const ret = generatorConverters.wireObjectTypeFullMetadataToSdkObjectTypeDefinition(full, true);
1725
- client.logger?.debug(`END loadFullObjectMetadata(${objtype})`);
1734
+ client.logger?.debug(`END loadFullObjectMetadata(${objectType})`);
1726
1735
  return {
1727
1736
  ...ret,
1728
1737
  rid: full.objectType.rid
1729
1738
  };
1730
1739
  }
1731
- async function loadInterfaceDefinition(client, objtype) {
1732
- const r = await esm_exports2.OntologyObjectsV2.getInterfaceType(client, await client.ontologyRid, objtype, {
1740
+ async function loadInterfaceDefinition(client, objectType) {
1741
+ const r = await esm_exports2.OntologyObjectsV2.getInterfaceType(client, await client.ontologyRid, objectType, {
1733
1742
  preview: true
1734
1743
  });
1735
1744
  return generatorConverters.__UNSTABLE_wireInterfaceTypeV2ToSdkObjectDefinition(r, true);
@@ -1770,7 +1779,7 @@ var createStandardOntologyProviderFactory = (client) => {
1770
1779
  };
1771
1780
 
1772
1781
  // src/util/UserAgent.ts
1773
- var USER_AGENT = `osdk-client/${"0.20.0-beta.3"}`;
1782
+ var USER_AGENT = `osdk-client/${"0.20.0-beta.4"}`;
1774
1783
 
1775
1784
  // src/createMinimalClient.ts
1776
1785
  function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fetchFn = global.fetch, objectSetFactory = createObjectSet) {
@@ -1794,6 +1803,277 @@ function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fet
1794
1803
  });
1795
1804
  }
1796
1805
 
1806
+ // src/util/isOsdkBaseObject.ts
1807
+ function isOsdkBaseObject2(o) {
1808
+ return o && typeof o === "object" && typeof o.$apiName === "string" && o.$primaryKey != null;
1809
+ }
1810
+
1811
+ // src/util/toDataValueQueries.ts
1812
+ async function toDataValueQueries(value, client, desiredType) {
1813
+ if (value == null) {
1814
+ return value;
1815
+ }
1816
+ if (Array.isArray(value) && desiredType.multiplicity) {
1817
+ const promiseArray = Array.from(value, async (innerValue) => await toDataValueQueries(innerValue, client, desiredType));
1818
+ return Promise.all(promiseArray);
1819
+ }
1820
+ switch (desiredType.type) {
1821
+ case "attachment": {
1822
+ if (isAttachmentUpload(value)) {
1823
+ const attachment = await esm_exports.Attachments.uploadAttachment(client, value, {
1824
+ filename: value.name
1825
+ }, {
1826
+ "Content-Length": value.size.toString(),
1827
+ "Content-Type": value.type
1828
+ });
1829
+ return attachment.rid;
1830
+ }
1831
+ return value;
1832
+ }
1833
+ case "twoDimensionalAggregation": {
1834
+ return {
1835
+ groups: value
1836
+ };
1837
+ }
1838
+ case "threeDimensionalAggregation": {
1839
+ return {
1840
+ groups: value
1841
+ };
1842
+ }
1843
+ case "set": {
1844
+ if (value instanceof Set) {
1845
+ const promiseArray = Array.from(value, async (innerValue) => await toDataValueQueries(innerValue, client, desiredType["set"]));
1846
+ return Promise.all(promiseArray);
1847
+ }
1848
+ break;
1849
+ }
1850
+ case "object": {
1851
+ if (isOsdkBaseObject2(value)) {
1852
+ return value.$primaryKey;
1853
+ }
1854
+ break;
1855
+ }
1856
+ case "objectSet": {
1857
+ if (isWireObjectSet(value)) {
1858
+ return value;
1859
+ }
1860
+ if (isObjectSet(value)) {
1861
+ return getWireObjectSet(value);
1862
+ }
1863
+ break;
1864
+ }
1865
+ case "struct": {
1866
+ if (typeof value === "object") {
1867
+ const structMap = {};
1868
+ for (const [key, structValue] of Object.entries(value)) {
1869
+ structMap[key] = await toDataValueQueries(structValue, client, desiredType["struct"][key]);
1870
+ }
1871
+ return structMap;
1872
+ }
1873
+ }
1874
+ case "boolean":
1875
+ case "date":
1876
+ case "double":
1877
+ case "float":
1878
+ case "integer":
1879
+ case "long":
1880
+ case "string":
1881
+ case "timestamp":
1882
+ return value;
1883
+ }
1884
+ return value;
1885
+ }
1886
+
1887
+ // src/queries/applyQuery.ts
1888
+ async function applyQuery(client, query, params) {
1889
+ const response = await esm_exports2.QueryTypes.executeQueryV2(addUserAgent(client, query), await client.ontologyRid, query.apiName, {
1890
+ parameters: params ? await remapQueryParams(params, client, query.parameters) : {}
1891
+ });
1892
+ const objectOutputDefs = await getRequiredDefinitions(query.output, client);
1893
+ const remappedResponse = await remapQueryResponse(client, query.output, response.value, objectOutputDefs);
1894
+ return remappedResponse;
1895
+ }
1896
+ async function remapQueryParams(params, client, paramTypes) {
1897
+ const parameterMap = {};
1898
+ for (const [key, value] of Object.entries(params)) {
1899
+ parameterMap[key] = await toDataValueQueries(value, client, paramTypes[key]);
1900
+ }
1901
+ return parameterMap;
1902
+ }
1903
+ async function remapQueryResponse(client, responseDataType, responseValue, definitions) {
1904
+ if (responseValue == null) {
1905
+ if (responseDataType.nullable) {
1906
+ return void 0;
1907
+ } else {
1908
+ throw new Error("Got null response when nullable was not allowed");
1909
+ }
1910
+ }
1911
+ if (responseDataType.multiplicity != null && responseDataType.multiplicity !== false) {
1912
+ const withoutMultiplicity = {
1913
+ ...responseDataType,
1914
+ multiplicity: false
1915
+ };
1916
+ for (let i = 0; i < responseValue.length; i++) {
1917
+ responseValue[i] = await remapQueryResponse(responseValue[i], withoutMultiplicity, client, definitions);
1918
+ }
1919
+ return responseValue;
1920
+ }
1921
+ switch (responseDataType.type) {
1922
+ case "union": {
1923
+ throw new Error("Union return types are not yet supported");
1924
+ }
1925
+ case "set": {
1926
+ for (let i = 0; i < responseValue.length; i++) {
1927
+ responseValue[i] = await remapQueryResponse(responseValue[i], responseDataType.set, client, definitions);
1928
+ }
1929
+ return responseValue;
1930
+ }
1931
+ case "attachment": {
1932
+ return createAttachmentFromRid(client, responseValue);
1933
+ }
1934
+ case "object": {
1935
+ const def = definitions.get(responseDataType.object);
1936
+ if (!def) {
1937
+ throw new Error(`Missing definition for ${responseDataType.object}`);
1938
+ }
1939
+ return createQueryObjectResponse(responseValue, def);
1940
+ }
1941
+ case "objectSet": {
1942
+ const def = definitions.get(responseDataType.objectSet);
1943
+ if (!def) {
1944
+ throw new Error(`Missing definition for ${responseDataType.objectSet}`);
1945
+ }
1946
+ if (typeof responseValue === "string") {
1947
+ return createObjectSet(def, client, {
1948
+ type: "intersect",
1949
+ objectSets: [{
1950
+ type: "base",
1951
+ objectType: responseDataType.objectSet
1952
+ }, {
1953
+ type: "reference",
1954
+ reference: responseValue
1955
+ }]
1956
+ });
1957
+ }
1958
+ return createObjectSet(def, client, responseValue);
1959
+ }
1960
+ case "struct": {
1961
+ for (const [key, subtype] of Object.entries(responseDataType.struct)) {
1962
+ if (requiresConversion(subtype)) {
1963
+ responseValue[key] = await remapQueryResponse(responseValue[key], subtype, client, definitions);
1964
+ }
1965
+ }
1966
+ return responseValue;
1967
+ }
1968
+ case "twoDimensionalAggregation": {
1969
+ const result = [];
1970
+ for (const {
1971
+ key,
1972
+ value
1973
+ } of responseValue.groups) {
1974
+ result.push({
1975
+ key,
1976
+ value
1977
+ });
1978
+ }
1979
+ return result;
1980
+ }
1981
+ case "threeDimensionalAggregation": {
1982
+ const result = [];
1983
+ for (const {
1984
+ key,
1985
+ groups
1986
+ } of responseValue.groups) {
1987
+ const subResult = [];
1988
+ for (const {
1989
+ key: subKey,
1990
+ value
1991
+ } of groups) {
1992
+ subResult.push({
1993
+ key: subKey,
1994
+ value
1995
+ });
1996
+ }
1997
+ result.push({
1998
+ key,
1999
+ groups: subResult
2000
+ });
2001
+ }
2002
+ return result;
2003
+ }
2004
+ }
2005
+ return responseValue;
2006
+ }
2007
+ async function getRequiredDefinitions(dataType, client) {
2008
+ const result = /* @__PURE__ */ new Map();
2009
+ switch (dataType.type) {
2010
+ case "objectSet": {
2011
+ const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.objectSet);
2012
+ result.set(dataType.objectSet, objectDef);
2013
+ break;
2014
+ }
2015
+ case "object": {
2016
+ const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.object);
2017
+ result.set(dataType.object, objectDef);
2018
+ break;
2019
+ }
2020
+ case "set": {
2021
+ return getRequiredDefinitions(dataType.set, client);
2022
+ }
2023
+ case "struct": {
2024
+ for (const value of Object.values(dataType.struct)) {
2025
+ for (const [type, objectDef] of await getRequiredDefinitions(value, client)) {
2026
+ result.set(type, objectDef);
2027
+ }
2028
+ }
2029
+ break;
2030
+ }
2031
+ }
2032
+ return result;
2033
+ }
2034
+ function requiresConversion(dataType) {
2035
+ switch (dataType.type) {
2036
+ case "boolean":
2037
+ case "date":
2038
+ case "double":
2039
+ case "float":
2040
+ case "integer":
2041
+ case "long":
2042
+ case "object":
2043
+ case "string":
2044
+ case "timestamp":
2045
+ return false;
2046
+ case "union":
2047
+ return true;
2048
+ case "struct":
2049
+ return Object.values(dataType.struct).some(requiresConversion);
2050
+ case "set":
2051
+ return requiresConversion(dataType.set);
2052
+ case "attachment":
2053
+ case "objectSet":
2054
+ case "twoDimensionalAggregation":
2055
+ case "threeDimensionalAggregation":
2056
+ return true;
2057
+ default:
2058
+ return false;
2059
+ }
2060
+ }
2061
+ function createQueryObjectResponse(primaryKey, objectDef) {
2062
+ return {
2063
+ $apiName: objectDef.apiName,
2064
+ $title: void 0,
2065
+ $objectType: objectDef.apiName,
2066
+ $primaryKey: primaryKey
2067
+ };
2068
+ }
2069
+
2070
+ // src/queries/createQueryInvoker.ts
2071
+ function createQueryInvoker(client, query) {
2072
+ return function(...args) {
2073
+ return applyQuery(client, query, ...args);
2074
+ };
2075
+ }
2076
+
1797
2077
  // src/createClient.ts
1798
2078
  var ActionInvoker = class {
1799
2079
  constructor(clientCtx, actionDef) {
@@ -1811,6 +2091,8 @@ function createClientInternal(objectSetFactory, baseUrl, ontologyRid, tokenProvi
1811
2091
  } else if (o.type === "action") {
1812
2092
  clientCtx.ontologyProvider.maybeSeed(o);
1813
2093
  return new ActionInvoker(clientCtx, o);
2094
+ } else if (o.type === "query") {
2095
+ return createQueryInvoker(clientCtx, o);
1814
2096
  } else {
1815
2097
  throw new Error("not implemented");
1816
2098
  }
@@ -1835,4 +2117,4 @@ exports.createObjectSet = createObjectSet;
1835
2117
  exports.createSimpleAsyncCache = createSimpleAsyncCache;
1836
2118
  exports.esm_exports = esm_exports2;
1837
2119
  //# sourceMappingURL=out.js.map
1838
- //# sourceMappingURL=chunk-EP4KLU3N.cjs.map
2120
+ //# sourceMappingURL=chunk-4FXEPHWC.cjs.map