@osdk/client 2.0.7 → 2.0.8-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/build/browser/Client.d.ts +4 -20
  3. package/build/browser/Client.d.ts.map +1 -1
  4. package/build/browser/Client.js +1 -1
  5. package/build/browser/Client.js.map +1 -1
  6. package/build/browser/__unstable/ConjureSupport.js +4 -4
  7. package/build/browser/__unstable/ConjureSupport.js.map +1 -1
  8. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.d.ts +1 -6
  9. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -1
  10. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
  11. package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  12. package/build/browser/actions/applyAction.js +1 -1
  13. package/build/browser/actions/applyAction.js.map +1 -1
  14. package/build/browser/createClient.d.ts.map +1 -1
  15. package/build/browser/createClient.js +33 -19
  16. package/build/browser/createClient.js.map +1 -1
  17. package/build/browser/createMinimalClient.js +1 -1
  18. package/build/browser/createMinimalClient.js.map +1 -1
  19. package/build/browser/index.d.ts +0 -1
  20. package/build/browser/index.d.ts.map +1 -1
  21. package/build/browser/index.js +0 -1
  22. package/build/browser/index.js.map +1 -1
  23. package/build/browser/intellisense.test.js +1 -1
  24. package/build/browser/intellisense.test.js.map +1 -1
  25. package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
  26. package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
  27. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +3 -3
  28. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  29. package/build/browser/object/aggregate.js +1 -1
  30. package/build/browser/object/aggregate.js.map +1 -1
  31. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +1 -10
  32. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
  33. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts +0 -6
  34. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
  35. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js +7 -0
  36. package/build/browser/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
  37. package/build/browser/object/convertWireToOsdkObjects.js +2 -2
  38. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  39. package/build/browser/object/fetchPage.js +1 -1
  40. package/build/browser/object/fetchPage.js.map +1 -1
  41. package/build/browser/objectSet/ObjectSet.test.js +43 -47
  42. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  43. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +20 -20
  44. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  45. package/build/browser/objectSet/createObjectSet.js +2 -5
  46. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  47. package/build/browser/queries/applyQuery.js +1 -1
  48. package/build/browser/queries/applyQuery.js.map +1 -1
  49. package/build/browser/queries/queries.test.js +30 -2
  50. package/build/browser/queries/queries.test.js.map +1 -1
  51. package/build/browser/tsserver.js +1 -1
  52. package/build/browser/tsserver.js.map +1 -1
  53. package/build/browser/util/UserAgent.js +1 -1
  54. package/build/browser/util/UserAgent.js.map +1 -1
  55. package/build/esm/Client.d.ts +4 -20
  56. package/build/esm/Client.d.ts.map +1 -1
  57. package/build/esm/Client.js +1 -1
  58. package/build/esm/Client.js.map +1 -1
  59. package/build/esm/__unstable/ConjureSupport.js +4 -4
  60. package/build/esm/__unstable/ConjureSupport.js.map +1 -1
  61. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts +1 -6
  62. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.d.ts.map +1 -1
  63. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
  64. package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
  65. package/build/esm/actions/applyAction.js +1 -1
  66. package/build/esm/actions/applyAction.js.map +1 -1
  67. package/build/esm/createClient.d.ts.map +1 -1
  68. package/build/esm/createClient.js +33 -19
  69. package/build/esm/createClient.js.map +1 -1
  70. package/build/esm/createMinimalClient.js +1 -1
  71. package/build/esm/createMinimalClient.js.map +1 -1
  72. package/build/esm/index.d.ts +0 -1
  73. package/build/esm/index.d.ts.map +1 -1
  74. package/build/esm/index.js +0 -1
  75. package/build/esm/index.js.map +1 -1
  76. package/build/esm/intellisense.test.js +1 -1
  77. package/build/esm/intellisense.test.js.map +1 -1
  78. package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
  79. package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
  80. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +3 -3
  81. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  82. package/build/esm/object/aggregate.js +1 -1
  83. package/build/esm/object/aggregate.js.map +1 -1
  84. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts +1 -10
  85. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.d.ts.map +1 -1
  86. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts +0 -6
  87. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.d.ts.map +1 -1
  88. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js +7 -0
  89. package/build/esm/object/convertWireToOsdkObjects/InternalSymbols.js.map +1 -1
  90. package/build/esm/object/convertWireToOsdkObjects.js +2 -2
  91. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  92. package/build/esm/object/fetchPage.js +1 -1
  93. package/build/esm/object/fetchPage.js.map +1 -1
  94. package/build/esm/objectSet/ObjectSet.test.js +43 -47
  95. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  96. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +20 -20
  97. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  98. package/build/esm/objectSet/createObjectSet.js +2 -5
  99. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  100. package/build/esm/queries/applyQuery.js +1 -1
  101. package/build/esm/queries/applyQuery.js.map +1 -1
  102. package/build/esm/queries/queries.test.js +30 -2
  103. package/build/esm/queries/queries.test.js.map +1 -1
  104. package/build/esm/tsserver.js +1 -1
  105. package/build/esm/tsserver.js.map +1 -1
  106. package/build/esm/util/UserAgent.js +1 -1
  107. package/build/esm/util/UserAgent.js.map +1 -1
  108. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSet.test.js","names":["isOk","$ontologyRid","Employee","FooInterface","Office","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","iter","data","employees","fetchPage","emp","employeeId","toEqual","objectSet2","where","subtractedObjectSet","intersectedObjectSet","$orderBy","toMatchObject","$apiName","$objectType","$primaryKey","class","employeeStatus","anything","fullName","office","startDate","$title","employee","fetchOne","employee1","toMatchTypeOf","toBe","employeeResult","fetchOneWithErrors","value","$select","branded","toEqualTypeOf","rejects","toThrow","employee2","pivotTo","result","fetchPageWithErrors","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","toHaveLength","includeRid","toThrowErrorMatchingInlineSnapshot","not","toBeUndefined","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.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 { isOk } from \"@osdk/api\";\nimport { $ontologyRid, Employee, FooInterface, Office, } from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, expectTypeOf, it, } from \"vitest\";\nimport { createClient } from \"../createClient.js\";\ndescribe(\"ObjectSet\", () => {\n let client;\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\"https://stack.palantir.com\", $ontologyRid, async () => \"myAccessToken\");\n });\n afterAll(() => {\n apiServer.close();\n });\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os) {\n return os;\n }\n function takesNewStyleObjectSet(os) {\n return os;\n }\n function maybe() {\n const newStyleObjectSet = client(Employee);\n const oldStyleObjectSet = newStyleObjectSet;\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const { data: employees } = await unionedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n let iter = 0;\n const { data: employees } = await subtractedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50031 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n let iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50032);\n iter += 1;\n }\n expect(iter).toEqual(1);\n });\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n expect(employees).toMatchObject([\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n class: \"Red\",\n employeeId: 50030,\n employeeStatus: expect.anything(),\n fullName: \"John Doe\",\n office: \"NYC\",\n startDate: \"2019-01-01\",\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50031,\n $title: \"Jane Doe\",\n class: \"Blue\",\n employeeId: 50031,\n employeeStatus: expect.anything(),\n fullName: \"Jane Doe\",\n office: \"SEA\",\n startDate: \"2012-02-12\",\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50032,\n $title: \"Jack Smith\",\n class: \"Red\",\n employeeId: 50032,\n employeeStatus: expect.anything(),\n fullName: \"Jack Smith\",\n office: \"LON\",\n startDate: \"2015-05-15\",\n },\n ]);\n });\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n expectTypeOf().branded.toEqualTypeOf;\n expect(\"error\" in employeeResult);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n if (isOk(result)) {\n const employees = result.value.data;\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n }\n });\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"])(\"%s\", (k) => {\n describe(\"strictNonNull: \\\"drop\\\"\", () => {\n describe(\"includeRid: true\", () => {\n it(\"drops bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: \"drop\",\n $includeRid: true,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(3);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"drops bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: \"drop\",\n $includeRid: false,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(3);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n });\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n includeRid: false,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe(\"strictNonNull: \\\"throw\\\"\", () => {\n it(\"throws when getting bad data\", () => {\n expect(() => client(Employee).fetchPage({\n $__EXPERIMENTAL_strictNonNull: \"throw\",\n })).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n });\n describe.each([\"fetchOne\", \"fetchOneWithErrors\"])(\"%s\", (k) => {\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n includeRid: false,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe(\"strictNonNull: \\\"throw\\\"\", () => {\n it(\"throws when getting bad data\", () => {\n expect(() => client(Employee).fetchPage({\n $__EXPERIMENTAL_strictNonNull: \"throw\",\n })).rejects.toThrowErrorMatchingInlineSnapshot(`[Error: Unable to safely convert objects as some non nullable properties are null]`);\n });\n });\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({\n $__EXPERIMENTAL_strictNonNull: false,\n });\n const empNotStrict = result.data[0];\n const empNotStrict2 = empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf();\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n const CheesedFoo = FooInterface;\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf();\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSet.test.js","names":["isOk","$ontologyRid","Employee","FooInterface","Office","apiServer","stubData","afterAll","beforeAll","describe","expect","expectTypeOf","it","createClient","client","listen","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","iter","data","employees","fetchPage","emp","employeeId","toEqual","objectSet2","where","subtractedObjectSet","intersectedObjectSet","$orderBy","toMatchObject","$apiName","$objectType","$primaryKey","class","employeeStatus","anything","fullName","office","startDate","$title","employee","fetchOne","employee1","toMatchTypeOf","toBe","employeeResult","fetchOneWithErrors","value","$select","branded","toEqualTypeOf","rejects","toThrow","employee2","pivotTo","result","fetchPageWithErrors","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","toHaveLength","not","toBeUndefined","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.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 { isOk } from \"@osdk/api\";\nimport { $ontologyRid, Employee, FooInterface, Office, } from \"@osdk/client.test.ontology\";\nimport { apiServer, stubData } from \"@osdk/shared.test\";\nimport { afterAll, beforeAll, describe, expect, expectTypeOf, it, } from \"vitest\";\nimport { createClient } from \"../createClient.js\";\ndescribe(\"ObjectSet\", () => {\n let client;\n beforeAll(async () => {\n apiServer.listen();\n client = createClient(\"https://stack.palantir.com\", $ontologyRid, async () => \"myAccessToken\");\n });\n afterAll(() => {\n apiServer.close();\n });\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os) {\n return os;\n }\n function takesNewStyleObjectSet(os) {\n return os;\n }\n function maybe() {\n const newStyleObjectSet = client(Employee);\n const oldStyleObjectSet = newStyleObjectSet;\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const { data: employees } = await unionedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n let iter = 0;\n const { data: employees } = await subtractedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50031 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n });\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n let iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50032);\n iter += 1;\n }\n expect(iter).toEqual(1);\n });\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n expect(employees).toMatchObject([\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50030,\n class: \"Red\",\n employeeId: 50030,\n employeeStatus: expect.anything(),\n fullName: \"John Doe\",\n office: \"NYC\",\n startDate: \"2019-01-01\",\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50031,\n $title: \"Jane Doe\",\n class: \"Blue\",\n employeeId: 50031,\n employeeStatus: expect.anything(),\n fullName: \"Jane Doe\",\n office: \"SEA\",\n startDate: \"2012-02-12\",\n },\n {\n $apiName: \"Employee\",\n $objectType: \"Employee\",\n $primaryKey: 50032,\n $title: \"Jack Smith\",\n class: \"Red\",\n employeeId: 50032,\n employeeStatus: expect.anything(),\n fullName: \"Jack Smith\",\n office: \"LON\",\n startDate: \"2015-05-15\",\n },\n ]);\n });\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId);\n expectTypeOf().toMatchTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(stubData.employee1.employeeId, { $select: [\"fullName\"] });\n expectTypeOf().branded.toEqualTypeOf;\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n expectTypeOf().branded.toEqualTypeOf;\n expect(\"error\" in employeeResult);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n let iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n if (isOk(result)) {\n const employees = result.value.data;\n for (const emp of employees) {\n expect(emp.employeeId).toEqual(50030 + iter);\n iter += 1;\n }\n expect(iter).toEqual(2);\n }\n });\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"])(\"%s\", (k) => {\n // describe(\"strictNonNull: \\\"drop\\\"\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Osdk<Employee, \"$rid\" | \"$all\">\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<\"$rid\">\n // >();\n // });\n // });\n // describe(\"includeRid: false\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<never>\n // >();\n // });\n // });\n // });\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $includeRid: false,\n };\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value;\n expect(result.data).toHaveLength(4);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe.each([\"fetchOne\", \"fetchOneWithErrors\"])(\"%s\", (k) => {\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n // Look at this\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: false,\n };\n const result = k === \"fetchOne\"\n ? await client(Employee).fetchOne(50033, opts)\n : (await client(Employee).fetchOneWithErrors(50033, opts)).value;\n expect(result).not.toBeUndefined();\n expectTypeOf(result).branded.toEqualTypeOf();\n });\n });\n });\n });\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({});\n const empNotStrict = result.data[0];\n const empNotStrict2 = empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf();\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf();\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n expectTypeOf()\n .toEqualTypeOf();\n const CheesedFoo = FooInterface;\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf();\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -87,7 +87,7 @@ export class ObjectSetListenerWebsocket {
87
87
  this.#logger = client.logger?.child({}, {
88
88
  msgPrefix: "<OSW> "
89
89
  });
90
- !(client.baseUrl.startsWith("https://") || client.baseUrl.startsWith("http://")) ? invariant(false, "Stack must be a URL") : void 0;
90
+ !(client.baseUrl.startsWith("https://") || client.baseUrl.startsWith("http://")) ? process.env.NODE_ENV !== "production" ? invariant(false, "Stack must be a URL") : invariant(false) : void 0;
91
91
  this.#oswContext = {
92
92
  baseUrl: client.baseUrl,
93
93
  servicePath: "/object-set-watcher/api",
@@ -130,7 +130,7 @@ export class ObjectSetListenerWebsocket {
130
130
  * @returns
131
131
  */
132
132
  async #initiateSubscribe(sub) {
133
- if (process?.env?.NODE_ENV !== "production") {
133
+ if (process.env.NODE_ENV !== "production") {
134
134
  this.#logger?.trace("#initiateSubscribe()");
135
135
  }
136
136
  if (sub.expiry) {
@@ -164,7 +164,7 @@ export class ObjectSetListenerWebsocket {
164
164
  }
165
165
  }
166
166
  #sendSubscribeMessage() {
167
- if (process?.env?.NODE_ENV !== "production") {
167
+ if (process.env.NODE_ENV !== "production") {
168
168
  this.#logger?.trace("#sendSubscribeMessage()");
169
169
  }
170
170
  // If two calls to `.subscribe()` happen at once (or if the connection is reset),
@@ -172,7 +172,7 @@ export class ObjectSetListenerWebsocket {
172
172
  // so we filter those out.
173
173
  const readySubs = [...this.#subscriptions.values()].filter(isReady);
174
174
  if (readySubs.length === 0) {
175
- if (process?.env?.NODE_ENV !== "production") {
175
+ if (process.env.NODE_ENV !== "production") {
176
176
  this.#logger?.trace("#sendSubscribeMessage(): aborting due to no ready subscriptions");
177
177
  }
178
178
  return;
@@ -197,7 +197,7 @@ export class ObjectSetListenerWebsocket {
197
197
  watchAllLinks: false
198
198
  }))
199
199
  };
200
- if (process?.env?.NODE_ENV !== "production") {
200
+ if (process.env.NODE_ENV !== "production") {
201
201
  this.#logger?.trace({
202
202
  payload: subscribe
203
203
  }, "sending subscribe message");
@@ -205,7 +205,7 @@ export class ObjectSetListenerWebsocket {
205
205
  this.#ws?.send(JSON.stringify(subscribe));
206
206
  }
207
207
  #expire(sub) {
208
- if (process?.env?.NODE_ENV !== "production") {
208
+ if (process.env.NODE_ENV !== "production") {
209
209
  this.#logger?.trace({
210
210
  subscription: sub
211
211
  }, "#expire()");
@@ -275,7 +275,7 @@ export class ObjectSetListenerWebsocket {
275
275
  this.#lastWsConnect = Date.now();
276
276
  // we again may have lost the race after our minimum backoff time
277
277
  if (this.#ws == null) {
278
- if (process?.env?.NODE_ENV !== "production") {
278
+ if (process.env.NODE_ENV !== "production") {
279
279
  this.#logger?.trace("Creating websocket");
280
280
  }
281
281
  this.#ws = new WebSocket(url, [`Bearer-${token}`]);
@@ -315,7 +315,7 @@ export class ObjectSetListenerWebsocket {
315
315
  };
316
316
  #onMessage = async message => {
317
317
  const data = JSON.parse(message.data.toString());
318
- if (process?.env?.NODE_ENV !== "production") {
318
+ if (process.env.NODE_ENV !== "production") {
319
319
  this.#logger?.trace({
320
320
  payload: data
321
321
  }, "received message from ws");
@@ -333,12 +333,12 @@ export class ObjectSetListenerWebsocket {
333
333
  return this.#handleMessage_subscriptionClosed(payload);
334
334
  }
335
335
  default:
336
- invariant(false, "Unexpected message type");
336
+ process.env.NODE_ENV !== "production" ? invariant(false, "Unexpected message type") : invariant(false);
337
337
  }
338
338
  };
339
339
  #handleMessage_objectSetChanged = async payload => {
340
340
  const sub = this.#subscriptions.get(payload.id);
341
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
341
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
342
342
  if ("confidenceValue" in payload) {
343
343
  sub.listener.onOutOfDate();
344
344
  return;
@@ -346,12 +346,12 @@ export class ObjectSetListenerWebsocket {
346
346
  const objects = payload.updates.filter(function (a) {
347
347
  return a.type === "object";
348
348
  }).map(a => a.object);
349
- !(objects.length === payload.updates.length) ? invariant(false, "currently only support full updates not reference updates") : void 0;
349
+ !(objects.length === payload.updates.length) ? process.env.NODE_ENV !== "production" ? invariant(false, "currently only support full updates not reference updates") : invariant(false) : void 0;
350
350
  sub.listener.onChange(await convertFoundryToOsdkObjects(this.#client, this.#metadataContext, objects));
351
351
  };
352
352
  #handleMessage_refreshObjectSet = payload => {
353
353
  const sub = this.#subscriptions.get(payload.id);
354
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
354
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
355
355
  sub.listener.onOutOfDate();
356
356
  };
357
357
  #handleMessage_subscribeResponses = payload => {
@@ -360,7 +360,7 @@ export class ObjectSetListenerWebsocket {
360
360
  responses
361
361
  } = payload;
362
362
  const subs = this.#pendingSubscriptions.get(id);
363
- !subs ? invariant(false, `should have a pending subscription for ${id}`) : void 0;
363
+ !subs ? process.env.NODE_ENV !== "production" ? invariant(false, `should have a pending subscription for ${id}`) : invariant(false) : void 0;
364
364
  this.#pendingSubscriptions.delete(id);
365
365
  for (let i = 0; i < responses.length; i++) {
366
366
  const sub = subs[i];
@@ -377,7 +377,7 @@ export class ObjectSetListenerWebsocket {
377
377
  case "success":
378
378
  // `"preparing"` should only be the status on an initial subscribe.
379
379
  const shouldFireOutOfDate = sub.status === "expired" || sub.status === "reconnecting";
380
- if (process?.env?.NODE_ENV !== "production") {
380
+ if (process.env.NODE_ENV !== "production") {
381
381
  this.#logger?.trace({
382
382
  shouldFireOutOfDate
383
383
  }, "success");
@@ -398,12 +398,12 @@ export class ObjectSetListenerWebsocket {
398
398
  };
399
399
  #handleMessage_subscriptionClosed(payload) {
400
400
  const sub = this.#subscriptions.get(payload.id);
401
- !sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
401
+ !sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
402
402
  sub.listener.onError(payload.error);
403
403
  this.#unsubscribe(sub, "error");
404
404
  }
405
405
  #onClose = event => {
406
- if (process?.env?.NODE_ENV !== "production") {
406
+ if (process.env.NODE_ENV !== "production") {
407
407
  this.#logger?.trace({
408
408
  event
409
409
  }, "Received close event from ws", event);
@@ -445,9 +445,9 @@ export class ObjectSetListenerWebsocket {
445
445
  }
446
446
  // if we have any listeners that are still depending on us, go ahead and reopen the websocket
447
447
  if (this.#subscriptions.size > 0) {
448
- if (process?.env?.NODE_ENV !== "production") {
448
+ if (process.env.NODE_ENV !== "production") {
449
449
  for (const s of this.#subscriptions.values()) {
450
- !(s.status !== "done" && s.status !== "error") ? invariant(false, "should not have done/error subscriptions still") : void 0;
450
+ !(s.status !== "done" && s.status !== "error") ? process.env.NODE_ENV !== "production" ? invariant(false, "should not have done/error subscriptions still") : invariant(false) : void 0;
451
451
  }
452
452
  }
453
453
  for (const s of this.#subscriptions.values()) {
@@ -482,7 +482,7 @@ async function getOntologyPropertyMappingForApiName(client, ctx, objectApiName)
482
482
  let cachedAllOntologies;
483
483
  async function getOntologyVersionForRid(ctx, ontologyRid) {
484
484
  cachedAllOntologies ??= await loadAllOntologies(ctx, {});
485
- !cachedAllOntologies.ontologies[ontologyRid] ? invariant(false, "ontology should be loaded") : void 0;
485
+ !cachedAllOntologies.ontologies[ontologyRid] ? process.env.NODE_ENV !== "production" ? invariant(false, "ontology should be loaded") : invariant(false) : void 0;
486
486
  return cachedAllOntologies.ontologies[ontologyRid].currentOntologyVersion;
487
487
  }
488
488
  async function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {
@@ -513,7 +513,7 @@ async function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {
513
513
  includeEntityMetadata: undefined
514
514
  };
515
515
  const entities = await bulkLoadOntologyEntities(ctx, undefined, body);
516
- !entities.objectTypes[0]?.objectType ? invariant(false, "object type should be loaded") : void 0;
516
+ !entities.objectTypes[0]?.objectType ? process.env.NODE_ENV !== "production" ? invariant(false, "object type should be loaded") : invariant(false) : void 0;
517
517
  const propertyIdToApiNameMapping = Object.fromEntries(Object.values(entities.objectTypes[0].objectType.propertyTypes).map(property => {
518
518
  return [property.id, property.apiName];
519
519
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetListenerWebsocket.js","names":["bulkLoadOntologyEntities","createTemporaryObjectSet","loadAllOntologies","batchEnableWatcher","OntologiesV2","WebSocket","invariant","metadataCacheClient","convertWireToOsdkObjects","getObjectSetBaseType","toConjureObjectSet","ONE_DAY_MS","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","isReady","sub","temporaryObjectSetId","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","OBJECT_SET_EXPIRY_MS","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","oswContext","metadataContext","ossContext","maybeDisconnectTimeout","constructor","objectSetExpiryMs","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","servicePath","fetchFn","fetch","tokenProvider","subscribe","objectSet","listener","subscriptionId","crypto","randomUUID","initiateSubscribe","unsubscribe","#initiateSubscribe","process","env","NODE_ENV","trace","expiry","clearTimeout","setTimeout","expire","ontologyRid","temporaryObjectSet","Promise","all","ensureWebsocket","then","baseType","ObjectTypesV2","objectType","enableObjectSetsWatcher","rid","objectSetRid","readyState","OPEN","sendSubscribeMessage","error","#sendSubscribeMessage","readySubs","values","filter","length","id","requests","map","objectSetContext","objectSetFilterContext","parameterOverrides","watchAllLinks","payload","send","JSON","stringify","#expire","subscription","#unsubscribe","newStatus","undefined","delete","size","cycleWebsocket","#ensureWebsocket","base","URL","url","host","token","nextConnectTime","Date","now","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","type","handleMessage_objectSetChanged","objectSetChanged","handleMessage_refreshObjectSet","refreshObjectSet","handleMessage_subscribeResponses","subscribeResponses","subscriptionClosed","handleMessage_subscriptionClosed","objects","updates","a","object","convertFoundryToOsdkObjects","responses","subs","i","response","shouldFireOutOfDate","success","#handleMessage_subscriptionClosed","event","#enableObjectSetsWatcher","objectTypeRids","#createTemporaryObjectSet","objectSetBaseType","mcc","objectInfo","forObjectByApiName","propMapping","getPropertyMapping","timeToLive","#cycleWebsocket","CLOSING","CLOSED","close","s","ctx","osdkObjects","propertyMapping","forObjectByRid","convertedObject","Object","fromEntries","entries","properties","key","value","propertyIdToApiNameMapping","apiName","objectTypeMapping","objectApiNameToRid","getOntologyPropertyMappingForApiName","objectApiName","has","wireObjectType","getOntologyPropertyMappingForRid","cachedAllOntologies","getOntologyVersionForRid","ontologies","currentOntologyVersion","objectRid","ontologyVersion","body","datasourceTypes","objectTypes","identifier","objectTypeRid","versionReference","linkTypes","sharedPropertyTypes","interfaceTypes","typeGroups","loadRedacted","includeObjectTypeCount","includeObjectTypesWithoutSearchableDatasources","includeEntityMetadata","entities","propertyTypes","property","propertyApiNameToIdMapping"],"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 { bulkLoadOntologyEntities, createTemporaryObjectSet, loadAllOntologies, } from \"@osdk/client.unstable\";\nimport { batchEnableWatcher } from \"@osdk/client.unstable.osw\";\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nimport { metadataCacheClient } from \"../__unstable/ConjureSupport.js\";\nimport { convertWireToOsdkObjects } from \"../object/convertWireToOsdkObjects.js\";\nimport { getObjectSetBaseType, toConjureObjectSet, } from \"./toConjureObjectSet.js\";\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\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 }) {\n return { onChange, onError, onOutOfDate };\n}\nfunction isReady(sub) {\n return sub.temporaryObjectSetId != 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 OBJECT_SET_EXPIRY_MS;\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 #oswContext;\n #metadataContext;\n #ossContext;\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { objectSetExpiryMs = ONE_DAY_MS, minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.OBJECT_SET_EXPIRY_MS = objectSetExpiryMs;\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 this.#oswContext = {\n baseUrl: client.baseUrl,\n servicePath: \"/object-set-watcher/api\",\n fetchFn: client.fetch,\n tokenProvider: async () => await client.tokenProvider(),\n };\n this.#ossContext = {\n ...this.#oswContext,\n servicePath: \"/object-set-service/api\",\n };\n this.#metadataContext = {\n ...this.#oswContext,\n servicePath: \"/ontology-metadata/api\",\n };\n }\n async subscribe(objectSet, listener) {\n if (process.env.TARGET !== \"browser\") {\n // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This\n // will not be needed after our minimum version is 19 or greater.\n globalThis.crypto ??= (await import(\"node:crypto\")).webcrypto;\n }\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${crypto.randomUUID()}`,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process?.env?.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n if (sub.expiry) {\n clearTimeout(sub.expiry);\n }\n // expiry is tied to the temporary object set, which is set to `timeToLive: \"ONE_DAY\"`\n // in `#createTemporaryObjectSet`. They should be in sync\n sub.expiry = setTimeout(() => this.#expire(sub), this.OBJECT_SET_EXPIRY_MS);\n const ontologyRid = await this.#client.ontologyRid;\n try {\n const [temporaryObjectSet] = await Promise.all([\n // create a time-bounded object set representation for watching\n this.#createTemporaryObjectSet(sub.objectSet),\n this.#ensureWebsocket(),\n // look up the object type's rid and ensure that we have enabled object set watcher for that rid\n // TODO ???\n getObjectSetBaseType(sub.objectSet).then(baseType => OntologiesV2.ObjectTypesV2.get(this.#client, ontologyRid, baseType)).then(objectType => this.#enableObjectSetsWatcher([objectType.rid])),\n ]);\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 // Use new temporary object set id\n sub.temporaryObjectSetId = temporaryObjectSet.objectSetRid;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n sub.listener.onError(error);\n }\n }\n #sendSubscribeMessage() {\n if (process?.env?.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n if (readySubs.length === 0) {\n if (process?.env?.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage(): aborting due to no ready subscriptions\");\n }\n return;\n }\n // Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.\n const id = crypto.randomUUID();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ temporaryObjectSetId }) => ({\n objectSet: temporaryObjectSetId,\n objectSetContext: {\n objectSetFilterContext: { parameterOverrides: {} },\n },\n watchAllLinks: false,\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 #expire(sub) {\n if (process?.env?.NODE_ENV !== \"production\") {\n this.#logger?.trace({ subscription: sub }, \"#expire()\");\n }\n // the temporary ObjectSet has expired, we should re-subscribe which will cause the\n // listener to get an onOutOfDate message when it becomes subscribed again\n sub.status = \"expired\";\n this.#initiateSubscribe(sub);\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 if (sub.expiry) {\n clearTimeout(sub.expiry);\n sub.expiry = undefined;\n }\n this.#subscriptions.delete(sub.subscriptionId);\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const base = new URL(baseUrl);\n // TODO: This should be a different endpoint\n const url = `wss://${base.host}/object-set-watcher/ws/subscriptions`;\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.objectSetChanged);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data.refreshObjectSet);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data.subscribeResponses);\n case \"subscriptionClosed\": {\n const payload = data.subscriptionClosed;\n return this.#handleMessage_subscriptionClosed(payload);\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 invariant(sub, `Expected subscription id ${payload.id}`);\n if (\"confidenceValue\" in payload) {\n sub.listener.onOutOfDate();\n return;\n }\n const objects = payload.updates.filter(function (a) {\n return a.type === \"object\";\n }).map(a => a.object);\n invariant(objects.length === payload.updates.length, \"currently only support full updates not reference updates\");\n sub.listener.onChange(await convertFoundryToOsdkObjects(this.#client, this.#metadataContext, objects));\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onOutOfDate();\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n sub.listener.onError(response.error);\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.success.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.success.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n break;\n default:\n const _ = response;\n sub.listener.onError(response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onError(payload.error);\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 async #enableObjectSetsWatcher(objectTypeRids) {\n return batchEnableWatcher(this.#oswContext, {\n requests: objectTypeRids,\n });\n }\n async #createTemporaryObjectSet(objectSet) {\n const objectSetBaseType = await getObjectSetBaseType(objectSet);\n const mcc = await metadataCacheClient(this.#client);\n const objectInfo = await mcc.forObjectByApiName(objectSetBaseType);\n const propMapping = await objectInfo.getPropertyMapping();\n const temporaryObjectSet = await createTemporaryObjectSet(this.#ossContext, {\n objectSet: toConjureObjectSet(objectSet, propMapping),\n timeToLive: \"ONE_DAY\", // MUST keep in sync with the value for expiry in `#initiateSubscribe`.\n objectSetFilterContext: { parameterOverrides: {} },\n });\n return { objectSetRid: temporaryObjectSet.objectSetRid };\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}\nasync function convertFoundryToOsdkObjects(client, ctx, objects) {\n const osdkObjects = await Promise.all(objects.map(async (object) => {\n const propertyMapping = await (await (await metadataCacheClient(client))\n .forObjectByRid(object.type))\n .getPropertyMapping();\n const convertedObject = Object.fromEntries([\n ...Object.entries(object.properties).map(([key, value]) => {\n return [propertyMapping?.propertyIdToApiNameMapping[key], value];\n }),\n [\n propertyMapping\n ?.propertyIdToApiNameMapping[Object.entries(object.key)[0][0]],\n Object.entries(object.key)[0][1],\n ],\n [\n \"__apiName\",\n propertyMapping?.apiName,\n ],\n [\n \"$apiName\",\n propertyMapping?.apiName,\n ],\n ]);\n return convertedObject;\n }));\n // doesn't care about interfaces\n return await convertWireToOsdkObjects(client, osdkObjects, undefined);\n}\n// Mapping of ObjectRid to Properties\nconst objectTypeMapping = new WeakMap();\nconst objectApiNameToRid = new Map();\nasync function getOntologyPropertyMappingForApiName(client, ctx, objectApiName) {\n if (objectApiNameToRid.has(objectApiName)) {\n return objectTypeMapping.get(ctx)?.get(objectApiNameToRid.get(objectApiName));\n }\n const ontologyRid = await client.ontologyRid;\n const wireObjectType = await OntologiesV2.ObjectTypesV2\n .get(client, ontologyRid, objectApiName);\n return getOntologyPropertyMappingForRid(ctx, ontologyRid, wireObjectType.rid);\n}\nlet cachedAllOntologies;\nasync function getOntologyVersionForRid(ctx, ontologyRid) {\n cachedAllOntologies ??= await loadAllOntologies(ctx, {});\n invariant(cachedAllOntologies.ontologies[ontologyRid], \"ontology should be loaded\");\n return cachedAllOntologies.ontologies[ontologyRid].currentOntologyVersion;\n}\nasync function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {\n if (!objectTypeMapping.has(ctx)) {\n objectTypeMapping.set(ctx, new Map());\n }\n if (!objectTypeMapping.get(ctx).has(objectRid)) {\n const ontologyVersion = await getOntologyVersionForRid(ctx, ontologyRid);\n const body = {\n datasourceTypes: [],\n objectTypes: [{\n identifier: {\n type: \"objectTypeRid\",\n objectTypeRid: objectRid,\n },\n versionReference: {\n type: \"ontologyVersion\",\n ontologyVersion: ontologyVersion,\n },\n }],\n linkTypes: [],\n sharedPropertyTypes: [],\n interfaceTypes: [],\n typeGroups: [],\n loadRedacted: false,\n includeObjectTypeCount: undefined,\n includeObjectTypesWithoutSearchableDatasources: true,\n includeEntityMetadata: undefined,\n };\n const entities = await bulkLoadOntologyEntities(ctx, undefined, body);\n invariant(entities.objectTypes[0]?.objectType, \"object type should be loaded\");\n const propertyIdToApiNameMapping = Object\n .fromEntries(Object.values(entities.objectTypes[0].objectType.propertyTypes).map(property => {\n return [property.id, property.apiName];\n }));\n const propertyApiNameToIdMapping = Object\n .fromEntries(Object.values(entities.objectTypes[0].objectType.propertyTypes).map(property => {\n return [property.apiName, property.id];\n }));\n objectTypeMapping.get(ctx)?.set(objectRid, {\n apiName: entities.objectTypes[0].objectType.apiName,\n id: entities.objectTypes[0].objectType.id,\n propertyIdToApiNameMapping,\n propertyApiNameToIdMapping,\n });\n objectApiNameToRid.set(entities.objectTypes[0].objectType.apiName, objectRid);\n }\n return objectTypeMapping.get(ctx)?.get(objectRid);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetListenerWebsocket.js","names":["bulkLoadOntologyEntities","createTemporaryObjectSet","loadAllOntologies","batchEnableWatcher","OntologiesV2","WebSocket","invariant","metadataCacheClient","convertWireToOsdkObjects","getObjectSetBaseType","toConjureObjectSet","ONE_DAY_MS","MINIMUM_RECONNECT_DELAY_MS","doNothing","fillOutListener","onChange","onError","onOutOfDate","isReady","sub","temporaryObjectSetId","subscriptionIsDone","status","ObjectSetListenerWebsocket","instances","WeakMap","OBJECT_SET_EXPIRY_MS","getInstance","client","instance","get","clientCacheKey","set","ws","lastWsConnect","logger","pendingSubscriptions","Map","subscriptions","oswContext","metadataContext","ossContext","maybeDisconnectTimeout","constructor","objectSetExpiryMs","minimumReconnectDelayMs","child","msgPrefix","baseUrl","startsWith","process","env","NODE_ENV","servicePath","fetchFn","fetch","tokenProvider","subscribe","objectSet","listener","subscriptionId","crypto","randomUUID","initiateSubscribe","unsubscribe","#initiateSubscribe","trace","expiry","clearTimeout","setTimeout","expire","ontologyRid","temporaryObjectSet","Promise","all","ensureWebsocket","then","baseType","ObjectTypesV2","objectType","enableObjectSetsWatcher","rid","objectSetRid","readyState","OPEN","sendSubscribeMessage","error","#sendSubscribeMessage","readySubs","values","filter","length","id","requests","map","objectSetContext","objectSetFilterContext","parameterOverrides","watchAllLinks","payload","send","JSON","stringify","#expire","subscription","#unsubscribe","newStatus","undefined","delete","size","cycleWebsocket","#ensureWebsocket","base","URL","url","host","token","nextConnectTime","Date","now","resolve","addEventListener","onClose","onMessage","onOpen","CONNECTING","reject","cleanup","removeEventListener","open","evt","#onOpen","message","data","parse","toString","type","handleMessage_objectSetChanged","objectSetChanged","handleMessage_refreshObjectSet","refreshObjectSet","handleMessage_subscribeResponses","subscribeResponses","subscriptionClosed","handleMessage_subscriptionClosed","objects","updates","a","object","convertFoundryToOsdkObjects","responses","subs","i","response","shouldFireOutOfDate","success","#handleMessage_subscriptionClosed","event","#enableObjectSetsWatcher","objectTypeRids","#createTemporaryObjectSet","objectSetBaseType","mcc","objectInfo","forObjectByApiName","propMapping","getPropertyMapping","timeToLive","#cycleWebsocket","CLOSING","CLOSED","close","s","ctx","osdkObjects","propertyMapping","forObjectByRid","convertedObject","Object","fromEntries","entries","properties","key","value","propertyIdToApiNameMapping","apiName","objectTypeMapping","objectApiNameToRid","getOntologyPropertyMappingForApiName","objectApiName","has","wireObjectType","getOntologyPropertyMappingForRid","cachedAllOntologies","getOntologyVersionForRid","ontologies","currentOntologyVersion","objectRid","ontologyVersion","body","datasourceTypes","objectTypes","identifier","objectTypeRid","versionReference","linkTypes","sharedPropertyTypes","interfaceTypes","typeGroups","loadRedacted","includeObjectTypeCount","includeObjectTypesWithoutSearchableDatasources","includeEntityMetadata","entities","propertyTypes","property","propertyApiNameToIdMapping"],"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 { bulkLoadOntologyEntities, createTemporaryObjectSet, loadAllOntologies, } from \"@osdk/client.unstable\";\nimport { batchEnableWatcher } from \"@osdk/client.unstable.osw\";\nimport * as OntologiesV2 from \"@osdk/internal.foundry.ontologiesv2\";\nimport WebSocket from \"isomorphic-ws\";\nimport invariant from \"tiny-invariant\";\nimport { metadataCacheClient } from \"../__unstable/ConjureSupport.js\";\nimport { convertWireToOsdkObjects } from \"../object/convertWireToOsdkObjects.js\";\nimport { getObjectSetBaseType, toConjureObjectSet, } from \"./toConjureObjectSet.js\";\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\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 }) {\n return { onChange, onError, onOutOfDate };\n}\nfunction isReady(sub) {\n return sub.temporaryObjectSetId != 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 OBJECT_SET_EXPIRY_MS;\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 #oswContext;\n #metadataContext;\n #ossContext;\n #maybeDisconnectTimeout;\n // DO NOT CONSTRUCT DIRECTLY. ONLY EXPOSED AS A TESTING SEAM\n constructor(client, { objectSetExpiryMs = ONE_DAY_MS, minimumReconnectDelayMs = MINIMUM_RECONNECT_DELAY_MS, } = {}) {\n this.OBJECT_SET_EXPIRY_MS = objectSetExpiryMs;\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 this.#oswContext = {\n baseUrl: client.baseUrl,\n servicePath: \"/object-set-watcher/api\",\n fetchFn: client.fetch,\n tokenProvider: async () => await client.tokenProvider(),\n };\n this.#ossContext = {\n ...this.#oswContext,\n servicePath: \"/object-set-service/api\",\n };\n this.#metadataContext = {\n ...this.#oswContext,\n servicePath: \"/ontology-metadata/api\",\n };\n }\n async subscribe(objectSet, listener) {\n if (process.env.TARGET !== \"browser\") {\n // Node 18 does not expose 'crypto' on globalThis, so we need to do it ourselves. This\n // will not be needed after our minimum version is 19 or greater.\n globalThis.crypto ??= (await import(\"node:crypto\")).webcrypto;\n }\n const sub = {\n listener: fillOutListener(listener),\n objectSet,\n status: \"preparing\",\n // Since we don't have a real subscription id yet but we need to keep\n // track of this reference, we can just use a random uuid.\n subscriptionId: `TMP-${crypto.randomUUID()}`,\n };\n this.#subscriptions.set(sub.subscriptionId, sub);\n // actually prepares the subscription, ensures the ws is ready, and sends\n // a subscribe message. We don't want to block on this.\n this.#initiateSubscribe(sub);\n return () => {\n this.#unsubscribe(sub);\n };\n }\n /**\n * Called at least once for every subscription.\n *\n * - Resets pending expiry\n * - Recreates temporary object set\n * - Triggers a full subscribe message\n *\n * @returns\n */\n async #initiateSubscribe(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#initiateSubscribe()\");\n }\n if (sub.expiry) {\n clearTimeout(sub.expiry);\n }\n // expiry is tied to the temporary object set, which is set to `timeToLive: \"ONE_DAY\"`\n // in `#createTemporaryObjectSet`. They should be in sync\n sub.expiry = setTimeout(() => this.#expire(sub), this.OBJECT_SET_EXPIRY_MS);\n const ontologyRid = await this.#client.ontologyRid;\n try {\n const [temporaryObjectSet] = await Promise.all([\n // create a time-bounded object set representation for watching\n this.#createTemporaryObjectSet(sub.objectSet),\n this.#ensureWebsocket(),\n // look up the object type's rid and ensure that we have enabled object set watcher for that rid\n // TODO ???\n getObjectSetBaseType(sub.objectSet).then(baseType => OntologiesV2.ObjectTypesV2.get(this.#client, ontologyRid, baseType)).then(objectType => this.#enableObjectSetsWatcher([objectType.rid])),\n ]);\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 // Use new temporary object set id\n sub.temporaryObjectSetId = temporaryObjectSet.objectSetRid;\n // if we aren't open, then this happens after we #onConnect\n if (this.#ws?.readyState === WebSocket.OPEN) {\n this.#sendSubscribeMessage();\n }\n }\n catch (error) {\n this.#logger?.error(error, \"Error in #initiateSubscribe\");\n sub.listener.onError(error);\n }\n }\n #sendSubscribeMessage() {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage()\");\n }\n // If two calls to `.subscribe()` happen at once (or if the connection is reset),\n // we may have multiple subscriptions that don't have a subscriptionId yet,\n // so we filter those out.\n const readySubs = [...this.#subscriptions.values()].filter(isReady);\n if (readySubs.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace(\"#sendSubscribeMessage(): aborting due to no ready subscriptions\");\n }\n return;\n }\n // Assumes the node 18 crypto fallback to globalThis in `subscribe` has happened.\n const id = crypto.randomUUID();\n // responses come back as an array of subIds, so we need to know the sources\n this.#pendingSubscriptions.set(id, readySubs);\n // every subscribe message \"overwrites\" the previous ones that are not\n // re-included, so we have to reconstitute the entire list of subscriptions\n const subscribe = {\n id,\n requests: readySubs.map(({ temporaryObjectSetId }) => ({\n objectSet: temporaryObjectSetId,\n objectSetContext: {\n objectSetFilterContext: { parameterOverrides: {} },\n },\n watchAllLinks: false,\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 #expire(sub) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#logger?.trace({ subscription: sub }, \"#expire()\");\n }\n // the temporary ObjectSet has expired, we should re-subscribe which will cause the\n // listener to get an onOutOfDate message when it becomes subscribed again\n sub.status = \"expired\";\n this.#initiateSubscribe(sub);\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 if (sub.expiry) {\n clearTimeout(sub.expiry);\n sub.expiry = undefined;\n }\n this.#subscriptions.delete(sub.subscriptionId);\n // If we have no more subscriptions, we can disconnect the websocket\n // however we should wait a bit to see if we get any more subscriptions.\n // For example, when switching between react views, you may unsubscribe\n // in the old view and subscribe in the new view. We don't need to re-establish\n // the websocket connection in that case.\n if (this.#maybeDisconnectTimeout) {\n // We reset the timeout on every unsubscribe so its always at least 15s from\n // the last time we are empty. E.g.:\n // - 0s: Subscribe(A)\n // - 10s: Unsubscribe(A)\n // - 11s: Subscribe(B)\n // - 20s: Unsubscribe(B)\n // If we do not clear out the timeout we would disconnect at 25s but that would only be\n // 5s after the last subscription was removed instead of at 35s for the desired 15s.\n clearTimeout(this.#maybeDisconnectTimeout);\n }\n this.#maybeDisconnectTimeout = setTimeout(() => {\n this.#maybeDisconnectTimeout = undefined;\n if (this.#subscriptions.size === 0) {\n this.#cycleWebsocket();\n }\n }, 15_000 /* ms */);\n }\n async #ensureWebsocket() {\n if (this.#ws == null) {\n const { baseUrl, tokenProvider } = this.#client;\n const base = new URL(baseUrl);\n // TODO: This should be a different endpoint\n const url = `wss://${base.host}/object-set-watcher/ws/subscriptions`;\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.objectSetChanged);\n case \"refreshObjectSet\":\n return this.#handleMessage_refreshObjectSet(data.refreshObjectSet);\n case \"subscribeResponses\":\n return this.#handleMessage_subscribeResponses(data.subscribeResponses);\n case \"subscriptionClosed\": {\n const payload = data.subscriptionClosed;\n return this.#handleMessage_subscriptionClosed(payload);\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 invariant(sub, `Expected subscription id ${payload.id}`);\n if (\"confidenceValue\" in payload) {\n sub.listener.onOutOfDate();\n return;\n }\n const objects = payload.updates.filter(function (a) {\n return a.type === \"object\";\n }).map(a => a.object);\n invariant(objects.length === payload.updates.length, \"currently only support full updates not reference updates\");\n sub.listener.onChange(await convertFoundryToOsdkObjects(this.#client, this.#metadataContext, objects));\n };\n #handleMessage_refreshObjectSet = (payload) => {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onOutOfDate();\n };\n #handleMessage_subscribeResponses = (payload) => {\n const { id, responses } = payload;\n const subs = this.#pendingSubscriptions.get(id);\n invariant(subs, `should have a pending subscription for ${id}`);\n this.#pendingSubscriptions.delete(id);\n for (let i = 0; i < responses.length; i++) {\n const sub = subs[i];\n const response = responses[i];\n switch (response.type) {\n case \"error\":\n sub.listener.onError(response.error);\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.success.id) {\n // might be the temporary one\n this.#subscriptions.delete(sub.subscriptionId);\n sub.subscriptionId = response.success.id;\n this.#subscriptions.set(sub.subscriptionId, sub); // future messages come by this subId\n }\n if (shouldFireOutOfDate)\n sub.listener.onOutOfDate();\n break;\n default:\n const _ = response;\n sub.listener.onError(response);\n }\n }\n };\n #handleMessage_subscriptionClosed(payload) {\n const sub = this.#subscriptions.get(payload.id);\n invariant(sub, `Expected subscription id ${payload.id}`);\n sub.listener.onError(payload.error);\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 async #enableObjectSetsWatcher(objectTypeRids) {\n return batchEnableWatcher(this.#oswContext, {\n requests: objectTypeRids,\n });\n }\n async #createTemporaryObjectSet(objectSet) {\n const objectSetBaseType = await getObjectSetBaseType(objectSet);\n const mcc = await metadataCacheClient(this.#client);\n const objectInfo = await mcc.forObjectByApiName(objectSetBaseType);\n const propMapping = await objectInfo.getPropertyMapping();\n const temporaryObjectSet = await createTemporaryObjectSet(this.#ossContext, {\n objectSet: toConjureObjectSet(objectSet, propMapping),\n timeToLive: \"ONE_DAY\", // MUST keep in sync with the value for expiry in `#initiateSubscribe`.\n objectSetFilterContext: { parameterOverrides: {} },\n });\n return { objectSetRid: temporaryObjectSet.objectSetRid };\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}\nasync function convertFoundryToOsdkObjects(client, ctx, objects) {\n const osdkObjects = await Promise.all(objects.map(async (object) => {\n const propertyMapping = await (await (await metadataCacheClient(client))\n .forObjectByRid(object.type))\n .getPropertyMapping();\n const convertedObject = Object.fromEntries([\n ...Object.entries(object.properties).map(([key, value]) => {\n return [propertyMapping?.propertyIdToApiNameMapping[key], value];\n }),\n [\n propertyMapping\n ?.propertyIdToApiNameMapping[Object.entries(object.key)[0][0]],\n Object.entries(object.key)[0][1],\n ],\n [\n \"__apiName\",\n propertyMapping?.apiName,\n ],\n [\n \"$apiName\",\n propertyMapping?.apiName,\n ],\n ]);\n return convertedObject;\n }));\n // doesn't care about interfaces\n return await convertWireToOsdkObjects(client, osdkObjects, undefined);\n}\n// Mapping of ObjectRid to Properties\nconst objectTypeMapping = new WeakMap();\nconst objectApiNameToRid = new Map();\nasync function getOntologyPropertyMappingForApiName(client, ctx, objectApiName) {\n if (objectApiNameToRid.has(objectApiName)) {\n return objectTypeMapping.get(ctx)?.get(objectApiNameToRid.get(objectApiName));\n }\n const ontologyRid = await client.ontologyRid;\n const wireObjectType = await OntologiesV2.ObjectTypesV2\n .get(client, ontologyRid, objectApiName);\n return getOntologyPropertyMappingForRid(ctx, ontologyRid, wireObjectType.rid);\n}\nlet cachedAllOntologies;\nasync function getOntologyVersionForRid(ctx, ontologyRid) {\n cachedAllOntologies ??= await loadAllOntologies(ctx, {});\n invariant(cachedAllOntologies.ontologies[ontologyRid], \"ontology should be loaded\");\n return cachedAllOntologies.ontologies[ontologyRid].currentOntologyVersion;\n}\nasync function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {\n if (!objectTypeMapping.has(ctx)) {\n objectTypeMapping.set(ctx, new Map());\n }\n if (!objectTypeMapping.get(ctx).has(objectRid)) {\n const ontologyVersion = await getOntologyVersionForRid(ctx, ontologyRid);\n const body = {\n datasourceTypes: [],\n objectTypes: [{\n identifier: {\n type: \"objectTypeRid\",\n objectTypeRid: objectRid,\n },\n versionReference: {\n type: \"ontologyVersion\",\n ontologyVersion: ontologyVersion,\n },\n }],\n linkTypes: [],\n sharedPropertyTypes: [],\n interfaceTypes: [],\n typeGroups: [],\n loadRedacted: false,\n includeObjectTypeCount: undefined,\n includeObjectTypesWithoutSearchableDatasources: true,\n includeEntityMetadata: undefined,\n };\n const entities = await bulkLoadOntologyEntities(ctx, undefined, body);\n invariant(entities.objectTypes[0]?.objectType, \"object type should be loaded\");\n const propertyIdToApiNameMapping = Object\n .fromEntries(Object.values(entities.objectTypes[0].objectType.propertyTypes).map(property => {\n return [property.id, property.apiName];\n }));\n const propertyApiNameToIdMapping = Object\n .fromEntries(Object.values(entities.objectTypes[0].objectType.propertyTypes).map(property => {\n return [property.apiName, property.id];\n }));\n objectTypeMapping.get(ctx)?.set(objectRid, {\n apiName: entities.objectTypes[0].objectType.apiName,\n id: entities.objectTypes[0].objectType.id,\n propertyIdToApiNameMapping,\n propertyApiNameToIdMapping,\n });\n objectApiNameToRid.set(entities.objectTypes[0].objectType.apiName, objectRid);\n }\n return objectTypeMapping.get(ctx)?.get(objectRid);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -13,14 +13,12 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { __EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe } from "@osdk/api/unstable";
17
16
  import { modernToLegacyWhereClause } from "../internal/conversions/modernToLegacyWhereClause.js";
18
17
  import { aggregate } from "../object/aggregate.js";
19
18
  import { fetchPageInternal, fetchPageWithErrorsInternal } from "../object/fetchPage.js";
20
19
  import { fetchSingle, fetchSingleWithErrors } from "../object/fetchSingle.js";
21
20
  import { augmentRequestContext } from "../util/augmentRequestContext.js";
22
21
  import { isWireObjectSet } from "../util/WireObjectSet.js";
23
- import { ObjectSetListenerWebsocket } from "./ObjectSetListenerWebsocket.js";
24
22
  function isObjectTypeDefinition(def) {
25
23
  return def.type === "object";
26
24
  }
@@ -101,9 +99,8 @@ export function createObjectSet(objectType, clientCtx, objectSet = {
101
99
  finalMethodCall: "fetchOneWithErrors"
102
100
  })), objectType, options, await createWithPk(clientCtx, objectType, objectSet, primaryKey));
103
101
  } : undefined,
104
- [__EXPERIMENTAL__NOT_SUPPORTED_YET_subscribe]: listener => {
105
- const pendingSubscribe = ObjectSetListenerWebsocket.getInstance(clientCtx).subscribe(objectSet, listener);
106
- return async () => (await pendingSubscribe)();
102
+ $objectSetInternals: {
103
+ def: objectType
107
104
  }
108
105
  };
109
106
  function createSearchAround(link) {