@osdk/client 2.1.0-beta.17 → 2.1.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/build/browser/__unstable/ConjureSupport.js +1 -1
- package/build/browser/__unstable/ConjureSupport.js.map +1 -1
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
- package/build/browser/createClient.d.ts.map +1 -1
- package/build/browser/createClient.js.map +1 -1
- package/build/browser/createClient.test.js +11 -1
- package/build/browser/createClient.test.js.map +1 -1
- package/build/browser/createGeotimeSeriesProperty.d.ts.map +1 -1
- package/build/browser/createTimeseriesProperty.d.ts.map +1 -1
- package/build/browser/fetchMetadata.test.js +7 -0
- package/build/browser/fetchMetadata.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js +0 -5
- package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +41 -85
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.test.js +0 -6
- package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +49 -133
- package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js +2 -2
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js +14 -38
- package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.test.js +15 -65
- package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/browser/object/object.test.d.ts.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +57 -16
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +31 -16
- package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
- package/build/browser/queries/applyQuery.d.ts.map +1 -1
- package/build/browser/queries/applyQuery.js +0 -1
- package/build/browser/queries/applyQuery.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/datetimeConverters.test.js.map +1 -1
- package/build/browser/util/timeseriesUtils.d.ts.map +1 -1
- package/build/esm/__unstable/ConjureSupport.js +1 -1
- package/build/esm/__unstable/ConjureSupport.js.map +1 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
- package/build/esm/createClient.d.ts.map +1 -1
- package/build/esm/createClient.js.map +1 -1
- package/build/esm/createClient.test.js +11 -1
- package/build/esm/createClient.test.js.map +1 -1
- package/build/esm/createGeotimeSeriesProperty.d.ts.map +1 -1
- package/build/esm/createTimeseriesProperty.d.ts.map +1 -1
- package/build/esm/fetchMetadata.test.js +7 -0
- package/build/esm/fetchMetadata.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js +0 -5
- package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +41 -85
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.test.js +0 -6
- package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +49 -133
- package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js +2 -2
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js +14 -38
- package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.test.js +15 -65
- package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
- package/build/esm/object/object.test.d.ts.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +57 -19
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +31 -16
- package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
- package/build/esm/queries/applyQuery.d.ts.map +1 -1
- package/build/esm/queries/applyQuery.js +0 -1
- package/build/esm/queries/applyQuery.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/datetimeConverters.test.js.map +1 -1
- package/build/esm/util/timeseriesUtils.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -15,46 +15,22 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { getWireObjectSet } from "../../objectSet/createObjectSet.js";
|
|
17
17
|
import { fetchSingle, fetchSingleWithErrors } from "../fetchSingle.js";
|
|
18
|
-
import { ClientRef, ObjectDefRef,
|
|
18
|
+
import { ClientRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
|
|
19
19
|
/** @internal */
|
|
20
20
|
export function get$link(holder) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
[ObjectDefRef]: objDef,
|
|
27
|
-
[ClientRef]: client,
|
|
28
|
-
[RawObject]: rawObj
|
|
29
|
-
} = target;
|
|
30
|
-
const linkDef = objDef.links[p];
|
|
31
|
-
if (linkDef == null) {
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
21
|
+
const client = holder[ClientRef];
|
|
22
|
+
const objDef = holder[ObjectDefRef];
|
|
23
|
+
const rawObj = holder[UnderlyingOsdkObject];
|
|
24
|
+
return Object.freeze(Object.fromEntries(Object.keys(objDef.links).map(linkName => {
|
|
25
|
+
const linkDef = objDef.links[linkName];
|
|
34
26
|
const objectSet = client.objectSetFactory(objDef, client).where({
|
|
35
27
|
[objDef.primaryKeyApiName]: rawObj.$primaryKey
|
|
36
|
-
}).pivotTo(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
ownKeys(target) {
|
|
47
|
-
return [...Object.keys(target[ObjectDefRef].links)];
|
|
48
|
-
},
|
|
49
|
-
getOwnPropertyDescriptor(target, p) {
|
|
50
|
-
if (target[ObjectDefRef].links[p]) {
|
|
51
|
-
return {
|
|
52
|
-
enumerable: true,
|
|
53
|
-
configurable: true,
|
|
54
|
-
// fixme
|
|
55
|
-
writable: false
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
};
|
|
28
|
+
}).pivotTo(linkName);
|
|
29
|
+
const value = !linkDef.multiplicity ? {
|
|
30
|
+
fetchOne: options => fetchSingle(client, objDef, options ?? {}, getWireObjectSet(objectSet)),
|
|
31
|
+
fetchOneWithErrors: options => fetchSingleWithErrors(client, objDef, options ?? {}, getWireObjectSet(objectSet))
|
|
32
|
+
} : objectSet;
|
|
33
|
+
return [linkName, value];
|
|
34
|
+
})));
|
|
35
|
+
}
|
|
60
36
|
//# sourceMappingURL=getDollarLink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDollarLink.js","names":["getWireObjectSet","fetchSingle","fetchSingleWithErrors","ClientRef","ObjectDefRef","
|
|
1
|
+
{"version":3,"file":"getDollarLink.js","names":["getWireObjectSet","fetchSingle","fetchSingleWithErrors","ClientRef","ObjectDefRef","UnderlyingOsdkObject","get$link","holder","client","objDef","rawObj","Object","freeze","fromEntries","keys","links","map","linkName","linkDef","objectSet","objectSetFactory","where","primaryKeyApiName","$primaryKey","pivotTo","value","multiplicity","fetchOne","options","fetchOneWithErrors"],"sources":["getDollarLink.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 { getWireObjectSet } from \"../../objectSet/createObjectSet.js\";\nimport { fetchSingle, fetchSingleWithErrors } from \"../fetchSingle.js\";\nimport { ClientRef, ObjectDefRef, UnderlyingOsdkObject, } from \"./InternalSymbols.js\";\n/** @internal */\nexport function get$link(holder) {\n const client = holder[ClientRef];\n const objDef = holder[ObjectDefRef];\n const rawObj = holder[UnderlyingOsdkObject];\n return Object.freeze(Object.fromEntries(Object.keys(objDef.links).map((linkName) => {\n const linkDef = objDef.links[linkName];\n const objectSet = client.objectSetFactory(objDef, client)\n .where({\n [objDef.primaryKeyApiName]: rawObj.$primaryKey,\n })\n .pivotTo(linkName);\n const value = !linkDef.multiplicity\n ? {\n fetchOne: (options) => fetchSingle(client, objDef, options ?? {}, getWireObjectSet(objectSet)),\n fetchOneWithErrors: (options) => fetchSingleWithErrors(client, objDef, options ?? {}, getWireObjectSet(objectSet)),\n }\n : objectSet;\n return [linkName, value];\n })));\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,gBAAgB,QAAQ,oCAAoC;AACrE,SAASC,WAAW,EAAEC,qBAAqB,QAAQ,mBAAmB;AACtE,SAASC,SAAS,EAAEC,YAAY,EAAEC,oBAAoB,QAAS,sBAAsB;AACrF;AACA,OAAO,SAASC,QAAQA,CAACC,MAAM,EAAE;EAC7B,MAAMC,MAAM,GAAGD,MAAM,CAACJ,SAAS,CAAC;EAChC,MAAMM,MAAM,GAAGF,MAAM,CAACH,YAAY,CAAC;EACnC,MAAMM,MAAM,GAAGH,MAAM,CAACF,oBAAoB,CAAC;EAC3C,OAAOM,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,WAAW,CAACF,MAAM,CAACG,IAAI,CAACL,MAAM,CAACM,KAAK,CAAC,CAACC,GAAG,CAAEC,QAAQ,IAAK;IAChF,MAAMC,OAAO,GAAGT,MAAM,CAACM,KAAK,CAACE,QAAQ,CAAC;IACtC,MAAME,SAAS,GAAGX,MAAM,CAACY,gBAAgB,CAACX,MAAM,EAAED,MAAM,CAAC,CACpDa,KAAK,CAAC;MACP,CAACZ,MAAM,CAACa,iBAAiB,GAAGZ,MAAM,CAACa;IACvC,CAAC,CAAC,CACGC,OAAO,CAACP,QAAQ,CAAC;IACtB,MAAMQ,KAAK,GAAG,CAACP,OAAO,CAACQ,YAAY,GAC7B;MACEC,QAAQ,EAAGC,OAAO,IAAK3B,WAAW,CAACO,MAAM,EAAEC,MAAM,EAAEmB,OAAO,IAAI,CAAC,CAAC,EAAE5B,gBAAgB,CAACmB,SAAS,CAAC,CAAC;MAC9FU,kBAAkB,EAAGD,OAAO,IAAK1B,qBAAqB,CAACM,MAAM,EAAEC,MAAM,EAAEmB,OAAO,IAAI,CAAC,CAAC,EAAE5B,gBAAgB,CAACmB,SAAS,CAAC;IACrH,CAAC,GACCA,SAAS;IACf,OAAO,CAACF,QAAQ,EAAEQ,KAAK,CAAC;EAC5B,CAAC,CAAC,CAAC,CAAC;AACR","ignoreList":[]}
|
|
@@ -41,7 +41,7 @@ describe("convertWireToOsdkObjects", () => {
|
|
|
41
41
|
const {
|
|
42
42
|
data: [employee]
|
|
43
43
|
} = await client(Employee).fetchPage();
|
|
44
|
-
expect(Object.keys(employee).sort()).toEqual(["employeeId", "fullName", "office", "class", "startDate", "employeeSensor", "employeeStatus", "$apiName", "$objectType", "$primaryKey", "employeeLocation"].sort());
|
|
44
|
+
expect(Object.keys(employee).sort()).toEqual(["employeeId", "$title", "fullName", "office", "class", "startDate", "employeeSensor", "employeeStatus", "$apiName", "$objectType", "$primaryKey", "employeeLocation"].sort());
|
|
45
45
|
expect(Object.keys(employee.$as)).toEqual([]);
|
|
46
46
|
expect(Object.keys(employee.$link)).toEqual(["peeps", "lead", "officeLink"]);
|
|
47
47
|
});
|
|
@@ -98,6 +98,20 @@ describe("convertWireToOsdkObjects", () => {
|
|
|
98
98
|
expect(emptyAttachment).toBeUndefined();
|
|
99
99
|
expect(emptyAttachmentArray).toBeUndefined();
|
|
100
100
|
});
|
|
101
|
+
it("creates immutable objects", async () => {
|
|
102
|
+
const employees = await client(Employee).fetchPage();
|
|
103
|
+
expect(employees.data.length).toBeGreaterThanOrEqual(2);
|
|
104
|
+
const [a, b] = employees.data;
|
|
105
|
+
expect(a).toBeDefined();
|
|
106
|
+
expect(() => {
|
|
107
|
+
a.somePropertyThatShouldNotExist = 5;
|
|
108
|
+
}).toThrow();
|
|
109
|
+
const objAsFoo = a.$as(FooInterface);
|
|
110
|
+
expect(objAsFoo).toBeDefined();
|
|
111
|
+
expect(() => {
|
|
112
|
+
objAsFoo.somePropertyThatShouldNotExist = 5;
|
|
113
|
+
}).toThrow();
|
|
114
|
+
});
|
|
101
115
|
it("works even with unknown apiNames - old", async () => {
|
|
102
116
|
const clientCtx = createMinimalClient({
|
|
103
117
|
ontologyRid: $ontologyRid
|
|
@@ -126,70 +140,6 @@ describe("convertWireToOsdkObjects", () => {
|
|
|
126
140
|
const prototypeAfter = Object.getPrototypeOf(object2);
|
|
127
141
|
expect(prototypeBefore).not.toBe(prototypeAfter);
|
|
128
142
|
});
|
|
129
|
-
it("updates interface when underlying changes - old", async () => {
|
|
130
|
-
const clientCtx = createMinimalClient({
|
|
131
|
-
ontologyRid: $ontologyRid
|
|
132
|
-
}, "https://stack.palantir.com", async () => "myAccessToken");
|
|
133
|
-
const [obj] = await convertWireToOsdkObjects(clientCtx, [{
|
|
134
|
-
__apiName: "Employee",
|
|
135
|
-
__primaryKey: 0,
|
|
136
|
-
__title: "Steve",
|
|
137
|
-
fullName: "Steve",
|
|
138
|
-
employeeId: "5"
|
|
139
|
-
}], undefined);
|
|
140
|
-
expect(obj.fullName).toEqual("Steve");
|
|
141
|
-
expect(Object.keys(obj).sort()).toEqual(["$apiName", "$objectType", "$primaryKey", "$title", "employeeId", "fullName"].sort());
|
|
142
|
-
const objAsFoo = obj.$as(FooInterface);
|
|
143
|
-
expect(objAsFoo).toMatchObject({
|
|
144
|
-
fooSpt: obj.fullName,
|
|
145
|
-
$apiName: FooInterface.apiName,
|
|
146
|
-
$primaryKey: obj.$primaryKey,
|
|
147
|
-
$objectType: obj.$objectType,
|
|
148
|
-
$title: obj.$title
|
|
149
|
-
});
|
|
150
|
-
console.log(obj);
|
|
151
|
-
console.log(objAsFoo);
|
|
152
|
-
obj.$updateInternalValues({
|
|
153
|
-
fullName: "Bob"
|
|
154
|
-
});
|
|
155
|
-
expect(obj.fullName).toEqual("Bob");
|
|
156
|
-
expect(objAsFoo.fooSpt).toEqual(obj.fullName);
|
|
157
|
-
expect(Object.keys(objAsFoo).sort()).toEqual(["$apiName", "$objectType", "$primaryKey", "$title", "fooSpt"].sort());
|
|
158
|
-
expect(obj).toBe(objAsFoo.$as(Employee));
|
|
159
|
-
expect(objAsFoo).toBe(obj.$as(FooInterface));
|
|
160
|
-
});
|
|
161
|
-
it("updates interface when underlying changes - new", async () => {
|
|
162
|
-
const clientCtx = createMinimalClient({
|
|
163
|
-
ontologyRid: $ontologyRid
|
|
164
|
-
}, "https://stack.palantir.com", async () => "myAccessToken");
|
|
165
|
-
const [obj] = await convertWireToOsdkObjects2(clientCtx, [{
|
|
166
|
-
__apiName: "Employee",
|
|
167
|
-
__primaryKey: 0,
|
|
168
|
-
__title: "Steve",
|
|
169
|
-
fullName: "Steve",
|
|
170
|
-
employeeId: "5"
|
|
171
|
-
}], undefined);
|
|
172
|
-
expect(obj.fullName).toEqual("Steve");
|
|
173
|
-
expect(Object.keys(obj).sort()).toEqual(["$apiName", "$objectType", "$primaryKey", "$title", "employeeId", "fullName"].sort());
|
|
174
|
-
const objAsFoo = obj.$as(FooInterface);
|
|
175
|
-
expect(objAsFoo).toMatchObject({
|
|
176
|
-
fooSpt: obj.fullName,
|
|
177
|
-
$apiName: FooInterface.apiName,
|
|
178
|
-
$primaryKey: obj.$primaryKey,
|
|
179
|
-
$objectType: obj.$objectType,
|
|
180
|
-
$title: obj.$title
|
|
181
|
-
});
|
|
182
|
-
console.log(obj);
|
|
183
|
-
console.log(objAsFoo);
|
|
184
|
-
obj.$updateInternalValues({
|
|
185
|
-
fullName: "Bob"
|
|
186
|
-
});
|
|
187
|
-
expect(obj.fullName).toEqual("Bob");
|
|
188
|
-
expect(objAsFoo.fooSpt).toEqual(obj.fullName);
|
|
189
|
-
expect(Object.keys(objAsFoo).sort()).toEqual(["$apiName", "$objectType", "$primaryKey", "$title", "fooSpt"].sort());
|
|
190
|
-
expect(obj).toBe(objAsFoo.$as(Employee));
|
|
191
|
-
expect(objAsFoo).toBe(obj.$as(FooInterface));
|
|
192
|
-
});
|
|
193
143
|
it("reconstitutes interfaces properly without rid - old", async () => {
|
|
194
144
|
const clientCtx = createMinimalClient({
|
|
195
145
|
ontologyRid: $ontologyRid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertWireToOsdkObjects.test.js","names":["$ontologyRid","Employee","FooInterface","objectTypeWithAllPropertyTypes","createSharedClientContext","apiServer","afterAll","beforeAll","describe","expect","expectTypeOf","it","additionalContext","createClient","createMinimalClient","convertWireToOsdkObjects","convertWireToOsdkObjects2","client","interfaceToObjectTypeMappings","fooSpt","listen","close","data","employee","fetchPage","Object","keys","sort","toEqual","$as","$link","employee2","where","$and","employeeId","$gt","$lt","JSON","stringify","toMatchInlineSnapshot","employees","length","toBeGreaterThanOrEqual","a","b","getPrototypeOf","toBe","withValues","id","attachment","attachmentArray","toMatchTypeOf","rid","Array","isArray","toBeTruthy","withoutValues","emptyAttachment","emptyAttachmentArray","toBeUndefined","clientCtx","ontologyRid","object","__apiName","apiName","__primaryKey","prototypeBefore","object2","undefined","prototypeAfter","not","obj","__title","fullName","objAsFoo","toMatchObject","$apiName","$primaryKey","$objectType","$title","console","log","$updateInternalValues","__rid","$rid","rejects","toThrowErrorMatchingInlineSnapshot","resolves","to","result","instance","osdk"],"sources":["convertWireToOsdkObjects.test.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 { $ontologyRid, Employee, FooInterface, objectTypeWithAllPropertyTypes, } from \"@osdk/client.test.ontology\";\nimport { createSharedClientContext } from \"@osdk/shared.client.impl\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, expectTypeOf, it, } from \"vitest\";\nimport { additionalContext } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { convertWireToOsdkObjects, convertWireToOsdkObjects2, } from \"./convertWireToOsdkObjects.js\";\ndescribe(\"convertWireToOsdkObjects\", () => {\n let client;\n const interfaceToObjectTypeMappings = {\n FooInterface: { Employee: { fooSpt: \"fullName\" } },\n };\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\"https://stack.palantir.com\", $ontologyRid, async () => \"myAccessToken\");\n });\n afterAll(() => {\n apiServer.close();\n });\n it(\"configures properties correctly\", async () => {\n const { data: [employee] } = await client(Employee).fetchPage();\n expect(Object.keys(employee).sort()).toEqual([\n \"employeeId\",\n \"fullName\",\n \"office\",\n \"class\",\n \"startDate\",\n \"employeeSensor\",\n \"employeeStatus\",\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n \"employeeLocation\",\n ].sort());\n expect(Object.keys(employee.$as)).toEqual([]);\n expect(Object.keys(employee.$link)).toEqual([\n \"peeps\",\n \"lead\",\n \"officeLink\",\n ]);\n });\n it(\"stringifies properties on objects and interfaces correctly\", async () => {\n const { data: [employee] } = await client(Employee).fetchPage();\n const { data: [employee2] } = await client(Employee).where({\n $and: [{ employeeId: { $gt: 50030 } }, { employeeId: { $lt: 50032 } }],\n }).fetchPage();\n // Should not have $title\n expect(JSON.stringify(employee)).toMatchInlineSnapshot(`\"{\"employeeId\":50030,\"fullName\":\"John Doe\",\"office\":\"NYC\",\"class\":\"Red\",\"startDate\":\"2019-01-01\",\"employeeStatus\":{},\"employeeSensor\":{},\"employeeLocation\":{},\"$apiName\":\"Employee\",\"$objectType\":\"Employee\",\"$primaryKey\":50030}\"`);\n expect(JSON.stringify(employee.$as(FooInterface))).toMatchInlineSnapshot(`\"{\"$apiName\":\"FooInterface\",\"$objectType\":\"Employee\",\"$primaryKey\":50030,\"fooSpt\":\"John Doe\"}\"`);\n // Should have $title\n expect(JSON.stringify(employee2)).toMatchInlineSnapshot(`\"{\"employeeId\":50031,\"fullName\":\"Jane Doe\",\"office\":\"SEA\",\"class\":\"Blue\",\"startDate\":\"2012-02-12\",\"employeeStatus\":{},\"employeeSensor\":{},\"employeeLocation\":{},\"$apiName\":\"Employee\",\"$objectType\":\"Employee\",\"$primaryKey\":50031,\"$title\":\"Jane Doe\"}\"`);\n expect(JSON.stringify(employee2.$as(FooInterface))).toMatchInlineSnapshot(`\"{\"$apiName\":\"FooInterface\",\"$objectType\":\"Employee\",\"$primaryKey\":50031,\"$title\":\"Jane Doe\",\"fooSpt\":\"Jane Doe\"}\"`);\n });\n it(\"reuses the object prototype across objects\", async () => {\n const employees = await client(Employee).fetchPage();\n expect(employees.data.length).toBeGreaterThanOrEqual(2);\n const [a, b] = employees.data;\n expect(Object.getPrototypeOf(Object.getPrototypeOf(a))).toBe(Object.getPrototypeOf(Object.getPrototypeOf(b)));\n });\n it(\"converts attachments as expected\", async () => {\n const withValues = await client(objectTypeWithAllPropertyTypes)\n .where({ id: 1 })\n .fetchPage();\n expect(withValues.data.length).toBeGreaterThanOrEqual(1);\n const { attachment, attachmentArray } = withValues.data[0];\n expectTypeOf(attachment).toMatchTypeOf;\n expect(attachment?.rid).toEqual(\"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\");\n expect(Array.isArray(attachmentArray)).toBeTruthy();\n expectTypeOf(attachmentArray[0]).toMatchTypeOf;\n const withoutValues = await client(objectTypeWithAllPropertyTypes).where({ id: 2 }).fetchPage();\n const { attachment: emptyAttachment, attachmentArray: emptyAttachmentArray, } = withoutValues.data[0];\n expect(emptyAttachment).toBeUndefined();\n expect(emptyAttachmentArray).toBeUndefined();\n });\n it(\"works even with unknown apiNames - old\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n createSharedClientContext(\"https://stack.palantir.com\", async () => \"myAccessToken\", \"userAgent\");\n let object = {\n __apiName: Employee.apiName,\n __primaryKey: 0,\n };\n const prototypeBefore = Object.getPrototypeOf(object);\n let object2 = await convertWireToOsdkObjects(clientCtx, [object], undefined, undefined, undefined, false);\n const prototypeAfter = Object.getPrototypeOf(object2);\n expect(prototypeBefore).not.toBe(prototypeAfter);\n });\n it(\"works even with unknown apiNames - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n createSharedClientContext(\"https://stack.palantir.com\", async () => \"myAccessToken\", \"userAgent\");\n let object = {\n __apiName: Employee.apiName,\n __primaryKey: 0,\n };\n const prototypeBefore = Object.getPrototypeOf(object);\n let object2 = await convertWireToOsdkObjects2(clientCtx, [object], undefined, undefined, undefined, false);\n const prototypeAfter = Object.getPrototypeOf(object2);\n expect(prototypeBefore).not.toBe(prototypeAfter);\n });\n it(\"updates interface when underlying changes - old\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n fullName: \"Steve\",\n employeeId: \"5\",\n };\n const [obj] = (await convertWireToOsdkObjects(clientCtx, [objectFromWire], undefined));\n expect(obj.fullName).toEqual(\"Steve\");\n expect(Object.keys(obj).sort()).toEqual([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n \"$title\",\n \"employeeId\",\n \"fullName\",\n ].sort());\n const objAsFoo = obj.$as(FooInterface);\n expect(objAsFoo).toMatchObject({\n fooSpt: obj.fullName,\n $apiName: FooInterface.apiName,\n $primaryKey: obj.$primaryKey,\n $objectType: obj.$objectType,\n $title: obj.$title,\n });\n console.log(obj);\n console.log(objAsFoo);\n obj.$updateInternalValues({\n fullName: \"Bob\",\n });\n expect(obj.fullName).toEqual(\"Bob\");\n expect(objAsFoo.fooSpt).toEqual(obj.fullName);\n expect(Object.keys(objAsFoo).sort()).toEqual([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n \"$title\",\n \"fooSpt\",\n ].sort());\n expect(obj).toBe(objAsFoo.$as(Employee));\n expect(objAsFoo).toBe(obj.$as(FooInterface));\n });\n it(\"updates interface when underlying changes - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n fullName: \"Steve\",\n employeeId: \"5\",\n };\n const [obj] = (await convertWireToOsdkObjects2(clientCtx, [objectFromWire], undefined));\n expect(obj.fullName).toEqual(\"Steve\");\n expect(Object.keys(obj).sort()).toEqual([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n \"$title\",\n \"employeeId\",\n \"fullName\",\n ].sort());\n const objAsFoo = obj.$as(FooInterface);\n expect(objAsFoo).toMatchObject({\n fooSpt: obj.fullName,\n $apiName: FooInterface.apiName,\n $primaryKey: obj.$primaryKey,\n $objectType: obj.$objectType,\n $title: obj.$title,\n });\n console.log(obj);\n console.log(objAsFoo);\n obj.$updateInternalValues({\n fullName: \"Bob\",\n });\n expect(obj.fullName).toEqual(\"Bob\");\n expect(objAsFoo.fooSpt).toEqual(obj.fullName);\n expect(Object.keys(objAsFoo).sort()).toEqual([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n \"$title\",\n \"fooSpt\",\n ].sort());\n expect(obj).toBe(objAsFoo.$as(Employee));\n expect(objAsFoo).toBe(obj.$as(FooInterface));\n });\n it(\"reconstitutes interfaces properly without rid - old\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n fooSpt: \"Steve\",\n };\n const [objAsFoo] = (await convertWireToOsdkObjects(clientCtx, [objectFromWire], FooInterface.apiName));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"employeeId\": 0,\n \"fullName\": \"Steve\",\n }\n `);\n });\n it(\"reconstitutes interfaces properly without rid - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n fullName: \"Steve\",\n };\n const [objAsFoo] = (await convertWireToOsdkObjects2(clientCtx, [objectFromWire], FooInterface.apiName, false, undefined, false, interfaceToObjectTypeMappings));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"fullName\": \"Steve\",\n }\n `);\n });\n it(\"reconstitutes interfaces properly with rid\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n __rid: \"hiMom\",\n fooSpt: \"Steve\",\n };\n const [objAsFoo] = (await convertWireToOsdkObjects(clientCtx, [objectFromWire], FooInterface.apiName));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n expect(objAsFoo.$rid).toEqual(\"hiMom\");\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"employeeId\": 0,\n \"fullName\": \"Steve\",\n }\n `);\n expect(obj.$rid).toEqual(\"hiMom\");\n });\n it(\"reconstitutes interfaces properly with rid - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n __rid: \"hiMom\",\n fullName: \"Steve\",\n employeeId: 0,\n };\n const [objAsFoo] = (await convertWireToOsdkObjects2(clientCtx, [objectFromWire], FooInterface.apiName, false, undefined, false, interfaceToObjectTypeMappings));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n expect(objAsFoo.$rid).toEqual(\"hiMom\");\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"employeeId\": 0,\n \"fullName\": \"Steve\",\n }\n `);\n expect(obj.$rid).toEqual(\"hiMom\");\n });\n describe(\"selection keys\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when optional is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"drop\");\n expect(result.length).toBe(1);\n });\n });\n describe(\"selection keys - new\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when optional is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"drop\");\n expect(result.length).toBe(1);\n });\n });\n describe(\"without selection keys\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when required is present\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n await expect(convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(1);\n });\n });\n describe(\"without selection keys - new\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when required is present\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n await expect(convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(1);\n });\n });\n it(\"behaves correctly when converting\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n fooSpt: \"hi\",\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], \"FooInterface\", undefined, [\"fooSpt\"], \"drop\", interfaceToObjectTypeMappings);\n expect(result.length).toBe(1);\n });\n});\ndescribe(\"Osdk.Instance\", () => {\n it(\"is assignable to Osdk<>\", () => {\n const instance = {};\n const osdk = instance;\n });\n it(\"is assignable from Osdk<>\", () => {\n const osdk = {};\n const instance = osdk;\n });\n it(\"is assignable to Osdk<> with $notStrict\", () => {\n const instance = {};\n const osdk = instance;\n const osdk2 = instance;\n });\n it(\"is assignable from Osdk<> with $notStrict\", () => {\n const osdk = {};\n const osdk2 = osdk;\n const instance = osdk;\n const instance2 = osdk2;\n });\n it(\"object with any for props is assignable to its normal self\", () => {\n const foo = {};\n const bar = foo;\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"convertWireToOsdkObjects.test.js","names":["$ontologyRid","Employee","FooInterface","objectTypeWithAllPropertyTypes","createSharedClientContext","apiServer","afterAll","beforeAll","describe","expect","expectTypeOf","it","additionalContext","createClient","createMinimalClient","convertWireToOsdkObjects","convertWireToOsdkObjects2","client","interfaceToObjectTypeMappings","fooSpt","listen","close","data","employee","fetchPage","Object","keys","sort","toEqual","$as","$link","employee2","where","$and","employeeId","$gt","$lt","JSON","stringify","toMatchInlineSnapshot","employees","length","toBeGreaterThanOrEqual","a","b","getPrototypeOf","toBe","withValues","id","attachment","attachmentArray","toMatchTypeOf","rid","Array","isArray","toBeTruthy","withoutValues","emptyAttachment","emptyAttachmentArray","toBeUndefined","toBeDefined","somePropertyThatShouldNotExist","toThrow","objAsFoo","clientCtx","ontologyRid","object","__apiName","apiName","__primaryKey","prototypeBefore","object2","undefined","prototypeAfter","not","__title","obj","fullName","__rid","$rid","rejects","toThrowErrorMatchingInlineSnapshot","resolves","to","result","instance","osdk"],"sources":["convertWireToOsdkObjects.test.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 { $ontologyRid, Employee, FooInterface, objectTypeWithAllPropertyTypes, } from \"@osdk/client.test.ontology\";\nimport { createSharedClientContext } from \"@osdk/shared.client.impl\";\nimport { apiServer } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, expectTypeOf, it, } from \"vitest\";\nimport { additionalContext } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { convertWireToOsdkObjects, convertWireToOsdkObjects2, } from \"./convertWireToOsdkObjects.js\";\ndescribe(\"convertWireToOsdkObjects\", () => {\n let client;\n const interfaceToObjectTypeMappings = {\n FooInterface: { Employee: { fooSpt: \"fullName\" } },\n };\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\"https://stack.palantir.com\", $ontologyRid, async () => \"myAccessToken\");\n });\n afterAll(() => {\n apiServer.close();\n });\n it(\"configures properties correctly\", async () => {\n const { data: [employee] } = await client(Employee).fetchPage();\n expect(Object.keys(employee).sort()).toEqual([\n \"employeeId\",\n \"$title\",\n \"fullName\",\n \"office\",\n \"class\",\n \"startDate\",\n \"employeeSensor\",\n \"employeeStatus\",\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n \"employeeLocation\",\n ].sort());\n expect(Object.keys(employee.$as)).toEqual([]);\n expect(Object.keys(employee.$link)).toEqual([\n \"peeps\",\n \"lead\",\n \"officeLink\",\n ]);\n });\n it(\"stringifies properties on objects and interfaces correctly\", async () => {\n const { data: [employee] } = await client(Employee).fetchPage();\n const { data: [employee2] } = await client(Employee).where({\n $and: [{ employeeId: { $gt: 50030 } }, { employeeId: { $lt: 50032 } }],\n }).fetchPage();\n // Should not have $title\n expect(JSON.stringify(employee)).toMatchInlineSnapshot(`\"{\"employeeId\":50030,\"fullName\":\"John Doe\",\"office\":\"NYC\",\"class\":\"Red\",\"startDate\":\"2019-01-01\",\"employeeStatus\":{},\"employeeSensor\":{},\"employeeLocation\":{},\"$apiName\":\"Employee\",\"$objectType\":\"Employee\",\"$primaryKey\":50030}\"`);\n expect(JSON.stringify(employee.$as(FooInterface))).toMatchInlineSnapshot(`\"{\"$apiName\":\"FooInterface\",\"$objectType\":\"Employee\",\"$primaryKey\":50030,\"fooSpt\":\"John Doe\"}\"`);\n // Should have $title\n expect(JSON.stringify(employee2)).toMatchInlineSnapshot(`\"{\"employeeId\":50031,\"fullName\":\"Jane Doe\",\"office\":\"SEA\",\"class\":\"Blue\",\"startDate\":\"2012-02-12\",\"employeeStatus\":{},\"employeeSensor\":{},\"employeeLocation\":{},\"$apiName\":\"Employee\",\"$objectType\":\"Employee\",\"$primaryKey\":50031,\"$title\":\"Jane Doe\"}\"`);\n expect(JSON.stringify(employee2.$as(FooInterface))).toMatchInlineSnapshot(`\"{\"$apiName\":\"FooInterface\",\"$objectType\":\"Employee\",\"$primaryKey\":50031,\"$title\":\"Jane Doe\",\"fooSpt\":\"Jane Doe\"}\"`);\n });\n it(\"reuses the object prototype across objects\", async () => {\n const employees = await client(Employee).fetchPage();\n expect(employees.data.length).toBeGreaterThanOrEqual(2);\n const [a, b] = employees.data;\n expect(Object.getPrototypeOf(Object.getPrototypeOf(a))).toBe(Object.getPrototypeOf(Object.getPrototypeOf(b)));\n });\n it(\"converts attachments as expected\", async () => {\n const withValues = await client(objectTypeWithAllPropertyTypes)\n .where({ id: 1 })\n .fetchPage();\n expect(withValues.data.length).toBeGreaterThanOrEqual(1);\n const { attachment, attachmentArray } = withValues.data[0];\n expectTypeOf(attachment).toMatchTypeOf;\n expect(attachment?.rid).toEqual(\"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\");\n expect(Array.isArray(attachmentArray)).toBeTruthy();\n expectTypeOf(attachmentArray[0]).toMatchTypeOf;\n const withoutValues = await client(objectTypeWithAllPropertyTypes).where({ id: 2 }).fetchPage();\n const { attachment: emptyAttachment, attachmentArray: emptyAttachmentArray, } = withoutValues.data[0];\n expect(emptyAttachment).toBeUndefined();\n expect(emptyAttachmentArray).toBeUndefined();\n });\n it(\"creates immutable objects\", async () => {\n const employees = await client(Employee).fetchPage();\n expect(employees.data.length).toBeGreaterThanOrEqual(2);\n const [a, b] = employees.data;\n expect(a).toBeDefined();\n expect(() => {\n a.somePropertyThatShouldNotExist = 5;\n }).toThrow();\n const objAsFoo = a.$as(FooInterface);\n expect(objAsFoo).toBeDefined();\n expect(() => {\n objAsFoo.somePropertyThatShouldNotExist = 5;\n }).toThrow();\n });\n it(\"works even with unknown apiNames - old\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n createSharedClientContext(\"https://stack.palantir.com\", async () => \"myAccessToken\", \"userAgent\");\n let object = {\n __apiName: Employee.apiName,\n __primaryKey: 0,\n };\n const prototypeBefore = Object.getPrototypeOf(object);\n let object2 = await convertWireToOsdkObjects(clientCtx, [object], undefined, undefined, undefined, false);\n const prototypeAfter = Object.getPrototypeOf(object2);\n expect(prototypeBefore).not.toBe(prototypeAfter);\n });\n it(\"works even with unknown apiNames - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n createSharedClientContext(\"https://stack.palantir.com\", async () => \"myAccessToken\", \"userAgent\");\n let object = {\n __apiName: Employee.apiName,\n __primaryKey: 0,\n };\n const prototypeBefore = Object.getPrototypeOf(object);\n let object2 = await convertWireToOsdkObjects2(clientCtx, [object], undefined, undefined, undefined, false);\n const prototypeAfter = Object.getPrototypeOf(object2);\n expect(prototypeBefore).not.toBe(prototypeAfter);\n });\n it(\"reconstitutes interfaces properly without rid - old\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n fooSpt: \"Steve\",\n };\n const [objAsFoo] = (await convertWireToOsdkObjects(clientCtx, [objectFromWire], FooInterface.apiName));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"employeeId\": 0,\n \"fullName\": \"Steve\",\n }\n `);\n });\n it(\"reconstitutes interfaces properly without rid - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n fullName: \"Steve\",\n };\n const [objAsFoo] = (await convertWireToOsdkObjects2(clientCtx, [objectFromWire], FooInterface.apiName, false, undefined, false, interfaceToObjectTypeMappings));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$title\": \"Steve\",\n \"fullName\": \"Steve\",\n }\n `);\n });\n it(\"reconstitutes interfaces properly with rid\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n __rid: \"hiMom\",\n fooSpt: \"Steve\",\n };\n const [objAsFoo] = (await convertWireToOsdkObjects(clientCtx, [objectFromWire], FooInterface.apiName));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n expect(objAsFoo.$rid).toEqual(\"hiMom\");\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"employeeId\": 0,\n \"fullName\": \"Steve\",\n }\n `);\n expect(obj.$rid).toEqual(\"hiMom\");\n });\n it(\"reconstitutes interfaces properly with rid - new\", async () => {\n const clientCtx = createMinimalClient({ ontologyRid: $ontologyRid }, \"https://stack.palantir.com\", async () => \"myAccessToken\");\n let objectFromWire = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n __title: \"Steve\",\n __rid: \"hiMom\",\n fullName: \"Steve\",\n employeeId: 0,\n };\n const [objAsFoo] = (await convertWireToOsdkObjects2(clientCtx, [objectFromWire], FooInterface.apiName, false, undefined, false, interfaceToObjectTypeMappings));\n expect(objAsFoo).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"FooInterface\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"fooSpt\": \"Steve\",\n }\n `);\n expect(objAsFoo.$rid).toEqual(\"hiMom\");\n const obj = objAsFoo.$as(Employee);\n expect(obj.fullName).toEqual(\"Steve\");\n expect(obj).toMatchInlineSnapshot(`\n {\n \"$apiName\": \"Employee\",\n \"$objectType\": \"Employee\",\n \"$primaryKey\": 0,\n \"$rid\": \"hiMom\",\n \"$title\": \"Steve\",\n \"employeeId\": 0,\n \"fullName\": \"Steve\",\n }\n `);\n expect(obj.$rid).toEqual(\"hiMom\");\n });\n describe(\"selection keys\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when optional is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"drop\");\n expect(result.length).toBe(1);\n });\n });\n describe(\"selection keys - new\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when optional is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"employeeId\"], \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, [\"fullName\"], \"drop\");\n expect(result.length).toBe(1);\n });\n });\n describe(\"without selection keys\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when required is present\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n await expect(convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(1);\n });\n });\n describe(\"without selection keys - new\", () => {\n it(\"throws when required is missing\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n await expect(() => convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n it(\"does not throw when required is present\", async () => {\n let object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n await expect(convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"throw\")).resolves.to.not.toBeUndefined();\n });\n it(\"filters when it should\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(0);\n });\n it(\"does not filter when it shouldn't\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n \"employeeId\": 0,\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], undefined, undefined, undefined, \"drop\");\n expect(result.length).toBe(1);\n });\n });\n it(\"behaves correctly when converting\", async () => {\n const object = {\n __apiName: \"Employee\",\n __primaryKey: 0,\n fooSpt: \"hi\",\n };\n const result = await convertWireToOsdkObjects2(client[additionalContext], [object], \"FooInterface\", undefined, [\"fooSpt\"], \"drop\", interfaceToObjectTypeMappings);\n expect(result.length).toBe(1);\n });\n});\ndescribe(\"Osdk.Instance\", () => {\n it(\"is assignable to Osdk<>\", () => {\n const instance = {};\n const osdk = instance;\n });\n it(\"is assignable from Osdk<>\", () => {\n const osdk = {};\n const instance = osdk;\n });\n it(\"is assignable to Osdk<> with $notStrict\", () => {\n const instance = {};\n const osdk = instance;\n const osdk2 = instance;\n });\n it(\"is assignable from Osdk<> with $notStrict\", () => {\n const osdk = {};\n const osdk2 = osdk;\n const instance = osdk;\n const instance2 = osdk2;\n });\n it(\"object with any for props is assignable to its normal self\", () => {\n const foo = {};\n const bar = foo;\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.test.d.ts","sourceRoot":"","sources":["../../../src/object/object.test.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"object.test.d.ts","sourceRoot":"","sources":["../../../src/object/object.test.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAA0B,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAoL3C,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAKzE;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAK9B;AAED,wBAAsB,wCAAwC,CAC5D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAIvC;AAED,wBAAsB,gDAAgD,CACpE,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAIvC;AAED,wBAAsB,wCAAwC,CAC5D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAInD;AAED,wBAAsB,gDAAgD,CACpE,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAIvC;AAED,wBAAsB,wCAAwC,CAC5D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAEzB;AAED,wBAAsB,4CAA4C,CAChE,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAEzB"}
|
|
@@ -66,6 +66,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
66
66
|
* temporary and not the actual subscriptionId from the server.
|
|
67
67
|
*/
|
|
68
68
|
#subscriptions = new Map();
|
|
69
|
+
#endedSubscriptions = new Set();
|
|
69
70
|
#maybeDisconnectTimeout;
|
|
70
71
|
// DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM
|
|
71
72
|
constructor(client, {
|
|
@@ -79,9 +80,6 @@ export class ObjectSetListenerWebsocket {
|
|
|
79
80
|
!(client.baseUrl.startsWith("https://") || client.baseUrl.startsWith("http://")) ? process.env.NODE_ENV !== "production" ? invariant(false, "Stack must be a URL") : invariant(false) : void 0;
|
|
80
81
|
}
|
|
81
82
|
async subscribe(objectType, objectSet, listener, properties = []) {
|
|
82
|
-
// Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This
|
|
83
|
-
// will not be needed after our minimum version is 19 or greater.
|
|
84
|
-
globalThis.crypto ??= (await import("node:crypto")).webcrypto;
|
|
85
83
|
const objDef = objectType.type === "object" ? await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName) : await this.#client.ontologyProvider.getInterfaceDefinition(objectType.apiName);
|
|
86
84
|
let objectProperties = [];
|
|
87
85
|
let referenceProperties = [];
|
|
@@ -104,7 +102,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
104
102
|
status: "preparing",
|
|
105
103
|
// Since we don't have a real subscription id yet but we need to keep
|
|
106
104
|
// track of this reference, we can just use a random uuid.
|
|
107
|
-
subscriptionId: `TMP-${
|
|
105
|
+
subscriptionId: `TMP-${nextUuid()}}`,
|
|
108
106
|
interfaceApiName: objDef.type === "object" ? undefined : objDef.apiName
|
|
109
107
|
};
|
|
110
108
|
this.#subscriptions.set(sub.subscriptionId, sub);
|
|
@@ -142,7 +140,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
142
140
|
}
|
|
143
141
|
} catch (error) {
|
|
144
142
|
this.#logger?.error(error, "Error in #initiateSubscribe");
|
|
145
|
-
sub
|
|
143
|
+
this.#tryCatchOnError(sub, true, error);
|
|
146
144
|
}
|
|
147
145
|
}
|
|
148
146
|
#sendSubscribeMessage() {
|
|
@@ -153,14 +151,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
153
151
|
// we may have multiple subscriptions that don't have a subscriptionId yet,
|
|
154
152
|
// so we filter those out.
|
|
155
153
|
const readySubs = [...this.#subscriptions.values()].filter(isReady);
|
|
156
|
-
|
|
157
|
-
if (process.env.NODE_ENV !== "production") {
|
|
158
|
-
this.#logger?.trace("#sendSubscribeMessage(): aborting due to no ready subscriptions");
|
|
159
|
-
}
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
// Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.
|
|
163
|
-
const id = crypto.randomUUID();
|
|
154
|
+
const id = nextUuid();
|
|
164
155
|
// responses come back as an array of subIds, so we need to know the sources
|
|
165
156
|
this.#pendingSubscriptions.set(id, readySubs);
|
|
166
157
|
// every subscribe message "overwrites" the previous ones that are not
|
|
@@ -196,6 +187,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
196
187
|
// make sure listeners do nothing now
|
|
197
188
|
sub.listener = fillOutListener({});
|
|
198
189
|
this.#subscriptions.delete(sub.subscriptionId);
|
|
190
|
+
this.#endedSubscriptions.add(sub.subscriptionId);
|
|
199
191
|
this.#sendSubscribeMessage();
|
|
200
192
|
// If we have no more subscriptions, we can disconnect the websocket
|
|
201
193
|
// however we should wait a bit to see if we get any more subscriptions.
|
|
@@ -322,7 +314,12 @@ export class ObjectSetListenerWebsocket {
|
|
|
322
314
|
}));
|
|
323
315
|
for (const osdkObject of osdkObjectsWithReferenceUpdates) {
|
|
324
316
|
if (osdkObject != null) {
|
|
325
|
-
|
|
317
|
+
try {
|
|
318
|
+
sub.listener.onChange?.(osdkObject);
|
|
319
|
+
} catch (error) {
|
|
320
|
+
this.#logger?.error(error, "Error in onChange callback");
|
|
321
|
+
this.#tryCatchOnError(sub, false, error);
|
|
322
|
+
}
|
|
326
323
|
}
|
|
327
324
|
}
|
|
328
325
|
const osdkObjects = await Promise.all(objectUpdates.map(async o => {
|
|
@@ -339,13 +336,24 @@ export class ObjectSetListenerWebsocket {
|
|
|
339
336
|
}));
|
|
340
337
|
for (const osdkObject of osdkObjects) {
|
|
341
338
|
if (osdkObject != null) {
|
|
342
|
-
|
|
339
|
+
try {
|
|
340
|
+
sub.listener.onChange?.(osdkObject);
|
|
341
|
+
} catch (error) {
|
|
342
|
+
this.#logger?.error(error, "Error in onChange callback");
|
|
343
|
+
this.#tryCatchOnError(sub, false, error);
|
|
344
|
+
}
|
|
343
345
|
}
|
|
344
346
|
}
|
|
345
347
|
};
|
|
346
348
|
#handleMessage_refreshObjectSet = payload => {
|
|
347
349
|
const sub = this.#subscriptions.get(payload.id);
|
|
348
350
|
!sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
|
|
351
|
+
try {
|
|
352
|
+
sub.listener.onOutOfDate();
|
|
353
|
+
} catch (error) {
|
|
354
|
+
this.#logger?.error(error, "Error in onOutOfDate callback");
|
|
355
|
+
this.#tryCatchOnError(sub, false, error);
|
|
356
|
+
}
|
|
349
357
|
sub.listener.onOutOfDate();
|
|
350
358
|
};
|
|
351
359
|
#handleMessage_subscribeResponses = payload => {
|
|
@@ -361,7 +369,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
361
369
|
const response = responses[i];
|
|
362
370
|
switch (response.type) {
|
|
363
371
|
case "error":
|
|
364
|
-
sub
|
|
372
|
+
this.#tryCatchOnError(sub, true, response.errors);
|
|
365
373
|
this.#unsubscribe(sub, "error");
|
|
366
374
|
break;
|
|
367
375
|
case "qos":
|
|
@@ -383,17 +391,23 @@ export class ObjectSetListenerWebsocket {
|
|
|
383
391
|
sub.subscriptionId = response.id;
|
|
384
392
|
this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId
|
|
385
393
|
}
|
|
386
|
-
|
|
394
|
+
try {
|
|
395
|
+
if (shouldFireOutOfDate) sub.listener.onOutOfDate();else sub.listener.onSuccessfulSubscription();
|
|
396
|
+
} catch (error) {
|
|
397
|
+
this.#logger?.error(error, "Error in onOutOfDate or onSuccessfulSubscription callback");
|
|
398
|
+
this.#tryCatchOnError(sub, false, error);
|
|
399
|
+
}
|
|
387
400
|
break;
|
|
388
401
|
default:
|
|
389
|
-
sub
|
|
402
|
+
this.#tryCatchOnError(sub, true, response);
|
|
390
403
|
}
|
|
391
404
|
}
|
|
392
405
|
};
|
|
393
406
|
#handleMessage_subscriptionClosed(payload) {
|
|
394
407
|
const sub = this.#subscriptions.get(payload.id);
|
|
408
|
+
if (sub == null && this.#endedSubscriptions.has(payload.id)) return;
|
|
395
409
|
!sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
|
|
396
|
-
sub
|
|
410
|
+
this.#tryCatchOnError(sub, true, payload.cause);
|
|
397
411
|
this.#unsubscribe(sub, "error");
|
|
398
412
|
}
|
|
399
413
|
#onClose = event => {
|
|
@@ -428,6 +442,26 @@ export class ObjectSetListenerWebsocket {
|
|
|
428
442
|
this.#ensureWebsocket();
|
|
429
443
|
}
|
|
430
444
|
};
|
|
445
|
+
#tryCatchOnError = (sub, subscriptionClosed, error) => {
|
|
446
|
+
try {
|
|
447
|
+
sub.listener.onError({
|
|
448
|
+
subscriptionClosed: subscriptionClosed,
|
|
449
|
+
error
|
|
450
|
+
});
|
|
451
|
+
} catch (onErrorError) {
|
|
452
|
+
// eslint-disable-next-line no-console
|
|
453
|
+
console.error(`Error encountered in an onError callback for an OSDK subscription`, onErrorError);
|
|
454
|
+
// eslint-disable-next-line no-console
|
|
455
|
+
console.error(`This onError call was triggered by an error in another callback`, error);
|
|
456
|
+
// eslint-disable-next-line no-console
|
|
457
|
+
console.error(`The subscription has been closed.`, error);
|
|
458
|
+
if (!subscriptionClosed) {
|
|
459
|
+
this.#logger?.error(error, "Error in onError callback");
|
|
460
|
+
this.#unsubscribe(sub, "error");
|
|
461
|
+
this.#tryCatchOnError(sub, true, onErrorError);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
};
|
|
431
465
|
}
|
|
432
466
|
/** @internal */
|
|
433
467
|
export function constructWebsocketUrl(baseUrl, ontologyRid) {
|
|
@@ -436,4 +470,8 @@ export function constructWebsocketUrl(baseUrl, ontologyRid) {
|
|
|
436
470
|
url.protocol = url.protocol.replace("https", "wss");
|
|
437
471
|
return url;
|
|
438
472
|
}
|
|
473
|
+
let uuidCounter = 0;
|
|
474
|
+
function nextUuid() {
|
|
475
|
+
return `00000000-0000-0000-0000-${(uuidCounter++).toString().padStart(12, "0")}`;
|
|
476
|
+
}
|
|
439
477
|
//# sourceMappingURL=ObjectSetListenerWebsocket.js.map
|