@osdk/client 2.2.1 → 2.3.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/CHANGELOG.md +94 -134
  2. package/build/browser/Client.js +1 -1
  3. package/build/browser/Client.js.map +1 -1
  4. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +6 -1
  5. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  6. package/build/browser/actions/ActionValidationError.js.map +1 -1
  7. package/build/browser/actions/applyAction.js +9 -8
  8. package/build/browser/actions/applyAction.js.map +1 -1
  9. package/build/browser/createClient.js +8 -1
  10. package/build/browser/createClient.js.map +1 -1
  11. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +41 -1
  12. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  13. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js +145 -12
  14. package/build/browser/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  15. package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js +93 -0
  16. package/build/browser/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -0
  17. package/build/browser/logger/BaseLogger.js +1 -1
  18. package/build/browser/logger/BaseLogger.js.map +1 -1
  19. package/build/browser/object/fetchPage.js +9 -7
  20. package/build/browser/object/fetchPage.js.map +1 -1
  21. package/build/browser/object/mediaUpload.js +3 -0
  22. package/build/browser/object/mediaUpload.js.map +1 -1
  23. package/build/browser/objectSet/ObjectSet.test.js +85 -106
  24. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  25. package/build/browser/objectSet/createObjectSet.js +1 -1
  26. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  27. package/build/browser/observable/ObservableClient.js +17 -1
  28. package/build/browser/observable/ObservableClient.js.map +1 -1
  29. package/build/browser/observable/OptimisticBuilder.js.map +1 -1
  30. package/build/browser/observable/internal/ActionApplication.js +31 -30
  31. package/build/browser/observable/internal/ActionApplication.js.map +1 -1
  32. package/build/browser/observable/internal/Changes.js +5 -1
  33. package/build/browser/observable/internal/Changes.js.map +1 -1
  34. package/build/browser/observable/internal/ListQuery.js +24 -22
  35. package/build/browser/observable/internal/ListQuery.js.map +1 -1
  36. package/build/browser/observable/internal/ObjectQuery.js +30 -1
  37. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  38. package/build/browser/observable/internal/ObservableClientImpl.js +1 -2
  39. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  40. package/build/browser/observable/internal/OptimisticJob.js +8 -0
  41. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  42. package/build/browser/observable/internal/Query.js +2 -2
  43. package/build/browser/observable/internal/Query.js.map +1 -1
  44. package/build/browser/observable/internal/Store.js +4 -0
  45. package/build/browser/observable/internal/Store.js.map +1 -1
  46. package/build/browser/observable/internal/Store.test.js +45 -5
  47. package/build/browser/observable/internal/Store.test.js.map +1 -1
  48. package/build/browser/observable/internal/testUtils.js.map +1 -1
  49. package/build/browser/observable/internal/tombstone.js +18 -0
  50. package/build/browser/observable/internal/tombstone.js.map +1 -0
  51. package/build/browser/public/internal.js +1 -0
  52. package/build/browser/public/internal.js.map +1 -1
  53. package/build/browser/public-utils/hydrateObjectSetFromObjectRids.js +39 -0
  54. package/build/browser/public-utils/hydrateObjectSetFromObjectRids.js.map +1 -0
  55. package/build/browser/queries/applyQuery.js +8 -4
  56. package/build/browser/queries/applyQuery.js.map +1 -1
  57. package/build/browser/util/UserAgent.js +2 -1
  58. package/build/browser/util/UserAgent.js.map +1 -1
  59. package/build/browser/util/extractRdpDefinition.js +2 -0
  60. package/build/browser/util/extractRdpDefinition.js.map +1 -1
  61. package/build/browser/util/toDataValue.js +20 -10
  62. package/build/browser/util/toDataValue.js.map +1 -1
  63. package/build/browser/util/toDataValue.test.js +50 -11
  64. package/build/browser/util/toDataValue.test.js.map +1 -1
  65. package/build/cjs/chunk-VZ57PNLC.cjs +1808 -0
  66. package/build/cjs/chunk-VZ57PNLC.cjs.map +1 -0
  67. package/build/cjs/{chunk-LPYAXRWJ.cjs → chunk-YGJRXE4F.cjs} +757 -36
  68. package/build/cjs/chunk-YGJRXE4F.cjs.map +1 -0
  69. package/build/cjs/index.cjs +16 -1764
  70. package/build/cjs/index.cjs.map +1 -1
  71. package/build/cjs/index.d.cts +4 -3
  72. package/build/cjs/public/internal.cjs +22 -8
  73. package/build/cjs/public/internal.cjs.map +1 -1
  74. package/build/cjs/public/internal.d.cts +10 -1
  75. package/build/cjs/public/unstable-do-not-use.cjs +182 -123
  76. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  77. package/build/cjs/public/unstable-do-not-use.d.cts +2 -1
  78. package/build/esm/Client.js +1 -1
  79. package/build/esm/Client.js.map +1 -1
  80. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +6 -1
  81. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  82. package/build/esm/actions/ActionValidationError.js.map +1 -1
  83. package/build/esm/actions/applyAction.js +9 -8
  84. package/build/esm/actions/applyAction.js.map +1 -1
  85. package/build/esm/createClient.js +8 -1
  86. package/build/esm/createClient.js.map +1 -1
  87. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +41 -1
  88. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  89. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js +145 -12
  90. package/build/esm/derivedProperties/createWithPropertiesObjectSet.test.js.map +1 -1
  91. package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js +93 -0
  92. package/build/esm/derivedProperties/derivedPropertyDefinitionFactory.js.map +1 -0
  93. package/build/esm/logger/BaseLogger.js +1 -1
  94. package/build/esm/logger/BaseLogger.js.map +1 -1
  95. package/build/esm/object/fetchPage.js +9 -7
  96. package/build/esm/object/fetchPage.js.map +1 -1
  97. package/build/esm/object/mediaUpload.js +3 -0
  98. package/build/esm/object/mediaUpload.js.map +1 -1
  99. package/build/esm/objectSet/ObjectSet.test.js +85 -106
  100. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  101. package/build/esm/objectSet/createObjectSet.js +1 -1
  102. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  103. package/build/esm/observable/ObservableClient.js +17 -1
  104. package/build/esm/observable/ObservableClient.js.map +1 -1
  105. package/build/esm/observable/OptimisticBuilder.js.map +1 -1
  106. package/build/esm/observable/internal/ActionApplication.js +31 -30
  107. package/build/esm/observable/internal/ActionApplication.js.map +1 -1
  108. package/build/esm/observable/internal/Changes.js +5 -1
  109. package/build/esm/observable/internal/Changes.js.map +1 -1
  110. package/build/esm/observable/internal/ListQuery.js +24 -22
  111. package/build/esm/observable/internal/ListQuery.js.map +1 -1
  112. package/build/esm/observable/internal/ObjectQuery.js +30 -1
  113. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  114. package/build/esm/observable/internal/ObservableClientImpl.js +1 -2
  115. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  116. package/build/esm/observable/internal/OptimisticJob.js +8 -0
  117. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  118. package/build/esm/observable/internal/Query.js +2 -2
  119. package/build/esm/observable/internal/Query.js.map +1 -1
  120. package/build/esm/observable/internal/Store.js +4 -0
  121. package/build/esm/observable/internal/Store.js.map +1 -1
  122. package/build/esm/observable/internal/Store.test.js +45 -5
  123. package/build/esm/observable/internal/Store.test.js.map +1 -1
  124. package/build/esm/observable/internal/testUtils.js.map +1 -1
  125. package/build/esm/observable/internal/tombstone.js +18 -0
  126. package/build/esm/observable/internal/tombstone.js.map +1 -0
  127. package/build/esm/public/internal.js +1 -0
  128. package/build/esm/public/internal.js.map +1 -1
  129. package/build/esm/public-utils/hydrateObjectSetFromObjectRids.js +39 -0
  130. package/build/esm/public-utils/hydrateObjectSetFromObjectRids.js.map +1 -0
  131. package/build/esm/queries/applyQuery.js +8 -4
  132. package/build/esm/queries/applyQuery.js.map +1 -1
  133. package/build/esm/util/UserAgent.js +2 -1
  134. package/build/esm/util/UserAgent.js.map +1 -1
  135. package/build/esm/util/extractRdpDefinition.js +2 -0
  136. package/build/esm/util/extractRdpDefinition.js.map +1 -1
  137. package/build/esm/util/toDataValue.js +20 -10
  138. package/build/esm/util/toDataValue.js.map +1 -1
  139. package/build/esm/util/toDataValue.test.js +50 -11
  140. package/build/esm/util/toDataValue.test.js.map +1 -1
  141. package/build/types/Client.d.ts +1 -1
  142. package/build/types/actions/ActionValidationError.d.ts +1 -1
  143. package/build/types/actions/ActionValidationError.d.ts.map +1 -1
  144. package/build/types/actions/applyAction.d.ts.map +1 -1
  145. package/build/types/createClient.d.ts.map +1 -1
  146. package/build/types/derivedProperties/derivedPropertyDefinitionFactory.d.ts +1 -0
  147. package/build/types/derivedProperties/derivedPropertyDefinitionFactory.d.ts.map +1 -0
  148. package/build/types/object/mediaUpload.d.ts +2 -1
  149. package/build/types/object/mediaUpload.d.ts.map +1 -1
  150. package/build/types/observable/ObservableClient.d.ts +2 -2
  151. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  152. package/build/types/observable/OptimisticBuilder.d.ts +1 -0
  153. package/build/types/observable/OptimisticBuilder.d.ts.map +1 -1
  154. package/build/types/observable/internal/ActionApplication.d.ts +1 -1
  155. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -1
  156. package/build/types/observable/internal/Changes.d.ts +2 -0
  157. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  158. package/build/types/observable/internal/ListQuery.d.ts.map +1 -1
  159. package/build/types/observable/internal/ObjectQuery.d.ts +1 -0
  160. package/build/types/observable/internal/ObjectQuery.d.ts.map +1 -1
  161. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  162. package/build/types/observable/internal/Store.d.ts +2 -1
  163. package/build/types/observable/internal/Store.d.ts.map +1 -1
  164. package/build/types/observable/internal/testUtils.d.ts +1 -1
  165. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  166. package/build/types/observable/internal/tombstone.d.ts +1 -0
  167. package/build/types/observable/internal/tombstone.d.ts.map +1 -0
  168. package/build/types/public/internal.d.ts +1 -0
  169. package/build/types/public/internal.d.ts.map +1 -1
  170. package/build/types/public-utils/hydrateObjectSetFromObjectRids.d.ts +10 -0
  171. package/build/types/public-utils/hydrateObjectSetFromObjectRids.d.ts.map +1 -0
  172. package/build/types/queries/applyQuery.d.ts.map +1 -1
  173. package/build/types/util/UserAgent.d.ts +1 -0
  174. package/build/types/util/UserAgent.d.ts.map +1 -1
  175. package/package.json +14 -14
  176. package/build/cjs/chunk-LPYAXRWJ.cjs.map +0 -1
  177. package/build/cjs/chunk-T4NIFYZS.cjs +0 -14
  178. package/build/cjs/chunk-T4NIFYZS.cjs.map +0 -1
  179. package/build/cjs/chunk-UCW7RLKM.cjs +0 -615
  180. package/build/cjs/chunk-UCW7RLKM.cjs.map +0 -1
@@ -1,1775 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunkLPYAXRWJ_cjs = require('./chunk-LPYAXRWJ.cjs');
4
- var chunkT4NIFYZS_cjs = require('./chunk-T4NIFYZS.cjs');
5
- var chunkUCW7RLKM_cjs = require('./chunk-UCW7RLKM.cjs');
3
+ var chunkVZ57PNLC_cjs = require('./chunk-VZ57PNLC.cjs');
4
+ require('./chunk-YGJRXE4F.cjs');
6
5
  var api = require('@osdk/api');
7
6
  var shared_net_errors = require('@osdk/shared.net.errors');
8
- var unstable = require('@osdk/api/unstable');
9
- var client_unstable = require('@osdk/client.unstable');
10
- var invariant = require('tiny-invariant');
11
7
  var shared_client_impl = require('@osdk/shared.client.impl');
12
- var generatorConverters = require('@osdk/generator-converters');
8
+ var invariant = require('tiny-invariant');
13
9
 
14
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
11
 
16
12
  var invariant__default = /*#__PURE__*/_interopDefault(invariant);
17
13
 
18
- // src/actions/ActionValidationError.ts
19
- var ActionValidationError = class extends Error {
20
- constructor(validation) {
21
- super("Validation Error: " + JSON.stringify(validation, null, 2));
22
- this.validation = validation;
23
- }
24
- };
25
-
26
- // src/objectSet/conjureUnionType.ts
27
- function conjureUnionType(type, value) {
28
- return {
29
- type,
30
- [type]: value
31
- };
32
- }
33
-
34
- // src/ontology/makeConjureContext.ts
35
- function makeConjureContext({
36
- baseUrl,
37
- fetch: fetchFn,
38
- tokenProvider
39
- }, servicePath) {
40
- return {
41
- baseUrl,
42
- servicePath,
43
- fetchFn,
44
- tokenProvider
45
- };
46
- }
47
-
48
- // src/pageRequestAsAsyncIter.ts
49
- function getResults(x) {
50
- return x.results;
51
- }
52
- function applyPageToken(payload, {
53
- pageToken
54
- }) {
55
- return pageToken ? {
56
- ...payload,
57
- pageToken
58
- } : void 0;
59
- }
60
- async function* pageRequestAsAsyncIter(call, values, nextArgs, initialPayload) {
61
- let payload = initialPayload;
62
- while (payload) {
63
- const r = await call(payload);
64
- for (const q of values(r)) {
65
- yield q;
66
- }
67
- payload = nextArgs(payload, r);
68
- }
69
- }
70
-
71
- // src/object/SimpleCache.ts
72
- function createSimpleCache(map = /* @__PURE__ */ new Map(), fn) {
73
- function get(key) {
74
- let r = map.get(key);
75
- if (r === void 0 && fn !== void 0) {
76
- return set(key, fn(key));
77
- } else {
78
- return r;
79
- }
80
- }
81
- function set(key, value) {
82
- map.set(key, value);
83
- return value;
84
- }
85
- function remove(key) {
86
- return map.delete(key);
87
- }
88
- return {
89
- get,
90
- set,
91
- remove
92
- };
93
- }
94
- function createSimpleAsyncCache(type, fn, createCacheLocal = createSimpleCache) {
95
- const cache = createCacheLocal(type === "weak" ? /* @__PURE__ */ new WeakMap() : /* @__PURE__ */ new Map());
96
- const inProgress = createCacheLocal(type === "weak" ? /* @__PURE__ */ new WeakMap() : /* @__PURE__ */ new Map());
97
- const ret = {
98
- getOrUndefined: function getOrUndefined(key) {
99
- return cache.get(key);
100
- },
101
- get: async function get(key) {
102
- return cache.get(key) ?? inProgress.get(key) ?? ret.set(key, fn(key));
103
- },
104
- set: async function set(k, v) {
105
- try {
106
- const r = await inProgress.set(k, v);
107
- cache.set(k, r);
108
- inProgress.remove(k);
109
- return r;
110
- } catch (e) {
111
- inProgress.remove(k);
112
- throw e;
113
- }
114
- }
115
- };
116
- return ret;
117
- }
118
-
119
- // src/__unstable/ConjureSupport.ts
120
- var cachedAllOntologies;
121
- async function getOntologyVersionForRid(ctx, ontologyRid) {
122
- cachedAllOntologies ??= await client_unstable.loadAllOntologies(ctx, {});
123
- !cachedAllOntologies.ontologies[ontologyRid] ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "ontology should be loaded") : invariant__default.default(false) : void 0;
124
- return cachedAllOntologies.ontologies[ontologyRid].currentOntologyVersion;
125
- }
126
- var strongMemoAsync = (fn) => createSimpleAsyncCache("strong", fn).get;
127
- var weakMemoAsync = (fn) => createSimpleAsyncCache("weak", fn).get;
128
- var MetadataClient = class {
129
- #client;
130
- #ctx;
131
- #logger;
132
- constructor(client) {
133
- this.#client = client;
134
- this.#ctx = makeConjureContext(client, "ontology-metadata/api");
135
- this.#client.ontologyProvider.getObjectDefinition;
136
- this.#logger = this.#client.logger?.child({
137
- mcc: true
138
- });
139
- }
140
- forObjectByRid = strongMemoAsync(async (rid) => {
141
- return Promise.resolve({
142
- getPropertyMapping: this.#objectPropertyMapping.bind(this, rid),
143
- getLinkMapping: this.#objectLinkMapping.bind(this, rid),
144
- getRid: () => rid,
145
- getApiName: async () => (await this.#getConjureObjectType(rid)).apiName
146
- });
147
- });
148
- forObjectByApiName = strongMemoAsync(async (objectApiName) => {
149
- const objectDef = await this.#client.ontologyProvider.getObjectDefinition(objectApiName);
150
- return this.forObjectByRid(objectDef.rid);
151
- });
152
- #objectPropertyMapping = strongMemoAsync(async (objectTypeRid) => {
153
- const conjureObjectType = await this.#getConjureObjectType(objectTypeRid);
154
- return createObjectPropertyMapping(conjureObjectType);
155
- });
156
- #objectLinkMapping = strongMemoAsync(async (objectTypeRid) => {
157
- const linkTypes = await client_unstable.getLinkTypesForObjectTypes(this.#ctx, {
158
- includeObjectTypesWithoutSearchableDatasources: true,
159
- loadRedacted: false,
160
- objectTypeBranches: {},
161
- objectTypeVersions: {
162
- [objectTypeRid]: await this.ontologyVersion("")
163
- }
164
- });
165
- !linkTypes.linkTypes[objectTypeRid] ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "link type should be loaded") : invariant__default.default(false) : void 0;
166
- const ret = {};
167
- for (const l of linkTypes.linkTypes[objectTypeRid]) {
168
- const helper = ({
169
- apiName
170
- }, linkSide, otherObjectType) => {
171
- if (apiName) {
172
- ret[apiName] = {
173
- apiName,
174
- directedLinkTypeRid: {
175
- linkTypeRid: l.rid,
176
- linkSide
177
- },
178
- otherObjectType
179
- };
180
- }
181
- };
182
- if (l.definition.type === "oneToMany") {
183
- const {
184
- oneToMany: {
185
- objectTypeRidManySide,
186
- manyToOneLinkMetadata,
187
- objectTypeRidOneSide,
188
- oneToManyLinkMetadata
189
- }
190
- } = l.definition;
191
- if (objectTypeRidManySide === objectTypeRid) {
192
- helper(manyToOneLinkMetadata, "TARGET", objectTypeRidOneSide);
193
- }
194
- if (objectTypeRidOneSide === objectTypeRid) {
195
- helper(oneToManyLinkMetadata, "SOURCE", objectTypeRidManySide);
196
- }
197
- } else if (l.definition.type === "manyToMany") {
198
- const {
199
- manyToMany: {
200
- objectTypeRidA,
201
- objectTypeAToBLinkMetadata,
202
- objectTypeRidB,
203
- objectTypeBToALinkMetadata
204
- }
205
- } = l.definition;
206
- if (objectTypeRidA === objectTypeRid) {
207
- helper(objectTypeAToBLinkMetadata, "SOURCE", objectTypeRidB);
208
- }
209
- if (objectTypeRidB === objectTypeRid) {
210
- helper(objectTypeBToALinkMetadata, "TARGET", objectTypeRidA);
211
- }
212
- }
213
- }
214
- return ret;
215
- });
216
- #getConjureObjectType = strongMemoAsync(async (objectTypeRid) => {
217
- this.#logger?.debug(`getConjureObjectType(${objectTypeRid})`);
218
- const body = {
219
- datasourceTypes: [],
220
- objectTypes: [{
221
- identifier: {
222
- type: "objectTypeRid",
223
- objectTypeRid
224
- },
225
- versionReference: {
226
- type: "ontologyVersion",
227
- ontologyVersion: await this.ontologyVersion("")
228
- }
229
- }],
230
- linkTypes: [],
231
- sharedPropertyTypes: [],
232
- interfaceTypes: [],
233
- typeGroups: [],
234
- loadRedacted: false,
235
- includeObjectTypeCount: void 0,
236
- includeObjectTypesWithoutSearchableDatasources: true,
237
- includeEntityMetadata: void 0,
238
- actionTypes: [],
239
- includeTypeGroupEntitiesCount: void 0,
240
- entityMetadata: void 0
241
- };
242
- const entities = await client_unstable.bulkLoadOntologyEntities(this.#ctx, void 0, body);
243
- !entities.objectTypes[0]?.objectType ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "object type should be loaded") : invariant__default.default(false) : void 0;
244
- return entities.objectTypes[0].objectType;
245
- });
246
- ontologyVersion = strongMemoAsync(async (_) => getOntologyVersionForRid(this.#ctx, await this.#client.ontologyRid));
247
- };
248
- var metadataCacheClient = weakMemoAsync((client) => Promise.resolve(new MetadataClient(client)));
249
- function createObjectPropertyMapping(conjureOT) {
250
- !(conjureOT.primaryKeys.length === 1) ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, `only one primary key supported, got ${conjureOT.primaryKeys.length}`) : invariant__default.default(false) : void 0;
251
- const pkRid = conjureOT.primaryKeys[0];
252
- const pkProperty = Object.values(conjureOT.propertyTypes).find((a) => a.rid === pkRid);
253
- if (!pkProperty) {
254
- throw new Error(`Could not find PK property by rid: ${pkRid}`);
255
- }
256
- const propertyIdToApiNameMapping = Object.fromEntries(Object.values(conjureOT.propertyTypes).map((property) => {
257
- return [property.id, property.apiName];
258
- }));
259
- const propertyApiNameToIdMapping = Object.fromEntries(Object.values(conjureOT.propertyTypes).map((property) => {
260
- return [property.apiName, property.id];
261
- }));
262
- return {
263
- apiName: conjureOT.apiName,
264
- id: conjureOT.id,
265
- propertyIdToApiNameMapping,
266
- propertyApiNameToIdMapping,
267
- pk: {
268
- rid: pkRid,
269
- apiName: pkProperty.apiName,
270
- type: pkProperty.type
271
- }
272
- };
273
- }
274
-
275
- // src/__unstable/createBulkLinksAsyncIterFactory.ts
276
- function createBulkLinksAsyncIterFactory(ctx) {
277
- return async function* (objs, linkTypes) {
278
- if (objs.length === 0) {
279
- return;
280
- }
281
- ctx.logger?.debug("Preparing to fetch bulk links");
282
- !objs.every((a) => a.$objectType === objs[0].$objectType) ? process.env.NODE_ENV !== "production" ? invariant__default.default(false) : invariant__default.default(false) : void 0;
283
- const mcc = await metadataCacheClient(ctx);
284
- const helper = await mcc.forObjectByApiName(objs[0].$objectType);
285
- const [objectTypeRid, propertyMapping, fullLinkMapping] = await Promise.all([helper.getRid(), helper.getPropertyMapping(), helper.getLinkMapping()]);
286
- const linkMapping = Object.fromEntries(Object.entries(fullLinkMapping).filter(([apiName]) => linkTypes.includes(apiName)));
287
- for (const linkType of linkTypes) {
288
- if (linkMapping[linkType] == null) {
289
- throw "Unable to find link type: " + linkType;
290
- }
291
- }
292
- const req = {
293
- objectSetContext: {
294
- forkRid: void 0,
295
- objectSetFilterContext: {
296
- parameterOverrides: {}
297
- },
298
- ontologyBranchRid: void 0,
299
- owningRid: void 0,
300
- reportUsage: void 0,
301
- workstateRid: void 0
302
- },
303
- responseOptions: {
304
- includeObjectSetEntities: true,
305
- includeUsageCost: false
306
- },
307
- pageSize: 1e3,
308
- pageToken: void 0,
309
- linksRequests: [{
310
- directedLinkTypes: Object.values(linkMapping).map(({
311
- directedLinkTypeRid
312
- }) => directedLinkTypeRid),
313
- objects: conjureUnionType("objects", objs.map((o) => conjureUnionType("objectLocatorV2", {
314
- objectTypeRid,
315
- objectPrimaryKey: {
316
- [propertyMapping.pk.rid]: conjureUnionType(propertyMapping.pk.type.type, o.$primaryKey)
317
- }
318
- })))
319
- }]
320
- };
321
- const bulkLinksIter = pageRequestAsAsyncIter(client_unstable.getBulkLinksPage.bind(void 0, makeConjureContext(ctx, "object-set-service/api")), getResults, applyPageToken, req);
322
- for await (const item of bulkLinksIter) {
323
- const {
324
- objectIdentifier
325
- } = item;
326
- const obj = findObject(objectIdentifier, objs);
327
- for (const link of item.links) {
328
- const ref = link.link[link.linkSide === "SOURCE" ? "objectSideB" : "objectSideA"];
329
- const pk = getPrimaryKeyOrThrow(ref);
330
- const otherObjectApiName = await (await mcc.forObjectByRid(pk.objectTypeRid)).getApiName();
331
- const mappedLink = Object.values(linkMapping).find((a) => a.directedLinkTypeRid.linkTypeRid === link.link.linkTypeRid && a.directedLinkTypeRid.linkSide === link.linkSide);
332
- if (!mappedLink) throw new Error("Could not find link type");
333
- yield {
334
- object: obj,
335
- linkApiName: mappedLink.apiName,
336
- otherObjectApiName,
337
- otherObjectPk: pk.pkValue
338
- };
339
- }
340
- }
341
- };
342
- }
343
- function findObject(objectIdentifier, objs) {
344
- const {
345
- pkValue
346
- } = getPrimaryKeyOrThrow(objectIdentifier);
347
- const obj = objs.find((o) => o.$primaryKey === pkValue);
348
- if (obj == null) {
349
- throw new Error(`Needed to find object with pk ${pkValue}} and could not`);
350
- }
351
- return obj;
352
- }
353
- function getPrimaryKeyOrThrow(ref) {
354
- if ("type" in ref && ref.type !== "objectLocatorV2") {
355
- throw new Error("We do not support looking up object by rid");
356
- }
357
- const pks = Object.entries(ref.objectLocatorV2.objectPrimaryKey);
358
- if (pks.length !== 1) {
359
- throw new Error("Unable to support this request due to multiple pks");
360
- }
361
- return {
362
- objectTypeRid: ref.objectLocatorV2.objectTypeRid,
363
- pkValue: pks[0][1][pks[0][1].type]
364
- };
365
- }
366
-
367
- // src/object/AttachmentUpload.ts
368
- function isAttachmentUpload(o) {
369
- return typeof o === `object` && "name" in o && "data" in o && o.data instanceof Blob;
370
- }
371
- function isAttachmentFile(o) {
372
- return typeof o === "object" && o instanceof Blob && "name" in o;
373
- }
374
- function createAttachmentUpload(data, name) {
375
- return {
376
- data,
377
- name
378
- };
379
- }
380
-
381
- // src/object/mediaUpload.ts
382
- function isMediaReference(o) {
383
- return typeof o === `object` && typeof o.mimeType === "string" && "reference" in o && typeof o.reference === "object" && o.reference.type === "mediaSetViewItem" && "mediaSetViewItem" in o.reference && typeof o.reference.mediaSetViewItem === "object" && typeof o.reference.mediaSetViewItem.mediaSetRid === "string" && typeof o.reference.mediaSetViewItem.mediaSetViewRid === "string" && typeof o.reference.mediaSetViewItem.mediaItemRid === "string";
384
- }
385
-
386
- // src/util/interfaceUtils.ts
387
- function isInterfaceActionParam(o) {
388
- return o != null && typeof o === "object" && "$objectType" in o && "$primaryKey" in o;
389
- }
390
-
391
- // src/util/isObjectSpecifiersObject.ts
392
- function isObjectSpecifiersObject(o) {
393
- return o && typeof o === "object" && typeof o.$apiName === "string" && o.$primaryKey != null;
394
- }
395
-
396
- // src/util/isOntologyObjectV2.ts
397
- function isOntologyObjectV2(o) {
398
- return o && typeof o === "object" && typeof o.__apiName === "string" && o.__primaryKey != null;
399
- }
400
-
401
- // src/util/isPoint.ts
402
- function isPoint(o) {
403
- return o && typeof o === "object" && "type" in o && o.type === "Point" && "coordinates" in o && o.coordinates.length === 2;
404
- }
405
-
406
- // src/util/toDataValue.ts
407
- async function toDataValue(value, client) {
408
- if (value == null) {
409
- return value;
410
- }
411
- if (Array.isArray(value) || value instanceof Set) {
412
- const values = Array.from(value);
413
- if (values.some((dataValue) => isAttachmentUpload(dataValue) || isAttachmentFile(dataValue))) {
414
- const converted = [];
415
- for (const value2 of values) {
416
- converted.push(await toDataValue(value2, client));
417
- }
418
- return converted;
419
- }
420
- const promiseArray = Array.from(value, async (innerValue) => await toDataValue(innerValue, client));
421
- return Promise.all(promiseArray);
422
- }
423
- if (isAttachmentUpload(value)) {
424
- const attachment = await chunkUCW7RLKM_cjs.Attachment_exports.upload(client, value.data, {
425
- filename: value.name
426
- });
427
- return await toDataValue(attachment.rid, client);
428
- }
429
- if (isAttachmentFile(value)) {
430
- const attachment = await chunkUCW7RLKM_cjs.Attachment_exports.upload(client, value, {
431
- filename: value.name
432
- });
433
- return await toDataValue(attachment.rid, client);
434
- }
435
- if (isOntologyObjectV2(value)) {
436
- return await toDataValue(value.__primaryKey, client);
437
- }
438
- if (isObjectSpecifiersObject(value)) {
439
- return await toDataValue(value.$primaryKey, client);
440
- }
441
- if (isPoint(value)) {
442
- return await toDataValue(value.coordinates.join(), client);
443
- }
444
- if (chunkLPYAXRWJ_cjs.isWireObjectSet(value)) {
445
- return value;
446
- }
447
- if (chunkLPYAXRWJ_cjs.isObjectSet(value)) {
448
- return chunkLPYAXRWJ_cjs.getWireObjectSet(value);
449
- }
450
- if (isMediaReference(value)) {
451
- return value;
452
- }
453
- if (isInterfaceActionParam(value)) {
454
- return {
455
- objectTypeApiName: value.$objectType,
456
- primaryKeyValue: value.$primaryKey
457
- };
458
- }
459
- if (typeof value === "object") {
460
- return Object.entries(value).reduce(async (promisedAcc, [key, structValue]) => {
461
- const acc = await promisedAcc;
462
- acc[key] = await toDataValue(structValue, client);
463
- return acc;
464
- }, Promise.resolve({}));
465
- }
466
- return value;
467
- }
468
-
469
- // src/actions/applyAction.ts
470
- async function applyAction(client, action, parameters, options = {}) {
471
- const clientWithHeaders = chunkUCW7RLKM_cjs.addUserAgentAndRequestContextHeaders(chunkLPYAXRWJ_cjs.augmentRequestContext(client, (_) => ({
472
- finalMethodCall: "applyAction"
473
- })), action);
474
- if (Array.isArray(parameters)) {
475
- const response = await chunkUCW7RLKM_cjs.Action_exports.applyBatch(clientWithHeaders, await client.ontologyRid, action.apiName, {
476
- requests: parameters ? await remapBatchActionParams(parameters, client) : [],
477
- options: {
478
- returnEdits: options?.$returnEdits ? "ALL" : "NONE"
479
- }
480
- });
481
- const edits = response.edits;
482
- return options?.$returnEdits ? edits?.type === "edits" ? remapActionResponse(response) : edits : void 0;
483
- } else {
484
- const response = await chunkUCW7RLKM_cjs.Action_exports.apply(clientWithHeaders, await client.ontologyRid, action.apiName, {
485
- parameters: await remapActionParams(parameters, client),
486
- options: {
487
- mode: options?.$validateOnly ? "VALIDATE_ONLY" : "VALIDATE_AND_EXECUTE",
488
- returnEdits: options?.$returnEdits ? "ALL_V2_WITH_DELETIONS" : "NONE"
489
- }
490
- });
491
- if (options?.$validateOnly) {
492
- return response.validation;
493
- }
494
- if (response.validation?.result === "INVALID") {
495
- throw new ActionValidationError(response.validation);
496
- }
497
- const edits = response.edits;
498
- return options?.$returnEdits ? edits?.type === "edits" ? remapActionResponse(response) : edits : void 0;
499
- }
500
- }
501
- async function remapActionParams(params, client) {
502
- if (params == null) {
503
- return {};
504
- }
505
- const parameterMap = {};
506
- for (const [key, value] of Object.entries(params)) {
507
- parameterMap[key] = await toDataValue(value, client);
508
- }
509
- return parameterMap;
510
- }
511
- async function remapBatchActionParams(params, client) {
512
- const remappedParams = await Promise.all(params.map(async (param) => {
513
- return {
514
- parameters: await remapActionParams(param, client)
515
- };
516
- }));
517
- return remappedParams;
518
- }
519
- function remapActionResponse(response) {
520
- const editResponses = response?.edits;
521
- if (editResponses?.type === "edits") {
522
- const remappedActionResponse = {
523
- type: editResponses.type,
524
- deletedLinksCount: editResponses.deletedLinksCount,
525
- deletedObjectsCount: editResponses.deletedObjectsCount,
526
- addedLinks: [],
527
- deletedLinks: [],
528
- addedObjects: [],
529
- deletedObjects: [],
530
- modifiedObjects: [],
531
- editedObjectTypes: []
532
- };
533
- const editedObjectTypesSet = /* @__PURE__ */ new Set();
534
- for (const edit of editResponses.edits) {
535
- if (edit.type === "addLink" || edit.type === "deleteLink") {
536
- const osdkEdit = {
537
- linkTypeApiNameAtoB: edit.linkTypeApiNameAtoB,
538
- linkTypeApiNameBtoA: edit.linkTypeApiNameBtoA,
539
- aSideObject: edit.aSideObject,
540
- bSideObject: edit.bSideObject
541
- };
542
- edit.type === "addLink" ? remappedActionResponse.addedLinks.push(osdkEdit) : remappedActionResponse.deletedLinks?.push(osdkEdit);
543
- editedObjectTypesSet.add(edit.aSideObject.objectType);
544
- editedObjectTypesSet.add(edit.bSideObject.objectType);
545
- } else if (edit.type === "addObject" || edit.type === "deleteObject" || edit.type === "modifyObject") {
546
- const osdkEdit = {
547
- objectType: edit.objectType,
548
- primaryKey: edit.primaryKey
549
- };
550
- if (edit.type === "addObject") {
551
- remappedActionResponse.addedObjects.push(osdkEdit);
552
- } else if (edit.type === "deleteObject") {
553
- remappedActionResponse.deletedObjects?.push(osdkEdit);
554
- } else if (edit.type === "modifyObject") {
555
- remappedActionResponse.modifiedObjects.push(osdkEdit);
556
- }
557
- editedObjectTypesSet.add(edit.objectType);
558
- } else {
559
- if (process.env.NODE_ENV !== "production") {
560
- console.warn(`Unexpected edit type: ${JSON.stringify(edit)}`);
561
- }
562
- }
563
- }
564
- remappedActionResponse.editedObjectTypes = [...editedObjectTypesSet];
565
- return remappedActionResponse;
566
- }
567
- }
568
-
569
- // src/util/streamutils.ts
570
- var START_TOKEN = new Uint8Array([123, 34, 100, 97, 116, 97, 34, 58, 91]);
571
- var OBJECT_OPEN_CHAR_CODE = 123;
572
- var OBJECT_CLOSE_CHAR_CODE = 125;
573
- async function* parseStreamedResponse(asyncIterable) {
574
- const utf8decoder = new TextDecoder("utf-8");
575
- let parsedStart = false;
576
- let prevChunks = [];
577
- let openBracesCount = 0;
578
- for await (let chunk of asyncIterable) {
579
- let i = 0;
580
- if (!parsedStart) {
581
- parsedStart = true;
582
- if (startsWith(chunk, START_TOKEN)) {
583
- i = START_TOKEN.length;
584
- }
585
- }
586
- for (; i < chunk.length; i++) {
587
- while (openBracesCount === 0 && chunk[i] !== OBJECT_OPEN_CHAR_CODE && i < chunk.length) {
588
- i++;
589
- }
590
- let j = i;
591
- for (; j < chunk.length; j++) {
592
- const c = chunk[j];
593
- if (c === OBJECT_OPEN_CHAR_CODE) {
594
- openBracesCount++;
595
- } else if (c === OBJECT_CLOSE_CHAR_CODE) {
596
- openBracesCount--;
597
- if (0 === openBracesCount) {
598
- yield combineAndParse(utf8decoder, prevChunks, chunk.subarray(i, j + 1));
599
- prevChunks = [];
600
- i = j;
601
- break;
602
- }
603
- }
604
- }
605
- if (j === chunk.length) {
606
- prevChunks.push(chunk.subarray(i));
607
- break;
608
- }
609
- }
610
- }
611
- }
612
- function startsWith(a, b) {
613
- if (a.length < b.length) {
614
- return false;
615
- }
616
- for (let i = 0; i < b.length; i++) {
617
- if (a[i] !== b[i]) {
618
- return false;
619
- }
620
- }
621
- return true;
622
- }
623
- function combineAndParse(utf8decoder, prev, curr) {
624
- let str = "";
625
- for (const chunk of prev) {
626
- str += utf8decoder.decode(chunk, {
627
- stream: true
628
- });
629
- }
630
- str += utf8decoder.decode(curr);
631
- return JSON.parse(str);
632
- }
633
- async function* iterateReadableStream(readableStream) {
634
- let res = await readableStream.read();
635
- while (!res.done) {
636
- yield res.value;
637
- res = await readableStream.read();
638
- }
639
- }
640
-
641
- // src/util/timeseriesUtils.ts
642
- function getTimeRange(body) {
643
- if ("$startTime" in body || "$endTime" in body) {
644
- return {
645
- type: "absolute",
646
- startTime: body.$startTime,
647
- endTime: body.$endTime
648
- };
649
- }
650
- return body.$before ? {
651
- type: "relative",
652
- startTime: {
653
- when: "BEFORE",
654
- value: body.$before,
655
- unit: api.TimeseriesDurationMapping[body.$unit]
656
- }
657
- } : {
658
- type: "relative",
659
- endTime: {
660
- when: "AFTER",
661
- value: body.$after,
662
- unit: api.TimeseriesDurationMapping[body.$unit]
663
- }
664
- };
665
- }
666
- async function* asyncIterPointsHelper(iterator) {
667
- const reader = iterator.body?.getReader();
668
- for await (const point of parseStreamedResponse(iterateReadableStream(reader))) {
669
- yield {
670
- time: point.time,
671
- value: point.value
672
- };
673
- }
674
- }
675
-
676
- // src/createGeotimeSeriesProperty.ts
677
- var GeotimeSeriesPropertyImpl = class {
678
- #triplet;
679
- #client;
680
- constructor(client, objectApiName, primaryKey, propertyName, initialValue) {
681
- this.#client = client;
682
- this.#triplet = [objectApiName, primaryKey, propertyName];
683
- if (initialValue != null) {
684
- this.lastFetchedValue = initialValue;
685
- }
686
- }
687
- async getLatestValue() {
688
- const latestPointPromise = chunkUCW7RLKM_cjs.TimeSeriesValueBankProperty_exports.getLatestValue(this.#client, await this.#client.ontologyRid, ...this.#triplet);
689
- latestPointPromise.then(
690
- (latestPoint) => this.lastFetchedValue = latestPoint,
691
- // eslint-disable-next-line no-console
692
- (err) => void console.error(err)
693
- );
694
- return latestPointPromise;
695
- }
696
- async getAllValues(query) {
697
- const allPoints = [];
698
- for await (const point of this.asyncIterValues(query)) {
699
- allPoints.push(point);
700
- }
701
- return allPoints;
702
- }
703
- async *asyncIterValues(query) {
704
- const streamPointsIterator = await chunkUCW7RLKM_cjs.TimeSeriesValueBankProperty_exports.streamValues(this.#client, await this.#client.ontologyRid, ...this.#triplet, query ? {
705
- range: getTimeRange(query)
706
- } : {});
707
- for await (const timeseriesPoint of asyncIterPointsHelper(streamPointsIterator)) {
708
- yield timeseriesPoint;
709
- }
710
- }
711
- };
712
-
713
- // src/createMediaReferenceProperty.ts
714
- var MediaReferencePropertyImpl = class {
715
- #mediaReference;
716
- #triplet;
717
- #client;
718
- constructor(args) {
719
- const {
720
- client,
721
- objectApiName,
722
- primaryKey,
723
- propertyName,
724
- mediaReference
725
- } = args;
726
- this.#client = client;
727
- this.#triplet = [objectApiName, primaryKey, propertyName];
728
- this.#mediaReference = mediaReference;
729
- }
730
- async fetchContents() {
731
- return chunkUCW7RLKM_cjs.MediaReferenceProperty_exports.getMediaContent(this.#client, await this.#client.ontologyRid, ...this.#triplet, {
732
- preview: true
733
- // TODO: Can turn this back off when backend is no longer in beta.
734
- });
735
- }
736
- async fetchMetadata() {
737
- const r = await chunkUCW7RLKM_cjs.MediaReferenceProperty_exports.getMediaMetadata(this.#client, await this.#client.ontologyRid, ...this.#triplet, {
738
- preview: true
739
- // TODO: Can turn this back off when backend is no longer in beta.
740
- });
741
- return {
742
- path: r.path,
743
- sizeBytes: Number(r.sizeBytes),
744
- mediaType: r.mediaType
745
- };
746
- }
747
- getMediaReference() {
748
- return this.#mediaReference;
749
- }
750
- };
751
-
752
- // src/createTimeseriesProperty.ts
753
- var TimeSeriesPropertyImpl = class {
754
- #triplet;
755
- #client;
756
- constructor(client, objectApiName, primaryKey, propertyName) {
757
- this.#client = client;
758
- this.#triplet = [objectApiName, primaryKey, propertyName];
759
- }
760
- async getFirstPoint() {
761
- return chunkUCW7RLKM_cjs.TimeSeriesPropertyV2_exports.getFirstPoint(this.#client, await this.#client.ontologyRid, ...this.#triplet);
762
- }
763
- async getLastPoint() {
764
- return chunkUCW7RLKM_cjs.TimeSeriesPropertyV2_exports.getLastPoint(this.#client, await this.#client.ontologyRid, ...this.#triplet);
765
- }
766
- async getAllPoints(query) {
767
- const allPoints = [];
768
- for await (const point of this.asyncIterPoints(query)) {
769
- allPoints.push(point);
770
- }
771
- return allPoints;
772
- }
773
- async *asyncIterPoints(query) {
774
- const streamPointsIterator = await chunkUCW7RLKM_cjs.TimeSeriesPropertyV2_exports.streamPoints(this.#client, await this.#client.ontologyRid, ...this.#triplet, query ? {
775
- range: getTimeRange(query)
776
- } : {});
777
- for await (const timeseriesPoint of asyncIterPointsHelper(streamPointsIterator)) {
778
- yield timeseriesPoint;
779
- }
780
- }
781
- };
782
-
783
- // src/util/objectSpecifierUtils.ts
784
- function createObjectSpecifierFromPrimaryKey(objectDef, primaryKey) {
785
- return `${objectDef.apiName}:${primaryKey}`;
786
- }
787
- function extractPrimaryKeyFromObjectSpecifier(ObjectSpecifier) {
788
- return ObjectSpecifier.split(":")[1];
789
- }
790
-
791
- // src/ontology/OntologyProvider.ts
792
- var InterfaceDefinitions = Symbol("InterfaceDefinitions" );
793
-
794
- // src/object/convertWireToOsdkObjects/createOsdkInterface.ts
795
- function createOsdkInterface(underlying, interfaceDef) {
796
- const [objApiNamespace] = chunkLPYAXRWJ_cjs.extractNamespace(interfaceDef.apiName);
797
- return Object.freeze(Object.defineProperties({}, {
798
- // first to minimize hidden classes
799
- [chunkT4NIFYZS_cjs.UnderlyingOsdkObject]: {
800
- value: underlying
801
- },
802
- "$apiName": {
803
- value: interfaceDef.apiName,
804
- enumerable: true
805
- },
806
- "$as": {
807
- value: underlying.$as,
808
- enumerable: false
809
- },
810
- "$objectType": {
811
- value: underlying.$objectType,
812
- enumerable: "$objectType" in underlying
813
- },
814
- "$primaryKey": {
815
- value: underlying.$primaryKey,
816
- enumerable: "$primaryKey" in underlying
817
- },
818
- "$objectSpecifier": {
819
- value: underlying.$objectSpecifier,
820
- enumerable: "$objectSpecifier" in underlying
821
- },
822
- "$title": {
823
- value: underlying.$title,
824
- enumerable: "$title" in underlying
825
- },
826
- "$rid": {
827
- value: underlying.$rid,
828
- enumerable: "$rid" in underlying
829
- },
830
- "$clone": {
831
- value: clone,
832
- enumerable: false
833
- },
834
- [chunkT4NIFYZS_cjs.InterfaceDefRef]: {
835
- value: interfaceDef
836
- },
837
- ...Object.fromEntries(Object.keys(interfaceDef.properties).map((p) => {
838
- const objDef = underlying[chunkT4NIFYZS_cjs.ObjectDefRef];
839
- const [apiNamespace, apiName] = chunkLPYAXRWJ_cjs.extractNamespace(p);
840
- const targetPropName = objDef.interfaceMap[interfaceDef.apiName][p];
841
- return [apiNamespace === objApiNamespace ? apiName : p, {
842
- enumerable: targetPropName in underlying,
843
- value: underlying[targetPropName]
844
- }];
845
- }))
846
- }));
847
- function clone(update) {
848
- if (update == null) {
849
- return underlying.$clone().$as(interfaceDef);
850
- }
851
- for (const key of Object.keys(update)) {
852
- if (!(key in interfaceDef.properties)) {
853
- throw new Error(`Invalid property ${key} for interface ${interfaceDef.apiName}`);
854
- }
855
- }
856
- const remappedProps = Object.fromEntries(Object.keys(update).map((p) => mapProperty(p, update[p])).filter((x) => x != null));
857
- return underlying.$clone(remappedProps).$as(interfaceDef);
858
- }
859
- function mapProperty(propertyName, value) {
860
- const objDef = underlying[chunkT4NIFYZS_cjs.ObjectDefRef];
861
- const targetPropName = objDef.interfaceMap[interfaceDef.apiName][propertyName];
862
- if (targetPropName == null) {
863
- throw new Error(`Cannot clone interface with ${propertyName} as property is not implemented by the underlying object type ${objDef.apiName}`);
864
- }
865
- return [targetPropName, value];
866
- }
867
- }
868
-
869
- // src/object/convertWireToOsdkObjects/getDollarAs.ts
870
- var get$as = createSimpleCache(/* @__PURE__ */ new WeakMap(), $asFactory).get;
871
- var osdkObjectToInterfaceView = createSimpleCache(/* @__PURE__ */ new WeakMap(), () => /* @__PURE__ */ new Map());
872
- function $asFactory(objDef) {
873
- return function $as(targetMinDef) {
874
- let targetInterfaceApiName;
875
- if (typeof targetMinDef === "string") {
876
- if (targetMinDef === objDef.apiName) {
877
- return this[chunkT4NIFYZS_cjs.UnderlyingOsdkObject];
878
- }
879
- if (objDef.interfaceMap?.[targetMinDef] == null) {
880
- throw new Error(`Object does not implement interface '${targetMinDef}'.`);
881
- }
882
- targetInterfaceApiName = targetMinDef;
883
- } else if (targetMinDef.apiName === objDef.apiName) {
884
- return this[chunkT4NIFYZS_cjs.UnderlyingOsdkObject];
885
- } else {
886
- if (targetMinDef.type === "object") {
887
- throw new Error(`'${targetMinDef.apiName}' is not an interface nor is it '${objDef.apiName}', which is the object type.`);
888
- }
889
- targetInterfaceApiName = targetMinDef.apiName;
890
- }
891
- const def = objDef[InterfaceDefinitions][targetInterfaceApiName];
892
- if (!def) {
893
- throw new Error(`Object does not implement interface '${targetInterfaceApiName}'.`);
894
- }
895
- const underlying = this[chunkT4NIFYZS_cjs.UnderlyingOsdkObject];
896
- const existing = osdkObjectToInterfaceView.get(underlying).get(targetInterfaceApiName)?.deref();
897
- if (existing) return existing;
898
- const osdkInterface = createOsdkInterface(underlying, def.def);
899
- osdkObjectToInterfaceView.get(underlying).set(targetInterfaceApiName, new WeakRef(osdkInterface));
900
- return osdkInterface;
901
- };
902
- }
903
-
904
- // src/object/convertWireToOsdkObjects/getDollarLink.ts
905
- function get$link(holder) {
906
- const client = holder[chunkT4NIFYZS_cjs.ClientRef];
907
- const objDef = holder[chunkT4NIFYZS_cjs.ObjectDefRef];
908
- const rawObj = holder[chunkT4NIFYZS_cjs.UnderlyingOsdkObject];
909
- return Object.freeze(Object.fromEntries(Object.keys(objDef.links).map((linkName) => {
910
- const linkDef = objDef.links[linkName];
911
- const objectSet = client.objectSetFactory(objDef, client).where({
912
- [objDef.primaryKeyApiName]: rawObj.$primaryKey
913
- }).pivotTo(linkName);
914
- const value = !linkDef.multiplicity ? {
915
- fetchOne: (options) => chunkLPYAXRWJ_cjs.fetchSingle(client, objDef, options ?? {}, chunkLPYAXRWJ_cjs.getWireObjectSet(objectSet)),
916
- fetchOneWithErrors: (options) => chunkLPYAXRWJ_cjs.fetchSingleWithErrors(client, objDef, options ?? {}, chunkLPYAXRWJ_cjs.getWireObjectSet(objectSet))
917
- } : objectSet;
918
- return [linkName, value];
919
- })));
920
- }
921
-
922
- // src/object/convertWireToOsdkObjects/createOsdkObject.ts
923
- var specialPropertyTypes = /* @__PURE__ */ new Set(["attachment", "geotimeSeriesReference", "mediaReference", "numericTimeseries", "stringTimeseries", "sensorTimeseries"]);
924
- var basePropDefs = {
925
- "$as": {
926
- get: function() {
927
- return get$as(this[chunkT4NIFYZS_cjs.ObjectDefRef]);
928
- }
929
- },
930
- "$link": {
931
- get: function() {
932
- return get$link(this);
933
- }
934
- },
935
- "$clone": {
936
- value: function(update) {
937
- const rawObj = this[chunkT4NIFYZS_cjs.UnderlyingOsdkObject];
938
- const def = this[chunkT4NIFYZS_cjs.ObjectDefRef];
939
- if (update == null) {
940
- return createOsdkObject(this[chunkT4NIFYZS_cjs.ClientRef], def, {
941
- ...rawObj
942
- });
943
- }
944
- if (def.primaryKeyApiName in update && rawObj[def.primaryKeyApiName] !== update[def.primaryKeyApiName]) {
945
- throw new Error(`Cannot update ${def.apiName} object with differing primary key values `);
946
- }
947
- if (def.titleProperty in update && !("$title" in update)) {
948
- update.$title = update[def.titleProperty];
949
- }
950
- const newObject = {
951
- ...this[chunkT4NIFYZS_cjs.UnderlyingOsdkObject],
952
- ...update
953
- };
954
- return createOsdkObject(this[chunkT4NIFYZS_cjs.ClientRef], this[chunkT4NIFYZS_cjs.ObjectDefRef], newObject);
955
- }
956
- },
957
- "$objectSpecifier": {
958
- get: function() {
959
- const rawObj = this[chunkT4NIFYZS_cjs.UnderlyingOsdkObject];
960
- return createObjectSpecifierFromPrimaryKey(this[chunkT4NIFYZS_cjs.ObjectDefRef], rawObj.$primaryKey);
961
- },
962
- enumerable: true
963
- }
964
- };
965
- function createOsdkObject(client, objectDef, simpleOsdkProperties, derivedPropertyTypeByName = {}) {
966
- const rawObj = simpleOsdkProperties;
967
- Object.defineProperties(rawObj, {
968
- [chunkT4NIFYZS_cjs.UnderlyingOsdkObject]: {
969
- enumerable: false,
970
- value: simpleOsdkProperties
971
- },
972
- [chunkT4NIFYZS_cjs.ObjectDefRef]: {
973
- value: objectDef,
974
- enumerable: false
975
- },
976
- [chunkT4NIFYZS_cjs.ClientRef]: {
977
- value: client,
978
- enumerable: false
979
- },
980
- ...basePropDefs
981
- });
982
- for (const propKey of Object.keys(rawObj)) {
983
- if (propKey in objectDef.properties && typeof objectDef.properties[propKey].type === "string" && specialPropertyTypes.has(objectDef.properties[propKey].type)) {
984
- rawObj[propKey] = createSpecialProperty(client, objectDef, rawObj, propKey);
985
- } else if (propKey in derivedPropertyTypeByName) {
986
- rawObj[propKey] = modifyRdpProperties(client, derivedPropertyTypeByName, rawObj[propKey], propKey);
987
- }
988
- }
989
- return Object.freeze(rawObj);
990
- }
991
- function modifyRdpProperties(client, derivedPropertyTypeByName, rawValue, propKey) {
992
- if (derivedPropertyTypeByName[propKey].definition.type === "selection" && derivedPropertyTypeByName[propKey].definition.operation.type === "count") {
993
- const num = Number(rawValue);
994
- !Number.isSafeInteger(num) ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "Count aggregation for derived property " + propKey + " returned a value larger than safe integer.") : invariant__default.default(false) : void 0;
995
- return num;
996
- } else if (derivedPropertyTypeByName[propKey].selectedOrCollectedPropertyType != null && typeof derivedPropertyTypeByName[propKey].selectedOrCollectedPropertyType.type === "string" && specialPropertyTypes.has(derivedPropertyTypeByName[propKey].selectedOrCollectedPropertyType.type)) {
997
- switch (derivedPropertyTypeByName[propKey].selectedOrCollectedPropertyType?.type) {
998
- case "attachment":
999
- if (Array.isArray(rawValue)) {
1000
- return rawValue.map((a) => chunkLPYAXRWJ_cjs.hydrateAttachmentFromRidInternal(client, a.rid));
1001
- } else {
1002
- return chunkLPYAXRWJ_cjs.hydrateAttachmentFromRidInternal(client, rawValue.rid);
1003
- }
1004
- default:
1005
- process.env.NODE_ENV !== "production" ? invariant__default.default(false, "Derived property aggregations for Timeseries and Media are not supported") : invariant__default.default(false) ;
1006
- }
1007
- }
1008
- return rawValue;
1009
- }
1010
- function createSpecialProperty(client, objectDef, rawObject, p) {
1011
- const rawValue = rawObject[p];
1012
- const propDef = objectDef.properties[p];
1013
- if (process.env.NODE_ENV !== "production") {
1014
- !(propDef != null && typeof propDef.type === "string" && specialPropertyTypes.has(propDef.type)) ? process.env.NODE_ENV !== "production" ? invariant__default.default(false) : invariant__default.default(false) : void 0;
1015
- }
1016
- if (propDef.type === "attachment") {
1017
- if (Array.isArray(rawValue)) {
1018
- return rawValue.map((a) => chunkLPYAXRWJ_cjs.hydrateAttachmentFromRidInternal(client, a.rid));
1019
- }
1020
- return chunkLPYAXRWJ_cjs.hydrateAttachmentFromRidInternal(client, rawValue.rid);
1021
- }
1022
- if (propDef.type === "numericTimeseries" || propDef.type === "stringTimeseries" || propDef.type === "sensorTimeseries") {
1023
- return new TimeSeriesPropertyImpl(client, objectDef.apiName, rawObject[objectDef.primaryKeyApiName], p);
1024
- }
1025
- if (propDef.type === "geotimeSeriesReference") {
1026
- return new GeotimeSeriesPropertyImpl(client, objectDef.apiName, rawObject[objectDef.primaryKeyApiName], p, rawValue.type === "geotimeSeriesValue" ? {
1027
- time: rawValue.timestamp,
1028
- value: {
1029
- type: "Point",
1030
- coordinates: rawValue.position
1031
- }
1032
- } : void 0);
1033
- }
1034
- if (propDef.type === "mediaReference") {
1035
- return new MediaReferencePropertyImpl({
1036
- client,
1037
- objectApiName: objectDef.apiName,
1038
- primaryKey: rawObject[objectDef.primaryKeyApiName],
1039
- propertyName: p,
1040
- mediaReference: rawValue
1041
- });
1042
- }
1043
- }
1044
-
1045
- // src/object/convertWireToOsdkObjects.ts
1046
- async function convertWireToOsdkObjects(client, objects, interfaceApiName, forceRemoveRid = false, derivedPropertyTypesByName, selectedProps, strictNonNull = false) {
1047
- fixObjectPropertiesInPlace(objects, forceRemoveRid);
1048
- const ifaceDef = interfaceApiName ? await client.ontologyProvider.getInterfaceDefinition(interfaceApiName) : void 0;
1049
- const ifaceSelected = ifaceDef ? selectedProps ?? Object.keys(ifaceDef.properties) : void 0;
1050
- const ret = [];
1051
- for (const rawObj of objects) {
1052
- const objectDef = await client.ontologyProvider.getObjectDefinition(rawObj.$apiName);
1053
- !objectDef ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, `Missing definition for '${rawObj.$apiName}'`) : invariant__default.default(false) : void 0;
1054
- let objProps;
1055
- let conforming = true;
1056
- if (ifaceDef && ifaceSelected) {
1057
- invariantInterfacesAsViews(objectDef, ifaceDef.apiName, client);
1058
- conforming &&= isConforming(client, ifaceDef, rawObj, ifaceSelected);
1059
- reframeAsObjectInPlace(objectDef, ifaceDef.apiName, rawObj);
1060
- objProps = convertInterfacePropNamesToObjectPropNames(objectDef, ifaceDef.apiName, ifaceSelected);
1061
- } else {
1062
- objProps = selectedProps ?? Object.keys(objectDef.properties);
1063
- }
1064
- conforming &&= isConforming(client, objectDef, rawObj, objProps);
1065
- if (strictNonNull === "throw" && !conforming) {
1066
- throw new Error("Unable to safely convert objects as some non nullable properties are null");
1067
- } else if (strictNonNull === "drop" && !conforming) {
1068
- continue;
1069
- }
1070
- let osdkObject = createOsdkObject(client, objectDef, rawObj, derivedPropertyTypesByName);
1071
- if (interfaceApiName) osdkObject = osdkObject.$as(interfaceApiName);
1072
- ret.push(osdkObject);
1073
- }
1074
- return ret;
1075
- }
1076
- async function convertWireToOsdkObjects2(client, objects, interfaceApiName, derivedPropertyTypeByName, forceRemoveRid = false, selectedProps, strictNonNull = false, interfaceToObjectTypeMappings = {}) {
1077
- fixObjectPropertiesInPlace(objects, forceRemoveRid);
1078
- const ret = [];
1079
- for (const rawObj of objects) {
1080
- const objectDef = await client.ontologyProvider.getObjectDefinition(rawObj.$apiName);
1081
- !objectDef ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, `Missing definition for '${rawObj.$apiName}'`) : invariant__default.default(false) : void 0;
1082
- const interfaceToObjMapping = interfaceApiName ? interfaceToObjectTypeMappings[interfaceApiName][rawObj.$apiName] : void 0;
1083
- const ifaceSelected = interfaceApiName && interfaceToObjMapping ? selectedProps ? Object.keys(interfaceToObjMapping).filter((val) => {
1084
- selectedProps?.includes(interfaceToObjMapping[val]);
1085
- }) : [...Object.values(interfaceToObjMapping), objectDef.primaryKeyApiName] : void 0;
1086
- let objProps;
1087
- let conforming = true;
1088
- if (interfaceApiName && ifaceSelected) {
1089
- invariantInterfacesAsViews(objectDef, interfaceApiName, client);
1090
- objProps = ifaceSelected;
1091
- } else {
1092
- objProps = selectedProps ?? Object.keys(objectDef.properties);
1093
- }
1094
- conforming &&= isConforming(client, objectDef, rawObj, objProps);
1095
- if (strictNonNull === "throw" && !conforming) {
1096
- throw new Error("Unable to safely convert objects as some non nullable properties are null");
1097
- } else if (strictNonNull === "drop" && !conforming) {
1098
- continue;
1099
- }
1100
- let osdkObject = createOsdkObject(client, objectDef, rawObj, derivedPropertyTypeByName);
1101
- if (interfaceApiName) osdkObject = osdkObject.$as(interfaceApiName);
1102
- ret.push(osdkObject);
1103
- }
1104
- return ret;
1105
- }
1106
- function convertInterfacePropNamesToObjectPropNames(objectDef, interfaceApiName, ifacePropsToMap) {
1107
- return ifacePropsToMap.map((ifaceProp) => objectDef.interfaceMap[interfaceApiName][ifaceProp]);
1108
- }
1109
- function reframeAsObjectInPlace(objectDef, interfaceApiName, rawObj) {
1110
- const newProps = {};
1111
- for (const [sptProp, regularProp] of Object.entries(objectDef.interfaceMap[interfaceApiName])) {
1112
- if (sptProp in rawObj) {
1113
- const value = rawObj[sptProp];
1114
- delete rawObj[sptProp];
1115
- if (value !== void 0) {
1116
- newProps[regularProp] = value;
1117
- }
1118
- }
1119
- }
1120
- Object.assign(rawObj, newProps);
1121
- if (!(objectDef.primaryKeyApiName in rawObj)) {
1122
- rawObj[objectDef.primaryKeyApiName] = rawObj.$primaryKey;
1123
- }
1124
- }
1125
- function isConforming(client, def, obj, propsToCheck) {
1126
- for (const propName of propsToCheck) {
1127
- if (propName in def.properties && def.properties[propName].nullable === false && obj[propName] == null) {
1128
- if (process.env.NODE_ENV !== "production") {
1129
- client.logger?.debug({
1130
- obj: {
1131
- $apiName: obj["$apiName"],
1132
- $objectType: obj["$objectType"],
1133
- $primaryKey: obj["$primaryKey"]
1134
- }
1135
- }, `Found object that does not conform to its definition. Expected ${def.apiName}'s ${propName} to not be null.`);
1136
- }
1137
- return false;
1138
- }
1139
- }
1140
- return true;
1141
- }
1142
- function invariantInterfacesAsViews(objectDef, interfaceApiName, client) {
1143
- if (objectDef.interfaceMap?.[interfaceApiName] == null) {
1144
- const warning = "Interfaces are only supported 'as views' but your metadata object is missing the correct information. This suggests your interfaces have not been migrated to the newer version yet and you cannot use this version of the SDK.";
1145
- if (client.logger) {
1146
- client.logger.warn(warning);
1147
- } else {
1148
- console.error(`WARNING! ${warning}`);
1149
- }
1150
- throw new Error(warning);
1151
- }
1152
- }
1153
- function fixObjectPropertiesInPlace(objs, forceRemoveRid) {
1154
- for (const obj of objs) {
1155
- if (forceRemoveRid) {
1156
- delete obj.__rid;
1157
- }
1158
- if (obj.__rid) {
1159
- obj.$rid = obj.__rid;
1160
- delete obj.__rid;
1161
- }
1162
- obj.$apiName ??= obj.__apiName;
1163
- obj.$objectType = obj.$apiName;
1164
- obj.$primaryKey ??= obj.__primaryKey;
1165
- obj.$title ??= obj.__title;
1166
- delete obj.__apiName;
1167
- delete obj.__primaryKey;
1168
- delete obj.__title;
1169
- }
1170
- }
1171
-
1172
- // src/object/Cache.ts
1173
- function createClientCache(fn) {
1174
- const cache = /* @__PURE__ */ new WeakMap();
1175
- function get(client, key) {
1176
- if (cache.get(client.clientCacheKey) == null) {
1177
- cache.set(client.clientCacheKey, /* @__PURE__ */ new Map());
1178
- }
1179
- let r = cache.get(client.clientCacheKey).get(key);
1180
- if (r === void 0 && fn !== void 0) {
1181
- return set(client, key, fn(client, key));
1182
- } else {
1183
- return r;
1184
- }
1185
- }
1186
- function set(client, key, value) {
1187
- if (cache.get(client.clientCacheKey) == null) {
1188
- cache.set(client.clientCacheKey, /* @__PURE__ */ new Map());
1189
- }
1190
- cache.get(client.clientCacheKey).set(key, value);
1191
- return value;
1192
- }
1193
- function remove(client, key) {
1194
- if (cache.get(client.clientCacheKey) == null) return false;
1195
- return cache.get(client.clientCacheKey).delete(key);
1196
- }
1197
- return {
1198
- get,
1199
- set,
1200
- remove
1201
- };
1202
- }
1203
- function createAsyncClientCache(fn, createCacheLocal = createClientCache) {
1204
- const cache = createCacheLocal();
1205
- const inProgress = createCacheLocal();
1206
- const ret = {
1207
- getOrUndefined: function getOrUndefined(client, key) {
1208
- return cache.get(client, key);
1209
- },
1210
- get: async function get(client, key) {
1211
- return cache.get(client, key) ?? inProgress.get(client, key) ?? ret.set(client, key, fn(client, key));
1212
- },
1213
- set: async function set(client, k, v) {
1214
- try {
1215
- const r = await inProgress.set(client, k, v);
1216
- cache.set(client, k, r);
1217
- inProgress.remove(client, k);
1218
- return r;
1219
- } catch (e) {
1220
- inProgress.remove(client, k);
1221
- throw e;
1222
- }
1223
- }
1224
- };
1225
- return ret;
1226
- }
1227
- async function loadActionMetadata(client, actionType) {
1228
- const r = await chunkUCW7RLKM_cjs.ActionTypeV2_exports.get(client, await client.ontologyRid, actionType);
1229
- return generatorConverters.wireActionTypeV2ToSdkActionMetadata(r);
1230
- }
1231
- async function loadFullObjectMetadata(client, objectType) {
1232
- const full = await chunkUCW7RLKM_cjs.ObjectTypeV2_exports.getFullMetadata(client, await client.ontologyRid, objectType, {
1233
- preview: true
1234
- });
1235
- const ret = generatorConverters.wireObjectTypeFullMetadataToSdkObjectMetadata(full, true);
1236
- return {
1237
- ...ret
1238
- };
1239
- }
1240
- async function loadInterfaceMetadata(client, objectType) {
1241
- const r = await chunkUCW7RLKM_cjs.OntologyInterface_exports.get(client, await client.ontologyRid, objectType, {
1242
- preview: true
1243
- });
1244
- return generatorConverters.__UNSTABLE_wireInterfaceTypeV2ToSdkObjectDefinition(r, true);
1245
- }
1246
- async function loadQueryMetadata(client, queryTypeApiNameAndVersion) {
1247
- const [apiName, version] = queryTypeApiNameAndVersion.split(":");
1248
- const r = await chunkUCW7RLKM_cjs.QueryType_exports.get(client, await client.ontologyRid, apiName, {
1249
- version
1250
- });
1251
- return generatorConverters.wireQueryTypeV2ToSdkQueryMetadata(r);
1252
- }
1253
-
1254
- // src/ontology/StandardOntologyProvider.ts
1255
- var createStandardOntologyProviderFactory = (client) => {
1256
- return (client2) => {
1257
- async function loadObject(client3, key) {
1258
- const objectDef = await loadFullObjectMetadata(client3, key);
1259
- const interfaceDefs = Object.fromEntries((await Promise.all(objectDef.implements?.map((i) => ret.getInterfaceDefinition(i)) ?? [])).map((i) => [i.apiName, {
1260
- def: i,
1261
- handler: void 0
1262
- }]));
1263
- const fullObjectDef = {
1264
- ...objectDef,
1265
- [InterfaceDefinitions]: interfaceDefs
1266
- };
1267
- return fullObjectDef;
1268
- }
1269
- async function loadInterface(client3, key) {
1270
- return loadInterfaceMetadata(client3, key);
1271
- }
1272
- async function loadQuery(client3, key) {
1273
- return loadQueryMetadata(client3, key);
1274
- }
1275
- async function loadAction(client3, key) {
1276
- const r = await loadActionMetadata(client3, key);
1277
- return r;
1278
- }
1279
- function makeGetter(fn) {
1280
- const cache = createAsyncClientCache((client3, key) => fn(client3, key, false));
1281
- return async (apiName) => {
1282
- return await cache.get(client2, apiName);
1283
- };
1284
- }
1285
- function makeQueryGetter(client3, fn) {
1286
- const queryCache = createAsyncClientCache((client4, key) => {
1287
- return fn(client4, key);
1288
- });
1289
- return async (apiName, version) => {
1290
- const key = version ? `${apiName}:${version}` : apiName;
1291
- return await queryCache.get(client3, key);
1292
- };
1293
- }
1294
- const ret = {
1295
- getObjectDefinition: makeGetter(loadObject),
1296
- getInterfaceDefinition: makeGetter(loadInterface),
1297
- getActionDefinition: makeGetter(loadAction),
1298
- getQueryDefinition: makeQueryGetter(client2, loadQuery)
1299
- };
1300
- return ret;
1301
- };
1302
- };
1303
-
1304
- // src/util/UserAgent.ts
1305
- var USER_AGENT = `osdk-client/${"2.2.1"}`;
1306
-
1307
- // src/createMinimalClient.ts
1308
- function createMinimalClient(metadata, baseUrl, tokenProvider, options = {}, fetchFn = global.fetch, objectSetFactory = chunkLPYAXRWJ_cjs.createObjectSet, createOntologyProviderFactory = createStandardOntologyProviderFactory) {
1309
- if (process.env.NODE_ENV !== "production") {
1310
- try {
1311
- new URL(baseUrl);
1312
- } catch (e) {
1313
- const hint = !baseUrl.startsWith("http://") || !baseUrl.startsWith("https://") ? ". Did you forget to add 'http://' or 'https://'?" : "";
1314
- throw new Error(`Invalid stack URL: ${baseUrl}${hint}`);
1315
- }
1316
- }
1317
- const processedBaseUrl = new URL(baseUrl);
1318
- processedBaseUrl.pathname += processedBaseUrl.pathname.endsWith("/") ? "" : "/";
1319
- const minimalClient = {
1320
- ...shared_client_impl.createSharedClientContext(processedBaseUrl.toString(), tokenProvider, USER_AGENT, fetchFn),
1321
- objectSetFactory,
1322
- objectFactory: convertWireToOsdkObjects,
1323
- objectFactory2: convertWireToOsdkObjects2,
1324
- ontologyRid: metadata.ontologyRid,
1325
- logger: options.logger,
1326
- clientCacheKey: {},
1327
- requestContext: {}
1328
- };
1329
- return Object.freeze(Object.assign(minimalClient, {
1330
- ontologyProvider: createOntologyProviderFactory(options)(minimalClient)
1331
- }));
1332
- }
1333
-
1334
- // src/fetchMetadata.ts
1335
- var fetchMetadataInternal = async (client, definition) => {
1336
- if (definition.type === "object") {
1337
- const {
1338
- [InterfaceDefinitions]: interfaceDefs,
1339
- ...objectTypeDef
1340
- } = await client.ontologyProvider.getObjectDefinition(definition.apiName);
1341
- return objectTypeDef;
1342
- } else if (definition.type === "interface") {
1343
- return client.ontologyProvider.getInterfaceDefinition(definition.apiName);
1344
- } else if (definition.type === "action") {
1345
- return client.ontologyProvider.getActionDefinition(definition.apiName);
1346
- } else if (definition.type === "query") {
1347
- return client.ontologyProvider.getQueryDefinition(definition.apiName, definition.isFixedVersion ? definition.version : void 0);
1348
- } else {
1349
- throw new Error("Not implemented for given definition");
1350
- }
1351
- };
1352
-
1353
- // src/util/toDataValueQueries.ts
1354
- async function toDataValueQueries(value, client, desiredType) {
1355
- if (value == null) {
1356
- return value;
1357
- }
1358
- if (Array.isArray(value) && desiredType.multiplicity) {
1359
- const values = Array.from(value);
1360
- if (values.some((dataValue) => isAttachmentUpload(dataValue) || isAttachmentFile(dataValue))) {
1361
- const converted = [];
1362
- for (const value2 of values) {
1363
- converted.push(await toDataValueQueries(value2, client, desiredType));
1364
- }
1365
- return converted;
1366
- }
1367
- const promiseArray = Array.from(value, async (innerValue) => await toDataValueQueries(innerValue, client, desiredType));
1368
- return Promise.all(promiseArray);
1369
- }
1370
- switch (desiredType.type) {
1371
- case "attachment": {
1372
- if (isAttachmentUpload(value)) {
1373
- const attachment = await chunkUCW7RLKM_cjs.Attachment_exports.upload(client, value.data, {
1374
- filename: value.name
1375
- });
1376
- return attachment.rid;
1377
- }
1378
- if (isAttachmentFile(value)) {
1379
- const attachment = await chunkUCW7RLKM_cjs.Attachment_exports.upload(client, value, {
1380
- filename: value.name
1381
- });
1382
- return attachment.rid;
1383
- }
1384
- return value;
1385
- }
1386
- case "twoDimensionalAggregation": {
1387
- return {
1388
- groups: value
1389
- };
1390
- }
1391
- case "threeDimensionalAggregation": {
1392
- return {
1393
- groups: value
1394
- };
1395
- }
1396
- case "set": {
1397
- if (value instanceof Set) {
1398
- const promiseArray = Array.from(value, async (innerValue) => await toDataValueQueries(innerValue, client, desiredType["set"]));
1399
- return Promise.all(promiseArray);
1400
- }
1401
- break;
1402
- }
1403
- case "object": {
1404
- if (isObjectSpecifiersObject(value)) {
1405
- return value.$primaryKey;
1406
- }
1407
- break;
1408
- }
1409
- case "objectSet": {
1410
- if (chunkLPYAXRWJ_cjs.isWireObjectSet(value)) {
1411
- return value;
1412
- }
1413
- if (chunkLPYAXRWJ_cjs.isObjectSet(value)) {
1414
- return chunkLPYAXRWJ_cjs.getWireObjectSet(value);
1415
- }
1416
- break;
1417
- }
1418
- case "map": {
1419
- if (typeof value === "object") {
1420
- const entrySet = [];
1421
- for (const [key, mapValue] of Object.entries(value)) {
1422
- entrySet.push({
1423
- key: desiredType.keyType.type === "object" ? extractPrimaryKeyFromObjectSpecifier(key) : await toDataValueQueries(key, client, desiredType.keyType),
1424
- value: await toDataValueQueries(mapValue, client, desiredType.valueType)
1425
- });
1426
- }
1427
- return entrySet;
1428
- }
1429
- break;
1430
- }
1431
- case "struct": {
1432
- if (typeof value === "object") {
1433
- const structMap = {};
1434
- for (const [key, structValue] of Object.entries(value)) {
1435
- structMap[key] = await toDataValueQueries(structValue, client, desiredType["struct"][key]);
1436
- }
1437
- return structMap;
1438
- }
1439
- }
1440
- case "boolean":
1441
- case "date":
1442
- case "double":
1443
- case "float":
1444
- case "integer":
1445
- case "long":
1446
- case "string":
1447
- case "timestamp":
1448
- return value;
1449
- }
1450
- return value;
1451
- }
1452
-
1453
- // src/queries/applyQuery.ts
1454
- async function applyQuery(client, query, params) {
1455
- const qd = await client.ontologyProvider.getQueryDefinition(query.apiName, query.isFixedVersion ? query.version : void 0);
1456
- const response = await chunkUCW7RLKM_cjs.Query_exports.execute(chunkUCW7RLKM_cjs.addUserAgentAndRequestContextHeaders(chunkLPYAXRWJ_cjs.augmentRequestContext(client, (_) => ({
1457
- finalMethodCall: "applyQuery"
1458
- })), query), await client.ontologyRid, query.apiName, {
1459
- parameters: params ? await remapQueryParams(params, client, qd.parameters) : {}
1460
- }, {
1461
- version: qd.version
1462
- });
1463
- const objectOutputDefs = await getRequiredDefinitions(qd.output, client);
1464
- const remappedResponse = await remapQueryResponse(client, qd.output, response.value, objectOutputDefs);
1465
- return remappedResponse;
1466
- }
1467
- async function remapQueryParams(params, client, paramTypes) {
1468
- const parameterMap = {};
1469
- for (const [key, value] of Object.entries(params)) {
1470
- parameterMap[key] = await toDataValueQueries(value, client, paramTypes[key]);
1471
- }
1472
- return parameterMap;
1473
- }
1474
- async function remapQueryResponse(client, responseDataType, responseValue, definitions) {
1475
- if (responseValue == null) {
1476
- if (responseDataType.nullable) {
1477
- return void 0;
1478
- } else {
1479
- throw new Error("Got null response when nullable was not allowed");
1480
- }
1481
- }
1482
- if (responseDataType.multiplicity != null && responseDataType.multiplicity) {
1483
- const withoutMultiplicity = {
1484
- ...responseDataType,
1485
- multiplicity: false
1486
- };
1487
- for (let i = 0; i < responseValue.length; i++) {
1488
- responseValue[i] = await remapQueryResponse(client, withoutMultiplicity, responseValue[i], definitions);
1489
- }
1490
- return responseValue;
1491
- }
1492
- switch (responseDataType.type) {
1493
- case "union": {
1494
- throw new Error("Union return types are not yet supported");
1495
- }
1496
- case "set": {
1497
- for (let i = 0; i < responseValue.length; i++) {
1498
- responseValue[i] = await remapQueryResponse(client, responseDataType.set, responseValue[i], definitions);
1499
- }
1500
- return responseValue;
1501
- }
1502
- case "attachment": {
1503
- return chunkLPYAXRWJ_cjs.hydrateAttachmentFromRidInternal(client, responseValue);
1504
- }
1505
- case "object": {
1506
- const def = definitions.get(responseDataType.object);
1507
- if (!def || def.type !== "object") {
1508
- throw new Error(`Missing definition for ${responseDataType.object}`);
1509
- }
1510
- return createQueryObjectResponse(responseValue, def);
1511
- }
1512
- case "objectSet": {
1513
- const def = definitions.get(responseDataType.objectSet);
1514
- if (!def) {
1515
- throw new Error(`Missing definition for ${responseDataType.objectSet}`);
1516
- }
1517
- if (typeof responseValue === "string") {
1518
- return chunkLPYAXRWJ_cjs.createObjectSet(def, client, {
1519
- type: "intersect",
1520
- objectSets: [{
1521
- type: "base",
1522
- objectType: responseDataType.objectSet
1523
- }, {
1524
- type: "reference",
1525
- reference: responseValue
1526
- }]
1527
- });
1528
- }
1529
- return chunkLPYAXRWJ_cjs.createObjectSet(def, client, responseValue);
1530
- }
1531
- case "struct": {
1532
- for (const [key, subtype] of Object.entries(responseDataType.struct)) {
1533
- if (requiresConversion(subtype)) {
1534
- responseValue[key] = await remapQueryResponse(client, subtype, responseValue[key], definitions);
1535
- }
1536
- }
1537
- return responseValue;
1538
- }
1539
- case "map": {
1540
- const map = {};
1541
- !Array.isArray(responseValue) ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "Expected array entry") : invariant__default.default(false) : void 0;
1542
- for (const entry of responseValue) {
1543
- !entry.key ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "Expected key") : invariant__default.default(false) : void 0;
1544
- !entry.value ? process.env.NODE_ENV !== "production" ? invariant__default.default(false, "Expected value") : invariant__default.default(false) : void 0;
1545
- const key = responseDataType.keyType.type === "object" ? getObjectSpecifier(entry.key, responseDataType.keyType.object, definitions) : entry.key;
1546
- const value = await remapQueryResponse(client, responseDataType.valueType, entry.value, definitions);
1547
- map[key] = value;
1548
- }
1549
- return map;
1550
- }
1551
- case "twoDimensionalAggregation": {
1552
- const result = [];
1553
- for (const {
1554
- key,
1555
- value
1556
- } of responseValue.groups) {
1557
- result.push({
1558
- key,
1559
- value
1560
- });
1561
- }
1562
- return result;
1563
- }
1564
- case "threeDimensionalAggregation": {
1565
- const result = [];
1566
- for (const {
1567
- key,
1568
- groups
1569
- } of responseValue.groups) {
1570
- const subResult = [];
1571
- for (const {
1572
- key: subKey,
1573
- value
1574
- } of groups) {
1575
- subResult.push({
1576
- key: subKey,
1577
- value
1578
- });
1579
- }
1580
- result.push({
1581
- key,
1582
- groups: subResult
1583
- });
1584
- }
1585
- return result;
1586
- }
1587
- }
1588
- return responseValue;
1589
- }
1590
- async function getRequiredDefinitions(dataType, client) {
1591
- const result = /* @__PURE__ */ new Map();
1592
- switch (dataType.type) {
1593
- case "objectSet": {
1594
- const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.objectSet);
1595
- result.set(dataType.objectSet, objectDef);
1596
- break;
1597
- }
1598
- case "object": {
1599
- const objectDef = await client.ontologyProvider.getObjectDefinition(dataType.object);
1600
- result.set(dataType.object, objectDef);
1601
- break;
1602
- }
1603
- case "set": {
1604
- return getRequiredDefinitions(dataType.set, client);
1605
- }
1606
- case "map": {
1607
- for (const value of [dataType.keyType, dataType.valueType]) {
1608
- for (const [type, objectDef] of await getRequiredDefinitions(value, client)) {
1609
- result.set(type, objectDef);
1610
- }
1611
- }
1612
- break;
1613
- }
1614
- case "struct": {
1615
- for (const value of Object.values(dataType.struct)) {
1616
- for (const [type, objectDef] of await getRequiredDefinitions(value, client)) {
1617
- result.set(type, objectDef);
1618
- }
1619
- }
1620
- break;
1621
- }
1622
- }
1623
- return result;
1624
- }
1625
- function requiresConversion(dataType) {
1626
- switch (dataType.type) {
1627
- case "boolean":
1628
- case "date":
1629
- case "double":
1630
- case "float":
1631
- case "integer":
1632
- case "long":
1633
- case "string":
1634
- case "timestamp":
1635
- return false;
1636
- case "union":
1637
- return true;
1638
- case "struct":
1639
- return Object.values(dataType.struct).some(requiresConversion);
1640
- case "set":
1641
- return requiresConversion(dataType.set);
1642
- case "attachment":
1643
- case "objectSet":
1644
- case "twoDimensionalAggregation":
1645
- case "threeDimensionalAggregation":
1646
- case "object":
1647
- return true;
1648
- default:
1649
- return false;
1650
- }
1651
- }
1652
- function getObjectSpecifier(primaryKey, objectTypeApiName, definitions) {
1653
- const def = definitions.get(objectTypeApiName);
1654
- if (!def || def.type !== "object") {
1655
- throw new Error(`Missing definition for ${objectTypeApiName}`);
1656
- }
1657
- return createObjectSpecifierFromPrimaryKey(def, primaryKey);
1658
- }
1659
- function createQueryObjectResponse(primaryKey, objectDef) {
1660
- return {
1661
- $apiName: objectDef.apiName,
1662
- $title: void 0,
1663
- $objectType: objectDef.apiName,
1664
- $primaryKey: primaryKey,
1665
- $objectSpecifier: createObjectSpecifierFromPrimaryKey(objectDef, primaryKey)
1666
- };
1667
- }
1668
-
1669
- // src/createClient.ts
1670
- var ActionInvoker = class {
1671
- constructor(clientCtx, actionDef) {
1672
- this.applyAction = applyAction.bind(void 0, clientCtx, actionDef);
1673
- this.batchApplyAction = applyAction.bind(void 0, clientCtx, actionDef);
1674
- }
1675
- };
1676
- var QueryInvoker = class {
1677
- constructor(clientCtx, queryDef) {
1678
- this.executeFunction = applyQuery.bind(void 0, clientCtx, queryDef);
1679
- }
1680
- };
1681
- function createClientInternal(objectSetFactory, baseUrl, ontologyRid, tokenProvider, options = void 0, fetchFn = fetch) {
1682
- if (typeof ontologyRid === "string") {
1683
- if (!ontologyRid.startsWith("ri.")) {
1684
- throw new Error("Invalid ontology RID");
1685
- }
1686
- } else {
1687
- ontologyRid.then((ontologyRid2) => {
1688
- if (!ontologyRid2.startsWith("ri.")) {
1689
- throw new Error("Invalid ontology RID");
1690
- }
1691
- });
1692
- }
1693
- const clientCtx = createMinimalClient({
1694
- ontologyRid
1695
- }, baseUrl, tokenProvider, {
1696
- ...options,
1697
- logger: options?.logger ?? new chunkLPYAXRWJ_cjs.MinimalLogger()
1698
- }, fetchFn, objectSetFactory);
1699
- function clientFn(o) {
1700
- if (o.type === "object" || o.type === "interface") {
1701
- return objectSetFactory(o, clientCtx);
1702
- } else if (o.type === "action") {
1703
- return new ActionInvoker(clientCtx, o);
1704
- } else if (o.type === "query") {
1705
- return new QueryInvoker(clientCtx, o);
1706
- } else if (o.type === "experiment") {
1707
- switch (o.name) {
1708
- case unstable.__EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks.name:
1709
- return {
1710
- getBulkLinks: createBulkLinksAsyncIterFactory(clientCtx)
1711
- };
1712
- case unstable.__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid.name:
1713
- return {
1714
- fetchOneByRid: async (objectType, rid, options2) => {
1715
- return await chunkLPYAXRWJ_cjs.fetchSingle(clientCtx, objectType, options2, createWithRid([rid]));
1716
- }
1717
- };
1718
- case unstable.__EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference.name:
1719
- return {
1720
- createMediaReference: async (args) => {
1721
- const {
1722
- data,
1723
- fileName,
1724
- objectType,
1725
- propertyType
1726
- } = args;
1727
- return await chunkUCW7RLKM_cjs.MediaReferenceProperty_exports.upload(clientCtx, await clientCtx.ontologyRid, objectType.apiName, propertyType, data, {
1728
- mediaItemPath: fileName,
1729
- preview: true
1730
- });
1731
- }
1732
- };
1733
- case unstable.__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid.name:
1734
- return {
1735
- fetchPageByRid: async (objectOrInterfaceType, rids, options2 = {}) => {
1736
- return await chunkUCW7RLKM_cjs.fetchPage(clientCtx, objectOrInterfaceType, options2, createWithRid(rids));
1737
- }
1738
- };
1739
- }
1740
- throw new Error("not implemented");
1741
- } else {
1742
- throw new Error("not implemented");
1743
- }
1744
- }
1745
- const fetchMetadata = fetchMetadataInternal.bind(void 0, clientCtx);
1746
- const symbolClientContext2 = "__osdkClientContext";
1747
- const client = Object.defineProperties(clientFn, {
1748
- [chunkUCW7RLKM_cjs.symbolClientContext]: {
1749
- value: clientCtx
1750
- },
1751
- [symbolClientContext2]: {
1752
- value: clientCtx
1753
- },
1754
- [chunkUCW7RLKM_cjs.additionalContext]: {
1755
- value: clientCtx
1756
- },
1757
- fetchMetadata: {
1758
- value: fetchMetadata
1759
- }
1760
- });
1761
- return client;
1762
- }
1763
- var createClient = createClientInternal.bind(void 0, chunkLPYAXRWJ_cjs.createObjectSet);
1764
- function createWithRid(rids) {
1765
- const withRid = {
1766
- type: "static",
1767
- "objects": rids
1768
- };
1769
- return withRid;
1770
- }
1771
14
  function createPlatformClient(baseUrl, tokenProvider, options = void 0, fetchFn = fetch) {
1772
- return shared_client_impl.createSharedClientContext(baseUrl, tokenProvider, USER_AGENT, fetchFn);
15
+ return shared_client_impl.createSharedClientContext(baseUrl, tokenProvider, chunkVZ57PNLC_cjs.USER_AGENT, fetchFn);
1773
16
  }
1774
17
  var isoRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?$/;
1775
18
  var extractDate = (dateTime) => {
@@ -1791,6 +34,18 @@ var extractDateFromIsoString = (dateTime) => {
1791
34
  return dateTime.split("T")[0];
1792
35
  };
1793
36
 
37
+ Object.defineProperty(exports, "ActionValidationError", {
38
+ enumerable: true,
39
+ get: function () { return chunkVZ57PNLC_cjs.ActionValidationError; }
40
+ });
41
+ Object.defineProperty(exports, "createAttachmentUpload", {
42
+ enumerable: true,
43
+ get: function () { return chunkVZ57PNLC_cjs.createAttachmentUpload; }
44
+ });
45
+ Object.defineProperty(exports, "createClient", {
46
+ enumerable: true,
47
+ get: function () { return chunkVZ57PNLC_cjs.createClient; }
48
+ });
1794
49
  Object.defineProperty(exports, "isOk", {
1795
50
  enumerable: true,
1796
51
  get: function () { return api.isOk; }
@@ -1799,9 +54,6 @@ Object.defineProperty(exports, "PalantirApiError", {
1799
54
  enumerable: true,
1800
55
  get: function () { return shared_net_errors.PalantirApiError; }
1801
56
  });
1802
- exports.ActionValidationError = ActionValidationError;
1803
- exports.createAttachmentUpload = createAttachmentUpload;
1804
- exports.createClient = createClient;
1805
57
  exports.createPlatformClient = createPlatformClient;
1806
58
  exports.extractDate = extractDate;
1807
59
  exports.extractDateInLocalTime = extractDateInLocalTime;