@osdk/client 2.1.0-beta.11 → 2.1.0-beta.13

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,25 @@
1
1
  # @osdk/client
2
2
 
3
+ ## 2.1.0-beta.13
4
+
5
+ ### Minor Changes
6
+
7
+ - c4f88a8: Removes circular dependency that may upset legacy tools like react-native
8
+
9
+ ### Patch Changes
10
+
11
+ - @osdk/api@2.1.0-beta.13
12
+ - @osdk/client.unstable@2.1.0-beta.13
13
+ - @osdk/generator-converters@2.1.0-beta.13
14
+
15
+ ## 2.1.0-beta.12
16
+
17
+ ### Patch Changes
18
+
19
+ - @osdk/api@2.1.0-beta.12
20
+ - @osdk/client.unstable@2.1.0-beta.12
21
+ - @osdk/generator-converters@2.1.0-beta.12
22
+
3
23
  ## 2.1.0-beta.11
4
24
 
5
25
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"MinimalClientContext.d.ts","sourceRoot":"","sources":["../../src/MinimalClientContext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,EAAE,GAAG;IAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,mBAAmB;IACxD,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"MinimalClientContext.d.ts","sourceRoot":"","sources":["../../src/MinimalClientContext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,EAAE,GAAG;IAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,mBAAmB;IACxD,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAQhB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC"}
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { createSharedClientContext } from "@osdk/shared.client.impl";
17
+ import { convertWireToOsdkObjects, convertWireToOsdkObjects2 } from "./object/convertWireToOsdkObjects.js";
17
18
  import { createObjectSet } from "./objectSet/createObjectSet.js";
18
19
  import { createStandardOntologyProviderFactory } from "./ontology/StandardOntologyProvider.js";
19
20
  import { USER_AGENT } from "./util/UserAgent.js";
@@ -30,6 +31,8 @@ export function createMinimalClient(metadata, baseUrl, tokenProvider, options =
30
31
  const minimalClient = {
31
32
  ...createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn),
32
33
  objectSetFactory,
34
+ objectFactory: convertWireToOsdkObjects,
35
+ objectFactory2: convertWireToOsdkObjects2,
33
36
  ontologyRid: metadata.ontologyRid,
34
37
  logger: options.logger,
35
38
  clientCacheKey: {},
@@ -1 +1 @@
1
- {"version":3,"file":"createMinimalClient.js","names":["createSharedClientContext","createObjectSet","createStandardOntologyProviderFactory","USER_AGENT","createMinimalClient","metadata","baseUrl","tokenProvider","options","fetchFn","global","fetch","objectSetFactory","process","env","NODE_ENV","URL","e","hint","startsWith","Error","minimalClient","ontologyRid","logger","clientCacheKey","requestContext","Object","freeze","assign","ontologyProvider"],"sources":["createMinimalClient.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createSharedClientContext } from \"@osdk/shared.client.impl\";\nimport { createObjectSet } from \"./objectSet/createObjectSet.js\";\nimport { createStandardOntologyProviderFactory, } from \"./ontology/StandardOntologyProvider.js\";\nimport { USER_AGENT } from \"./util/UserAgent.js\";\n/** @internal */\nexport function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fetchFn = global.fetch, objectSetFactory = createObjectSet) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n new URL(baseUrl);\n }\n catch (e) {\n const hint = !baseUrl.startsWith(\"http://\") || !baseUrl.startsWith(\"https://\")\n ? \". Did you forget to add 'http://' or 'https://'?\"\n : \"\";\n throw new Error(`Invalid stack URL: ${baseUrl}${hint}`);\n }\n }\n const minimalClient = {\n ...createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn),\n objectSetFactory,\n ontologyRid: metadata.ontologyRid,\n logger: options.logger,\n clientCacheKey: {},\n requestContext: {},\n };\n return Object.freeze(Object.assign(minimalClient, {\n ontologyProvider: createStandardOntologyProviderFactory(options)(minimalClient),\n }));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,0BAA0B;AACpE,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,qCAAqC,QAAS,wCAAwC;AAC/F,SAASC,UAAU,QAAQ,qBAAqB;AAChD;AACA,OAAO,SAASC,mBAAmBA,CAACC,QAAQ,EAAEC,OAAO,EAAEC,aAAa,EAAEC,OAAO,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAGC,MAAM,CAACC,KAAK,EAAEC,gBAAgB,GAAGX,eAAe,EAAE;EAC5I,IAAIY,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACvC,IAAI;MACA,IAAIC,GAAG,CAACV,OAAO,CAAC;IACpB,CAAC,CACD,OAAOW,CAAC,EAAE;MACN,MAAMC,IAAI,GAAG,CAACZ,OAAO,CAACa,UAAU,CAAC,SAAS,CAAC,IAAI,CAACb,OAAO,CAACa,UAAU,CAAC,UAAU,CAAC,GACxE,kDAAkD,GAClD,EAAE;MACR,MAAM,IAAIC,KAAK,CAAC,sBAAsBd,OAAO,GAAGY,IAAI,EAAE,CAAC;IAC3D;EACJ;EACA,MAAMG,aAAa,GAAG;IAClB,GAAGrB,yBAAyB,CAACM,OAAO,EAAEC,aAAa,EAAEJ,UAAU,EAAEM,OAAO,CAAC;IACzEG,gBAAgB;IAChBU,WAAW,EAAEjB,QAAQ,CAACiB,WAAW;IACjCC,MAAM,EAAEf,OAAO,CAACe,MAAM;IACtBC,cAAc,EAAE,CAAC,CAAC;IAClBC,cAAc,EAAE,CAAC;EACrB,CAAC;EACD,OAAOC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACP,aAAa,EAAE;IAC9CQ,gBAAgB,EAAE3B,qCAAqC,CAACM,OAAO,CAAC,CAACa,aAAa;EAClF,CAAC,CAAC,CAAC;AACP","ignoreList":[]}
1
+ {"version":3,"file":"createMinimalClient.js","names":["createSharedClientContext","convertWireToOsdkObjects","convertWireToOsdkObjects2","createObjectSet","createStandardOntologyProviderFactory","USER_AGENT","createMinimalClient","metadata","baseUrl","tokenProvider","options","fetchFn","global","fetch","objectSetFactory","process","env","NODE_ENV","URL","e","hint","startsWith","Error","minimalClient","objectFactory","objectFactory2","ontologyRid","logger","clientCacheKey","requestContext","Object","freeze","assign","ontologyProvider"],"sources":["createMinimalClient.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createSharedClientContext } from \"@osdk/shared.client.impl\";\nimport { convertWireToOsdkObjects, convertWireToOsdkObjects2, } from \"./object/convertWireToOsdkObjects.js\";\nimport { createObjectSet } from \"./objectSet/createObjectSet.js\";\nimport { createStandardOntologyProviderFactory, } from \"./ontology/StandardOntologyProvider.js\";\nimport { USER_AGENT } from \"./util/UserAgent.js\";\n/** @internal */\nexport function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fetchFn = global.fetch, objectSetFactory = createObjectSet) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n new URL(baseUrl);\n }\n catch (e) {\n const hint = !baseUrl.startsWith(\"http://\") || !baseUrl.startsWith(\"https://\")\n ? \". Did you forget to add 'http://' or 'https://'?\"\n : \"\";\n throw new Error(`Invalid stack URL: ${baseUrl}${hint}`);\n }\n }\n const minimalClient = {\n ...createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn),\n objectSetFactory,\n objectFactory: convertWireToOsdkObjects,\n objectFactory2: convertWireToOsdkObjects2,\n ontologyRid: metadata.ontologyRid,\n logger: options.logger,\n clientCacheKey: {},\n requestContext: {},\n };\n return Object.freeze(Object.assign(minimalClient, {\n ontologyProvider: createStandardOntologyProviderFactory(options)(minimalClient),\n }));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,0BAA0B;AACpE,SAASC,wBAAwB,EAAEC,yBAAyB,QAAS,sCAAsC;AAC3G,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,qCAAqC,QAAS,wCAAwC;AAC/F,SAASC,UAAU,QAAQ,qBAAqB;AAChD;AACA,OAAO,SAASC,mBAAmBA,CAACC,QAAQ,EAAEC,OAAO,EAAEC,aAAa,EAAEC,OAAO,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAGC,MAAM,CAACC,KAAK,EAAEC,gBAAgB,GAAGX,eAAe,EAAE;EAC5I,IAAIY,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACvC,IAAI;MACA,IAAIC,GAAG,CAACV,OAAO,CAAC;IACpB,CAAC,CACD,OAAOW,CAAC,EAAE;MACN,MAAMC,IAAI,GAAG,CAACZ,OAAO,CAACa,UAAU,CAAC,SAAS,CAAC,IAAI,CAACb,OAAO,CAACa,UAAU,CAAC,UAAU,CAAC,GACxE,kDAAkD,GAClD,EAAE;MACR,MAAM,IAAIC,KAAK,CAAC,sBAAsBd,OAAO,GAAGY,IAAI,EAAE,CAAC;IAC3D;EACJ;EACA,MAAMG,aAAa,GAAG;IAClB,GAAGvB,yBAAyB,CAACQ,OAAO,EAAEC,aAAa,EAAEJ,UAAU,EAAEM,OAAO,CAAC;IACzEG,gBAAgB;IAChBU,aAAa,EAAEvB,wBAAwB;IACvCwB,cAAc,EAAEvB,yBAAyB;IACzCwB,WAAW,EAAEnB,QAAQ,CAACmB,WAAW;IACjCC,MAAM,EAAEjB,OAAO,CAACiB,MAAM;IACtBC,cAAc,EAAE,CAAC,CAAC;IAClBC,cAAc,EAAE,CAAC;EACrB,CAAC;EACD,OAAOC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACT,aAAa,EAAE;IAC9CU,gBAAgB,EAAE7B,qCAAqC,CAACM,OAAO,CAAC,CAACa,aAAa;EAClF,CAAC,CAAC,CAAC;AACP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/object/fetchPage.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,OAAO,EAOP,2BAA2B,EAE3B,YAAY,EAEb,MAAM,WAAW,CAAC;AAqBnB,wBAAgB,OAAO,CACrB,CAAC,SAAS,2BAA2B,EACrC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAEzB,IAAI,EAAE,CAAC,EACP,GAAG,UAAU,EAAE,CAAC,EAAE,GACjB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAEf"}
1
+ {"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/object/fetchPage.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,OAAO,EAMP,2BAA2B,EAE3B,YAAY,EAEb,MAAM,WAAW,CAAC;AAiBnB,wBAAgB,OAAO,CACrB,CAAC,SAAS,2BAA2B,EACrC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAEzB,IAAI,EAAE,CAAC,EACP,GAAG,UAAU,EAAE,CAAC,EAAE,GACjB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAEf"}
@@ -16,7 +16,6 @@
16
16
  import * as OntologiesV2 from "@osdk/internal.foundry.ontologiesv2";
17
17
  import { addUserAgentAndRequestContextHeaders } from "../util/addUserAgentAndRequestContextHeaders.js";
18
18
  import { resolveBaseObjectSetType } from "../util/objectSetUtils.js";
19
- import { convertWireToOsdkObjects, convertWireToOsdkObjects2 } from "./convertWireToOsdkObjects.js";
20
19
  export function augment(type, ...properties) {
21
20
  return {
22
21
  [type.apiName]: properties
@@ -53,7 +52,7 @@ async function fetchInterfacePage(client, interfaceType, args, objectSet) {
53
52
  }), {
54
53
  preview: true
55
54
  });
56
- result.data = await convertWireToOsdkObjects(client, result.data,
55
+ result.data = await client.objectFactory(client, result.data,
57
56
  // drop readonly
58
57
  interfaceType.apiName, !args.$includeRid);
59
58
  return result;
@@ -64,7 +63,7 @@ async function fetchInterfacePage(client, interfaceType, args, objectSet) {
64
63
  excludeRid: !args?.$includeRid
65
64
  }));
66
65
  return Promise.resolve({
67
- data: await convertWireToOsdkObjects2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),
66
+ data: await client.objectFactory2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),
68
67
  nextPageToken: result.nextPageToken,
69
68
  totalCount: result.totalCount
70
69
  });
@@ -137,7 +136,7 @@ export async function fetchObjectPage(client, objectType, args, objectSet) {
137
136
  excludeRid: !args?.$includeRid
138
137
  }));
139
138
  return Promise.resolve({
140
- data: await convertWireToOsdkObjects(client, r.data, undefined, undefined, args.$select),
139
+ data: await client.objectFactory(client, r.data, undefined, undefined, args.$select),
141
140
  nextPageToken: r.nextPageToken,
142
141
  totalCount: r.totalCount
143
142
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.js","names":["OntologiesV2","addUserAgentAndRequestContextHeaders","resolveBaseObjectSetType","convertWireToOsdkObjects","convertWireToOsdkObjects2","augment","type","properties","apiName","objectSetToSearchJsonV2","objectSet","expectedApiName","existingWhere","undefined","objectType","Error","interfaceType","where","value","fetchInterfacePage","client","args","$__UNSTABLE_useOldInterfaceApis","result","OntologyInterfaces","search","ontologyRid","applyFetchArgs","augmentedProperties","augmentedSharedPropertyTypes","otherInterfaceTypes","selectedObjectTypes","selectedSharedPropertyTypes","$select","preview","data","$includeRid","OntologyObjectSets","loadMultipleObjectTypes","select","excludeRid","Promise","resolve","interfaceToObjectTypeMappings","nextPageToken","totalCount","fetchPageInternal","fetchObjectPage","fetchPageWithErrorsInternal","e","error","fetchPage","fetchPageWithErrors","body","$nextPageToken","pageToken","$pageSize","pageSize","$orderBy","orderBy","fields","Object","entries","map","field","direction","r","load"],"sources":["fetchPage.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { resolveBaseObjectSetType } from \"../util/objectSetUtils.js\";\nimport { convertWireToOsdkObjects, convertWireToOsdkObjects2, } from \"./convertWireToOsdkObjects.js\";\nexport function augment(type, ...properties) {\n return { [type.apiName]: properties };\n}\n/** @internal */\nexport function objectSetToSearchJsonV2(objectSet, expectedApiName, existingWhere = undefined) {\n if (objectSet.type === \"base\" || objectSet.type === \"interfaceBase\") {\n if (objectSet.type === \"base\" && objectSet.objectType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.objectType}`);\n }\n if (objectSet.type === \"interfaceBase\"\n && objectSet.interfaceType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.interfaceType}`);\n }\n return existingWhere;\n }\n if (objectSet.type === \"filter\") {\n return objectSetToSearchJsonV2(objectSet.objectSet, expectedApiName, existingWhere == null ? objectSet.where : {\n type: \"and\",\n value: [existingWhere, objectSet.where],\n });\n }\n throw new Error(`Unsupported objectSet type: ${objectSet.type}`);\n}\nasync function fetchInterfacePage(client, interfaceType, args, objectSet) {\n if (args.$__UNSTABLE_useOldInterfaceApis) {\n const result = await OntologiesV2.OntologyInterfaces\n .search(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, interfaceType.apiName, applyFetchArgs(args, {\n augmentedProperties: {},\n augmentedSharedPropertyTypes: {},\n otherInterfaceTypes: [],\n selectedObjectTypes: [],\n selectedSharedPropertyTypes: args.$select\n ?? [],\n where: objectSetToSearchJsonV2(objectSet, interfaceType.apiName),\n }), { preview: true });\n result.data = await convertWireToOsdkObjects(client, result.data, // drop readonly\n interfaceType.apiName, !args.$includeRid);\n return result;\n }\n const result = await OntologiesV2.OntologyObjectSets.loadMultipleObjectTypes(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n select: (args?.$select ?? []),\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await convertWireToOsdkObjects2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),\n nextPageToken: result.nextPageToken,\n totalCount: result.totalCount,\n });\n}\n/** @internal */\nexport async function fetchPageInternal(client, objectType, objectSet, args = {}) {\n if (objectType.type === \"interface\") {\n return await fetchInterfacePage(client, objectType, args, objectSet); // fixme\n }\n else {\n return await fetchObjectPage(client, objectType, args, objectSet); // fixme\n }\n}\n/** @internal */\nexport async function fetchPageWithErrorsInternal(client, objectType, objectSet, args = {}) {\n try {\n const result = await fetchPageInternal(client, objectType, objectSet, args);\n return { value: result };\n }\n catch (e) {\n if (e instanceof Error) {\n return { error: e };\n }\n return { error: e };\n }\n}\n/**\n * @param client\n * @param objectType\n * @param args\n * @param objectSet\n * @returns\n * @internal\n */\nexport async function fetchPage(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageInternal(client, objectType, objectSet, args);\n}\n/** @internal */\nexport async function fetchPageWithErrors(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageWithErrorsInternal(client, objectType, objectSet, args);\n}\nfunction applyFetchArgs(args, body) {\n if (args?.$nextPageToken) {\n body.pageToken = args.$nextPageToken;\n }\n if (args?.$pageSize != null) {\n body.pageSize = args.$pageSize;\n }\n if (args?.$orderBy != null) {\n body.orderBy = {\n fields: Object.entries(args.$orderBy).map(([field, direction]) => ({\n field,\n direction,\n })),\n };\n }\n return body;\n}\n/** @internal */\nexport async function fetchObjectPage(client, objectType, args, objectSet) {\n const r = await OntologiesV2.OntologyObjectSets.load(addUserAgentAndRequestContextHeaders(client, objectType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n // We have to do the following case because LoadObjectSetRequestV2 isn't readonly\n select: (args?.$select ?? []), // FIXME?\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await convertWireToOsdkObjects(client, r.data, undefined, undefined, args.$select),\n nextPageToken: r.nextPageToken,\n totalCount: r.totalCount,\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fetchPage.js","names":["OntologiesV2","addUserAgentAndRequestContextHeaders","resolveBaseObjectSetType","augment","type","properties","apiName","objectSetToSearchJsonV2","objectSet","expectedApiName","existingWhere","undefined","objectType","Error","interfaceType","where","value","fetchInterfacePage","client","args","$__UNSTABLE_useOldInterfaceApis","result","OntologyInterfaces","search","ontologyRid","applyFetchArgs","augmentedProperties","augmentedSharedPropertyTypes","otherInterfaceTypes","selectedObjectTypes","selectedSharedPropertyTypes","$select","preview","data","objectFactory","$includeRid","OntologyObjectSets","loadMultipleObjectTypes","select","excludeRid","Promise","resolve","objectFactory2","interfaceToObjectTypeMappings","nextPageToken","totalCount","fetchPageInternal","fetchObjectPage","fetchPageWithErrorsInternal","e","error","fetchPage","fetchPageWithErrors","body","$nextPageToken","pageToken","$pageSize","pageSize","$orderBy","orderBy","fields","Object","entries","map","field","direction","r","load"],"sources":["fetchPage.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { resolveBaseObjectSetType } from \"../util/objectSetUtils.js\";\nexport function augment(type, ...properties) {\n return { [type.apiName]: properties };\n}\n/** @internal */\nexport function objectSetToSearchJsonV2(objectSet, expectedApiName, existingWhere = undefined) {\n if (objectSet.type === \"base\" || objectSet.type === \"interfaceBase\") {\n if (objectSet.type === \"base\" && objectSet.objectType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.objectType}`);\n }\n if (objectSet.type === \"interfaceBase\"\n && objectSet.interfaceType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.interfaceType}`);\n }\n return existingWhere;\n }\n if (objectSet.type === \"filter\") {\n return objectSetToSearchJsonV2(objectSet.objectSet, expectedApiName, existingWhere == null ? objectSet.where : {\n type: \"and\",\n value: [existingWhere, objectSet.where],\n });\n }\n throw new Error(`Unsupported objectSet type: ${objectSet.type}`);\n}\nasync function fetchInterfacePage(client, interfaceType, args, objectSet) {\n if (args.$__UNSTABLE_useOldInterfaceApis) {\n const result = await OntologiesV2.OntologyInterfaces\n .search(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, interfaceType.apiName, applyFetchArgs(args, {\n augmentedProperties: {},\n augmentedSharedPropertyTypes: {},\n otherInterfaceTypes: [],\n selectedObjectTypes: [],\n selectedSharedPropertyTypes: args.$select\n ?? [],\n where: objectSetToSearchJsonV2(objectSet, interfaceType.apiName),\n }), { preview: true });\n result.data = await client.objectFactory(client, result.data, // drop readonly\n interfaceType.apiName, !args.$includeRid);\n return result;\n }\n const result = await OntologiesV2.OntologyObjectSets.loadMultipleObjectTypes(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n select: (args?.$select ?? []),\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await client.objectFactory2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),\n nextPageToken: result.nextPageToken,\n totalCount: result.totalCount,\n });\n}\n/** @internal */\nexport async function fetchPageInternal(client, objectType, objectSet, args = {}) {\n if (objectType.type === \"interface\") {\n return await fetchInterfacePage(client, objectType, args, objectSet); // fixme\n }\n else {\n return await fetchObjectPage(client, objectType, args, objectSet); // fixme\n }\n}\n/** @internal */\nexport async function fetchPageWithErrorsInternal(client, objectType, objectSet, args = {}) {\n try {\n const result = await fetchPageInternal(client, objectType, objectSet, args);\n return { value: result };\n }\n catch (e) {\n if (e instanceof Error) {\n return { error: e };\n }\n return { error: e };\n }\n}\n/**\n * @param client\n * @param objectType\n * @param args\n * @param objectSet\n * @returns\n * @internal\n */\nexport async function fetchPage(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageInternal(client, objectType, objectSet, args);\n}\n/** @internal */\nexport async function fetchPageWithErrors(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageWithErrorsInternal(client, objectType, objectSet, args);\n}\nfunction applyFetchArgs(args, body) {\n if (args?.$nextPageToken) {\n body.pageToken = args.$nextPageToken;\n }\n if (args?.$pageSize != null) {\n body.pageSize = args.$pageSize;\n }\n if (args?.$orderBy != null) {\n body.orderBy = {\n fields: Object.entries(args.$orderBy).map(([field, direction]) => ({\n field,\n direction,\n })),\n };\n }\n return body;\n}\n/** @internal */\nexport async function fetchObjectPage(client, objectType, args, objectSet) {\n const r = await OntologiesV2.OntologyObjectSets.load(addUserAgentAndRequestContextHeaders(client, objectType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n // We have to do the following case because LoadObjectSetRequestV2 isn't readonly\n select: (args?.$select ?? []), // FIXME?\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await client.objectFactory(client, r.data, undefined, undefined, args.$select),\n nextPageToken: r.nextPageToken,\n totalCount: r.totalCount,\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -320,7 +320,7 @@ export class ObjectSetListenerWebsocket {
320
320
  for (const key of keysToDelete) {
321
321
  delete o.object[key];
322
322
  }
323
- const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [o.object], undefined);
323
+ const osdkObjectArray = await this.#client.objectFactory(this.#client, [o.object], undefined);
324
324
  const singleOsdkObject = osdkObjectArray[0] ?? undefined;
325
325
  return singleOsdkObject != null ? {
326
326
  object: singleOsdkObject,
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetListenerWebsocket.js","names":["WebSocket","invariant","convertWireToOsdkObjects","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","onSuccessfulSubscription","isReady","sub","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","maybeDisconnectTimeout","constructor","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","subscribe","objectType","objectSet","listener","properties","objDef","ontologyProvider","getObjectDefinition","apiName","length","Object","keys","objectProperties","filter","p","type","referenceProperties","primaryKeyPropertyName","primaryKeyApiName","requestedProperties","requestedReferenceProperties","subscriptionId","crypto","randomUUID","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","ensureWebsocket","readyState","OPEN","sendSubscribeMessage","error","#sendSubscribeMessage","readySubs","values","id","requests","map","propertySet","referenceSet","payload","send","JSON","stringify","#unsubscribe","newStatus","delete","clearTimeout","setTimeout","undefined","size","cycleWebsocket","#ensureWebsocket","tokenProvider","base","URL","url","host","ontologyRid","token","nextConnectTime","Date","now","Promise","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","handleMessage_objectSetChanged","handleMessage_refreshObjectSet","handleMessage_subscribeResponses","handleMessage_subscriptionClosed","objectUpdates","updates","update","referenceUpdates","osdkObjectsWithReferenceUpdates","all","o","osdkObjectArray","__apiName","__primaryKey","primaryKey","property","value","singleOsdkObject","object","state","osdkObject","osdkObjects","keysToDelete","key","includes","responses","subs","i","response","errors","shouldFireOutOfDate","#handleMessage_subscriptionClosed","cause","event","#cycleWebsocket","CLOSING","CLOSED","close","s"],"sources":["ObjectSetListenerWebsocket.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nimport { convertWireToOsdkObjects } from \"../object/convertWireToOsdkObjects.js\";\nconst MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;\n/** Noop function to reduce conditional checks */\nfunction doNothing() { }\n/**\n * Converts an ObjectSetListener to one where all the functions are defined.\n */\nfunction fillOutListener({ onChange = doNothing, onError = doNothing, onOutOfDate = doNothing, onSuccessfulSubscription = doNothing, }) {\n return { onChange, onError, onOutOfDate, onSuccessfulSubscription };\n}\nfunction isReady(sub) {\n return sub.isReady != null;\n}\nfunction subscriptionIsDone(sub) {\n return sub.status === \"done\" || sub.status === \"error\";\n}\n/** @internal */\nexport class ObjectSetListenerWebsocket {\n static #instances = new WeakMap();\n MINIMUM_RECONNECT_DELAY_MS;\n // FIXME\n static getInstance(client) {\n let instance = ObjectSetListenerWebsocket.#instances.get(client.clientCacheKey);\n if (instance == null) {\n instance = new ObjectSetListenerWebsocket(client);\n ObjectSetListenerWebsocket.#instances.set(client.clientCacheKey, instance);\n }\n return instance;\n }\n #ws;\n #lastWsConnect = 0;\n #client;\n #logger;\n /**\n * map of requestId to all active subscriptions at the time of the request\n */\n #pendingSubscriptions = new Map();\n /**\n * Map of subscriptionId to Subscription. Note: the subscriptionId may be\n * temporary and not the actual subscriptionId from the server.\n */\n #subscriptions = new Map();\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;\n this.#client = client;\n this.#logger = client.logger?.child({}, {\n msgPrefix: \"<OSW> \",\n });\n invariant(client.baseUrl.startsWith(\"https://\")\n || client.baseUrl.startsWith(\"http://\"), \"Stack must be a URL\");\n }\n async subscribe(objectType, objectSet, listener, properties = []) {\n if (process.env.TARGET !== \"browser\") {\n // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This\n // will not be needed after our minimum version is 19 or greater.\n globalThis.crypto ??= (await import(\"node:crypto\")).webcrypto;\n }\n const objDef = await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName);\n if (properties.length === 0) {\n properties = Object.keys(objDef.properties);\n }\n const objectProperties = properties.filter((p) => objDef.properties[p].type !== \"geotimeSeriesReference\");\n const referenceProperties = properties.filter((p) => objDef.properties[p].type === \"geotimeSeriesReference\");\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n primaryKeyPropertyName: objDef.primaryKeyApiName,\n requestedProperties: objectProperties,\n requestedReferenceProperties: referenceProperties,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${crypto.randomUUID()}`,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n try {\n await this.#ensureWebsocket();\n // the consumer may have already unsubscribed before we are ready to request a subscription\n // so we have to acquire the pendingSubscription after the await.\n if (subscriptionIsDone(sub)) {\n return;\n }\n sub.isReady = true;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n sub.listener.onError([error]);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n if (readySubs.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage(): aborting due to no ready subscriptions\");\n }\n return;\n }\n // Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.\n const id = crypto.randomUUID();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ objectSet, requestedProperties, requestedReferenceProperties }) => {\n return {\n objectSet: objectSet,\n propertySet: requestedProperties,\n referenceSet: requestedReferenceProperties,\n };\n }),\n };\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: subscribe }, \"sending subscribe message\");\n }\n this.#ws?.send(JSON.stringify(subscribe));\n }\n #unsubscribe(sub, newStatus = \"done\") {\n if (subscriptionIsDone(sub)) {\n // if we are already done, we don't need to do anything\n return;\n }\n sub.status = newStatus;\n // make sure listeners do nothing now\n sub.listener = fillOutListener({});\n this.#subscriptions.delete(sub.subscriptionId);\n this.#sendSubscribeMessage();\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const base = new URL(baseUrl);\n const url = `wss://${base.host}/api/v2/ontologySubscriptions/ontologies/${this.#client.ontologyRid}/streamSubscriptions`;\n const token = await tokenProvider();\n // tokenProvider is async, there could potentially be a race to create the websocket.\n // Only the first call to reach here will find a null this.#ws, the rest will bail out\n if (this.#ws == null) {\n // TODO this can probably be exponential backoff with jitter\n // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY\n const nextConnectTime = (this.#lastWsConnect ?? 0)\n + this.MINIMUM_RECONNECT_DELAY_MS;\n if (nextConnectTime > Date.now()) {\n await new Promise((resolve) => {\n setTimeout(resolve, nextConnectTime - Date.now());\n });\n }\n this.#lastWsConnect = Date.now();\n // we again may have lost the race after our minimum backoff time\n if (this.#ws == null) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"Creating websocket\");\n }\n this.#ws = new WebSocket(url, [`Bearer-${token}`]);\n this.#ws.addEventListener(\"close\", this.#onClose);\n this.#ws.addEventListener(\"message\", this.#onMessage);\n this.#ws.addEventListener(\"open\", this.#onOpen);\n }\n }\n // Allow await-ing the websocket open event if it isn't open already.\n // This needs to happen even for callers that didn't just create this.#ws\n if (this.#ws.readyState === WebSocket.CONNECTING) {\n const ws = this.#ws;\n return new Promise((resolve, reject) => {\n function cleanup() {\n ws.removeEventListener(\"open\", open);\n ws.removeEventListener(\"error\", error);\n ws.removeEventListener(\"close\", cleanup);\n }\n function open() {\n cleanup();\n resolve();\n }\n function error(evt) {\n cleanup();\n reject(evt);\n }\n ws.addEventListener(\"open\", open);\n ws.addEventListener(\"error\", error);\n ws.addEventListener(\"close\", cleanup);\n });\n }\n }\n }\n #onOpen = () => {\n // resubscribe all of the listeners\n this.#sendSubscribeMessage();\n };\n #onMessage = async (message) => {\n const data = JSON.parse(message.data.toString());\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: data }, \"received message from ws\");\n }\n switch (data.type) {\n case \"objectSetChanged\":\n return this.#handleMessage_objectSetChanged(data);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data);\n case \"subscriptionClosed\": {\n return this.#handleMessage_subscriptionClosed(data);\n }\n default:\n const _ = data;\n invariant(false, \"Unexpected message type\");\n }\n };\n #handleMessage_objectSetChanged = async (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null)\n return;\n const objectUpdates = payload.updates.filter((update) => update.type === \"object\");\n const referenceUpdates = payload.updates.filter((update) => update.type === \"reference\");\n const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async (o) => {\n const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [{\n __apiName: o.objectType,\n __primaryKey: o.primaryKey[sub.primaryKeyPropertyName],\n ...o.primaryKey,\n [o.property]: o.value,\n }], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: \"ADDED_OR_UPDATED\",\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjectsWithReferenceUpdates) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n const osdkObjects = await Promise.all(objectUpdates.map(async (o) => {\n const keysToDelete = Object.keys(o.object).filter((key) => sub.requestedReferenceProperties.includes(key));\n for (const key of keysToDelete) {\n delete o.object[key];\n }\n const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [o.object], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: o.state,\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjects) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onOutOfDate();\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n sub.listener.onError(response.errors);\n this.#unsubscribe(sub, \"error\");\n break;\n case \"qos\":\n // the server has requested that we tear down our websocket and reconnect to help load balance\n this.#cycleWebsocket();\n break;\n case \"success\":\n // `\"preparing\"` should only be the status on an initial subscribe.\n const shouldFireOutOfDate = sub.status === \"expired\"\n || sub.status === \"reconnecting\";\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ shouldFireOutOfDate }, \"success\");\n }\n sub.status = \"subscribed\";\n if (sub.subscriptionId !== response.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n else\n sub.listener.onSuccessfulSubscription();\n break;\n default:\n const _ = response;\n sub.listener.onError(response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onError([payload.cause]);\n this.#unsubscribe(sub, \"error\");\n }\n #onClose = (event) => {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ event }, \"Received close event from ws\", event);\n }\n // TODO we should probably throttle this so we don't abuse the backend\n this.#cycleWebsocket();\n };\n #cycleWebsocket = () => {\n if (this.#ws) {\n this.#ws.removeEventListener(\"open\", this.#onOpen);\n this.#ws.removeEventListener(\"message\", this.#onMessage);\n this.#ws.removeEventListener(\"close\", this.#onClose);\n if (this.#ws.readyState !== WebSocket.CLOSING\n && this.#ws.readyState !== WebSocket.CLOSED) {\n this.#ws.close();\n }\n this.#ws = undefined;\n }\n // if we have any listeners that are still depending on us, go ahead and reopen the websocket\n if (this.#subscriptions.size > 0) {\n if (process.env.NODE_ENV !== \"production\") {\n for (const s of this.#subscriptions.values()) {\n invariant(s.status !== \"done\" && s.status !== \"error\", \"should not have done/error subscriptions still\");\n }\n }\n for (const s of this.#subscriptions.values()) {\n if (s.status === \"subscribed\")\n s.status = \"reconnecting\";\n }\n this.#ensureWebsocket();\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetListenerWebsocket.js","names":["WebSocket","invariant","convertWireToOsdkObjects","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","onSuccessfulSubscription","isReady","sub","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","maybeDisconnectTimeout","constructor","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","subscribe","objectType","objectSet","listener","properties","objDef","ontologyProvider","getObjectDefinition","apiName","length","Object","keys","objectProperties","filter","p","type","referenceProperties","primaryKeyPropertyName","primaryKeyApiName","requestedProperties","requestedReferenceProperties","subscriptionId","crypto","randomUUID","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","ensureWebsocket","readyState","OPEN","sendSubscribeMessage","error","#sendSubscribeMessage","readySubs","values","id","requests","map","propertySet","referenceSet","payload","send","JSON","stringify","#unsubscribe","newStatus","delete","clearTimeout","setTimeout","undefined","size","cycleWebsocket","#ensureWebsocket","tokenProvider","base","URL","url","host","ontologyRid","token","nextConnectTime","Date","now","Promise","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","handleMessage_objectSetChanged","handleMessage_refreshObjectSet","handleMessage_subscribeResponses","handleMessage_subscriptionClosed","objectUpdates","updates","update","referenceUpdates","osdkObjectsWithReferenceUpdates","all","o","osdkObjectArray","__apiName","__primaryKey","primaryKey","property","value","singleOsdkObject","object","state","osdkObject","osdkObjects","keysToDelete","key","includes","objectFactory","responses","subs","i","response","errors","shouldFireOutOfDate","#handleMessage_subscriptionClosed","cause","event","#cycleWebsocket","CLOSING","CLOSED","close","s"],"sources":["ObjectSetListenerWebsocket.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nimport { convertWireToOsdkObjects } from \"../object/convertWireToOsdkObjects.js\";\nconst MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;\n/** Noop function to reduce conditional checks */\nfunction doNothing() { }\n/**\n * Converts an ObjectSetListener to one where all the functions are defined.\n */\nfunction fillOutListener({ onChange = doNothing, onError = doNothing, onOutOfDate = doNothing, onSuccessfulSubscription = doNothing, }) {\n return { onChange, onError, onOutOfDate, onSuccessfulSubscription };\n}\nfunction isReady(sub) {\n return sub.isReady != null;\n}\nfunction subscriptionIsDone(sub) {\n return sub.status === \"done\" || sub.status === \"error\";\n}\n/** @internal */\nexport class ObjectSetListenerWebsocket {\n static #instances = new WeakMap();\n MINIMUM_RECONNECT_DELAY_MS;\n // FIXME\n static getInstance(client) {\n let instance = ObjectSetListenerWebsocket.#instances.get(client.clientCacheKey);\n if (instance == null) {\n instance = new ObjectSetListenerWebsocket(client);\n ObjectSetListenerWebsocket.#instances.set(client.clientCacheKey, instance);\n }\n return instance;\n }\n #ws;\n #lastWsConnect = 0;\n #client;\n #logger;\n /**\n * map of requestId to all active subscriptions at the time of the request\n */\n #pendingSubscriptions = new Map();\n /**\n * Map of subscriptionId to Subscription. Note: the subscriptionId may be\n * temporary and not the actual subscriptionId from the server.\n */\n #subscriptions = new Map();\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;\n this.#client = client;\n this.#logger = client.logger?.child({}, {\n msgPrefix: \"<OSW> \",\n });\n invariant(client.baseUrl.startsWith(\"https://\")\n || client.baseUrl.startsWith(\"http://\"), \"Stack must be a URL\");\n }\n async subscribe(objectType, objectSet, listener, properties = []) {\n if (process.env.TARGET !== \"browser\") {\n // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This\n // will not be needed after our minimum version is 19 or greater.\n globalThis.crypto ??= (await import(\"node:crypto\")).webcrypto;\n }\n const objDef = await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName);\n if (properties.length === 0) {\n properties = Object.keys(objDef.properties);\n }\n const objectProperties = properties.filter((p) => objDef.properties[p].type !== \"geotimeSeriesReference\");\n const referenceProperties = properties.filter((p) => objDef.properties[p].type === \"geotimeSeriesReference\");\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n primaryKeyPropertyName: objDef.primaryKeyApiName,\n requestedProperties: objectProperties,\n requestedReferenceProperties: referenceProperties,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${crypto.randomUUID()}`,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n try {\n await this.#ensureWebsocket();\n // the consumer may have already unsubscribed before we are ready to request a subscription\n // so we have to acquire the pendingSubscription after the await.\n if (subscriptionIsDone(sub)) {\n return;\n }\n sub.isReady = true;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n sub.listener.onError([error]);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n if (readySubs.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage(): aborting due to no ready subscriptions\");\n }\n return;\n }\n // Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.\n const id = crypto.randomUUID();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ objectSet, requestedProperties, requestedReferenceProperties }) => {\n return {\n objectSet: objectSet,\n propertySet: requestedProperties,\n referenceSet: requestedReferenceProperties,\n };\n }),\n };\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: subscribe }, \"sending subscribe message\");\n }\n this.#ws?.send(JSON.stringify(subscribe));\n }\n #unsubscribe(sub, newStatus = \"done\") {\n if (subscriptionIsDone(sub)) {\n // if we are already done, we don't need to do anything\n return;\n }\n sub.status = newStatus;\n // make sure listeners do nothing now\n sub.listener = fillOutListener({});\n this.#subscriptions.delete(sub.subscriptionId);\n this.#sendSubscribeMessage();\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const base = new URL(baseUrl);\n const url = `wss://${base.host}/api/v2/ontologySubscriptions/ontologies/${this.#client.ontologyRid}/streamSubscriptions`;\n const token = await tokenProvider();\n // tokenProvider is async, there could potentially be a race to create the websocket.\n // Only the first call to reach here will find a null this.#ws, the rest will bail out\n if (this.#ws == null) {\n // TODO this can probably be exponential backoff with jitter\n // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY\n const nextConnectTime = (this.#lastWsConnect ?? 0)\n + this.MINIMUM_RECONNECT_DELAY_MS;\n if (nextConnectTime > Date.now()) {\n await new Promise((resolve) => {\n setTimeout(resolve, nextConnectTime - Date.now());\n });\n }\n this.#lastWsConnect = Date.now();\n // we again may have lost the race after our minimum backoff time\n if (this.#ws == null) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"Creating websocket\");\n }\n this.#ws = new WebSocket(url, [`Bearer-${token}`]);\n this.#ws.addEventListener(\"close\", this.#onClose);\n this.#ws.addEventListener(\"message\", this.#onMessage);\n this.#ws.addEventListener(\"open\", this.#onOpen);\n }\n }\n // Allow await-ing the websocket open event if it isn't open already.\n // This needs to happen even for callers that didn't just create this.#ws\n if (this.#ws.readyState === WebSocket.CONNECTING) {\n const ws = this.#ws;\n return new Promise((resolve, reject) => {\n function cleanup() {\n ws.removeEventListener(\"open\", open);\n ws.removeEventListener(\"error\", error);\n ws.removeEventListener(\"close\", cleanup);\n }\n function open() {\n cleanup();\n resolve();\n }\n function error(evt) {\n cleanup();\n reject(evt);\n }\n ws.addEventListener(\"open\", open);\n ws.addEventListener(\"error\", error);\n ws.addEventListener(\"close\", cleanup);\n });\n }\n }\n }\n #onOpen = () => {\n // resubscribe all of the listeners\n this.#sendSubscribeMessage();\n };\n #onMessage = async (message) => {\n const data = JSON.parse(message.data.toString());\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: data }, \"received message from ws\");\n }\n switch (data.type) {\n case \"objectSetChanged\":\n return this.#handleMessage_objectSetChanged(data);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data);\n case \"subscriptionClosed\": {\n return this.#handleMessage_subscriptionClosed(data);\n }\n default:\n const _ = data;\n invariant(false, \"Unexpected message type\");\n }\n };\n #handleMessage_objectSetChanged = async (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null)\n return;\n const objectUpdates = payload.updates.filter((update) => update.type === \"object\");\n const referenceUpdates = payload.updates.filter((update) => update.type === \"reference\");\n const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async (o) => {\n const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [{\n __apiName: o.objectType,\n __primaryKey: o.primaryKey[sub.primaryKeyPropertyName],\n ...o.primaryKey,\n [o.property]: o.value,\n }], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: \"ADDED_OR_UPDATED\",\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjectsWithReferenceUpdates) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n const osdkObjects = await Promise.all(objectUpdates.map(async (o) => {\n const keysToDelete = Object.keys(o.object).filter((key) => sub.requestedReferenceProperties.includes(key));\n for (const key of keysToDelete) {\n delete o.object[key];\n }\n const osdkObjectArray = await this.#client.objectFactory(this.#client, [o.object], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: o.state,\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjects) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onOutOfDate();\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n sub.listener.onError(response.errors);\n this.#unsubscribe(sub, \"error\");\n break;\n case \"qos\":\n // the server has requested that we tear down our websocket and reconnect to help load balance\n this.#cycleWebsocket();\n break;\n case \"success\":\n // `\"preparing\"` should only be the status on an initial subscribe.\n const shouldFireOutOfDate = sub.status === \"expired\"\n || sub.status === \"reconnecting\";\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ shouldFireOutOfDate }, \"success\");\n }\n sub.status = \"subscribed\";\n if (sub.subscriptionId !== response.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n else\n sub.listener.onSuccessfulSubscription();\n break;\n default:\n const _ = response;\n sub.listener.onError(response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onError([payload.cause]);\n this.#unsubscribe(sub, \"error\");\n }\n #onClose = (event) => {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ event }, \"Received close event from ws\", event);\n }\n // TODO we should probably throttle this so we don't abuse the backend\n this.#cycleWebsocket();\n };\n #cycleWebsocket = () => {\n if (this.#ws) {\n this.#ws.removeEventListener(\"open\", this.#onOpen);\n this.#ws.removeEventListener(\"message\", this.#onMessage);\n this.#ws.removeEventListener(\"close\", this.#onClose);\n if (this.#ws.readyState !== WebSocket.CLOSING\n && this.#ws.readyState !== WebSocket.CLOSED) {\n this.#ws.close();\n }\n this.#ws = undefined;\n }\n // if we have any listeners that are still depending on us, go ahead and reopen the websocket\n if (this.#subscriptions.size > 0) {\n if (process.env.NODE_ENV !== \"production\") {\n for (const s of this.#subscriptions.values()) {\n invariant(s.status !== \"done\" && s.status !== \"error\", \"should not have done/error subscriptions still\");\n }\n }\n for (const s of this.#subscriptions.values()) {\n if (s.status === \"subscribed\")\n s.status = \"reconnecting\";\n }\n this.#ensureWebsocket();\n }\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,eAAe;AACrC,OAAOC,SAAS,MAAM,gBAAgB;AACtC,SAASC,wBAAwB,QAAQ,uCAAuC;AAChF,MAAMC,0BAA0B,GAAG,CAAC,GAAG,IAAI;AAC3C;AACA,SAASC,SAASA,CAAA,EAAG,CAAE;AACvB;AACA;AACA;AACA,SAASC,eAAeA,CAAC;EAAEC,QAAQ,GAAGF,SAAS;EAAEG,OAAO,GAAGH,SAAS;EAAEI,WAAW,GAAGJ,SAAS;EAAEK,wBAAwB,GAAGL;AAAW,CAAC,EAAE;EACpI,OAAO;IAAEE,QAAQ;IAAEC,OAAO;IAAEC,WAAW;IAAEC;EAAyB,CAAC;AACvE;AACA,SAASC,OAAOA,CAACC,GAAG,EAAE;EAClB,OAAOA,GAAG,CAACD,OAAO,IAAI,IAAI;AAC9B;AACA,SAASE,kBAAkBA,CAACD,GAAG,EAAE;EAC7B,OAAOA,GAAG,CAACE,MAAM,KAAK,MAAM,IAAIF,GAAG,CAACE,MAAM,KAAK,OAAO;AAC1D;AACA;AACA,OAAO,MAAMC,0BAA0B,CAAC;EACpC,OAAO,CAACC,SAAS,GAAG,IAAIC,OAAO,CAAC,CAAC;EACjCb,0BAA0B;EAC1B;EACA,OAAOc,WAAWA,CAACC,MAAM,EAAE;IACvB,IAAIC,QAAQ,GAAGL,0BAA0B,CAAC,CAACC,SAAS,CAACK,GAAG,CAACF,MAAM,CAACG,cAAc,CAAC;IAC/E,IAAIF,QAAQ,IAAI,IAAI,EAAE;MAClBA,QAAQ,GAAG,IAAIL,0BAA0B,CAACI,MAAM,CAAC;MACjDJ,0BAA0B,CAAC,CAACC,SAAS,CAACO,GAAG,CAACJ,MAAM,CAACG,cAAc,EAAEF,QAAQ,CAAC;IAC9E;IACA,OAAOA,QAAQ;EACnB;EACA,CAACI,EAAE;EACH,CAACC,aAAa,GAAG,CAAC;EAClB,CAACN,MAAM;EACP,CAACO,MAAM;EACP;AACJ;AACA;EACI,CAACC,oBAAoB,GAAG,IAAIC,GAAG,CAAC,CAAC;EACjC;AACJ;AACA;AACA;EACI,CAACC,aAAa,GAAG,IAAID,GAAG,CAAC,CAAC;EAC1B,CAACE,sBAAsB;EACvB;EACAC,WAAWA,CAACZ,MAAM,EAAE;IAAEa,uBAAuB,GAAG5B;EAA4B,CAAC,GAAG,CAAC,CAAC,EAAE;IAChF,IAAI,CAACA,0BAA0B,GAAG4B,uBAAuB;IACzD,IAAI,CAAC,CAACb,MAAM,GAAGA,MAAM;IACrB,IAAI,CAAC,CAACO,MAAM,GAAGP,MAAM,CAACO,MAAM,EAAEO,KAAK,CAAC,CAAC,CAAC,EAAE;MACpCC,SAAS,EAAE;IACf,CAAC,CAAC;IACF,EAAUf,MAAM,CAACgB,OAAO,CAACC,UAAU,CAAC,UAAU,CAAC,IACxCjB,MAAM,CAACgB,OAAO,CAACC,UAAU,CAAC,SAAS,CAAC,IAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAD3CrC,SAAS,QACoC,qBAAqB,IADlEA,SAAS;EAEb;EACA,MAAMsC,SAASA,CAACC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,UAAU,GAAG,EAAE,EAAE;IAM9D,MAAMC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC1B,MAAM,CAAC2B,gBAAgB,CAACC,mBAAmB,CAACN,UAAU,CAACO,OAAO,CAAC;IAC1F,IAAIJ,UAAU,CAACK,MAAM,KAAK,CAAC,EAAE;MACzBL,UAAU,GAAGM,MAAM,CAACC,IAAI,CAACN,MAAM,CAACD,UAAU,CAAC;IAC/C;IACA,MAAMQ,gBAAgB,GAAGR,UAAU,CAACS,MAAM,CAAEC,CAAC,IAAKT,MAAM,CAACD,UAAU,CAACU,CAAC,CAAC,CAACC,IAAI,KAAK,wBAAwB,CAAC;IACzG,MAAMC,mBAAmB,GAAGZ,UAAU,CAACS,MAAM,CAAEC,CAAC,IAAKT,MAAM,CAACD,UAAU,CAACU,CAAC,CAAC,CAACC,IAAI,KAAK,wBAAwB,CAAC;IAC5G,MAAM3C,GAAG,GAAG;MACR+B,QAAQ,EAAErC,eAAe,CAACqC,QAAQ,CAAC;MACnCD,SAAS;MACTe,sBAAsB,EAAEZ,MAAM,CAACa,iBAAiB;MAChDC,mBAAmB,EAAEP,gBAAgB;MACrCQ,4BAA4B,EAAEJ,mBAAmB;MACjD1C,MAAM,EAAE,WAAW;MACnB;MACA;MACA+C,cAAc,EAAE,OAAOC,MAAM,CAACC,UAAU,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,CAAClC,aAAa,CAACN,GAAG,CAACX,GAAG,CAACiD,cAAc,EAAEjD,GAAG,CAAC;IAChD;IACA;IACA,IAAI,CAAC,CAACoD,iBAAiB,CAACpD,GAAG,CAAC;IAC5B,OAAO,MAAM;MACT,IAAI,CAAC,CAACqD,WAAW,CAACrD,GAAG,CAAC;IAC1B,CAAC;EACL;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAM,CAACoD,iBAAiBE,CAACtD,GAAG,EAAE;IAC1B,IAAIyB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC,sBAAsB,CAAC;IAC/C;IACA,IAAI;MACA,MAAM,IAAI,CAAC,CAACC,eAAe,CAAC,CAAC;MAC7B;MACA;MACA,IAAIvD,kBAAkB,CAACD,GAAG,CAAC,EAAE;QACzB;MACJ;MACAA,GAAG,CAACD,OAAO,GAAG,IAAI;MAClB;MACA,IAAI,IAAI,CAAC,CAACa,EAAE,EAAE6C,UAAU,KAAKpE,SAAS,CAACqE,IAAI,EAAE;QACzC,IAAI,CAAC,CAACC,oBAAoB,CAAC,CAAC;MAChC;IACJ,CAAC,CACD,OAAOC,KAAK,EAAE;MACV,IAAI,CAAC,CAAC9C,MAAM,EAAE8C,KAAK,CAACA,KAAK,EAAE,6BAA6B,CAAC;MACzD5D,GAAG,CAAC+B,QAAQ,CAACnC,OAAO,CAAC,CAACgE,KAAK,CAAC,CAAC;IACjC;EACJ;EACA,CAACD,oBAAoBE,CAAA,EAAG;IACpB,IAAIpC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC,yBAAyB,CAAC;IAClD;IACA;IACA;IACA;IACA,MAAMO,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC7C,aAAa,CAAC8C,MAAM,CAAC,CAAC,CAAC,CAACtB,MAAM,CAAC1C,OAAO,CAAC;IACnE,IAAI+D,SAAS,CAACzB,MAAM,KAAK,CAAC,EAAE;MACxB,IAAIZ,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC,iEAAiE,CAAC;MAC1F;MACA;IACJ;IACA;IACA,MAAMS,EAAE,GAAGd,MAAM,CAACC,UAAU,CAAC,CAAC;IAC9B;IACA,IAAI,CAAC,CAACpC,oBAAoB,CAACJ,GAAG,CAACqD,EAAE,EAAEF,SAAS,CAAC;IAC7C;IACA;IACA,MAAMlC,SAAS,GAAG;MACdoC,EAAE;MACFC,QAAQ,EAAEH,SAAS,CAACI,GAAG,CAAC,CAAC;QAAEpC,SAAS;QAAEiB,mBAAmB;QAAEC;MAA6B,CAAC,KAAK;QAC1F,OAAO;UACHlB,SAAS,EAAEA,SAAS;UACpBqC,WAAW,EAAEpB,mBAAmB;UAChCqB,YAAY,EAAEpB;QAClB,CAAC;MACL,CAAC;IACL,CAAC;IACD,IAAIvB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC;QAAEc,OAAO,EAAEzC;MAAU,CAAC,EAAE,2BAA2B,CAAC;IAC5E;IACA,IAAI,CAAC,CAAChB,EAAE,EAAE0D,IAAI,CAACC,IAAI,CAACC,SAAS,CAAC5C,SAAS,CAAC,CAAC;EAC7C;EACA,CAACyB,WAAWoB,CAACzE,GAAG,EAAE0E,SAAS,GAAG,MAAM,EAAE;IAClC,IAAIzE,kBAAkB,CAACD,GAAG,CAAC,EAAE;MACzB;MACA;IACJ;IACAA,GAAG,CAACE,MAAM,GAAGwE,SAAS;IACtB;IACA1E,GAAG,CAAC+B,QAAQ,GAAGrC,eAAe,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,CAACuB,aAAa,CAAC0D,MAAM,CAAC3E,GAAG,CAACiD,cAAc,CAAC;IAC9C,IAAI,CAAC,CAACU,oBAAoB,CAAC,CAAC;IAC5B;IACA;IACA;IACA;IACA;IACA,IAAI,IAAI,CAAC,CAACzC,sBAAsB,EAAE;MAC9B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA0D,YAAY,CAAC,IAAI,CAAC,CAAC1D,sBAAsB,CAAC;IAC9C;IACA,IAAI,CAAC,CAACA,sBAAsB,GAAG2D,UAAU,CAAC,MAAM;MAC5C,IAAI,CAAC,CAAC3D,sBAAsB,GAAG4D,SAAS;MACxC,IAAI,IAAI,CAAC,CAAC7D,aAAa,CAAC8D,IAAI,KAAK,CAAC,EAAE;QAChC,IAAI,CAAC,CAACC,cAAc,CAAC,CAAC;MAC1B;IACJ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;EACvB;EACA,MAAM,CAACxB,eAAeyB,CAAA,EAAG;IACrB,IAAI,IAAI,CAAC,CAACrE,EAAE,IAAI,IAAI,EAAE;MAClB,MAAM;QAAEW,OAAO;QAAE2D;MAAc,CAAC,GAAG,IAAI,CAAC,CAAC3E,MAAM;MAC/C,MAAM4E,IAAI,GAAG,IAAIC,GAAG,CAAC7D,OAAO,CAAC;MAC7B,MAAM8D,GAAG,GAAG,SAASF,IAAI,CAACG,IAAI,4CAA4C,IAAI,CAAC,CAAC/E,MAAM,CAACgF,WAAW,sBAAsB;MACxH,MAAMC,KAAK,GAAG,MAAMN,aAAa,CAAC,CAAC;MACnC;MACA;MACA,IAAI,IAAI,CAAC,CAACtE,EAAE,IAAI,IAAI,EAAE;QAClB;QACA;QACA,MAAM6E,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC5E,aAAa,IAAI,CAAC,IAC3C,IAAI,CAACrB,0BAA0B;QACrC,IAAIiG,eAAe,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE;UAC9B,MAAM,IAAIC,OAAO,CAAEC,OAAO,IAAK;YAC3BhB,UAAU,CAACgB,OAAO,EAAEJ,eAAe,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;UACrD,CAAC,CAAC;QACN;QACA,IAAI,CAAC,CAAC9E,aAAa,GAAG6E,IAAI,CAACC,GAAG,CAAC,CAAC;QAChC;QACA,IAAI,IAAI,CAAC,CAAC/E,EAAE,IAAI,IAAI,EAAE;UAClB,IAAIa,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;YACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC,oBAAoB,CAAC;UAC7C;UACA,IAAI,CAAC,CAAC3C,EAAE,GAAG,IAAIvB,SAAS,CAACgG,GAAG,EAAE,CAAC,UAAUG,KAAK,EAAE,CAAC,CAAC;UAClD,IAAI,CAAC,CAAC5E,EAAE,CAACkF,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACC,OAAO,CAAC;UACjD,IAAI,CAAC,CAACnF,EAAE,CAACkF,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAACE,SAAS,CAAC;UACrD,IAAI,CAAC,CAACpF,EAAE,CAACkF,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAACG,MAAM,CAAC;QACnD;MACJ;MACA;MACA;MACA,IAAI,IAAI,CAAC,CAACrF,EAAE,CAAC6C,UAAU,KAAKpE,SAAS,CAAC6G,UAAU,EAAE;QAC9C,MAAMtF,EAAE,GAAG,IAAI,CAAC,CAACA,EAAE;QACnB,OAAO,IAAIgF,OAAO,CAAC,CAACC,OAAO,EAAEM,MAAM,KAAK;UACpC,SAASC,OAAOA,CAAA,EAAG;YACfxF,EAAE,CAACyF,mBAAmB,CAAC,MAAM,EAAEC,IAAI,CAAC;YACpC1F,EAAE,CAACyF,mBAAmB,CAAC,OAAO,EAAEzC,KAAK,CAAC;YACtChD,EAAE,CAACyF,mBAAmB,CAAC,OAAO,EAAED,OAAO,CAAC;UAC5C;UACA,SAASE,IAAIA,CAAA,EAAG;YACZF,OAAO,CAAC,CAAC;YACTP,OAAO,CAAC,CAAC;UACb;UACA,SAASjC,KAAKA,CAAC2C,GAAG,EAAE;YAChBH,OAAO,CAAC,CAAC;YACTD,MAAM,CAACI,GAAG,CAAC;UACf;UACA3F,EAAE,CAACkF,gBAAgB,CAAC,MAAM,EAAEQ,IAAI,CAAC;UACjC1F,EAAE,CAACkF,gBAAgB,CAAC,OAAO,EAAElC,KAAK,CAAC;UACnChD,EAAE,CAACkF,gBAAgB,CAAC,OAAO,EAAEM,OAAO,CAAC;QACzC,CAAC,CAAC;MACN;IACJ;EACJ;EACA,CAACH,MAAM,GAAGO,CAAA,KAAM;IACZ;IACA,IAAI,CAAC,CAAC7C,oBAAoB,CAAC,CAAC;EAChC,CAAC;EACD,CAACqC,SAAS,GAAG,MAAOS,OAAO,IAAK;IAC5B,MAAMC,IAAI,GAAGnC,IAAI,CAACoC,KAAK,CAACF,OAAO,CAACC,IAAI,CAACE,QAAQ,CAAC,CAAC,CAAC;IAChD,IAAInF,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC;QAAEc,OAAO,EAAEqC;MAAK,CAAC,EAAE,0BAA0B,CAAC;IACtE;IACA,QAAQA,IAAI,CAAC/D,IAAI;MACb,KAAK,kBAAkB;QACnB,OAAO,IAAI,CAAC,CAACkE,8BAA8B,CAACH,IAAI,CAAC;MACrD,KAAK,kBAAkB;QACnB,OAAO,IAAI,CAAC,CAACI,8BAA8B,CAACJ,IAAI,CAAC;MACrD,KAAK,oBAAoB;QACrB,OAAO,IAAI,CAAC,CAACK,gCAAgC,CAACL,IAAI,CAAC;MACvD,KAAK,oBAAoB;QAAE;UACvB,OAAO,IAAI,CAAC,CAACM,gCAAgC,CAACN,IAAI,CAAC;QACvD;MACA;QAEIjF,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAArC,SAAS,QAAQ,yBAAyB,IAA1CA,SAAS;IACjB;EACJ,CAAC;EACD,CAACuH,8BAA8B,GAAG,MAAOxC,OAAO,IAAK;IACjD,MAAMrE,GAAG,GAAG,IAAI,CAAC,CAACiB,aAAa,CAACR,GAAG,CAAC4D,OAAO,CAACL,EAAE,CAAC;IAC/C,IAAIhE,GAAG,IAAI,IAAI,EACX;IACJ,MAAMiH,aAAa,GAAG5C,OAAO,CAAC6C,OAAO,CAACzE,MAAM,CAAE0E,MAAM,IAAKA,MAAM,CAACxE,IAAI,KAAK,QAAQ,CAAC;IAClF,MAAMyE,gBAAgB,GAAG/C,OAAO,CAAC6C,OAAO,CAACzE,MAAM,CAAE0E,MAAM,IAAKA,MAAM,CAACxE,IAAI,KAAK,WAAW,CAAC;IACxF,MAAM0E,+BAA+B,GAAG,MAAMzB,OAAO,CAAC0B,GAAG,CAACF,gBAAgB,CAAClD,GAAG,CAAC,MAAOqD,CAAC,IAAK;MACxF,MAAMC,eAAe,GAAG,MAAMjI,wBAAwB,CAAC,IAAI,CAAC,CAACgB,MAAM,EAAE,CAAC;QAC9DkH,SAAS,EAAEF,CAAC,CAAC1F,UAAU;QACvB6F,YAAY,EAAEH,CAAC,CAACI,UAAU,CAAC3H,GAAG,CAAC6C,sBAAsB,CAAC;QACtD,GAAG0E,CAAC,CAACI,UAAU;QACf,CAACJ,CAAC,CAACK,QAAQ,GAAGL,CAAC,CAACM;MACpB,CAAC,CAAC,EAAE/C,SAAS,CAAC;MAClB,MAAMgD,gBAAgB,GAAGN,eAAe,CAAC,CAAC,CAAC,IAAI1C,SAAS;MACxD,OAAOgD,gBAAgB,IAAI,IAAI,GACzB;QACEC,MAAM,EAAED,gBAAgB;QACxBE,KAAK,EAAE;MACX,CAAC,GACClD,SAAS;IACnB,CAAC,CAAC,CAAC;IACH,KAAK,MAAMmD,UAAU,IAAIZ,+BAA+B,EAAE;MACtD,IAAIY,UAAU,IAAI,IAAI,EAAE;QACpBjI,GAAG,CAAC+B,QAAQ,CAACpC,QAAQ,GAAGsI,UAAU,CAAC;MACvC;IACJ;IACA,MAAMC,WAAW,GAAG,MAAMtC,OAAO,CAAC0B,GAAG,CAACL,aAAa,CAAC/C,GAAG,CAAC,MAAOqD,CAAC,IAAK;MACjE,MAAMY,YAAY,GAAG7F,MAAM,CAACC,IAAI,CAACgF,CAAC,CAACQ,MAAM,CAAC,CAACtF,MAAM,CAAE2F,GAAG,IAAKpI,GAAG,CAACgD,4BAA4B,CAACqF,QAAQ,CAACD,GAAG,CAAC,CAAC;MAC1G,KAAK,MAAMA,GAAG,IAAID,YAAY,EAAE;QAC5B,OAAOZ,CAAC,CAACQ,MAAM,CAACK,GAAG,CAAC;MACxB;MACA,MAAMZ,eAAe,GAAG,MAAM,IAAI,CAAC,CAACjH,MAAM,CAAC+H,aAAa,CAAC,IAAI,CAAC,CAAC/H,MAAM,EAAE,CAACgH,CAAC,CAACQ,MAAM,CAAC,EAAEjD,SAAS,CAAC;MAC7F,MAAMgD,gBAAgB,GAAGN,eAAe,CAAC,CAAC,CAAC,IAAI1C,SAAS;MACxD,OAAOgD,gBAAgB,IAAI,IAAI,GACzB;QACEC,MAAM,EAAED,gBAAgB;QACxBE,KAAK,EAAET,CAAC,CAACS;MACb,CAAC,GACClD,SAAS;IACnB,CAAC,CAAC,CAAC;IACH,KAAK,MAAMmD,UAAU,IAAIC,WAAW,EAAE;MAClC,IAAID,UAAU,IAAI,IAAI,EAAE;QACpBjI,GAAG,CAAC+B,QAAQ,CAACpC,QAAQ,GAAGsI,UAAU,CAAC;MACvC;IACJ;EACJ,CAAC;EACD,CAACnB,8BAA8B,GAAIzC,OAAO,IAAK;IAC3C,MAAMrE,GAAG,GAAG,IAAI,CAAC,CAACiB,aAAa,CAACR,GAAG,CAAC4D,OAAO,CAACL,EAAE,CAAC;IAC/C,CAAUhE,GAAG,GAAAyB,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAbrC,SAAS,QAAM,4BAA4B+E,OAAO,CAACL,EAAE,EAAE,IAAvD1E,SAAS;IACTU,GAAG,CAAC+B,QAAQ,CAAClC,WAAW,CAAC,CAAC;EAC9B,CAAC;EACD,CAACkH,gCAAgC,GAAI1C,OAAO,IAAK;IAC7C,MAAM;MAAEL,EAAE;MAAEuE;IAAU,CAAC,GAAGlE,OAAO;IACjC,MAAMmE,IAAI,GAAG,IAAI,CAAC,CAACzH,oBAAoB,CAACN,GAAG,CAACuD,EAAE,CAAC;IAC/C,CAAUwE,IAAI,GAAA/G,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAdrC,SAAS,QAAO,0CAA0C0E,EAAE,EAAE,IAA9D1E,SAAS;IACT,IAAI,CAAC,CAACyB,oBAAoB,CAAC4D,MAAM,CAACX,EAAE,CAAC;IACrC,KAAK,IAAIyE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,SAAS,CAAClG,MAAM,EAAEoG,CAAC,EAAE,EAAE;MACvC,MAAMzI,GAAG,GAAGwI,IAAI,CAACC,CAAC,CAAC;MACnB,MAAMC,QAAQ,GAAGH,SAAS,CAACE,CAAC,CAAC;MAC7B,QAAQC,QAAQ,CAAC/F,IAAI;QACjB,KAAK,OAAO;UACR3C,GAAG,CAAC+B,QAAQ,CAACnC,OAAO,CAAC8I,QAAQ,CAACC,MAAM,CAAC;UACrC,IAAI,CAAC,CAACtF,WAAW,CAACrD,GAAG,EAAE,OAAO,CAAC;UAC/B;QACJ,KAAK,KAAK;UACN;UACA,IAAI,CAAC,CAACgF,cAAc,CAAC,CAAC;UACtB;QACJ,KAAK,SAAS;UACV;UACA,MAAM4D,mBAAmB,GAAG5I,GAAG,CAACE,MAAM,KAAK,SAAS,IAC7CF,GAAG,CAACE,MAAM,KAAK,cAAc;UACpC,IAAIuB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;YACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC;cAAEqF;YAAoB,CAAC,EAAE,SAAS,CAAC;UAC3D;UACA5I,GAAG,CAACE,MAAM,GAAG,YAAY;UACzB,IAAIF,GAAG,CAACiD,cAAc,KAAKyF,QAAQ,CAAC1E,EAAE,EAAE;YACpC;YACA,IAAI,CAAC,CAAC/C,aAAa,CAAC0D,MAAM,CAAC3E,GAAG,CAACiD,cAAc,CAAC;YAC9CjD,GAAG,CAACiD,cAAc,GAAGyF,QAAQ,CAAC1E,EAAE;YAChC,IAAI,CAAC,CAAC/C,aAAa,CAACN,GAAG,CAACX,GAAG,CAACiD,cAAc,EAAEjD,GAAG,CAAC,CAAC,CAAC;UACtD;UACA,IAAI4I,mBAAmB,EACnB5I,GAAG,CAAC+B,QAAQ,CAAClC,WAAW,CAAC,CAAC,CAAC,KAE3BG,GAAG,CAAC+B,QAAQ,CAACjC,wBAAwB,CAAC,CAAC;UAC3C;QACJ;UAEIE,GAAG,CAAC+B,QAAQ,CAACnC,OAAO,CAAC8I,QAAQ,CAAC;MACtC;IACJ;EACJ,CAAC;EACD,CAAC1B,gCAAgC6B,CAACxE,OAAO,EAAE;IACvC,MAAMrE,GAAG,GAAG,IAAI,CAAC,CAACiB,aAAa,CAACR,GAAG,CAAC4D,OAAO,CAACL,EAAE,CAAC;IAC/C,CAAUhE,GAAG,GAAAyB,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAbrC,SAAS,QAAM,4BAA4B+E,OAAO,CAACL,EAAE,EAAE,IAAvD1E,SAAS;IACTU,GAAG,CAAC+B,QAAQ,CAACnC,OAAO,CAAC,CAACyE,OAAO,CAACyE,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,CAACzF,WAAW,CAACrD,GAAG,EAAE,OAAO,CAAC;EACnC;EACA,CAAC+F,OAAO,GAAIgD,KAAK,IAAK;IAClB,IAAItH,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACvC,IAAI,CAAC,CAACb,MAAM,EAAEyC,KAAK,CAAC;QAAEwF;MAAM,CAAC,EAAE,8BAA8B,EAAEA,KAAK,CAAC;IACzE;IACA;IACA,IAAI,CAAC,CAAC/D,cAAc,CAAC,CAAC;EAC1B,CAAC;EACD,CAACA,cAAc,GAAGgE,CAAA,KAAM;IACpB,IAAI,IAAI,CAAC,CAACpI,EAAE,EAAE;MACV,IAAI,CAAC,CAACA,EAAE,CAACyF,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAACJ,MAAM,CAAC;MAClD,IAAI,CAAC,CAACrF,EAAE,CAACyF,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAACL,SAAS,CAAC;MACxD,IAAI,CAAC,CAACpF,EAAE,CAACyF,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACN,OAAO,CAAC;MACpD,IAAI,IAAI,CAAC,CAACnF,EAAE,CAAC6C,UAAU,KAAKpE,SAAS,CAAC4J,OAAO,IACtC,IAAI,CAAC,CAACrI,EAAE,CAAC6C,UAAU,KAAKpE,SAAS,CAAC6J,MAAM,EAAE;QAC7C,IAAI,CAAC,CAACtI,EAAE,CAACuI,KAAK,CAAC,CAAC;MACpB;MACA,IAAI,CAAC,CAACvI,EAAE,GAAGkE,SAAS;IACxB;IACA;IACA,IAAI,IAAI,CAAC,CAAC7D,aAAa,CAAC8D,IAAI,GAAG,CAAC,EAAE;MAC9B,IAAItD,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QACvC,KAAK,MAAMyH,CAAC,IAAI,IAAI,CAAC,CAACnI,aAAa,CAAC8C,MAAM,CAAC,CAAC,EAAE;UAC1C,EAAUqF,CAAC,CAAClJ,MAAM,KAAK,MAAM,IAAIkJ,CAAC,CAAClJ,MAAM,KAAK,OAAO,IAAAuB,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAArDrC,SAAS,QAA8C,gDAAgD,IAAvGA,SAAS;QACb;MACJ;MACA,KAAK,MAAM8J,CAAC,IAAI,IAAI,CAAC,CAACnI,aAAa,CAAC8C,MAAM,CAAC,CAAC,EAAE;QAC1C,IAAIqF,CAAC,CAAClJ,MAAM,KAAK,YAAY,EACzBkJ,CAAC,CAAClJ,MAAM,GAAG,cAAc;MACjC;MACA,IAAI,CAAC,CAACsD,eAAe,CAAC,CAAC;IAC3B;EACJ,CAAC;AACL","ignoreList":[]}
@@ -13,5 +13,5 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export const USER_AGENT = `osdk-client/${"2.1.0-beta.11"}`;
16
+ export const USER_AGENT = `osdk-client/${"2.1.0-beta.13"}`;
17
17
  //# sourceMappingURL=UserAgent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MinimalClientContext.d.ts","sourceRoot":"","sources":["../../src/MinimalClientContext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,EAAE,GAAG;IAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,mBAAmB;IACxD,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"MinimalClientContext.d.ts","sourceRoot":"","sources":["../../src/MinimalClientContext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,MAAM,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,EAAE,GAAG;IAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,mBAAmB;IACxD,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAQhB,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC"}
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { createSharedClientContext } from "@osdk/shared.client.impl";
17
+ import { convertWireToOsdkObjects, convertWireToOsdkObjects2 } from "./object/convertWireToOsdkObjects.js";
17
18
  import { createObjectSet } from "./objectSet/createObjectSet.js";
18
19
  import { createStandardOntologyProviderFactory } from "./ontology/StandardOntologyProvider.js";
19
20
  import { USER_AGENT } from "./util/UserAgent.js";
@@ -30,6 +31,8 @@ export function createMinimalClient(metadata, baseUrl, tokenProvider, options =
30
31
  const minimalClient = {
31
32
  ...createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn),
32
33
  objectSetFactory,
34
+ objectFactory: convertWireToOsdkObjects,
35
+ objectFactory2: convertWireToOsdkObjects2,
33
36
  ontologyRid: metadata.ontologyRid,
34
37
  logger: options.logger,
35
38
  clientCacheKey: {},
@@ -1 +1 @@
1
- {"version":3,"file":"createMinimalClient.js","names":["createSharedClientContext","createObjectSet","createStandardOntologyProviderFactory","USER_AGENT","createMinimalClient","metadata","baseUrl","tokenProvider","options","fetchFn","global","fetch","objectSetFactory","process","env","NODE_ENV","URL","e","hint","startsWith","Error","minimalClient","ontologyRid","logger","clientCacheKey","requestContext","Object","freeze","assign","ontologyProvider"],"sources":["createMinimalClient.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createSharedClientContext } from \"@osdk/shared.client.impl\";\nimport { createObjectSet } from \"./objectSet/createObjectSet.js\";\nimport { createStandardOntologyProviderFactory, } from \"./ontology/StandardOntologyProvider.js\";\nimport { USER_AGENT } from \"./util/UserAgent.js\";\n/** @internal */\nexport function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fetchFn = global.fetch, objectSetFactory = createObjectSet) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n new URL(baseUrl);\n }\n catch (e) {\n const hint = !baseUrl.startsWith(\"http://\") || !baseUrl.startsWith(\"https://\")\n ? \". Did you forget to add 'http://' or 'https://'?\"\n : \"\";\n throw new Error(`Invalid stack URL: ${baseUrl}${hint}`);\n }\n }\n const minimalClient = {\n ...createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn),\n objectSetFactory,\n ontologyRid: metadata.ontologyRid,\n logger: options.logger,\n clientCacheKey: {},\n requestContext: {},\n };\n return Object.freeze(Object.assign(minimalClient, {\n ontologyProvider: createStandardOntologyProviderFactory(options)(minimalClient),\n }));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,0BAA0B;AACpE,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,qCAAqC,QAAS,wCAAwC;AAC/F,SAASC,UAAU,QAAQ,qBAAqB;AAChD;AACA,OAAO,SAASC,mBAAmBA,CAACC,QAAQ,EAAEC,OAAO,EAAEC,aAAa,EAAEC,OAAO,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAGC,MAAM,CAACC,KAAK,EAAEC,gBAAgB,GAAGX,eAAe,EAAE;EAC5I,IAAIY,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACvC,IAAI;MACA,IAAIC,GAAG,CAACV,OAAO,CAAC;IACpB,CAAC,CACD,OAAOW,CAAC,EAAE;MACN,MAAMC,IAAI,GAAG,CAACZ,OAAO,CAACa,UAAU,CAAC,SAAS,CAAC,IAAI,CAACb,OAAO,CAACa,UAAU,CAAC,UAAU,CAAC,GACxE,kDAAkD,GAClD,EAAE;MACR,MAAM,IAAIC,KAAK,CAAC,sBAAsBd,OAAO,GAAGY,IAAI,EAAE,CAAC;IAC3D;EACJ;EACA,MAAMG,aAAa,GAAG;IAClB,GAAGrB,yBAAyB,CAACM,OAAO,EAAEC,aAAa,EAAEJ,UAAU,EAAEM,OAAO,CAAC;IACzEG,gBAAgB;IAChBU,WAAW,EAAEjB,QAAQ,CAACiB,WAAW;IACjCC,MAAM,EAAEf,OAAO,CAACe,MAAM;IACtBC,cAAc,EAAE,CAAC,CAAC;IAClBC,cAAc,EAAE,CAAC;EACrB,CAAC;EACD,OAAOC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACP,aAAa,EAAE;IAC9CQ,gBAAgB,EAAE3B,qCAAqC,CAACM,OAAO,CAAC,CAACa,aAAa;EAClF,CAAC,CAAC,CAAC;AACP","ignoreList":[]}
1
+ {"version":3,"file":"createMinimalClient.js","names":["createSharedClientContext","convertWireToOsdkObjects","convertWireToOsdkObjects2","createObjectSet","createStandardOntologyProviderFactory","USER_AGENT","createMinimalClient","metadata","baseUrl","tokenProvider","options","fetchFn","global","fetch","objectSetFactory","process","env","NODE_ENV","URL","e","hint","startsWith","Error","minimalClient","objectFactory","objectFactory2","ontologyRid","logger","clientCacheKey","requestContext","Object","freeze","assign","ontologyProvider"],"sources":["createMinimalClient.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createSharedClientContext } from \"@osdk/shared.client.impl\";\nimport { convertWireToOsdkObjects, convertWireToOsdkObjects2, } from \"./object/convertWireToOsdkObjects.js\";\nimport { createObjectSet } from \"./objectSet/createObjectSet.js\";\nimport { createStandardOntologyProviderFactory, } from \"./ontology/StandardOntologyProvider.js\";\nimport { USER_AGENT } from \"./util/UserAgent.js\";\n/** @internal */\nexport function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fetchFn = global.fetch, objectSetFactory = createObjectSet) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n new URL(baseUrl);\n }\n catch (e) {\n const hint = !baseUrl.startsWith(\"http://\") || !baseUrl.startsWith(\"https://\")\n ? \". Did you forget to add 'http://' or 'https://'?\"\n : \"\";\n throw new Error(`Invalid stack URL: ${baseUrl}${hint}`);\n }\n }\n const minimalClient = {\n ...createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn),\n objectSetFactory,\n objectFactory: convertWireToOsdkObjects,\n objectFactory2: convertWireToOsdkObjects2,\n ontologyRid: metadata.ontologyRid,\n logger: options.logger,\n clientCacheKey: {},\n requestContext: {},\n };\n return Object.freeze(Object.assign(minimalClient, {\n ontologyProvider: createStandardOntologyProviderFactory(options)(minimalClient),\n }));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,0BAA0B;AACpE,SAASC,wBAAwB,EAAEC,yBAAyB,QAAS,sCAAsC;AAC3G,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,qCAAqC,QAAS,wCAAwC;AAC/F,SAASC,UAAU,QAAQ,qBAAqB;AAChD;AACA,OAAO,SAASC,mBAAmBA,CAACC,QAAQ,EAAEC,OAAO,EAAEC,aAAa,EAAEC,OAAO,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAGC,MAAM,CAACC,KAAK,EAAEC,gBAAgB,GAAGX,eAAe,EAAE;EAC5I,IAAIY,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACvC,IAAI;MACA,IAAIC,GAAG,CAACV,OAAO,CAAC;IACpB,CAAC,CACD,OAAOW,CAAC,EAAE;MACN,MAAMC,IAAI,GAAG,CAACZ,OAAO,CAACa,UAAU,CAAC,SAAS,CAAC,IAAI,CAACb,OAAO,CAACa,UAAU,CAAC,UAAU,CAAC,GACxE,kDAAkD,GAClD,EAAE;MACR,MAAM,IAAIC,KAAK,CAAC,sBAAsBd,OAAO,GAAGY,IAAI,EAAE,CAAC;IAC3D;EACJ;EACA,MAAMG,aAAa,GAAG;IAClB,GAAGvB,yBAAyB,CAACQ,OAAO,EAAEC,aAAa,EAAEJ,UAAU,EAAEM,OAAO,CAAC;IACzEG,gBAAgB;IAChBU,aAAa,EAAEvB,wBAAwB;IACvCwB,cAAc,EAAEvB,yBAAyB;IACzCwB,WAAW,EAAEnB,QAAQ,CAACmB,WAAW;IACjCC,MAAM,EAAEjB,OAAO,CAACiB,MAAM;IACtBC,cAAc,EAAE,CAAC,CAAC;IAClBC,cAAc,EAAE,CAAC;EACrB,CAAC;EACD,OAAOC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACT,aAAa,EAAE;IAC9CU,gBAAgB,EAAE7B,qCAAqC,CAACM,OAAO,CAAC,CAACa,aAAa;EAClF,CAAC,CAAC,CAAC;AACP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/object/fetchPage.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,OAAO,EAOP,2BAA2B,EAE3B,YAAY,EAEb,MAAM,WAAW,CAAC;AAqBnB,wBAAgB,OAAO,CACrB,CAAC,SAAS,2BAA2B,EACrC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAEzB,IAAI,EAAE,CAAC,EACP,GAAG,UAAU,EAAE,CAAC,EAAE,GACjB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAEf"}
1
+ {"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/object/fetchPage.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,OAAO,EAMP,2BAA2B,EAE3B,YAAY,EAEb,MAAM,WAAW,CAAC;AAiBnB,wBAAgB,OAAO,CACrB,CAAC,SAAS,2BAA2B,EACrC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAEzB,IAAI,EAAE,CAAC,EACP,GAAG,UAAU,EAAE,CAAC,EAAE,GACjB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAEf"}
@@ -16,7 +16,6 @@
16
16
  import * as OntologiesV2 from "@osdk/internal.foundry.ontologiesv2";
17
17
  import { addUserAgentAndRequestContextHeaders } from "../util/addUserAgentAndRequestContextHeaders.js";
18
18
  import { resolveBaseObjectSetType } from "../util/objectSetUtils.js";
19
- import { convertWireToOsdkObjects, convertWireToOsdkObjects2 } from "./convertWireToOsdkObjects.js";
20
19
  export function augment(type, ...properties) {
21
20
  return {
22
21
  [type.apiName]: properties
@@ -53,7 +52,7 @@ async function fetchInterfacePage(client, interfaceType, args, objectSet) {
53
52
  }), {
54
53
  preview: true
55
54
  });
56
- result.data = await convertWireToOsdkObjects(client, result.data,
55
+ result.data = await client.objectFactory(client, result.data,
57
56
  // drop readonly
58
57
  interfaceType.apiName, !args.$includeRid);
59
58
  return result;
@@ -64,7 +63,7 @@ async function fetchInterfacePage(client, interfaceType, args, objectSet) {
64
63
  excludeRid: !args?.$includeRid
65
64
  }));
66
65
  return Promise.resolve({
67
- data: await convertWireToOsdkObjects2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),
66
+ data: await client.objectFactory2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),
68
67
  nextPageToken: result.nextPageToken,
69
68
  totalCount: result.totalCount
70
69
  });
@@ -137,7 +136,7 @@ export async function fetchObjectPage(client, objectType, args, objectSet) {
137
136
  excludeRid: !args?.$includeRid
138
137
  }));
139
138
  return Promise.resolve({
140
- data: await convertWireToOsdkObjects(client, r.data, undefined, undefined, args.$select),
139
+ data: await client.objectFactory(client, r.data, undefined, undefined, args.$select),
141
140
  nextPageToken: r.nextPageToken,
142
141
  totalCount: r.totalCount
143
142
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPage.js","names":["OntologiesV2","addUserAgentAndRequestContextHeaders","resolveBaseObjectSetType","convertWireToOsdkObjects","convertWireToOsdkObjects2","augment","type","properties","apiName","objectSetToSearchJsonV2","objectSet","expectedApiName","existingWhere","undefined","objectType","Error","interfaceType","where","value","fetchInterfacePage","client","args","$__UNSTABLE_useOldInterfaceApis","result","OntologyInterfaces","search","ontologyRid","applyFetchArgs","augmentedProperties","augmentedSharedPropertyTypes","otherInterfaceTypes","selectedObjectTypes","selectedSharedPropertyTypes","$select","preview","data","$includeRid","OntologyObjectSets","loadMultipleObjectTypes","select","excludeRid","Promise","resolve","interfaceToObjectTypeMappings","nextPageToken","totalCount","fetchPageInternal","fetchObjectPage","fetchPageWithErrorsInternal","e","error","fetchPage","fetchPageWithErrors","body","$nextPageToken","pageToken","$pageSize","pageSize","$orderBy","orderBy","fields","Object","entries","map","field","direction","r","load"],"sources":["fetchPage.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { resolveBaseObjectSetType } from \"../util/objectSetUtils.js\";\nimport { convertWireToOsdkObjects, convertWireToOsdkObjects2, } from \"./convertWireToOsdkObjects.js\";\nexport function augment(type, ...properties) {\n return { [type.apiName]: properties };\n}\n/** @internal */\nexport function objectSetToSearchJsonV2(objectSet, expectedApiName, existingWhere = undefined) {\n if (objectSet.type === \"base\" || objectSet.type === \"interfaceBase\") {\n if (objectSet.type === \"base\" && objectSet.objectType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.objectType}`);\n }\n if (objectSet.type === \"interfaceBase\"\n && objectSet.interfaceType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.interfaceType}`);\n }\n return existingWhere;\n }\n if (objectSet.type === \"filter\") {\n return objectSetToSearchJsonV2(objectSet.objectSet, expectedApiName, existingWhere == null ? objectSet.where : {\n type: \"and\",\n value: [existingWhere, objectSet.where],\n });\n }\n throw new Error(`Unsupported objectSet type: ${objectSet.type}`);\n}\nasync function fetchInterfacePage(client, interfaceType, args, objectSet) {\n if (args.$__UNSTABLE_useOldInterfaceApis) {\n const result = await OntologiesV2.OntologyInterfaces\n .search(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, interfaceType.apiName, applyFetchArgs(args, {\n augmentedProperties: {},\n augmentedSharedPropertyTypes: {},\n otherInterfaceTypes: [],\n selectedObjectTypes: [],\n selectedSharedPropertyTypes: args.$select\n ?? [],\n where: objectSetToSearchJsonV2(objectSet, interfaceType.apiName),\n }), { preview: true });\n result.data = await convertWireToOsdkObjects(client, result.data, // drop readonly\n interfaceType.apiName, !args.$includeRid);\n return result;\n }\n const result = await OntologiesV2.OntologyObjectSets.loadMultipleObjectTypes(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n select: (args?.$select ?? []),\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await convertWireToOsdkObjects2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),\n nextPageToken: result.nextPageToken,\n totalCount: result.totalCount,\n });\n}\n/** @internal */\nexport async function fetchPageInternal(client, objectType, objectSet, args = {}) {\n if (objectType.type === \"interface\") {\n return await fetchInterfacePage(client, objectType, args, objectSet); // fixme\n }\n else {\n return await fetchObjectPage(client, objectType, args, objectSet); // fixme\n }\n}\n/** @internal */\nexport async function fetchPageWithErrorsInternal(client, objectType, objectSet, args = {}) {\n try {\n const result = await fetchPageInternal(client, objectType, objectSet, args);\n return { value: result };\n }\n catch (e) {\n if (e instanceof Error) {\n return { error: e };\n }\n return { error: e };\n }\n}\n/**\n * @param client\n * @param objectType\n * @param args\n * @param objectSet\n * @returns\n * @internal\n */\nexport async function fetchPage(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageInternal(client, objectType, objectSet, args);\n}\n/** @internal */\nexport async function fetchPageWithErrors(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageWithErrorsInternal(client, objectType, objectSet, args);\n}\nfunction applyFetchArgs(args, body) {\n if (args?.$nextPageToken) {\n body.pageToken = args.$nextPageToken;\n }\n if (args?.$pageSize != null) {\n body.pageSize = args.$pageSize;\n }\n if (args?.$orderBy != null) {\n body.orderBy = {\n fields: Object.entries(args.$orderBy).map(([field, direction]) => ({\n field,\n direction,\n })),\n };\n }\n return body;\n}\n/** @internal */\nexport async function fetchObjectPage(client, objectType, args, objectSet) {\n const r = await OntologiesV2.OntologyObjectSets.load(addUserAgentAndRequestContextHeaders(client, objectType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n // We have to do the following case because LoadObjectSetRequestV2 isn't readonly\n select: (args?.$select ?? []), // FIXME?\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await convertWireToOsdkObjects(client, r.data, undefined, undefined, args.$select),\n nextPageToken: r.nextPageToken,\n totalCount: r.totalCount,\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fetchPage.js","names":["OntologiesV2","addUserAgentAndRequestContextHeaders","resolveBaseObjectSetType","augment","type","properties","apiName","objectSetToSearchJsonV2","objectSet","expectedApiName","existingWhere","undefined","objectType","Error","interfaceType","where","value","fetchInterfacePage","client","args","$__UNSTABLE_useOldInterfaceApis","result","OntologyInterfaces","search","ontologyRid","applyFetchArgs","augmentedProperties","augmentedSharedPropertyTypes","otherInterfaceTypes","selectedObjectTypes","selectedSharedPropertyTypes","$select","preview","data","objectFactory","$includeRid","OntologyObjectSets","loadMultipleObjectTypes","select","excludeRid","Promise","resolve","objectFactory2","interfaceToObjectTypeMappings","nextPageToken","totalCount","fetchPageInternal","fetchObjectPage","fetchPageWithErrorsInternal","e","error","fetchPage","fetchPageWithErrors","body","$nextPageToken","pageToken","$pageSize","pageSize","$orderBy","orderBy","fields","Object","entries","map","field","direction","r","load"],"sources":["fetchPage.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport { addUserAgentAndRequestContextHeaders } from \"../util/addUserAgentAndRequestContextHeaders.js\";\nimport { resolveBaseObjectSetType } from \"../util/objectSetUtils.js\";\nexport function augment(type, ...properties) {\n return { [type.apiName]: properties };\n}\n/** @internal */\nexport function objectSetToSearchJsonV2(objectSet, expectedApiName, existingWhere = undefined) {\n if (objectSet.type === \"base\" || objectSet.type === \"interfaceBase\") {\n if (objectSet.type === \"base\" && objectSet.objectType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.objectType}`);\n }\n if (objectSet.type === \"interfaceBase\"\n && objectSet.interfaceType !== expectedApiName) {\n throw new Error(`Expected objectSet.objectType to be ${expectedApiName}, but got ${objectSet.interfaceType}`);\n }\n return existingWhere;\n }\n if (objectSet.type === \"filter\") {\n return objectSetToSearchJsonV2(objectSet.objectSet, expectedApiName, existingWhere == null ? objectSet.where : {\n type: \"and\",\n value: [existingWhere, objectSet.where],\n });\n }\n throw new Error(`Unsupported objectSet type: ${objectSet.type}`);\n}\nasync function fetchInterfacePage(client, interfaceType, args, objectSet) {\n if (args.$__UNSTABLE_useOldInterfaceApis) {\n const result = await OntologiesV2.OntologyInterfaces\n .search(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, interfaceType.apiName, applyFetchArgs(args, {\n augmentedProperties: {},\n augmentedSharedPropertyTypes: {},\n otherInterfaceTypes: [],\n selectedObjectTypes: [],\n selectedSharedPropertyTypes: args.$select\n ?? [],\n where: objectSetToSearchJsonV2(objectSet, interfaceType.apiName),\n }), { preview: true });\n result.data = await client.objectFactory(client, result.data, // drop readonly\n interfaceType.apiName, !args.$includeRid);\n return result;\n }\n const result = await OntologiesV2.OntologyObjectSets.loadMultipleObjectTypes(addUserAgentAndRequestContextHeaders(client, interfaceType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n select: (args?.$select ?? []),\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await client.objectFactory2(client, result.data, interfaceType.apiName, !args.$includeRid, args.$select, false, result.interfaceToObjectTypeMappings),\n nextPageToken: result.nextPageToken,\n totalCount: result.totalCount,\n });\n}\n/** @internal */\nexport async function fetchPageInternal(client, objectType, objectSet, args = {}) {\n if (objectType.type === \"interface\") {\n return await fetchInterfacePage(client, objectType, args, objectSet); // fixme\n }\n else {\n return await fetchObjectPage(client, objectType, args, objectSet); // fixme\n }\n}\n/** @internal */\nexport async function fetchPageWithErrorsInternal(client, objectType, objectSet, args = {}) {\n try {\n const result = await fetchPageInternal(client, objectType, objectSet, args);\n return { value: result };\n }\n catch (e) {\n if (e instanceof Error) {\n return { error: e };\n }\n return { error: e };\n }\n}\n/**\n * @param client\n * @param objectType\n * @param args\n * @param objectSet\n * @returns\n * @internal\n */\nexport async function fetchPage(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageInternal(client, objectType, objectSet, args);\n}\n/** @internal */\nexport async function fetchPageWithErrors(client, objectType, args, objectSet = resolveBaseObjectSetType(objectType)) {\n return fetchPageWithErrorsInternal(client, objectType, objectSet, args);\n}\nfunction applyFetchArgs(args, body) {\n if (args?.$nextPageToken) {\n body.pageToken = args.$nextPageToken;\n }\n if (args?.$pageSize != null) {\n body.pageSize = args.$pageSize;\n }\n if (args?.$orderBy != null) {\n body.orderBy = {\n fields: Object.entries(args.$orderBy).map(([field, direction]) => ({\n field,\n direction,\n })),\n };\n }\n return body;\n}\n/** @internal */\nexport async function fetchObjectPage(client, objectType, args, objectSet) {\n const r = await OntologiesV2.OntologyObjectSets.load(addUserAgentAndRequestContextHeaders(client, objectType), await client.ontologyRid, applyFetchArgs(args, {\n objectSet,\n // We have to do the following case because LoadObjectSetRequestV2 isn't readonly\n select: (args?.$select ?? []), // FIXME?\n excludeRid: !args?.$includeRid,\n }));\n return Promise.resolve({\n data: await client.objectFactory(client, r.data, undefined, undefined, args.$select),\n nextPageToken: r.nextPageToken,\n totalCount: r.totalCount,\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -323,7 +323,7 @@ export class ObjectSetListenerWebsocket {
323
323
  for (const key of keysToDelete) {
324
324
  delete o.object[key];
325
325
  }
326
- const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [o.object], undefined);
326
+ const osdkObjectArray = await this.#client.objectFactory(this.#client, [o.object], undefined);
327
327
  const singleOsdkObject = osdkObjectArray[0] ?? undefined;
328
328
  return singleOsdkObject != null ? {
329
329
  object: singleOsdkObject,
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetListenerWebsocket.js","names":["WebSocket","invariant","convertWireToOsdkObjects","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","onSuccessfulSubscription","isReady","sub","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","maybeDisconnectTimeout","constructor","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","subscribe","objectType","objectSet","listener","properties","globalThis","crypto","webcrypto","objDef","ontologyProvider","getObjectDefinition","apiName","length","Object","keys","objectProperties","filter","p","type","referenceProperties","primaryKeyPropertyName","primaryKeyApiName","requestedProperties","requestedReferenceProperties","subscriptionId","randomUUID","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","ensureWebsocket","readyState","OPEN","sendSubscribeMessage","error","#sendSubscribeMessage","readySubs","values","id","requests","map","propertySet","referenceSet","payload","send","JSON","stringify","#unsubscribe","newStatus","delete","clearTimeout","setTimeout","undefined","size","cycleWebsocket","#ensureWebsocket","tokenProvider","base","URL","url","host","ontologyRid","token","nextConnectTime","Date","now","Promise","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","handleMessage_objectSetChanged","handleMessage_refreshObjectSet","handleMessage_subscribeResponses","handleMessage_subscriptionClosed","objectUpdates","updates","update","referenceUpdates","osdkObjectsWithReferenceUpdates","all","o","osdkObjectArray","__apiName","__primaryKey","primaryKey","property","value","singleOsdkObject","object","state","osdkObject","osdkObjects","keysToDelete","key","includes","responses","subs","i","response","errors","shouldFireOutOfDate","#handleMessage_subscriptionClosed","cause","event","#cycleWebsocket","CLOSING","CLOSED","close","s"],"sources":["ObjectSetListenerWebsocket.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nimport { convertWireToOsdkObjects } from \"../object/convertWireToOsdkObjects.js\";\nconst MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;\n/** Noop function to reduce conditional checks */\nfunction doNothing() { }\n/**\n * Converts an ObjectSetListener to one where all the functions are defined.\n */\nfunction fillOutListener({ onChange = doNothing, onError = doNothing, onOutOfDate = doNothing, onSuccessfulSubscription = doNothing, }) {\n return { onChange, onError, onOutOfDate, onSuccessfulSubscription };\n}\nfunction isReady(sub) {\n return sub.isReady != null;\n}\nfunction subscriptionIsDone(sub) {\n return sub.status === \"done\" || sub.status === \"error\";\n}\n/** @internal */\nexport class ObjectSetListenerWebsocket {\n static #instances = new WeakMap();\n MINIMUM_RECONNECT_DELAY_MS;\n // FIXME\n static getInstance(client) {\n let instance = ObjectSetListenerWebsocket.#instances.get(client.clientCacheKey);\n if (instance == null) {\n instance = new ObjectSetListenerWebsocket(client);\n ObjectSetListenerWebsocket.#instances.set(client.clientCacheKey, instance);\n }\n return instance;\n }\n #ws;\n #lastWsConnect = 0;\n #client;\n #logger;\n /**\n * map of requestId to all active subscriptions at the time of the request\n */\n #pendingSubscriptions = new Map();\n /**\n * Map of subscriptionId to Subscription. Note: the subscriptionId may be\n * temporary and not the actual subscriptionId from the server.\n */\n #subscriptions = new Map();\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;\n this.#client = client;\n this.#logger = client.logger?.child({}, {\n msgPrefix: \"<OSW> \",\n });\n invariant(client.baseUrl.startsWith(\"https://\")\n || client.baseUrl.startsWith(\"http://\"), \"Stack must be a URL\");\n }\n async subscribe(objectType, objectSet, listener, properties = []) {\n if (process.env.TARGET !== \"browser\") {\n // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This\n // will not be needed after our minimum version is 19 or greater.\n globalThis.crypto ??= (await import(\"node:crypto\")).webcrypto;\n }\n const objDef = await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName);\n if (properties.length === 0) {\n properties = Object.keys(objDef.properties);\n }\n const objectProperties = properties.filter((p) => objDef.properties[p].type !== \"geotimeSeriesReference\");\n const referenceProperties = properties.filter((p) => objDef.properties[p].type === \"geotimeSeriesReference\");\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n primaryKeyPropertyName: objDef.primaryKeyApiName,\n requestedProperties: objectProperties,\n requestedReferenceProperties: referenceProperties,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${crypto.randomUUID()}`,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n try {\n await this.#ensureWebsocket();\n // the consumer may have already unsubscribed before we are ready to request a subscription\n // so we have to acquire the pendingSubscription after the await.\n if (subscriptionIsDone(sub)) {\n return;\n }\n sub.isReady = true;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n sub.listener.onError([error]);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n if (readySubs.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage(): aborting due to no ready subscriptions\");\n }\n return;\n }\n // Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.\n const id = crypto.randomUUID();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ objectSet, requestedProperties, requestedReferenceProperties }) => {\n return {\n objectSet: objectSet,\n propertySet: requestedProperties,\n referenceSet: requestedReferenceProperties,\n };\n }),\n };\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: subscribe }, \"sending subscribe message\");\n }\n this.#ws?.send(JSON.stringify(subscribe));\n }\n #unsubscribe(sub, newStatus = \"done\") {\n if (subscriptionIsDone(sub)) {\n // if we are already done, we don't need to do anything\n return;\n }\n sub.status = newStatus;\n // make sure listeners do nothing now\n sub.listener = fillOutListener({});\n this.#subscriptions.delete(sub.subscriptionId);\n this.#sendSubscribeMessage();\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const base = new URL(baseUrl);\n const url = `wss://${base.host}/api/v2/ontologySubscriptions/ontologies/${this.#client.ontologyRid}/streamSubscriptions`;\n const token = await tokenProvider();\n // tokenProvider is async, there could potentially be a race to create the websocket.\n // Only the first call to reach here will find a null this.#ws, the rest will bail out\n if (this.#ws == null) {\n // TODO this can probably be exponential backoff with jitter\n // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY\n const nextConnectTime = (this.#lastWsConnect ?? 0)\n + this.MINIMUM_RECONNECT_DELAY_MS;\n if (nextConnectTime > Date.now()) {\n await new Promise((resolve) => {\n setTimeout(resolve, nextConnectTime - Date.now());\n });\n }\n this.#lastWsConnect = Date.now();\n // we again may have lost the race after our minimum backoff time\n if (this.#ws == null) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"Creating websocket\");\n }\n this.#ws = new WebSocket(url, [`Bearer-${token}`]);\n this.#ws.addEventListener(\"close\", this.#onClose);\n this.#ws.addEventListener(\"message\", this.#onMessage);\n this.#ws.addEventListener(\"open\", this.#onOpen);\n }\n }\n // Allow await-ing the websocket open event if it isn't open already.\n // This needs to happen even for callers that didn't just create this.#ws\n if (this.#ws.readyState === WebSocket.CONNECTING) {\n const ws = this.#ws;\n return new Promise((resolve, reject) => {\n function cleanup() {\n ws.removeEventListener(\"open\", open);\n ws.removeEventListener(\"error\", error);\n ws.removeEventListener(\"close\", cleanup);\n }\n function open() {\n cleanup();\n resolve();\n }\n function error(evt) {\n cleanup();\n reject(evt);\n }\n ws.addEventListener(\"open\", open);\n ws.addEventListener(\"error\", error);\n ws.addEventListener(\"close\", cleanup);\n });\n }\n }\n }\n #onOpen = () => {\n // resubscribe all of the listeners\n this.#sendSubscribeMessage();\n };\n #onMessage = async (message) => {\n const data = JSON.parse(message.data.toString());\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: data }, \"received message from ws\");\n }\n switch (data.type) {\n case \"objectSetChanged\":\n return this.#handleMessage_objectSetChanged(data);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data);\n case \"subscriptionClosed\": {\n return this.#handleMessage_subscriptionClosed(data);\n }\n default:\n const _ = data;\n invariant(false, \"Unexpected message type\");\n }\n };\n #handleMessage_objectSetChanged = async (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null)\n return;\n const objectUpdates = payload.updates.filter((update) => update.type === \"object\");\n const referenceUpdates = payload.updates.filter((update) => update.type === \"reference\");\n const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async (o) => {\n const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [{\n __apiName: o.objectType,\n __primaryKey: o.primaryKey[sub.primaryKeyPropertyName],\n ...o.primaryKey,\n [o.property]: o.value,\n }], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: \"ADDED_OR_UPDATED\",\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjectsWithReferenceUpdates) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n const osdkObjects = await Promise.all(objectUpdates.map(async (o) => {\n const keysToDelete = Object.keys(o.object).filter((key) => sub.requestedReferenceProperties.includes(key));\n for (const key of keysToDelete) {\n delete o.object[key];\n }\n const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [o.object], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: o.state,\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjects) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onOutOfDate();\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n sub.listener.onError(response.errors);\n this.#unsubscribe(sub, \"error\");\n break;\n case \"qos\":\n // the server has requested that we tear down our websocket and reconnect to help load balance\n this.#cycleWebsocket();\n break;\n case \"success\":\n // `\"preparing\"` should only be the status on an initial subscribe.\n const shouldFireOutOfDate = sub.status === \"expired\"\n || sub.status === \"reconnecting\";\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ shouldFireOutOfDate }, \"success\");\n }\n sub.status = \"subscribed\";\n if (sub.subscriptionId !== response.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n else\n sub.listener.onSuccessfulSubscription();\n break;\n default:\n const _ = response;\n sub.listener.onError(response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onError([payload.cause]);\n this.#unsubscribe(sub, \"error\");\n }\n #onClose = (event) => {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ event }, \"Received close event from ws\", event);\n }\n // TODO we should probably throttle this so we don't abuse the backend\n this.#cycleWebsocket();\n };\n #cycleWebsocket = () => {\n if (this.#ws) {\n this.#ws.removeEventListener(\"open\", this.#onOpen);\n this.#ws.removeEventListener(\"message\", this.#onMessage);\n this.#ws.removeEventListener(\"close\", this.#onClose);\n if (this.#ws.readyState !== WebSocket.CLOSING\n && this.#ws.readyState !== WebSocket.CLOSED) {\n this.#ws.close();\n }\n this.#ws = undefined;\n }\n // if we have any listeners that are still depending on us, go ahead and reopen the websocket\n if (this.#subscriptions.size > 0) {\n if (process.env.NODE_ENV !== \"production\") {\n for (const s of this.#subscriptions.values()) {\n invariant(s.status !== \"done\" && s.status !== \"error\", \"should not have done/error subscriptions still\");\n }\n }\n for (const s of this.#subscriptions.values()) {\n if (s.status === \"subscribed\")\n s.status = \"reconnecting\";\n }\n this.#ensureWebsocket();\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetListenerWebsocket.js","names":["WebSocket","invariant","convertWireToOsdkObjects","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","onSuccessfulSubscription","isReady","sub","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","maybeDisconnectTimeout","constructor","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","subscribe","objectType","objectSet","listener","properties","globalThis","crypto","webcrypto","objDef","ontologyProvider","getObjectDefinition","apiName","length","Object","keys","objectProperties","filter","p","type","referenceProperties","primaryKeyPropertyName","primaryKeyApiName","requestedProperties","requestedReferenceProperties","subscriptionId","randomUUID","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","ensureWebsocket","readyState","OPEN","sendSubscribeMessage","error","#sendSubscribeMessage","readySubs","values","id","requests","map","propertySet","referenceSet","payload","send","JSON","stringify","#unsubscribe","newStatus","delete","clearTimeout","setTimeout","undefined","size","cycleWebsocket","#ensureWebsocket","tokenProvider","base","URL","url","host","ontologyRid","token","nextConnectTime","Date","now","Promise","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","handleMessage_objectSetChanged","handleMessage_refreshObjectSet","handleMessage_subscribeResponses","handleMessage_subscriptionClosed","objectUpdates","updates","update","referenceUpdates","osdkObjectsWithReferenceUpdates","all","o","osdkObjectArray","__apiName","__primaryKey","primaryKey","property","value","singleOsdkObject","object","state","osdkObject","osdkObjects","keysToDelete","key","includes","objectFactory","responses","subs","i","response","errors","shouldFireOutOfDate","#handleMessage_subscriptionClosed","cause","event","#cycleWebsocket","CLOSING","CLOSED","close","s"],"sources":["ObjectSetListenerWebsocket.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nimport { convertWireToOsdkObjects } from \"../object/convertWireToOsdkObjects.js\";\nconst MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;\n/** Noop function to reduce conditional checks */\nfunction doNothing() { }\n/**\n * Converts an ObjectSetListener to one where all the functions are defined.\n */\nfunction fillOutListener({ onChange = doNothing, onError = doNothing, onOutOfDate = doNothing, onSuccessfulSubscription = doNothing, }) {\n return { onChange, onError, onOutOfDate, onSuccessfulSubscription };\n}\nfunction isReady(sub) {\n return sub.isReady != null;\n}\nfunction subscriptionIsDone(sub) {\n return sub.status === \"done\" || sub.status === \"error\";\n}\n/** @internal */\nexport class ObjectSetListenerWebsocket {\n static #instances = new WeakMap();\n MINIMUM_RECONNECT_DELAY_MS;\n // FIXME\n static getInstance(client) {\n let instance = ObjectSetListenerWebsocket.#instances.get(client.clientCacheKey);\n if (instance == null) {\n instance = new ObjectSetListenerWebsocket(client);\n ObjectSetListenerWebsocket.#instances.set(client.clientCacheKey, instance);\n }\n return instance;\n }\n #ws;\n #lastWsConnect = 0;\n #client;\n #logger;\n /**\n * map of requestId to all active subscriptions at the time of the request\n */\n #pendingSubscriptions = new Map();\n /**\n * Map of subscriptionId to Subscription. Note: the subscriptionId may be\n * temporary and not the actual subscriptionId from the server.\n */\n #subscriptions = new Map();\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;\n this.#client = client;\n this.#logger = client.logger?.child({}, {\n msgPrefix: \"<OSW> \",\n });\n invariant(client.baseUrl.startsWith(\"https://\")\n || client.baseUrl.startsWith(\"http://\"), \"Stack must be a URL\");\n }\n async subscribe(objectType, objectSet, listener, properties = []) {\n if (process.env.TARGET !== \"browser\") {\n // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This\n // will not be needed after our minimum version is 19 or greater.\n globalThis.crypto ??= (await import(\"node:crypto\")).webcrypto;\n }\n const objDef = await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName);\n if (properties.length === 0) {\n properties = Object.keys(objDef.properties);\n }\n const objectProperties = properties.filter((p) => objDef.properties[p].type !== \"geotimeSeriesReference\");\n const referenceProperties = properties.filter((p) => objDef.properties[p].type === \"geotimeSeriesReference\");\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n primaryKeyPropertyName: objDef.primaryKeyApiName,\n requestedProperties: objectProperties,\n requestedReferenceProperties: referenceProperties,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${crypto.randomUUID()}`,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n try {\n await this.#ensureWebsocket();\n // the consumer may have already unsubscribed before we are ready to request a subscription\n // so we have to acquire the pendingSubscription after the await.\n if (subscriptionIsDone(sub)) {\n return;\n }\n sub.isReady = true;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n sub.listener.onError([error]);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n if (readySubs.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage(): aborting due to no ready subscriptions\");\n }\n return;\n }\n // Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.\n const id = crypto.randomUUID();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ objectSet, requestedProperties, requestedReferenceProperties }) => {\n return {\n objectSet: objectSet,\n propertySet: requestedProperties,\n referenceSet: requestedReferenceProperties,\n };\n }),\n };\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: subscribe }, \"sending subscribe message\");\n }\n this.#ws?.send(JSON.stringify(subscribe));\n }\n #unsubscribe(sub, newStatus = \"done\") {\n if (subscriptionIsDone(sub)) {\n // if we are already done, we don't need to do anything\n return;\n }\n sub.status = newStatus;\n // make sure listeners do nothing now\n sub.listener = fillOutListener({});\n this.#subscriptions.delete(sub.subscriptionId);\n this.#sendSubscribeMessage();\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const base = new URL(baseUrl);\n const url = `wss://${base.host}/api/v2/ontologySubscriptions/ontologies/${this.#client.ontologyRid}/streamSubscriptions`;\n const token = await tokenProvider();\n // tokenProvider is async, there could potentially be a race to create the websocket.\n // Only the first call to reach here will find a null this.#ws, the rest will bail out\n if (this.#ws == null) {\n // TODO this can probably be exponential backoff with jitter\n // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY\n const nextConnectTime = (this.#lastWsConnect ?? 0)\n + this.MINIMUM_RECONNECT_DELAY_MS;\n if (nextConnectTime > Date.now()) {\n await new Promise((resolve) => {\n setTimeout(resolve, nextConnectTime - Date.now());\n });\n }\n this.#lastWsConnect = Date.now();\n // we again may have lost the race after our minimum backoff time\n if (this.#ws == null) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"Creating websocket\");\n }\n this.#ws = new WebSocket(url, [`Bearer-${token}`]);\n this.#ws.addEventListener(\"close\", this.#onClose);\n this.#ws.addEventListener(\"message\", this.#onMessage);\n this.#ws.addEventListener(\"open\", this.#onOpen);\n }\n }\n // Allow await-ing the websocket open event if it isn't open already.\n // This needs to happen even for callers that didn't just create this.#ws\n if (this.#ws.readyState === WebSocket.CONNECTING) {\n const ws = this.#ws;\n return new Promise((resolve, reject) => {\n function cleanup() {\n ws.removeEventListener(\"open\", open);\n ws.removeEventListener(\"error\", error);\n ws.removeEventListener(\"close\", cleanup);\n }\n function open() {\n cleanup();\n resolve();\n }\n function error(evt) {\n cleanup();\n reject(evt);\n }\n ws.addEventListener(\"open\", open);\n ws.addEventListener(\"error\", error);\n ws.addEventListener(\"close\", cleanup);\n });\n }\n }\n }\n #onOpen = () => {\n // resubscribe all of the listeners\n this.#sendSubscribeMessage();\n };\n #onMessage = async (message) => {\n const data = JSON.parse(message.data.toString());\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: data }, \"received message from ws\");\n }\n switch (data.type) {\n case \"objectSetChanged\":\n return this.#handleMessage_objectSetChanged(data);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data);\n case \"subscriptionClosed\": {\n return this.#handleMessage_subscriptionClosed(data);\n }\n default:\n const _ = data;\n invariant(false, \"Unexpected message type\");\n }\n };\n #handleMessage_objectSetChanged = async (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null)\n return;\n const objectUpdates = payload.updates.filter((update) => update.type === \"object\");\n const referenceUpdates = payload.updates.filter((update) => update.type === \"reference\");\n const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async (o) => {\n const osdkObjectArray = await convertWireToOsdkObjects(this.#client, [{\n __apiName: o.objectType,\n __primaryKey: o.primaryKey[sub.primaryKeyPropertyName],\n ...o.primaryKey,\n [o.property]: o.value,\n }], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: \"ADDED_OR_UPDATED\",\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjectsWithReferenceUpdates) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n const osdkObjects = await Promise.all(objectUpdates.map(async (o) => {\n const keysToDelete = Object.keys(o.object).filter((key) => sub.requestedReferenceProperties.includes(key));\n for (const key of keysToDelete) {\n delete o.object[key];\n }\n const osdkObjectArray = await this.#client.objectFactory(this.#client, [o.object], undefined);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: o.state,\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjects) {\n if (osdkObject != null) {\n sub.listener.onChange?.(osdkObject);\n }\n }\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onOutOfDate();\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n sub.listener.onError(response.errors);\n this.#unsubscribe(sub, \"error\");\n break;\n case \"qos\":\n // the server has requested that we tear down our websocket and reconnect to help load balance\n this.#cycleWebsocket();\n break;\n case \"success\":\n // `\"preparing\"` should only be the status on an initial subscribe.\n const shouldFireOutOfDate = sub.status === \"expired\"\n || sub.status === \"reconnecting\";\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ shouldFireOutOfDate }, \"success\");\n }\n sub.status = \"subscribed\";\n if (sub.subscriptionId !== response.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n else\n sub.listener.onSuccessfulSubscription();\n break;\n default:\n const _ = response;\n sub.listener.onError(response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onError([payload.cause]);\n this.#unsubscribe(sub, \"error\");\n }\n #onClose = (event) => {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ event }, \"Received close event from ws\", event);\n }\n // TODO we should probably throttle this so we don't abuse the backend\n this.#cycleWebsocket();\n };\n #cycleWebsocket = () => {\n if (this.#ws) {\n this.#ws.removeEventListener(\"open\", this.#onOpen);\n this.#ws.removeEventListener(\"message\", this.#onMessage);\n this.#ws.removeEventListener(\"close\", this.#onClose);\n if (this.#ws.readyState !== WebSocket.CLOSING\n && this.#ws.readyState !== WebSocket.CLOSED) {\n this.#ws.close();\n }\n this.#ws = undefined;\n }\n // if we have any listeners that are still depending on us, go ahead and reopen the websocket\n if (this.#subscriptions.size > 0) {\n if (process.env.NODE_ENV !== \"production\") {\n for (const s of this.#subscriptions.values()) {\n invariant(s.status !== \"done\" && s.status !== \"error\", \"should not have done/error subscriptions still\");\n }\n }\n for (const s of this.#subscriptions.values()) {\n if (s.status === \"subscribed\")\n s.status = \"reconnecting\";\n }\n this.#ensureWebsocket();\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,5 +13,5 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export const USER_AGENT = `osdk-client/${"2.1.0-beta.11"}`;
16
+ export const USER_AGENT = `osdk-client/${"2.1.0-beta.13"}`;
17
17
  //# sourceMappingURL=UserAgent.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/client",
3
- "version": "2.1.0-beta.11",
3
+ "version": "2.1.0-beta.13",
4
4
  "description": "",
5
5
  "access": "public",
6
6
  "license": "Apache-2.0",
@@ -34,11 +34,11 @@
34
34
  "tiny-invariant": "^1.3.1",
35
35
  "type-fest": "^4.18.2",
36
36
  "ws": "^8.18.0",
37
- "@osdk/api": "~2.1.0-beta.11",
38
- "@osdk/client.unstable": "2.1.0-beta.11",
39
- "@osdk/generator-converters": "2.1.0-beta.11",
40
- "@osdk/shared.net.errors": "~2.1.0-beta.1",
37
+ "@osdk/client.unstable": "2.1.0-beta.13",
38
+ "@osdk/api": "~2.1.0-beta.13",
41
39
  "@osdk/shared.client.impl": "~1.1.0-beta.2",
40
+ "@osdk/generator-converters": "2.1.0-beta.13",
41
+ "@osdk/shared.net.errors": "~2.1.0-beta.1",
42
42
  "@osdk/shared.net.fetch": "~1.1.0-beta.1"
43
43
  },
44
44
  "devDependencies": {
@@ -59,11 +59,11 @@
59
59
  "ts-expect": "^1.3.0",
60
60
  "typescript": "~5.5.4",
61
61
  "zod": "^3.23.8",
62
- "@osdk/client.test.ontology": "~2.1.0-beta.11",
63
- "@osdk/monorepo.api-extractor": "~0.0.0",
62
+ "@osdk/client.test.ontology": "~2.1.0-beta.13",
64
63
  "@osdk/monorepo.tsconfig": "~0.0.0",
64
+ "@osdk/monorepo.api-extractor": "~0.0.0",
65
65
  "@osdk/monorepo.tsup": "~0.0.0",
66
- "@osdk/shared.test": "~2.1.0-beta.11"
66
+ "@osdk/shared.test": "~2.1.0-beta.13"
67
67
  },
68
68
  "publishConfig": {
69
69
  "access": "public"