@osdk/client 2.0.8-rc.0 → 2.0.8-rc.3
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 +17 -0
- package/build/browser/__unstable/ConjureSupport.js +4 -4
- package/build/browser/__unstable/ConjureSupport.js.map +1 -1
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
- package/build/browser/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
- package/build/browser/actions/applyAction.js +1 -1
- package/build/browser/actions/applyAction.js.map +1 -1
- package/build/browser/createMinimalClient.js +1 -1
- package/build/browser/createMinimalClient.js.map +1 -1
- package/build/browser/intellisense.test.js +1 -1
- package/build/browser/intellisense.test.js.map +1 -1
- package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
- package/build/browser/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js +3 -3
- package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/browser/object/aggregate.js +1 -1
- package/build/browser/object/aggregate.js.map +1 -1
- package/build/browser/object/convertWireToOsdkObjects.js +2 -2
- package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js +20 -20
- package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/browser/tsserver.js +1 -1
- package/build/browser/tsserver.js.map +1 -1
- package/build/browser/util/UserAgent.js +1 -1
- package/build/esm/__unstable/ConjureSupport.js +4 -4
- package/build/esm/__unstable/ConjureSupport.js.map +1 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js +1 -1
- package/build/esm/__unstable/createBulkLinksAsyncIterFactory.js.map +1 -1
- package/build/esm/actions/applyAction.js +1 -1
- package/build/esm/actions/applyAction.js.map +1 -1
- package/build/esm/createMinimalClient.js +1 -1
- package/build/esm/createMinimalClient.js.map +1 -1
- package/build/esm/intellisense.test.js +1 -1
- package/build/esm/intellisense.test.js.map +1 -1
- package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js +1 -1
- package/build/esm/internal/conversions/legacyToModernSingleAggregationResult.js.map +1 -1
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js +3 -3
- package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
- package/build/esm/object/aggregate.js +1 -1
- package/build/esm/object/aggregate.js.map +1 -1
- package/build/esm/object/convertWireToOsdkObjects.js +2 -2
- package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js +20 -20
- package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
- package/build/esm/tsserver.js +1 -1
- package/build/esm/tsserver.js.map +1 -1
- package/build/esm/util/UserAgent.js +1 -1
- package/package.json +10 -10
|
@@ -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",
|
|
@@ -133,7 +133,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
133
133
|
* @returns
|
|
134
134
|
*/
|
|
135
135
|
async #initiateSubscribe(sub) {
|
|
136
|
-
if (process
|
|
136
|
+
if (process.env.NODE_ENV !== "production") {
|
|
137
137
|
this.#logger?.trace("#initiateSubscribe()");
|
|
138
138
|
}
|
|
139
139
|
if (sub.expiry) {
|
|
@@ -167,7 +167,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
#sendSubscribeMessage() {
|
|
170
|
-
if (process
|
|
170
|
+
if (process.env.NODE_ENV !== "production") {
|
|
171
171
|
this.#logger?.trace("#sendSubscribeMessage()");
|
|
172
172
|
}
|
|
173
173
|
// If two calls to `.subscribe()` happen at once (or if the connection is reset),
|
|
@@ -175,7 +175,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
175
175
|
// so we filter those out.
|
|
176
176
|
const readySubs = [...this.#subscriptions.values()].filter(isReady);
|
|
177
177
|
if (readySubs.length === 0) {
|
|
178
|
-
if (process
|
|
178
|
+
if (process.env.NODE_ENV !== "production") {
|
|
179
179
|
this.#logger?.trace("#sendSubscribeMessage(): aborting due to no ready subscriptions");
|
|
180
180
|
}
|
|
181
181
|
return;
|
|
@@ -200,7 +200,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
200
200
|
watchAllLinks: false
|
|
201
201
|
}))
|
|
202
202
|
};
|
|
203
|
-
if (process
|
|
203
|
+
if (process.env.NODE_ENV !== "production") {
|
|
204
204
|
this.#logger?.trace({
|
|
205
205
|
payload: subscribe
|
|
206
206
|
}, "sending subscribe message");
|
|
@@ -208,7 +208,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
208
208
|
this.#ws?.send(JSON.stringify(subscribe));
|
|
209
209
|
}
|
|
210
210
|
#expire(sub) {
|
|
211
|
-
if (process
|
|
211
|
+
if (process.env.NODE_ENV !== "production") {
|
|
212
212
|
this.#logger?.trace({
|
|
213
213
|
subscription: sub
|
|
214
214
|
}, "#expire()");
|
|
@@ -278,7 +278,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
278
278
|
this.#lastWsConnect = Date.now();
|
|
279
279
|
// we again may have lost the race after our minimum backoff time
|
|
280
280
|
if (this.#ws == null) {
|
|
281
|
-
if (process
|
|
281
|
+
if (process.env.NODE_ENV !== "production") {
|
|
282
282
|
this.#logger?.trace("Creating websocket");
|
|
283
283
|
}
|
|
284
284
|
this.#ws = new WebSocket(url, [`Bearer-${token}`]);
|
|
@@ -318,7 +318,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
318
318
|
};
|
|
319
319
|
#onMessage = async message => {
|
|
320
320
|
const data = JSON.parse(message.data.toString());
|
|
321
|
-
if (process
|
|
321
|
+
if (process.env.NODE_ENV !== "production") {
|
|
322
322
|
this.#logger?.trace({
|
|
323
323
|
payload: data
|
|
324
324
|
}, "received message from ws");
|
|
@@ -336,12 +336,12 @@ export class ObjectSetListenerWebsocket {
|
|
|
336
336
|
return this.#handleMessage_subscriptionClosed(payload);
|
|
337
337
|
}
|
|
338
338
|
default:
|
|
339
|
-
invariant(false, "Unexpected message type");
|
|
339
|
+
process.env.NODE_ENV !== "production" ? invariant(false, "Unexpected message type") : invariant(false);
|
|
340
340
|
}
|
|
341
341
|
};
|
|
342
342
|
#handleMessage_objectSetChanged = async payload => {
|
|
343
343
|
const sub = this.#subscriptions.get(payload.id);
|
|
344
|
-
!sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
|
|
344
|
+
!sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
|
|
345
345
|
if ("confidenceValue" in payload) {
|
|
346
346
|
sub.listener.onOutOfDate();
|
|
347
347
|
return;
|
|
@@ -349,12 +349,12 @@ export class ObjectSetListenerWebsocket {
|
|
|
349
349
|
const objects = payload.updates.filter(function (a) {
|
|
350
350
|
return a.type === "object";
|
|
351
351
|
}).map(a => a.object);
|
|
352
|
-
!(objects.length === payload.updates.length) ? invariant(false, "currently only support full updates not reference updates") : void 0;
|
|
352
|
+
!(objects.length === payload.updates.length) ? process.env.NODE_ENV !== "production" ? invariant(false, "currently only support full updates not reference updates") : invariant(false) : void 0;
|
|
353
353
|
sub.listener.onChange(await convertFoundryToOsdkObjects(this.#client, this.#metadataContext, objects));
|
|
354
354
|
};
|
|
355
355
|
#handleMessage_refreshObjectSet = payload => {
|
|
356
356
|
const sub = this.#subscriptions.get(payload.id);
|
|
357
|
-
!sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
|
|
357
|
+
!sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
|
|
358
358
|
sub.listener.onOutOfDate();
|
|
359
359
|
};
|
|
360
360
|
#handleMessage_subscribeResponses = payload => {
|
|
@@ -363,7 +363,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
363
363
|
responses
|
|
364
364
|
} = payload;
|
|
365
365
|
const subs = this.#pendingSubscriptions.get(id);
|
|
366
|
-
!subs ? invariant(false, `should have a pending subscription for ${id}`) : void 0;
|
|
366
|
+
!subs ? process.env.NODE_ENV !== "production" ? invariant(false, `should have a pending subscription for ${id}`) : invariant(false) : void 0;
|
|
367
367
|
this.#pendingSubscriptions.delete(id);
|
|
368
368
|
for (let i = 0; i < responses.length; i++) {
|
|
369
369
|
const sub = subs[i];
|
|
@@ -380,7 +380,7 @@ export class ObjectSetListenerWebsocket {
|
|
|
380
380
|
case "success":
|
|
381
381
|
// `"preparing"` should only be the status on an initial subscribe.
|
|
382
382
|
const shouldFireOutOfDate = sub.status === "expired" || sub.status === "reconnecting";
|
|
383
|
-
if (process
|
|
383
|
+
if (process.env.NODE_ENV !== "production") {
|
|
384
384
|
this.#logger?.trace({
|
|
385
385
|
shouldFireOutOfDate
|
|
386
386
|
}, "success");
|
|
@@ -401,12 +401,12 @@ export class ObjectSetListenerWebsocket {
|
|
|
401
401
|
};
|
|
402
402
|
#handleMessage_subscriptionClosed(payload) {
|
|
403
403
|
const sub = this.#subscriptions.get(payload.id);
|
|
404
|
-
!sub ? invariant(false, `Expected subscription id ${payload.id}`) : void 0;
|
|
404
|
+
!sub ? process.env.NODE_ENV !== "production" ? invariant(false, `Expected subscription id ${payload.id}`) : invariant(false) : void 0;
|
|
405
405
|
sub.listener.onError(payload.error);
|
|
406
406
|
this.#unsubscribe(sub, "error");
|
|
407
407
|
}
|
|
408
408
|
#onClose = event => {
|
|
409
|
-
if (process
|
|
409
|
+
if (process.env.NODE_ENV !== "production") {
|
|
410
410
|
this.#logger?.trace({
|
|
411
411
|
event
|
|
412
412
|
}, "Received close event from ws", event);
|
|
@@ -448,9 +448,9 @@ export class ObjectSetListenerWebsocket {
|
|
|
448
448
|
}
|
|
449
449
|
// if we have any listeners that are still depending on us, go ahead and reopen the websocket
|
|
450
450
|
if (this.#subscriptions.size > 0) {
|
|
451
|
-
if (process
|
|
451
|
+
if (process.env.NODE_ENV !== "production") {
|
|
452
452
|
for (const s of this.#subscriptions.values()) {
|
|
453
|
-
!(s.status !== "done" && s.status !== "error") ? invariant(false, "should not have done/error subscriptions still") : void 0;
|
|
453
|
+
!(s.status !== "done" && s.status !== "error") ? process.env.NODE_ENV !== "production" ? invariant(false, "should not have done/error subscriptions still") : invariant(false) : void 0;
|
|
454
454
|
}
|
|
455
455
|
}
|
|
456
456
|
for (const s of this.#subscriptions.values()) {
|
|
@@ -485,7 +485,7 @@ async function getOntologyPropertyMappingForApiName(client, ctx, objectApiName)
|
|
|
485
485
|
let cachedAllOntologies;
|
|
486
486
|
async function getOntologyVersionForRid(ctx, ontologyRid) {
|
|
487
487
|
cachedAllOntologies ??= await loadAllOntologies(ctx, {});
|
|
488
|
-
!cachedAllOntologies.ontologies[ontologyRid] ? invariant(false, "ontology should be loaded") : void 0;
|
|
488
|
+
!cachedAllOntologies.ontologies[ontologyRid] ? process.env.NODE_ENV !== "production" ? invariant(false, "ontology should be loaded") : invariant(false) : void 0;
|
|
489
489
|
return cachedAllOntologies.ontologies[ontologyRid].currentOntologyVersion;
|
|
490
490
|
}
|
|
491
491
|
async function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {
|
|
@@ -516,7 +516,7 @@ async function getOntologyPropertyMappingForRid(ctx, ontologyRid, objectRid) {
|
|
|
516
516
|
includeEntityMetadata: undefined
|
|
517
517
|
};
|
|
518
518
|
const entities = await bulkLoadOntologyEntities(ctx, undefined, body);
|
|
519
|
-
!entities.objectTypes[0]?.objectType ? invariant(false, "object type should be loaded") : void 0;
|
|
519
|
+
!entities.objectTypes[0]?.objectType ? process.env.NODE_ENV !== "production" ? invariant(false, "object type should be loaded") : invariant(false) : void 0;
|
|
520
520
|
const propertyIdToApiNameMapping = Object.fromEntries(Object.values(entities.objectTypes[0].objectType.propertyTypes).map(property => {
|
|
521
521
|
return [property.id, property.apiName];
|
|
522
522
|
}));
|
|
@@ -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","globalThis","crypto","webcrypto","subscriptionId","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","globalThis","crypto","webcrypto","subscriptionId","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":[]}
|
package/build/esm/tsserver.js
CHANGED
|
@@ -96,7 +96,7 @@ class TsServerImpl extends EventEmitter {
|
|
|
96
96
|
}
|
|
97
97
|
export async function startTsServer(logger) {
|
|
98
98
|
const tsServerPath = await getTsServerPath();
|
|
99
|
-
!(tsServerPath != null) ? invariant(false) : void 0;
|
|
99
|
+
!(tsServerPath != null) ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
|
|
100
100
|
return new TsServerImpl(tsServerPath, logger).start();
|
|
101
101
|
}
|
|
102
102
|
async function getTsServerPath() {
|
|
@@ -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","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) && m.command === s.protocol.CommandTypes.Quickinfo\n && (requestSeq == null || m.request_seq === requestSeq);\n}\n"],"mappings":"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
|
|
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) && m.command === s.protocol.CommandTypes.Quickinfo\n && (requestSeq == null || m.request_seq === requestSeq);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
export const USER_AGENT = `osdk-client/${"2.0.8-rc.
|
|
16
|
+
export const USER_AGENT = `osdk-client/${"2.0.8-rc.3"}`;
|
|
17
17
|
//# sourceMappingURL=UserAgent.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osdk/client",
|
|
3
|
-
"version": "2.0.8-rc.
|
|
3
|
+
"version": "2.0.8-rc.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"access": "public",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"tiny-invariant": "^1.3.1",
|
|
33
33
|
"type-fest": "^4.18.2",
|
|
34
34
|
"ws": "^8.18.0",
|
|
35
|
-
"@osdk/api": "~2.0.8-rc.
|
|
36
|
-
"@osdk/client.unstable": "2.0.8-rc.
|
|
37
|
-
"@osdk/generator-converters": "2.0.8-rc.
|
|
38
|
-
"@osdk/client.unstable.osw": "0.2.0",
|
|
35
|
+
"@osdk/api": "~2.0.8-rc.3",
|
|
36
|
+
"@osdk/client.unstable": "2.0.8-rc.3",
|
|
37
|
+
"@osdk/generator-converters": "2.0.8-rc.3",
|
|
39
38
|
"@osdk/shared.net.errors": "~2.0.0",
|
|
40
39
|
"@osdk/shared.client.impl": "~1.0.3-rc.0",
|
|
40
|
+
"@osdk/client.unstable.osw": "0.2.0",
|
|
41
41
|
"@osdk/shared.net.fetch": "~1.0.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
"pino": "^9.1.0",
|
|
56
56
|
"pino-pretty": "^11.2.1",
|
|
57
57
|
"ts-expect": "^1.3.0",
|
|
58
|
-
"typescript": "
|
|
58
|
+
"typescript": "~5.5.4",
|
|
59
59
|
"zod": "^3.23.8",
|
|
60
|
-
"@osdk/client.test.ontology": "~2.0.8-rc.0",
|
|
61
|
-
"@osdk/monorepo.tsconfig": "~0.0.0",
|
|
62
60
|
"@osdk/monorepo.api-extractor": "~0.0.0",
|
|
63
|
-
"@osdk/
|
|
64
|
-
"@osdk/monorepo.
|
|
61
|
+
"@osdk/client.test.ontology": "~2.0.8-rc.2",
|
|
62
|
+
"@osdk/monorepo.tsconfig": "~0.0.0",
|
|
63
|
+
"@osdk/monorepo.tsup": "~0.0.0",
|
|
64
|
+
"@osdk/shared.test": "~2.0.8-rc.2"
|
|
65
65
|
},
|
|
66
66
|
"publishConfig": {
|
|
67
67
|
"access": "public"
|