@osdk/client 2.1.0-beta.21 → 2.1.0-beta.22
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 +15 -0
- package/build/browser/Client.d.ts.map +1 -1
- package/build/browser/__unstable/ConjureSupport.d.ts +18 -35
- package/build/browser/__unstable/ConjureSupport.d.ts.map +1 -1
- package/build/browser/createClient.d.ts.map +1 -1
- package/build/browser/createClient.js +2 -0
- package/build/browser/createClient.js.map +1 -1
- package/build/browser/createClient.test.js +1 -1
- package/build/browser/createClient.test.js.map +1 -1
- package/build/browser/createGeotimeSeriesProperty.d.ts.map +1 -1
- package/build/browser/createGeotimeSeriesProperty.js +3 -1
- package/build/browser/createGeotimeSeriesProperty.js.map +1 -1
- package/build/browser/createTimeseriesProperty.d.ts.map +1 -1
- package/build/browser/intellisense.test.helpers/callsQueryAcceptsObject.js +1 -1
- package/build/browser/intellisense.test.helpers/callsQueryAcceptsObject.js.map +1 -1
- package/build/browser/object/Cache.test.js +1 -1
- package/build/browser/object/Cache.test.js.map +1 -1
- package/build/browser/object/aggregate.test.js +1 -1
- package/build/browser/object/aggregate.test.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts +17 -1
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +2 -1
- package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.d.ts.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js +1 -1
- package/build/browser/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +9 -7
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/browser/ontology/OntologyProvider.d.ts.map +1 -1
- package/build/browser/pageRequestAsAsyncIter.d.ts.map +1 -1
- package/build/browser/tsserver.d.ts +6 -8
- package/build/browser/tsserver.d.ts.map +1 -1
- package/build/browser/tsserver.js.map +1 -1
- package/build/browser/util/UserAgent.d.ts.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/streamutils.d.ts.map +1 -1
- package/build/browser/util/timeseriesUtils.d.ts.map +1 -1
- package/build/esm/Client.d.ts.map +1 -1
- package/build/esm/__unstable/ConjureSupport.d.ts +18 -35
- package/build/esm/__unstable/ConjureSupport.d.ts.map +1 -1
- package/build/esm/createClient.d.ts.map +1 -1
- package/build/esm/createClient.js +2 -0
- package/build/esm/createClient.js.map +1 -1
- package/build/esm/createClient.test.js +1 -1
- package/build/esm/createClient.test.js.map +1 -1
- package/build/esm/createGeotimeSeriesProperty.d.ts.map +1 -1
- package/build/esm/createGeotimeSeriesProperty.js +3 -1
- package/build/esm/createGeotimeSeriesProperty.js.map +1 -1
- package/build/esm/createTimeseriesProperty.d.ts.map +1 -1
- package/build/esm/intellisense.test.helpers/callsQueryAcceptsObject.js +1 -1
- package/build/esm/intellisense.test.helpers/callsQueryAcceptsObject.js.map +1 -1
- package/build/esm/object/Cache.test.js +1 -1
- package/build/esm/object/Cache.test.js.map +1 -1
- package/build/esm/object/aggregate.test.js +1 -1
- package/build/esm/object/aggregate.test.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts +17 -1
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +2 -1
- package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.d.ts.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js +1 -1
- package/build/esm/object/convertWireToOsdkObjects/getDollarAs.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +9 -7
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/esm/ontology/OntologyProvider.d.ts.map +1 -1
- package/build/esm/pageRequestAsAsyncIter.d.ts.map +1 -1
- package/build/esm/tsserver.d.ts +6 -8
- package/build/esm/tsserver.d.ts.map +1 -1
- package/build/esm/tsserver.js.map +1 -1
- package/build/esm/util/UserAgent.d.ts.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/streamutils.d.ts.map +1 -1
- package/build/esm/util/timeseriesUtils.d.ts.map +1 -1
- package/package.json +13 -13
- package/build/browser/objectSet/toConjureObjectSet.d.ts +0 -2
- package/build/browser/objectSet/toConjureObjectSet.d.ts.map +0 -1
- package/build/browser/objectSet/toConjureObjectSet.js +0 -167
- package/build/browser/objectSet/toConjureObjectSet.js.map +0 -1
- package/build/esm/objectSet/toConjureObjectSet.d.ts +0 -2
- package/build/esm/objectSet/toConjureObjectSet.d.ts.map +0 -1
- package/build/esm/objectSet/toConjureObjectSet.js +0 -167
- package/build/esm/objectSet/toConjureObjectSet.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.test.js","names":["objectTypeWithAllPropertyTypes","Todo","expectType","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createMinimalClient","aggregate","metadata","expectsClientVersion","ontologyRid","ontologyApiName","userAgent","mockFetch","clientCtx","client","fn","mockResolvedValue","ok","status","json","Promise","resolve","aggregationResponse","undefined","accuracy","data","group","string","metrics","name","value","toEqualTypeOf","notGrouped","type","objectType","$select","toHaveBeenCalledWith","body","JSON","stringify","method","headers","anything","approximateDistinct","exactDistinct","id","max","avg","$count","grouped","$groupBy","$exactWithLimit","integer","$ranges","short","float","$fixedWidth","dateTime","$duration","date","boolean","$group","wrongSelectKey","wrongKey","toBeCallableWith","direction","timestamp"],"sources":["aggregate.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 { objectTypeWithAllPropertyTypes, Todo, } from \"@osdk/client.test.ontology\";\nimport { expectType } from \"ts-expect\";\nimport { beforeAll, describe, expect, expectTypeOf, it, vi, } from \"vitest\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { aggregate } from \"./aggregate.js\";\nconst metadata = {\n expectsClientVersion: \"0.0.0\",\n ontologyRid: \"ri.a.b.c.d\",\n ontologyApiName: \"apiName\",\n userAgent: \"\",\n};\nlet mockFetch;\nlet clientCtx;\nlet client;\nbeforeAll(() => {\n mockFetch = vi.fn();\n mockFetch.mockResolvedValue({\n ok: true,\n status: 200,\n json: () => new Promise((resolve) => resolve(aggregationResponse)),\n });\n clientCtx = createMinimalClient(metadata, \"https://host.com\", async () => \"myAccessToken\", {}, mockFetch);\n client = createClient(\"https://host.com\", metadata.ontologyRid, async () => \"\", undefined, mockFetch);\n});\nconst aggregationResponse = {\n accuracy: \"APPROXIMATE\",\n data: [\n {\n group: {\n string: \"hello\",\n },\n metrics: [\n {\n name: \"string.approximateDistinct\",\n value: 1,\n },\n {\n name: \"string.exactDistinct\",\n value: 1,\n },\n {\n name: \"id.max\",\n value: 1,\n },\n {\n name: \"id.avg\",\n value: 1,\n },\n ],\n },\n ],\n};\ndescribe(\"aggregate\", () => {\n it(\"works\", async () => {\n expectTypeOf().toEqualTypeOf;\n const notGrouped = await aggregate(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"string:approximateDistinct\": \"unordered\",\n \"string:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n });\n expect(mockFetch).toHaveBeenCalledWith(\"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\", {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n \"field\": \"string\",\n },\n { \"type\": \"max\", \"name\": \"id.max\", \"field\": \"id\" },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n });\n expectType(notGrouped.string.approximateDistinct);\n expectType(notGrouped.string.exactDistinct);\n expectType(notGrouped.id.max);\n expectType(notGrouped.id.avg);\n expectType(notGrouped.$count);\n expectType(false); // subSelect should hide unused keys\n const grouped = await client(objectTypeWithAllPropertyTypes).aggregate({\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"id:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $ranges: [[\"2024-01-02\", \"2024-01-09\"]] },\n boolean: \"exact\",\n },\n });\n expectType(grouped);\n expectType(grouped[0].$group.string);\n expectType(grouped[0].id.approximateDistinct);\n expectType(grouped[0].id.exactDistinct);\n expectType(grouped[0].$group.id);\n expectType(grouped[0].$count);\n expectType(grouped[0].$group.integer);\n expectType(grouped[0].$group.short);\n expectType(grouped[0].$group.float);\n expectType(grouped[0].$group.dateTime);\n expectType(grouped[0].$group.date);\n expectType(grouped[0].$group.boolean);\n expectType({\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n expectType({\n $select: {\n id: \"approximateDistinct\",\n // @ts-expect-error\n wrongSelectKey: \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n // @ts-expect-error\n wrongKey: \"don't work\",\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n expectTypeOf().toBeCallableWith(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n // @ts-expect-error\n \"wrongSelectKey\": \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n // @ts-expect-error\n wrongKey: \"wrongKey\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n expectType({\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $duration: [1, \"years\"] },\n });\n // Can't use value greater than 1 for years\n expectType({\n // @ts-expect-error\n date: { $duration: [10, \"years\"] },\n });\n // Can't use arbitrary string for time unit\n expectType({\n // @ts-expect-error\n dateTime: { $duration: [1, \"nonexistentTimeUnit\"] },\n });\n // Can't use time unit smaller than days for date type\n expectType({\n // @ts-expect-error\n date: { $duration: [1, \"seconds\"] },\n });\n });\n it(\"works with $orderBy (no groups)\", async () => {\n const notGrouped = await aggregate(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"string:approximateDistinct\": \"asc\",\n \"id:exactDistinct\": \"asc\",\n \"id:avg\": \"desc\",\n \"id:max\": \"asc\",\n \"$count\": \"unordered\",\n },\n });\n expect(mockFetch).toHaveBeenCalledWith(\"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\", {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"id.exactDistinct\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"avg\",\n \"name\": \"id.avg\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n });\n expectType(notGrouped.string.approximateDistinct);\n expectType(notGrouped.id.exactDistinct);\n expectType(notGrouped.id.max);\n expectType(notGrouped.id.avg);\n expectType(notGrouped.$count);\n expectType(false); // subselect should hide unused keys\n });\n it(\"works with $orderBy (1 group)\", async () => {\n const grouped = await aggregate(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"id:max\": \"desc\",\n \"string:approximateDistinct\": \"asc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n \"string:exactDistinct\": \"desc\",\n },\n $groupBy: {\n id: \"exact\",\n },\n });\n expect(mockFetch).toHaveBeenCalledWith(\"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\", {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [{ \"type\": \"exact\", \"field\": \"id\" }],\n \"aggregation\": [\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n direction: \"DESC\",\n \"field\": \"string\",\n },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n });\n expectType(grouped[0].string.approximateDistinct);\n expectType(grouped[0].id.max);\n expectType(grouped[0].id.avg);\n expectType(grouped[0].$count);\n expectType(grouped[0].string.exactDistinct);\n expectType(false); // subselect should hide unused keys\n });\n it(\"prohibits ordered select with multiple groupBy\", async () => {\n client(Todo).aggregate({\n $select: {\n // @ts-expect-error\n \"id:max\": \"desc\",\n // @ts-expect-error\n \"text:approximateDistinct\": \"asc\",\n // @ts-expect-error\n \"text:exactDistinct\": \"desc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n id: \"exact\",\n timestamp: \"exact\",\n },\n });\n });\n it(\"works with where: todo\", async () => {\n const f = {\n $select: {\n \"office:approximateDistinct\": \"unordered\",\n },\n };\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"aggregate.test.js","names":["objectTypeWithAllPropertyTypes","Todo","expectType","beforeAll","describe","expect","expectTypeOf","it","vi","createClient","createMinimalClient","aggregate","metadata","expectsClientVersion","ontologyRid","ontologyApiName","userAgent","mockFetch","clientCtx","client","fn","mockResolvedValue","ok","status","json","Promise","resolve","aggregationResponse","undefined","accuracy","data","group","string","metrics","name","value","toEqualTypeOf","notGrouped","type","objectType","$select","toHaveBeenCalledWith","body","JSON","stringify","method","headers","anything","approximateDistinct","exactDistinct","id","max","avg","$count","grouped","$groupBy","$exactWithLimit","integer","$ranges","short","float","$fixedWidth","dateTime","$duration","date","boolean","$group","wrongSelectKey","wrongKey","toBeCallableWith","direction","timestamp"],"sources":["aggregate.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 { objectTypeWithAllPropertyTypes, Todo, } from \"@osdk/client.test.ontology\";\nimport { expectType } from \"ts-expect\";\nimport { beforeAll, describe, expect, expectTypeOf, it, vi, } from \"vitest\";\nimport { createClient } from \"../createClient.js\";\nimport { createMinimalClient } from \"../createMinimalClient.js\";\nimport { aggregate } from \"./aggregate.js\";\nconst metadata = {\n expectsClientVersion: \"0.0.0\",\n ontologyRid: \"ri.a.b.c.d\",\n ontologyApiName: \"apiName\",\n userAgent: \"\",\n};\nlet mockFetch;\nlet clientCtx;\nlet client;\nbeforeAll(() => {\n mockFetch = vi.fn();\n mockFetch.mockResolvedValue({\n ok: true,\n status: 200,\n json: () => new Promise((resolve) => resolve(aggregationResponse)),\n });\n clientCtx = createMinimalClient(metadata, \"https://host.com\", async () => \"myAccessToken\", {}, mockFetch);\n client = createClient(\"https://host.com\", metadata.ontologyRid, async () => \"\", undefined, mockFetch);\n});\nconst aggregationResponse = {\n accuracy: \"APPROXIMATE\",\n data: [\n {\n group: {\n string: \"hello\",\n },\n metrics: [\n {\n name: \"string.approximateDistinct\",\n value: 1,\n },\n {\n name: \"string.exactDistinct\",\n value: 1,\n },\n {\n name: \"id.max\",\n value: 1,\n },\n {\n name: \"id.avg\",\n value: 1,\n },\n ],\n },\n ],\n};\ndescribe(\"aggregate\", () => {\n it(\"works\", async () => {\n expectTypeOf().toEqualTypeOf;\n const notGrouped = await aggregate(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"string:approximateDistinct\": \"unordered\",\n \"string:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n });\n expect(mockFetch).toHaveBeenCalledWith(\"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\", {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n \"field\": \"string\",\n },\n { \"type\": \"max\", \"name\": \"id.max\", \"field\": \"id\" },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n });\n expectType(notGrouped.string.approximateDistinct);\n expectType(notGrouped.string.exactDistinct);\n expectType(notGrouped.id.max);\n expectType(notGrouped.id.avg);\n expectType(notGrouped.$count);\n expectType(false); // subSelect should hide unused keys\n const grouped = await client(objectTypeWithAllPropertyTypes).aggregate({\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"id:exactDistinct\": \"unordered\",\n \"id:max\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $ranges: [[\"2024-01-02\", \"2024-01-09\"]] },\n boolean: \"exact\",\n },\n });\n expectType(grouped);\n expectType(grouped[0].$group.string);\n expectType(grouped[0].id.approximateDistinct);\n expectType(grouped[0].id.exactDistinct);\n expectType(grouped[0].$group.id);\n expectType(grouped[0].$count);\n expectType(grouped[0].$group.integer);\n expectType(grouped[0].$group.short);\n expectType(grouped[0].$group.float);\n expectType(grouped[0].$group.dateTime);\n expectType(grouped[0].$group.date);\n expectType(grouped[0].$group.boolean);\n expectType({\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n expectType({\n $select: {\n id: \"approximateDistinct\",\n // @ts-expect-error\n wrongSelectKey: \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n // @ts-expect-error\n wrongKey: \"don't work\",\n string: \"exact\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n expectTypeOf().toBeCallableWith(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"id:approximateDistinct\": \"unordered\",\n // @ts-expect-error\n \"wrongSelectKey\": \"don't work\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n string: \"exact\",\n // @ts-expect-error\n wrongKey: \"wrongKey\",\n id: { $exactWithLimit: 10 },\n integer: { $ranges: [[1, 2]] },\n short: {\n $ranges: [[2, 3], [4, 5]],\n },\n float: { $fixedWidth: 10 },\n },\n });\n expectType({\n dateTime: { $duration: [10, \"seconds\"] },\n date: { $duration: [1, \"years\"] },\n });\n // Can't use value greater than 1 for years\n expectType({\n // @ts-expect-error\n date: { $duration: [10, \"years\"] },\n });\n // Can't use arbitrary string for time unit\n expectType({\n // @ts-expect-error\n dateTime: { $duration: [1, \"nonexistentTimeUnit\"] },\n });\n // Can't use time unit smaller than days for date type\n expectType({\n // @ts-expect-error\n date: { $duration: [1, \"seconds\"] },\n });\n });\n it(\"works with $orderBy (no groups)\", async () => {\n const notGrouped = await aggregate(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"string:approximateDistinct\": \"asc\",\n \"id:exactDistinct\": \"asc\",\n \"id:avg\": \"desc\",\n \"id:max\": \"asc\",\n \"$count\": \"unordered\",\n },\n });\n expect(mockFetch).toHaveBeenCalledWith(\"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\", {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [],\n \"aggregation\": [\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"id.exactDistinct\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"avg\",\n \"name\": \"id.avg\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"ASC\",\n \"field\": \"id\",\n },\n { \"type\": \"count\", \"name\": \"count\" },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n });\n expectType(notGrouped.string.approximateDistinct);\n expectType(notGrouped.id.exactDistinct);\n expectType(notGrouped.id.max);\n expectType(notGrouped.id.avg);\n expectType(notGrouped.$count);\n expectType(false); // subselect should hide unused keys\n });\n it(\"works with $orderBy (1 group)\", async () => {\n const grouped = await aggregate(clientCtx, objectTypeWithAllPropertyTypes, {\n type: \"base\",\n objectType: \"ToDo\",\n }, {\n $select: {\n \"id:max\": \"desc\",\n \"string:approximateDistinct\": \"asc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n \"string:exactDistinct\": \"desc\",\n },\n $groupBy: {\n id: \"exact\",\n },\n });\n expect(mockFetch).toHaveBeenCalledWith(\"https://host.com/api/v2/ontologies/ri.a.b.c.d/objectSets/aggregate\", {\n body: JSON.stringify({\n \"objectSet\": { \"type\": \"base\", \"objectType\": \"ToDo\" },\n \"groupBy\": [{ \"type\": \"exact\", \"field\": \"id\" }],\n \"aggregation\": [\n {\n \"type\": \"max\",\n \"name\": \"id.max\",\n direction: \"DESC\",\n \"field\": \"id\",\n },\n {\n \"type\": \"approximateDistinct\",\n \"name\": \"string.approximateDistinct\",\n direction: \"ASC\",\n \"field\": \"string\",\n },\n { \"type\": \"avg\", \"name\": \"id.avg\", \"field\": \"id\" },\n { \"type\": \"count\", \"name\": \"count\" },\n {\n \"type\": \"exactDistinct\",\n \"name\": \"string.exactDistinct\",\n direction: \"DESC\",\n \"field\": \"string\",\n },\n ],\n }),\n method: \"POST\",\n headers: expect.anything(),\n });\n expectType(grouped[0].string.approximateDistinct);\n expectType(grouped[0].id.max);\n expectType(grouped[0].id.avg);\n expectType(grouped[0].$count);\n expectType(grouped[0].string.exactDistinct);\n expectType(false); // subselect should hide unused keys\n });\n it(\"prohibits ordered select with multiple groupBy\", async () => {\n await client(Todo).aggregate({\n $select: {\n // @ts-expect-error\n \"id:max\": \"desc\",\n // @ts-expect-error\n \"text:approximateDistinct\": \"asc\",\n // @ts-expect-error\n \"text:exactDistinct\": \"desc\",\n \"id:avg\": \"unordered\",\n \"$count\": \"unordered\",\n },\n $groupBy: {\n id: \"exact\",\n timestamp: \"exact\",\n },\n });\n });\n it(\"works with where: todo\", async () => {\n const f = {\n $select: {\n \"office:approximateDistinct\": \"unordered\",\n },\n };\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ObjectOrInterfaceDefinition, Osdk } from "@osdk/api";
|
|
2
|
+
import type { inspect, InspectOptionsStylized } from "node:util";
|
|
3
|
+
import type { HolderBase } from "./InternalSymbols.js";
|
|
4
|
+
declare const nodejsUtilInspectCustom: unique symbol;
|
|
5
|
+
export declare const OsdkCustomInspectPrototype: {
|
|
6
|
+
[nodejsUtilInspectCustom]: typeof customInspect;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* A custom `util.inspect`/`console.log` for nodejs. Not emitted in the browser version
|
|
10
|
+
* @param this
|
|
11
|
+
* @param _depth
|
|
12
|
+
* @param options
|
|
13
|
+
* @param inspect
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
declare function customInspect(this: HolderBase<ObjectOrInterfaceDefinition> & Osdk<any>, _depth: number, options: InspectOptionsStylized, localInspect: typeof inspect): string;
|
|
17
|
+
export {};
|
|
2
18
|
//# sourceMappingURL=OsdkCustomInspectPrototype.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OsdkCustomInspectPrototype.d.ts","sourceRoot":"","sources":["../../../../src/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OsdkCustomInspectPrototype.d.ts","sourceRoot":"","sources":["../../../../src/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAOvD,QAAA,MAAM,uBAAuB,EAAE,OAAO,MAErC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE;IACvC,CAAC,uBAAuB,CAAC,EAAE,OAAO,aAAa,CAAC;CAGhD,CAAC;AAEH;;;;;;;GAOG;AACH,iBAAS,aAAa,CACpB,IAAI,EACA,UAAU,CAAC,2BAA2B,CAAC,GACvC,IAAI,CAAC,GAAG,CAAC,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,EAC/B,YAAY,EAAE,OAAO,OAAO,GAC3B,MAAM,CAwCR"}
|
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { InterfaceDefRef, ObjectDefRef, UnderlyingOsdkObject } from "./InternalSymbols.js";
|
|
17
|
+
const nodejsUtilInspectCustom = Symbol.for("nodejs.util.inspect.custom");
|
|
17
18
|
export const OsdkCustomInspectPrototype = Object.create(null, {
|
|
18
|
-
[
|
|
19
|
+
[nodejsUtilInspectCustom]: {
|
|
19
20
|
value: customInspect
|
|
20
21
|
}
|
|
21
22
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OsdkCustomInspectPrototype.js","names":["InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","
|
|
1
|
+
{"version":3,"file":"OsdkCustomInspectPrototype.js","names":["InterfaceDefRef","ObjectDefRef","UnderlyingOsdkObject","nodejsUtilInspectCustom","Symbol","for","OsdkCustomInspectPrototype","Object","create","value","customInspect","_depth","options","localInspect","newOptions","depth","ret","stylize","apiName","k","Set","Reflect","ownKeys","toString","replace"],"sources":["OsdkCustomInspectPrototype.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 { InterfaceDefRef, ObjectDefRef, UnderlyingOsdkObject, } from \"./InternalSymbols.js\";\nconst nodejsUtilInspectCustom = Symbol.for(\"nodejs.util.inspect.custom\");\nexport const OsdkCustomInspectPrototype = Object.create(null, {\n [nodejsUtilInspectCustom]: { value: customInspect },\n});\n/**\n * A custom `util.inspect`/`console.log` for nodejs. Not emitted in the browser version\n * @param this\n * @param _depth\n * @param options\n * @param inspect\n * @returns\n */\nfunction customInspect(_depth, options, localInspect) {\n const newOptions = {\n ...options,\n depth: options.depth == null ? null : options.depth - 1,\n };\n let ret = `Osdk<${options.stylize(this[ObjectDefRef]?.apiName ?? this[InterfaceDefRef]?.apiName ?? \"\", \"special\")}> {\\n`;\n for (const k of new Set([\n \"$apiName\",\n \"$objectType\",\n \"$primaryKey\",\n ...Reflect.ownKeys(this),\n ])) {\n if (typeof k === \"symbol\")\n continue;\n ret += ` ${options.stylize(k.toString(), \"undefined\")}: ${localInspect(this[k], newOptions)}\\n`;\n }\n if (this[UnderlyingOsdkObject] !== this) {\n ret += \"\\n\";\n ret += ` ${options.stylize(\"$as\", \"special\")}: ${localInspect(this[UnderlyingOsdkObject], newOptions).replace(/\\n/g, `\\n `)}`;\n ret += \"\\n\";\n }\n ret += \"}\";\n return ret;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,eAAe,EAAEC,YAAY,EAAEC,oBAAoB,QAAS,sBAAsB;AAC3F,MAAMC,uBAAuB,GAAGC,MAAM,CAACC,GAAG,CAAC,4BAA4B,CAAC;AACxE,OAAO,MAAMC,0BAA0B,GAAGC,MAAM,CAACC,MAAM,CAAC,IAAI,EAAE;EAC1D,CAACL,uBAAuB,GAAG;IAAEM,KAAK,EAAEC;EAAc;AACtD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAaA,CAACC,MAAM,EAAEC,OAAO,EAAEC,YAAY,EAAE;EAClD,MAAMC,UAAU,GAAG;IACf,GAAGF,OAAO;IACVG,KAAK,EAAEH,OAAO,CAACG,KAAK,IAAI,IAAI,GAAG,IAAI,GAAGH,OAAO,CAACG,KAAK,GAAG;EAC1D,CAAC;EACD,IAAIC,GAAG,GAAG,QAAQJ,OAAO,CAACK,OAAO,CAAC,IAAI,CAAChB,YAAY,CAAC,EAAEiB,OAAO,IAAI,IAAI,CAAClB,eAAe,CAAC,EAAEkB,OAAO,IAAI,EAAE,EAAE,SAAS,CAAC,OAAO;EACxH,KAAK,MAAMC,CAAC,IAAI,IAAIC,GAAG,CAAC,CACpB,UAAU,EACV,aAAa,EACb,aAAa,EACb,GAAGC,OAAO,CAACC,OAAO,CAAC,IAAI,CAAC,CAC3B,CAAC,EAAE;IACA,IAAI,OAAOH,CAAC,KAAK,QAAQ,EACrB;IACJH,GAAG,IAAI,KAAKJ,OAAO,CAACK,OAAO,CAACE,CAAC,CAACI,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,KAAKV,YAAY,CAAC,IAAI,CAACM,CAAC,CAAC,EAAEL,UAAU,CAAC,IAAI;EACpG;EACA,IAAI,IAAI,CAACZ,oBAAoB,CAAC,KAAK,IAAI,EAAE;IACrCc,GAAG,IAAI,IAAI;IACXA,GAAG,IAAI,KAAKJ,OAAO,CAACK,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,KAAKJ,YAAY,CAAC,IAAI,CAACX,oBAAoB,CAAC,EAAEY,UAAU,CAAC,CAACU,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;IAC/HR,GAAG,IAAI,IAAI;EACf;EACAA,GAAG,IAAI,GAAG;EACV,OAAOA,GAAG;AACd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDollarAs.d.ts","sourceRoot":"","sources":["../../../../src/object/convertWireToOsdkObjects/getDollarAs.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,oCAAoC,CAAC;AAgB5C,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"getDollarAs.d.ts","sourceRoot":"","sources":["../../../../src/object/convertWireToOsdkObjects/getDollarAs.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,2BAA2B,EAEjC,MAAM,oCAAoC,CAAC;AAgB5C,eAAO,MAAM,MAAM,EAAE,CAAC,GAAG,EAAE,2BAA2B,KAAK,UAIzB,CAAC"}
|
|
@@ -42,7 +42,7 @@ function $asFactory(objDef) {
|
|
|
42
42
|
}
|
|
43
43
|
const def = objDef[InterfaceDefinitions][targetInterfaceApiName];
|
|
44
44
|
if (!def) {
|
|
45
|
-
throw new Error(`Object does not implement interface '${
|
|
45
|
+
throw new Error(`Object does not implement interface '${targetInterfaceApiName}'.`);
|
|
46
46
|
}
|
|
47
47
|
const underlying = this[UnderlyingOsdkObject];
|
|
48
48
|
const existing = osdkObjectToInterfaceView.get(underlying).get(targetInterfaceApiName)?.deref();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDollarAs.js","names":["InterfaceDefinitions","createSimpleCache","createOsdkInterface","UnderlyingOsdkObject","get$as","WeakMap","$asFactory","get","osdkObjectToInterfaceView","Map","objDef","targetMinDef","targetInterfaceApiName","apiName","interfaceMap","Error","type","def","underlying","existing","deref","osdkInterface","set","WeakRef"],"sources":["getDollarAs.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 { InterfaceDefinitions, } from \"../../ontology/OntologyProvider.js\";\nimport { createSimpleCache } from \"../SimpleCache.js\";\nimport { createOsdkInterface } from \"./createOsdkInterface.js\";\nimport { UnderlyingOsdkObject } from \"./InternalSymbols.js\";\nexport const get$as = createSimpleCache(new WeakMap(), $asFactory).get;\nconst osdkObjectToInterfaceView = createSimpleCache(new WeakMap(), () => new Map());\nfunction $asFactory(objDef) {\n // We use the exact same logic for both the interface rep and the underlying rep\n return function $as(targetMinDef) {\n let targetInterfaceApiName;\n if (typeof targetMinDef === \"string\") {\n if (targetMinDef === objDef.apiName) {\n return this[UnderlyingOsdkObject];\n }\n // this is sufficient to determine if we implement the interface\n if (objDef.interfaceMap?.[targetMinDef] == null) {\n throw new Error(`Object does not implement interface '${targetMinDef}'.`);\n }\n targetInterfaceApiName = targetMinDef;\n }\n else if (targetMinDef.apiName === objDef.apiName) {\n return this[UnderlyingOsdkObject];\n }\n else {\n if (targetMinDef.type === \"object\") {\n throw new Error(`'${targetMinDef.apiName}' is not an interface nor is it '${objDef.apiName}', which is the object type.`);\n }\n targetInterfaceApiName = targetMinDef.apiName;\n }\n const def = objDef[InterfaceDefinitions][targetInterfaceApiName];\n if (!def) {\n throw new Error(`Object does not implement interface '${
|
|
1
|
+
{"version":3,"file":"getDollarAs.js","names":["InterfaceDefinitions","createSimpleCache","createOsdkInterface","UnderlyingOsdkObject","get$as","WeakMap","$asFactory","get","osdkObjectToInterfaceView","Map","objDef","targetMinDef","targetInterfaceApiName","apiName","interfaceMap","Error","type","def","underlying","existing","deref","osdkInterface","set","WeakRef"],"sources":["getDollarAs.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 { InterfaceDefinitions, } from \"../../ontology/OntologyProvider.js\";\nimport { createSimpleCache } from \"../SimpleCache.js\";\nimport { createOsdkInterface } from \"./createOsdkInterface.js\";\nimport { UnderlyingOsdkObject } from \"./InternalSymbols.js\";\nexport const get$as = createSimpleCache(new WeakMap(), $asFactory).get;\nconst osdkObjectToInterfaceView = createSimpleCache(new WeakMap(), () => new Map());\nfunction $asFactory(objDef) {\n // We use the exact same logic for both the interface rep and the underlying rep\n return function $as(targetMinDef) {\n let targetInterfaceApiName;\n if (typeof targetMinDef === \"string\") {\n if (targetMinDef === objDef.apiName) {\n return this[UnderlyingOsdkObject];\n }\n // this is sufficient to determine if we implement the interface\n if (objDef.interfaceMap?.[targetMinDef] == null) {\n throw new Error(`Object does not implement interface '${targetMinDef}'.`);\n }\n targetInterfaceApiName = targetMinDef;\n }\n else if (targetMinDef.apiName === objDef.apiName) {\n return this[UnderlyingOsdkObject];\n }\n else {\n if (targetMinDef.type === \"object\") {\n throw new Error(`'${targetMinDef.apiName}' is not an interface nor is it '${objDef.apiName}', which is the object type.`);\n }\n targetInterfaceApiName = targetMinDef.apiName;\n }\n const def = objDef[InterfaceDefinitions][targetInterfaceApiName];\n if (!def) {\n throw new Error(`Object does not implement interface '${targetInterfaceApiName}'.`);\n }\n const underlying = this[UnderlyingOsdkObject];\n const existing = osdkObjectToInterfaceView\n .get(underlying)\n .get(targetInterfaceApiName)?.deref();\n if (existing)\n return existing;\n const osdkInterface = createOsdkInterface(underlying, def.def);\n osdkObjectToInterfaceView.get(underlying).set(targetInterfaceApiName, new WeakRef(osdkInterface));\n return osdkInterface;\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,oBAAoB,QAAS,oCAAoC;AAC1E,SAASC,iBAAiB,QAAQ,mBAAmB;AACrD,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,SAASC,oBAAoB,QAAQ,sBAAsB;AAC3D,OAAO,MAAMC,MAAM,GAAGH,iBAAiB,CAAC,IAAII,OAAO,CAAC,CAAC,EAAEC,UAAU,CAAC,CAACC,GAAG;AACtE,MAAMC,yBAAyB,GAAGP,iBAAiB,CAAC,IAAII,OAAO,CAAC,CAAC,EAAE,MAAM,IAAII,GAAG,CAAC,CAAC,CAAC;AACnF,SAASH,UAAUA,CAACI,MAAM,EAAE;EACxB;EACA,OAAO,UAAaC,YAAY,EAAE;IAC9B,IAAIC,sBAAsB;IAC1B,IAAI,OAAOD,YAAY,KAAK,QAAQ,EAAE;MAClC,IAAIA,YAAY,KAAKD,MAAM,CAACG,OAAO,EAAE;QACjC,OAAO,IAAI,CAACV,oBAAoB,CAAC;MACrC;MACA;MACA,IAAIO,MAAM,CAACI,YAAY,GAAGH,YAAY,CAAC,IAAI,IAAI,EAAE;QAC7C,MAAM,IAAII,KAAK,CAAC,wCAAwCJ,YAAY,IAAI,CAAC;MAC7E;MACAC,sBAAsB,GAAGD,YAAY;IACzC,CAAC,MACI,IAAIA,YAAY,CAACE,OAAO,KAAKH,MAAM,CAACG,OAAO,EAAE;MAC9C,OAAO,IAAI,CAACV,oBAAoB,CAAC;IACrC,CAAC,MACI;MACD,IAAIQ,YAAY,CAACK,IAAI,KAAK,QAAQ,EAAE;QAChC,MAAM,IAAID,KAAK,CAAC,IAAIJ,YAAY,CAACE,OAAO,oCAAoCH,MAAM,CAACG,OAAO,8BAA8B,CAAC;MAC7H;MACAD,sBAAsB,GAAGD,YAAY,CAACE,OAAO;IACjD;IACA,MAAMI,GAAG,GAAGP,MAAM,CAACV,oBAAoB,CAAC,CAACY,sBAAsB,CAAC;IAChE,IAAI,CAACK,GAAG,EAAE;MACN,MAAM,IAAIF,KAAK,CAAC,wCAAwCH,sBAAsB,IAAI,CAAC;IACvF;IACA,MAAMM,UAAU,GAAG,IAAI,CAACf,oBAAoB,CAAC;IAC7C,MAAMgB,QAAQ,GAAGX,yBAAyB,CACrCD,GAAG,CAACW,UAAU,CAAC,CACfX,GAAG,CAACK,sBAAsB,CAAC,EAAEQ,KAAK,CAAC,CAAC;IACzC,IAAID,QAAQ,EACR,OAAOA,QAAQ;IACnB,MAAME,aAAa,GAAGnB,mBAAmB,CAACgB,UAAU,EAAED,GAAG,CAACA,GAAG,CAAC;IAC9DT,yBAAyB,CAACD,GAAG,CAACW,UAAU,CAAC,CAACI,GAAG,CAACV,sBAAsB,EAAE,IAAIW,OAAO,CAACF,aAAa,CAAC,CAAC;IACjG,OAAOA,aAAa;EACxB,CAAC;AACL","ignoreList":[]}
|
|
@@ -108,7 +108,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
108
108
|
this.#subscriptions.set(sub.subscriptionId, sub);
|
|
109
109
|
// actually prepares the subscription, ensures the ws is ready, and sends
|
|
110
110
|
// a subscribe message. We don't want to block on this.
|
|
111
|
-
this.#initiateSubscribe(sub);
|
|
111
|
+
void this.#initiateSubscribe(sub);
|
|
112
112
|
return () => {
|
|
113
113
|
this.#unsubscribe(sub);
|
|
114
114
|
};
|
|
@@ -218,7 +218,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
218
218
|
baseUrl,
|
|
219
219
|
tokenProvider
|
|
220
220
|
} = this.#client;
|
|
221
|
-
const url = constructWebsocketUrl(baseUrl, this.#client.ontologyRid);
|
|
221
|
+
const url = constructWebsocketUrl(baseUrl, await this.#client.ontologyRid);
|
|
222
222
|
const token = await tokenProvider();
|
|
223
223
|
// tokenProvider is async, there could potentially be a race to create the websocket.
|
|
224
224
|
// Only the first call to reach here will find a null this.#ws, the rest will bail out
|
|
@@ -281,14 +281,14 @@ export class ObjectSetListenerWebsocket {
|
|
|
281
281
|
}
|
|
282
282
|
switch (data.type) {
|
|
283
283
|
case "objectSetChanged":
|
|
284
|
-
return this.#handleMessage_objectSetChanged(data);
|
|
284
|
+
return void this.#handleMessage_objectSetChanged(data);
|
|
285
285
|
case "refreshObjectSet":
|
|
286
|
-
return this.#handleMessage_refreshObjectSet(data);
|
|
286
|
+
return void this.#handleMessage_refreshObjectSet(data);
|
|
287
287
|
case "subscribeResponses":
|
|
288
|
-
return this.#handleMessage_subscribeResponses(data);
|
|
288
|
+
return void this.#handleMessage_subscribeResponses(data);
|
|
289
289
|
case "subscriptionClosed":
|
|
290
290
|
{
|
|
291
|
-
return this.#handleMessage_subscriptionClosed(data);
|
|
291
|
+
return void this.#handleMessage_subscriptionClosed(data);
|
|
292
292
|
}
|
|
293
293
|
default:
|
|
294
294
|
process.env.NODE_ENV !== "production" ? invariant(false, "Unexpected message type") : invariant(false);
|
|
@@ -438,7 +438,9 @@ export class ObjectSetListenerWebsocket {
|
|
|
438
438
|
for (const s of this.#subscriptions.values()) {
|
|
439
439
|
if (s.status === "subscribed") s.status = "reconnecting";
|
|
440
440
|
}
|
|
441
|
-
this
|
|
441
|
+
// we don't care about the result of this (we want cycleWebsocket to be fire and forget)
|
|
442
|
+
// just that it happens
|
|
443
|
+
void this.#ensureWebsocket();
|
|
442
444
|
}
|
|
443
445
|
};
|
|
444
446
|
#tryCatchOnError = (sub, subscriptionClosed, error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectSetListenerWebsocket.js","names":["WebSocket","invariant","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","onSuccessfulSubscription","isReady","sub","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","endedSubscriptions","Set","maybeDisconnectTimeout","constructor","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","subscribe","objectType","objectSet","listener","properties","objDef","type","ontologyProvider","getObjectDefinition","apiName","getInterfaceDefinition","objectProperties","referenceProperties","length","Object","keys","filter","p","primaryKeyPropertyName","undefined","primaryKeyApiName","requestedProperties","requestedReferenceProperties","subscriptionId","nextUuid","interfaceApiName","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","ensureWebsocket","readyState","OPEN","sendSubscribeMessage","error","tryCatchOnError","#sendSubscribeMessage","readySubs","values","id","requests","map","propertySet","referenceSet","payload","send","JSON","stringify","#unsubscribe","newStatus","delete","add","clearTimeout","setTimeout","size","cycleWebsocket","#ensureWebsocket","tokenProvider","url","constructWebsocketUrl","ontologyRid","token","nextConnectTime","Date","now","Promise","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","handleMessage_objectSetChanged","handleMessage_refreshObjectSet","handleMessage_subscribeResponses","handleMessage_subscriptionClosed","objectUpdates","updates","update","referenceUpdates","osdkObjectsWithReferenceUpdates","all","o","osdkObjectArray","objectFactory","__apiName","__primaryKey","primaryKey","property","value","singleOsdkObject","object","state","osdkObject","osdkObjects","keysToDelete","key","includes","responses","subs","i","response","errors","shouldFireOutOfDate","#handleMessage_subscriptionClosed","has","cause","event","#cycleWebsocket","CLOSING","CLOSED","close","s","#tryCatchOnError","subscriptionClosed","onErrorError","console","base","URL","protocol","replace","uuidCounter","padStart"],"sources":["ObjectSetListenerWebsocket.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nconst MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;\n/** Noop function to reduce conditional checks */\nfunction doNothing() { }\n/**\n * Converts an ObjectSetListener to one where all the functions are defined.\n */\nfunction fillOutListener({ onChange = doNothing, onError = doNothing, onOutOfDate = doNothing, onSuccessfulSubscription = doNothing, }) {\n return { onChange, onError, onOutOfDate, onSuccessfulSubscription };\n}\nfunction isReady(sub) {\n return sub.isReady != null;\n}\nfunction subscriptionIsDone(sub) {\n return sub.status === \"done\" || sub.status === \"error\";\n}\n/** @internal */\nexport class ObjectSetListenerWebsocket {\n static #instances = new WeakMap();\n MINIMUM_RECONNECT_DELAY_MS;\n // FIXME\n static getInstance(client) {\n let instance = ObjectSetListenerWebsocket.#instances.get(client.clientCacheKey);\n if (instance == null) {\n instance = new ObjectSetListenerWebsocket(client);\n ObjectSetListenerWebsocket.#instances.set(client.clientCacheKey, instance);\n }\n return instance;\n }\n #ws;\n #lastWsConnect = 0;\n #client;\n #logger;\n /**\n * map of requestId to all active subscriptions at the time of the request\n */\n #pendingSubscriptions = new Map();\n /**\n * Map of subscriptionId to Subscription. Note: the subscriptionId may be\n * temporary and not the actual subscriptionId from the server.\n */\n #subscriptions = new Map();\n #endedSubscriptions = new Set();\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;\n this.#client = client;\n this.#logger = client.logger?.child({}, {\n msgPrefix: \"<OSW> \",\n });\n invariant(client.baseUrl.startsWith(\"https://\")\n || client.baseUrl.startsWith(\"http://\"), \"Stack must be a URL\");\n }\n async subscribe(objectType, objectSet, listener, properties = []) {\n const objDef = objectType.type === \"object\"\n ? await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName)\n : await this.#client.ontologyProvider.getInterfaceDefinition(objectType.apiName);\n let objectProperties = [];\n let referenceProperties = [];\n if (objectType.type === \"object\") {\n if (properties.length === 0) {\n properties = Object.keys(objDef.properties);\n }\n objectProperties = properties.filter((p) => objDef.properties[p].type !== \"geotimeSeriesReference\");\n referenceProperties = properties.filter((p) => objDef.properties[p].type === \"geotimeSeriesReference\");\n }\n else {\n objectProperties = [];\n referenceProperties = properties;\n }\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n primaryKeyPropertyName: objDef.type === \"interface\"\n ? undefined\n : objDef.primaryKeyApiName,\n requestedProperties: objectProperties,\n requestedReferenceProperties: referenceProperties,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${nextUuid()}}`,\n interfaceApiName: objDef.type === \"object\"\n ? undefined\n : objDef.apiName,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n try {\n await this.#ensureWebsocket();\n // the consumer may have already unsubscribed before we are ready to request a subscription\n // so we have to acquire the pendingSubscription after the await.\n if (subscriptionIsDone(sub)) {\n return;\n }\n sub.isReady = true;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n this.#tryCatchOnError(sub, true, error);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n const id = nextUuid();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ objectSet, requestedProperties, requestedReferenceProperties, interfaceApiName, }) => {\n return {\n objectSet: objectSet,\n propertySet: requestedProperties,\n referenceSet: requestedReferenceProperties,\n };\n }),\n };\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: subscribe }, \"sending subscribe message\");\n }\n this.#ws?.send(JSON.stringify(subscribe));\n }\n #unsubscribe(sub, newStatus = \"done\") {\n if (subscriptionIsDone(sub)) {\n // if we are already done, we don't need to do anything\n return;\n }\n sub.status = newStatus;\n // make sure listeners do nothing now\n sub.listener = fillOutListener({});\n this.#subscriptions.delete(sub.subscriptionId);\n this.#endedSubscriptions.add(sub.subscriptionId);\n this.#sendSubscribeMessage();\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const url = constructWebsocketUrl(baseUrl, this.#client.ontologyRid);\n const token = await tokenProvider();\n // tokenProvider is async, there could potentially be a race to create the websocket.\n // Only the first call to reach here will find a null this.#ws, the rest will bail out\n if (this.#ws == null) {\n // TODO this can probably be exponential backoff with jitter\n // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY\n const nextConnectTime = (this.#lastWsConnect ?? 0)\n + this.MINIMUM_RECONNECT_DELAY_MS;\n if (nextConnectTime > Date.now()) {\n await new Promise((resolve) => {\n setTimeout(resolve, nextConnectTime - Date.now());\n });\n }\n this.#lastWsConnect = Date.now();\n // we again may have lost the race after our minimum backoff time\n if (this.#ws == null) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"Creating websocket\");\n }\n this.#ws = new WebSocket(url, [`Bearer-${token}`]);\n this.#ws.addEventListener(\"close\", this.#onClose);\n this.#ws.addEventListener(\"message\", this.#onMessage);\n this.#ws.addEventListener(\"open\", this.#onOpen);\n }\n }\n // Allow await-ing the websocket open event if it isn't open already.\n // This needs to happen even for callers that didn't just create this.#ws\n if (this.#ws.readyState === WebSocket.CONNECTING) {\n const ws = this.#ws;\n return new Promise((resolve, reject) => {\n function cleanup() {\n ws.removeEventListener(\"open\", open);\n ws.removeEventListener(\"error\", error);\n ws.removeEventListener(\"close\", cleanup);\n }\n function open() {\n cleanup();\n resolve();\n }\n function error(evt) {\n cleanup();\n reject(evt);\n }\n ws.addEventListener(\"open\", open);\n ws.addEventListener(\"error\", error);\n ws.addEventListener(\"close\", cleanup);\n });\n }\n }\n }\n #onOpen = () => {\n // resubscribe all of the listeners\n this.#sendSubscribeMessage();\n };\n #onMessage = async (message) => {\n const data = JSON.parse(message.data.toString());\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: data }, \"received message from ws\");\n }\n switch (data.type) {\n case \"objectSetChanged\":\n return this.#handleMessage_objectSetChanged(data);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data);\n case \"subscriptionClosed\": {\n return this.#handleMessage_subscriptionClosed(data);\n }\n default:\n const _ = data;\n invariant(false, \"Unexpected message type\");\n }\n };\n #handleMessage_objectSetChanged = async (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null)\n return;\n const objectUpdates = payload.updates.filter((update) => update.type === \"object\");\n const referenceUpdates = payload.updates.filter((update) => update.type === \"reference\");\n const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async (o) => {\n const osdkObjectArray = await this.#client.objectFactory(this.#client, [{\n __apiName: o.objectType,\n __primaryKey: sub.primaryKeyPropertyName != null\n ? o.primaryKey[sub.primaryKeyPropertyName]\n : undefined,\n ...o.primaryKey,\n [o.property]: o.value,\n }], sub.interfaceApiName);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: \"ADDED_OR_UPDATED\",\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjectsWithReferenceUpdates) {\n if (osdkObject != null) {\n try {\n sub.listener.onChange?.(osdkObject);\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onChange callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n }\n }\n const osdkObjects = await Promise.all(objectUpdates.map(async (o) => {\n const keysToDelete = Object.keys(o.object).filter((key) => sub.requestedReferenceProperties.includes(key));\n for (const key of keysToDelete) {\n delete o.object[key];\n }\n const osdkObjectArray = await this.#client.objectFactory(this.#client, [o.object], sub.interfaceApiName);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: o.state,\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjects) {\n if (osdkObject != null) {\n try {\n sub.listener.onChange?.(osdkObject);\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onChange callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n }\n }\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n try {\n sub.listener.onOutOfDate();\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onOutOfDate callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n this.#tryCatchOnError(sub, true, response.errors);\n this.#unsubscribe(sub, \"error\");\n break;\n case \"qos\":\n // the server has requested that we tear down our websocket and reconnect to help load balance\n this.#cycleWebsocket();\n break;\n case \"success\":\n // `\"preparing\"` should only be the status on an initial subscribe.\n const shouldFireOutOfDate = sub.status === \"expired\"\n || sub.status === \"reconnecting\";\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ shouldFireOutOfDate }, \"success\");\n }\n sub.status = \"subscribed\";\n if (sub.subscriptionId !== response.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n try {\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n else\n sub.listener.onSuccessfulSubscription();\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onOutOfDate or onSuccessfulSubscription callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n break;\n default:\n this.#tryCatchOnError(sub, true, response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null && this.#endedSubscriptions.has(payload.id))\n return;\n invariant(sub, `Expected subscription id ${payload.id}`);\n this.#tryCatchOnError(sub, true, payload.cause);\n this.#unsubscribe(sub, \"error\");\n }\n #onClose = (event) => {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ event }, \"Received close event from ws\", event);\n }\n // TODO we should probably throttle this so we don't abuse the backend\n this.#cycleWebsocket();\n };\n #cycleWebsocket = () => {\n if (this.#ws) {\n this.#ws.removeEventListener(\"open\", this.#onOpen);\n this.#ws.removeEventListener(\"message\", this.#onMessage);\n this.#ws.removeEventListener(\"close\", this.#onClose);\n if (this.#ws.readyState !== WebSocket.CLOSING\n && this.#ws.readyState !== WebSocket.CLOSED) {\n this.#ws.close();\n }\n this.#ws = undefined;\n }\n // if we have any listeners that are still depending on us, go ahead and reopen the websocket\n if (this.#subscriptions.size > 0) {\n if (process.env.NODE_ENV !== \"production\") {\n for (const s of this.#subscriptions.values()) {\n invariant(s.status !== \"done\" && s.status !== \"error\", \"should not have done/error subscriptions still\");\n }\n }\n for (const s of this.#subscriptions.values()) {\n if (s.status === \"subscribed\")\n s.status = \"reconnecting\";\n }\n this.#ensureWebsocket();\n }\n };\n #tryCatchOnError = (sub, subscriptionClosed, error) => {\n try {\n sub.listener.onError({ subscriptionClosed: subscriptionClosed, error });\n }\n catch (onErrorError) {\n // eslint-disable-next-line no-console\n console.error(`Error encountered in an onError callback for an OSDK subscription`, onErrorError);\n // eslint-disable-next-line no-console\n console.error(`This onError call was triggered by an error in another callback`, error);\n // eslint-disable-next-line no-console\n console.error(`The subscription has been closed.`, error);\n if (!subscriptionClosed) {\n this.#logger?.error(error, \"Error in onError callback\");\n this.#unsubscribe(sub, \"error\");\n this.#tryCatchOnError(sub, true, onErrorError);\n }\n }\n };\n}\n/** @internal */\nexport function constructWebsocketUrl(baseUrl, ontologyRid) {\n const base = new URL(baseUrl);\n const url = new URL(`api/v2/ontologySubscriptions/ontologies/${ontologyRid}/streamSubscriptions`, base);\n url.protocol = url.protocol.replace(\"https\", \"wss\");\n return url;\n}\nlet uuidCounter = 0;\nfunction nextUuid() {\n return `00000000-0000-0000-0000-${(uuidCounter++).toString().padStart(12, \"0\")}`;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ObjectSetListenerWebsocket.js","names":["WebSocket","invariant","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","onSuccessfulSubscription","isReady","sub","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","endedSubscriptions","Set","maybeDisconnectTimeout","constructor","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","subscribe","objectType","objectSet","listener","properties","objDef","type","ontologyProvider","getObjectDefinition","apiName","getInterfaceDefinition","objectProperties","referenceProperties","length","Object","keys","filter","p","primaryKeyPropertyName","undefined","primaryKeyApiName","requestedProperties","requestedReferenceProperties","subscriptionId","nextUuid","interfaceApiName","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","ensureWebsocket","readyState","OPEN","sendSubscribeMessage","error","tryCatchOnError","#sendSubscribeMessage","readySubs","values","id","requests","map","propertySet","referenceSet","payload","send","JSON","stringify","#unsubscribe","newStatus","delete","add","clearTimeout","setTimeout","size","cycleWebsocket","#ensureWebsocket","tokenProvider","url","constructWebsocketUrl","ontologyRid","token","nextConnectTime","Date","now","Promise","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","handleMessage_objectSetChanged","handleMessage_refreshObjectSet","handleMessage_subscribeResponses","handleMessage_subscriptionClosed","objectUpdates","updates","update","referenceUpdates","osdkObjectsWithReferenceUpdates","all","o","osdkObjectArray","objectFactory","__apiName","__primaryKey","primaryKey","property","value","singleOsdkObject","object","state","osdkObject","osdkObjects","keysToDelete","key","includes","responses","subs","i","response","errors","shouldFireOutOfDate","#handleMessage_subscriptionClosed","has","cause","event","#cycleWebsocket","CLOSING","CLOSED","close","s","#tryCatchOnError","subscriptionClosed","onErrorError","console","base","URL","protocol","replace","uuidCounter","padStart"],"sources":["ObjectSetListenerWebsocket.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nconst MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;\n/** Noop function to reduce conditional checks */\nfunction doNothing() { }\n/**\n * Converts an ObjectSetListener to one where all the functions are defined.\n */\nfunction fillOutListener({ onChange = doNothing, onError = doNothing, onOutOfDate = doNothing, onSuccessfulSubscription = doNothing, }) {\n return { onChange, onError, onOutOfDate, onSuccessfulSubscription };\n}\nfunction isReady(sub) {\n return sub.isReady != null;\n}\nfunction subscriptionIsDone(sub) {\n return sub.status === \"done\" || sub.status === \"error\";\n}\n/** @internal */\nexport class ObjectSetListenerWebsocket {\n static #instances = new WeakMap();\n MINIMUM_RECONNECT_DELAY_MS;\n // FIXME\n static getInstance(client) {\n let instance = ObjectSetListenerWebsocket.#instances.get(client.clientCacheKey);\n if (instance == null) {\n instance = new ObjectSetListenerWebsocket(client);\n ObjectSetListenerWebsocket.#instances.set(client.clientCacheKey, instance);\n }\n return instance;\n }\n #ws;\n #lastWsConnect = 0;\n #client;\n #logger;\n /**\n * map of requestId to all active subscriptions at the time of the request\n */\n #pendingSubscriptions = new Map();\n /**\n * Map of subscriptionId to Subscription. Note: the subscriptionId may be\n * temporary and not the actual subscriptionId from the server.\n */\n #subscriptions = new Map();\n #endedSubscriptions = new Set();\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;\n this.#client = client;\n this.#logger = client.logger?.child({}, {\n msgPrefix: \"<OSW> \",\n });\n invariant(client.baseUrl.startsWith(\"https://\")\n || client.baseUrl.startsWith(\"http://\"), \"Stack must be a URL\");\n }\n async subscribe(objectType, objectSet, listener, properties = []) {\n const objDef = objectType.type === \"object\"\n ? await this.#client.ontologyProvider.getObjectDefinition(objectType.apiName)\n : await this.#client.ontologyProvider.getInterfaceDefinition(objectType.apiName);\n let objectProperties = [];\n let referenceProperties = [];\n if (objectType.type === \"object\") {\n if (properties.length === 0) {\n properties = Object.keys(objDef.properties);\n }\n objectProperties = properties.filter((p) => objDef.properties[p].type !== \"geotimeSeriesReference\");\n referenceProperties = properties.filter((p) => objDef.properties[p].type === \"geotimeSeriesReference\");\n }\n else {\n objectProperties = [];\n referenceProperties = properties;\n }\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n primaryKeyPropertyName: objDef.type === \"interface\"\n ? undefined\n : objDef.primaryKeyApiName,\n requestedProperties: objectProperties,\n requestedReferenceProperties: referenceProperties,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${nextUuid()}}`,\n interfaceApiName: objDef.type === \"object\"\n ? undefined\n : objDef.apiName,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n void this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n try {\n await this.#ensureWebsocket();\n // the consumer may have already unsubscribed before we are ready to request a subscription\n // so we have to acquire the pendingSubscription after the await.\n if (subscriptionIsDone(sub)) {\n return;\n }\n sub.isReady = true;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n this.#tryCatchOnError(sub, true, error);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n const id = nextUuid();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ objectSet, requestedProperties, requestedReferenceProperties, interfaceApiName, }) => {\n return {\n objectSet: objectSet,\n propertySet: requestedProperties,\n referenceSet: requestedReferenceProperties,\n };\n }),\n };\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: subscribe }, \"sending subscribe message\");\n }\n this.#ws?.send(JSON.stringify(subscribe));\n }\n #unsubscribe(sub, newStatus = \"done\") {\n if (subscriptionIsDone(sub)) {\n // if we are already done, we don't need to do anything\n return;\n }\n sub.status = newStatus;\n // make sure listeners do nothing now\n sub.listener = fillOutListener({});\n this.#subscriptions.delete(sub.subscriptionId);\n this.#endedSubscriptions.add(sub.subscriptionId);\n this.#sendSubscribeMessage();\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const url = constructWebsocketUrl(baseUrl, await this.#client.ontologyRid);\n const token = await tokenProvider();\n // tokenProvider is async, there could potentially be a race to create the websocket.\n // Only the first call to reach here will find a null this.#ws, the rest will bail out\n if (this.#ws == null) {\n // TODO this can probably be exponential backoff with jitter\n // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY\n const nextConnectTime = (this.#lastWsConnect ?? 0)\n + this.MINIMUM_RECONNECT_DELAY_MS;\n if (nextConnectTime > Date.now()) {\n await new Promise((resolve) => {\n setTimeout(resolve, nextConnectTime - Date.now());\n });\n }\n this.#lastWsConnect = Date.now();\n // we again may have lost the race after our minimum backoff time\n if (this.#ws == null) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"Creating websocket\");\n }\n this.#ws = new WebSocket(url, [`Bearer-${token}`]);\n this.#ws.addEventListener(\"close\", this.#onClose);\n this.#ws.addEventListener(\"message\", this.#onMessage);\n this.#ws.addEventListener(\"open\", this.#onOpen);\n }\n }\n // Allow await-ing the websocket open event if it isn't open already.\n // This needs to happen even for callers that didn't just create this.#ws\n if (this.#ws.readyState === WebSocket.CONNECTING) {\n const ws = this.#ws;\n return new Promise((resolve, reject) => {\n function cleanup() {\n ws.removeEventListener(\"open\", open);\n ws.removeEventListener(\"error\", error);\n ws.removeEventListener(\"close\", cleanup);\n }\n function open() {\n cleanup();\n resolve();\n }\n function error(evt) {\n cleanup();\n reject(evt);\n }\n ws.addEventListener(\"open\", open);\n ws.addEventListener(\"error\", error);\n ws.addEventListener(\"close\", cleanup);\n });\n }\n }\n }\n #onOpen = () => {\n // resubscribe all of the listeners\n this.#sendSubscribeMessage();\n };\n #onMessage = async (message) => {\n const data = JSON.parse(message.data.toString());\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ payload: data }, \"received message from ws\");\n }\n switch (data.type) {\n case \"objectSetChanged\":\n return void this.#handleMessage_objectSetChanged(data);\n case \"refreshObjectSet\":\n return void this.#handleMessage_refreshObjectSet(data);\n case \"subscribeResponses\":\n return void this.#handleMessage_subscribeResponses(data);\n case \"subscriptionClosed\": {\n return void this.#handleMessage_subscriptionClosed(data);\n }\n default:\n const _ = data;\n invariant(false, \"Unexpected message type\");\n }\n };\n #handleMessage_objectSetChanged = async (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null)\n return;\n const objectUpdates = payload.updates.filter((update) => update.type === \"object\");\n const referenceUpdates = payload.updates.filter((update) => update.type === \"reference\");\n const osdkObjectsWithReferenceUpdates = await Promise.all(referenceUpdates.map(async (o) => {\n const osdkObjectArray = await this.#client.objectFactory(this.#client, [{\n __apiName: o.objectType,\n __primaryKey: sub.primaryKeyPropertyName != null\n ? o.primaryKey[sub.primaryKeyPropertyName]\n : undefined,\n ...o.primaryKey,\n [o.property]: o.value,\n }], sub.interfaceApiName);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: \"ADDED_OR_UPDATED\",\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjectsWithReferenceUpdates) {\n if (osdkObject != null) {\n try {\n sub.listener.onChange?.(osdkObject);\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onChange callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n }\n }\n const osdkObjects = await Promise.all(objectUpdates.map(async (o) => {\n const keysToDelete = Object.keys(o.object).filter((key) => sub.requestedReferenceProperties.includes(key));\n for (const key of keysToDelete) {\n delete o.object[key];\n }\n const osdkObjectArray = await this.#client.objectFactory(this.#client, [o.object], sub.interfaceApiName);\n const singleOsdkObject = osdkObjectArray[0] ?? undefined;\n return singleOsdkObject != null\n ? {\n object: singleOsdkObject,\n state: o.state,\n }\n : undefined;\n }));\n for (const osdkObject of osdkObjects) {\n if (osdkObject != null) {\n try {\n sub.listener.onChange?.(osdkObject);\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onChange callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n }\n }\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n try {\n sub.listener.onOutOfDate();\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onOutOfDate callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n this.#tryCatchOnError(sub, true, response.errors);\n this.#unsubscribe(sub, \"error\");\n break;\n case \"qos\":\n // the server has requested that we tear down our websocket and reconnect to help load balance\n this.#cycleWebsocket();\n break;\n case \"success\":\n // `\"preparing\"` should only be the status on an initial subscribe.\n const shouldFireOutOfDate = sub.status === \"expired\"\n || sub.status === \"reconnecting\";\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ shouldFireOutOfDate }, \"success\");\n }\n sub.status = \"subscribed\";\n if (sub.subscriptionId !== response.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n try {\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n else\n sub.listener.onSuccessfulSubscription();\n }\n catch (error) {\n this.#logger?.error(error, \"Error in onOutOfDate or onSuccessfulSubscription callback\");\n this.#tryCatchOnError(sub, false, error);\n }\n break;\n default:\n this.#tryCatchOnError(sub, true, response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n if (sub == null && this.#endedSubscriptions.has(payload.id))\n return;\n invariant(sub, `Expected subscription id ${payload.id}`);\n this.#tryCatchOnError(sub, true, payload.cause);\n this.#unsubscribe(sub, \"error\");\n }\n #onClose = (event) => {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ event }, \"Received close event from ws\", event);\n }\n // TODO we should probably throttle this so we don't abuse the backend\n this.#cycleWebsocket();\n };\n #cycleWebsocket = () => {\n if (this.#ws) {\n this.#ws.removeEventListener(\"open\", this.#onOpen);\n this.#ws.removeEventListener(\"message\", this.#onMessage);\n this.#ws.removeEventListener(\"close\", this.#onClose);\n if (this.#ws.readyState !== WebSocket.CLOSING\n && this.#ws.readyState !== WebSocket.CLOSED) {\n this.#ws.close();\n }\n this.#ws = undefined;\n }\n // if we have any listeners that are still depending on us, go ahead and reopen the websocket\n if (this.#subscriptions.size > 0) {\n if (process.env.NODE_ENV !== \"production\") {\n for (const s of this.#subscriptions.values()) {\n invariant(s.status !== \"done\" && s.status !== \"error\", \"should not have done/error subscriptions still\");\n }\n }\n for (const s of this.#subscriptions.values()) {\n if (s.status === \"subscribed\")\n s.status = \"reconnecting\";\n }\n // we don't care about the result of this (we want cycleWebsocket to be fire and forget)\n // just that it happens\n void this.#ensureWebsocket();\n }\n };\n #tryCatchOnError = (sub, subscriptionClosed, error) => {\n try {\n sub.listener.onError({ subscriptionClosed: subscriptionClosed, error });\n }\n catch (onErrorError) {\n // eslint-disable-next-line no-console\n console.error(`Error encountered in an onError callback for an OSDK subscription`, onErrorError);\n // eslint-disable-next-line no-console\n console.error(`This onError call was triggered by an error in another callback`, error);\n // eslint-disable-next-line no-console\n console.error(`The subscription has been closed.`, error);\n if (!subscriptionClosed) {\n this.#logger?.error(error, \"Error in onError callback\");\n this.#unsubscribe(sub, \"error\");\n this.#tryCatchOnError(sub, true, onErrorError);\n }\n }\n };\n}\n/** @internal */\nexport function constructWebsocketUrl(baseUrl, ontologyRid) {\n const base = new URL(baseUrl);\n const url = new URL(`api/v2/ontologySubscriptions/ontologies/${ontologyRid}/streamSubscriptions`, base);\n url.protocol = url.protocol.replace(\"https\", \"wss\");\n return url;\n}\nlet uuidCounter = 0;\nfunction nextUuid() {\n return `00000000-0000-0000-0000-${(uuidCounter++).toString().padStart(12, \"0\")}`;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OntologyProvider.d.ts","sourceRoot":"","sources":["../../../src/ontology/OntologyProvider.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACd,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"OntologyProvider.d.ts","sourceRoot":"","sources":["../../../src/ontology/OntologyProvider.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACd,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,eAAO,MAAM,oBAAoB,EAAE,OAAO,MAEzC,CAAC;AAEF,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IAEjE,CAAC,oBAAoB,CAAC,EAAE;QACtB,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,GAAG,EAAE,iBAAiB,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,mBAAmB,EAAE,CACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAE1C;;;;;;OAMG;IACH,sBAAsB,EAAE,CACtB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEhC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhE,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACnE;AAED,MAAM,MAAM,uBAAuB,CACjC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAC3C,CACF,MAAM,EAAE,aAAa,KAClB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageRequestAsAsyncIter.d.ts","sourceRoot":"","sources":["../../src/pageRequestAsAsyncIter.ts"],"names":[],"mappings":"AAgBA,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAE3E;AACD,wBAAgB,cAAc,CAC5B,CAAC,EACD,CAAC,SAAS;IAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,EAEtC,OAAO,EAAE,CAAC,EACV,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,GAC1C,OAAO,OAAO,GAAG,SAAS,CAO5B;AACD,wBAAuB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAChC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAC7B,QAAQ,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,EAClE,cAAc,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"pageRequestAsAsyncIter.d.ts","sourceRoot":"","sources":["../../src/pageRequestAsAsyncIter.ts"],"names":[],"mappings":"AAgBA,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAE3E;AACD,wBAAgB,cAAc,CAC5B,CAAC,EACD,CAAC,SAAS;IAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,EAEtC,OAAO,EAAE,CAAC,EACV,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAA;CAAE,GAC1C,OAAO,OAAO,GAAG,SAAS,CAO5B;AACD,wBAAuB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAChC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAC7B,QAAQ,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,EAClE,cAAc,EAAE,CAAC,GAChB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAU3C"}
|
package/build/esm/tsserver.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ import type { Subprocess } from "execa";
|
|
|
2
2
|
import { EventEmitter } from "node:events";
|
|
3
3
|
import { server as s } from "typescript";
|
|
4
4
|
import type { Logger } from "./Logger.js";
|
|
5
|
+
type RequestFn<T extends s.protocol.Request, X extends s.protocol.Response = never> = (args: T["arguments"]) => Promise<{
|
|
6
|
+
req: T;
|
|
7
|
+
resp: X;
|
|
8
|
+
}>;
|
|
5
9
|
declare class TsServerImpl extends EventEmitter<{
|
|
6
10
|
exit: [];
|
|
7
11
|
}> {
|
|
@@ -14,14 +18,8 @@ declare class TsServerImpl extends EventEmitter<{
|
|
|
14
18
|
start(): Promise<this>;
|
|
15
19
|
stop(): void;
|
|
16
20
|
getOneMessage<X>(filter?: (m: unknown) => m is X): Promise<X>;
|
|
17
|
-
sendOpenRequest:
|
|
18
|
-
|
|
19
|
-
resp: never;
|
|
20
|
-
}>;
|
|
21
|
-
sendQuickInfoRequest: (args: s.protocol.FileLocationRequestArgs) => Promise<{
|
|
22
|
-
req: s.protocol.QuickInfoRequest;
|
|
23
|
-
resp: s.protocol.QuickInfoResponse;
|
|
24
|
-
}>;
|
|
21
|
+
sendOpenRequest: RequestFn<s.protocol.OpenRequest>;
|
|
22
|
+
sendQuickInfoRequest: RequestFn<s.protocol.QuickInfoRequest, s.protocol.QuickInfoResponse>;
|
|
25
23
|
}
|
|
26
24
|
export type TsServer = Omit<TsServerImpl, Exclude<keyof EventEmitter, "on" | "addListener" | "off" | "once" | "removeListener" | "removeAllListeners">>;
|
|
27
25
|
export declare function startTsServer(logger: Logger): Promise<TsServer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsserver.d.ts","sourceRoot":"","sources":["../../src/tsserver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,cAAM,YAAa,SAAQ,YAAY,CAAC;IACtC,IAAI,EAAE,EAAE,CAAC;CACV,CAAC;;gBAMY,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMhD,IAAI,UAAU;
|
|
1
|
+
{"version":3,"file":"tsserver.d.ts","sourceRoot":"","sources":["../../src/tsserver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,SAAS,CACZ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,EAC5B,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,IACnC,CACF,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,KACjB,OAAO,CAAC;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAElC,cAAM,YAAa,SAAQ,YAAY,CAAC;IACtC,IAAI,EAAE,EAAE,CAAC;CACV,CAAC;;gBAMY,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMhD,IAAI,UAAU,IACV,UAAU,CAAC;QACX,GAAG,EAAE,IAAI,CAAC;QACV,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,GACA,SAAS,CAGZ;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B,IAAI,IAAI,IAAI;IAMN,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAanE,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAEhD;IAEF,oBAAoB,EAAE,SAAS,CAC7B,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAC3B,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAC7B,CAGC;CA+BH;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CACzB,YAAY,EACZ,OAAO,CACL,MAAM,YAAY,EAChB,IAAI,GACJ,aAAa,GACb,KAAK,GACL,MAAM,GACN,gBAAgB,GAChB,oBAAoB,CACvB,CACF,CAAC;AAEF,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKrE;AA4BD,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAGzD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAG/D;AAED,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAE1C;AACD,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAE1C;AACD,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,OAAO,EACV,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAInC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsserver.js","names":["execaNode","findUpMultiple","EventEmitter","fs","path","pLocate","pMap","invariant","server","s","TsServerImpl","tsServerPath","nextSeq","subprocess","logger","constructor","start","ipc","serialization","isLevelEnabled","on","req","trace","info","emit","stop","connected","disconnect","getOneMessage","filter","requestFactory","#requestFactory","command","isResponse","args","makeRequest","sendOpenRequest","protocol","CommandTypes","Open","sendQuickInfoRequest","Quickinfo","isQuickInfoResponse","#makeRequest","seq","type","arguments","sendMessage","resp","undefined","startTsServer","getTsServerPath","process","env","NODE_ENV","nodeModuleDirs","cwd","import","meta","url","possibleTsServerPaths","dir","join","c","stat","isFile","e","isEvent","m","isProjectLoadingStart","event","isProjectLoadingEnd","requestSeq","request_seq"],"sources":["tsserver.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 { execaNode } from \"execa\";\nimport { findUpMultiple } from \"find-up\";\nimport { EventEmitter } from \"node:events\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport pLocate from \"p-locate\";\nimport pMap from \"p-map\";\nimport invariant from \"tiny-invariant\";\nimport { server as s } from \"typescript\";\nclass TsServerImpl extends EventEmitter {\n #tsServerPath;\n #nextSeq = 1;\n #subprocess;\n #logger;\n constructor(tsServerPath, logger) {\n super();\n this.#tsServerPath = tsServerPath;\n this.#logger = logger;\n }\n get subprocess() {\n return this.#subprocess;\n }\n async start() {\n this.#subprocess = execaNode({\n ipc: true,\n serialization: \"json\",\n }) `${this.#tsServerPath} --useNodeIpc`;\n if (this.#logger.isLevelEnabled(\"trace\")) {\n this.#subprocess.on(\"message\", (req) => {\n this.#logger.trace({ req }, \"message received\");\n });\n }\n this.#subprocess.on(\"exit\", () => {\n this.#logger.info(\"tsserver exited\");\n this.emit(\"exit\");\n });\n return this;\n }\n stop() {\n if (this.#subprocess?.connected) {\n this.#subprocess?.disconnect();\n }\n }\n async getOneMessage(filter) {\n return await this.subprocess.getOneMessage({ filter });\n }\n #requestFactory = (command, isResponse) => async (args) => {\n return await this.#makeRequest(command, args, isResponse);\n };\n sendOpenRequest = this.#requestFactory(s.protocol.CommandTypes.Open);\n sendQuickInfoRequest = this.#requestFactory(s.protocol.CommandTypes.Quickinfo, isQuickInfoResponse);\n async #makeRequest(command, args, isResponse) {\n const seq = this.#nextSeq++;\n const req = {\n type: \"request\",\n command,\n arguments: args,\n seq,\n };\n this.#logger.trace({ req }, \"requesting\");\n await this.#subprocess?.sendMessage(req);\n if (isResponse) {\n return {\n req,\n resp: await this.#subprocess?.getOneMessage({\n filter: isResponse,\n }),\n };\n }\n return { req, resp: undefined };\n }\n}\nexport async function startTsServer(logger) {\n const tsServerPath = await getTsServerPath();\n invariant(tsServerPath != null);\n return new TsServerImpl(tsServerPath, logger).start();\n}\nasync function getTsServerPath() {\n const nodeModuleDirs = await findUpMultiple(\"node_modules\", {\n cwd: import.meta.url,\n type: \"directory\",\n });\n const possibleTsServerPaths = await pMap(nodeModuleDirs, (dir) => path.join(dir, \"typescript\", \"lib\", \"tsserver.js\"));\n const tsServerPath = await pLocate([\"no\", ...possibleTsServerPaths], async (dir) => {\n try {\n const c = await fs.stat(dir);\n return c.isFile();\n }\n catch (e) {\n return false;\n }\n });\n return tsServerPath;\n}\nexport function isEvent(m) {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"event\");\n}\nexport function isResponse(m) {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"response\");\n}\nexport function isProjectLoadingStart(m) {\n return isEvent(m) && m.event === \"projectLoadingStart\";\n}\nexport function isProjectLoadingEnd(m) {\n return isEvent(m) && m.event === \"projectLoadingFinish\";\n}\nexport function isQuickInfoResponse(m, requestSeq) {\n return isResponse(m)
|
|
1
|
+
{"version":3,"file":"tsserver.js","names":["execaNode","findUpMultiple","EventEmitter","fs","path","pLocate","pMap","invariant","server","s","TsServerImpl","tsServerPath","nextSeq","subprocess","logger","constructor","start","ipc","serialization","isLevelEnabled","on","req","trace","info","emit","stop","connected","disconnect","getOneMessage","filter","requestFactory","#requestFactory","command","isResponse","args","makeRequest","sendOpenRequest","protocol","CommandTypes","Open","sendQuickInfoRequest","Quickinfo","isQuickInfoResponse","#makeRequest","seq","type","arguments","sendMessage","resp","undefined","startTsServer","getTsServerPath","process","env","NODE_ENV","nodeModuleDirs","cwd","import","meta","url","possibleTsServerPaths","dir","join","c","stat","isFile","e","isEvent","m","isProjectLoadingStart","event","isProjectLoadingEnd","requestSeq","request_seq"],"sources":["tsserver.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 { execaNode } from \"execa\";\nimport { findUpMultiple } from \"find-up\";\nimport { EventEmitter } from \"node:events\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport pLocate from \"p-locate\";\nimport pMap from \"p-map\";\nimport invariant from \"tiny-invariant\";\nimport { server as s } from \"typescript\";\nclass TsServerImpl extends EventEmitter {\n #tsServerPath;\n #nextSeq = 1;\n #subprocess;\n #logger;\n constructor(tsServerPath, logger) {\n super();\n this.#tsServerPath = tsServerPath;\n this.#logger = logger;\n }\n get subprocess() {\n return this.#subprocess;\n }\n async start() {\n this.#subprocess = execaNode({\n ipc: true,\n serialization: \"json\",\n }) `${this.#tsServerPath} --useNodeIpc`;\n if (this.#logger.isLevelEnabled(\"trace\")) {\n this.#subprocess.on(\"message\", (req) => {\n this.#logger.trace({ req }, \"message received\");\n });\n }\n this.#subprocess.on(\"exit\", () => {\n this.#logger.info(\"tsserver exited\");\n this.emit(\"exit\");\n });\n return this;\n }\n stop() {\n if (this.#subprocess?.connected) {\n this.#subprocess?.disconnect();\n }\n }\n async getOneMessage(filter) {\n return await this.subprocess.getOneMessage({ filter });\n }\n #requestFactory = (command, isResponse) => async (args) => {\n return await this.#makeRequest(command, args, isResponse);\n };\n sendOpenRequest = this.#requestFactory(s.protocol.CommandTypes.Open);\n sendQuickInfoRequest = this.#requestFactory(s.protocol.CommandTypes.Quickinfo, isQuickInfoResponse);\n async #makeRequest(command, args, isResponse) {\n const seq = this.#nextSeq++;\n const req = {\n type: \"request\",\n command,\n arguments: args,\n seq,\n };\n this.#logger.trace({ req }, \"requesting\");\n await this.#subprocess?.sendMessage(req);\n if (isResponse) {\n return {\n req,\n resp: await this.#subprocess?.getOneMessage({\n filter: isResponse,\n }),\n };\n }\n return { req, resp: undefined };\n }\n}\nexport async function startTsServer(logger) {\n const tsServerPath = await getTsServerPath();\n invariant(tsServerPath != null);\n return new TsServerImpl(tsServerPath, logger).start();\n}\nasync function getTsServerPath() {\n const nodeModuleDirs = await findUpMultiple(\"node_modules\", {\n cwd: import.meta.url,\n type: \"directory\",\n });\n const possibleTsServerPaths = await pMap(nodeModuleDirs, (dir) => path.join(dir, \"typescript\", \"lib\", \"tsserver.js\"));\n const tsServerPath = await pLocate([\"no\", ...possibleTsServerPaths], async (dir) => {\n try {\n const c = await fs.stat(dir);\n return c.isFile();\n }\n catch (e) {\n return false;\n }\n });\n return tsServerPath;\n}\nexport function isEvent(m) {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"event\");\n}\nexport function isResponse(m) {\n return !!(m && typeof m === \"object\" && \"type\" in m\n && m.type === \"response\");\n}\nexport function isProjectLoadingStart(m) {\n return isEvent(m) && m.event === \"projectLoadingStart\";\n}\nexport function isProjectLoadingEnd(m) {\n return isEvent(m) && m.event === \"projectLoadingFinish\";\n}\nexport function isQuickInfoResponse(m, requestSeq) {\n return isResponse(m)\n && m.command === s.protocol.CommandTypes.Quickinfo\n && (requestSeq == null || m.request_seq === requestSeq);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAgent.d.ts","sourceRoot":"","sources":["../../../src/util/UserAgent.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"UserAgent.d.ts","sourceRoot":"","sources":["../../../src/util/UserAgent.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,UAAU,EAAE,MAAqD,CAAC"}
|