@oada/client
Advanced tools
Comparing version 4.3.2 to 4.4.0
@@ -31,2 +31,2 @@ /** | ||
userAgent: string; | ||
}): Promise<HttpClient | WebSocketClient>; | ||
}): Promise<WebSocketClient | HttpClient>; |
@@ -25,3 +25,3 @@ /** | ||
switch (url.protocol) { | ||
case 'http2:': | ||
case 'http2:': { | ||
return Object.assign(url, { | ||
@@ -31,3 +31,4 @@ port: Number(url.port) || 80, | ||
}); | ||
case 'https:': | ||
} | ||
case 'https:': { | ||
return Object.assign(url, { | ||
@@ -37,3 +38,4 @@ port: Number(url.port) || 443, | ||
}); | ||
case 'http:': | ||
} | ||
case 'http:': { | ||
return Object.assign(url, { | ||
@@ -43,4 +45,6 @@ port: Number(url.port) || 80, | ||
}); | ||
default: | ||
} | ||
default: { | ||
throw new Error(`Unsupported domain protocol: ${url.protocol}`); | ||
} | ||
} | ||
@@ -72,10 +76,13 @@ } | ||
// Prefer HTTP/2 | ||
case 'h2': | ||
case 'h2': { | ||
return new HttpClient(domain, token, { concurrency, userAgent }); | ||
} | ||
// If no HTTP/2, use a WebSocket | ||
case 'http/1.1': | ||
case 'http/1.0': | ||
case 'http/1.0': { | ||
return new WebSocketClient(domain, { concurrency, userAgent }); | ||
default: | ||
} | ||
default: { | ||
throw new Error(`Unsupported ALPN protocol: ${alpnProtocol}`); | ||
} | ||
} | ||
@@ -82,0 +89,0 @@ } |
@@ -69,5 +69,6 @@ /** | ||
switch (connection) { | ||
case 'auto': | ||
case 'auto': { | ||
throw new Error('Connection type "auto" is not supported'); | ||
case 'ws': | ||
} | ||
case 'ws': { | ||
__classPrivateFieldSet(this, _OADAClient_connection, new WebSocketClient(__classPrivateFieldGet(this, _OADAClient_domain, "f"), { | ||
@@ -78,3 +79,4 @@ concurrency: __classPrivateFieldGet(this, _OADAClient_concurrency, "f"), | ||
break; | ||
case 'http': | ||
} | ||
case 'http': { | ||
__classPrivateFieldSet(this, _OADAClient_connection, new HttpClient(__classPrivateFieldGet(this, _OADAClient_domain, "f"), __classPrivateFieldGet(this, _OADAClient_token, "f"), { | ||
@@ -85,5 +87,7 @@ concurrency: __classPrivateFieldGet(this, _OADAClient_concurrency, "f"), | ||
break; | ||
default: | ||
} | ||
default: { | ||
// Otherwise, they gave us a WebSocketClient to use | ||
__classPrivateFieldSet(this, _OADAClient_connection, connection, "f"); | ||
} | ||
} | ||
@@ -90,0 +94,0 @@ } |
@@ -82,4 +82,5 @@ /** | ||
switch (`${error.status ?? cError?.code}`) { | ||
case '429': | ||
case '429': { | ||
return await handleRatelimit(error, request, ...rest); | ||
} | ||
// Some servers use 503 for rate limit... | ||
@@ -94,4 +95,5 @@ case '503': { | ||
} | ||
case 'ECONNRESET': | ||
case 'ECONNRESET': { | ||
return await handleReset(error, request, ...rest); | ||
} | ||
default: | ||
@@ -98,0 +100,0 @@ // Do nothing |
@@ -17,2 +17,9 @@ /** | ||
*/ | ||
import fetch from 'cross-fetch'; | ||
export * from 'cross-fetch'; | ||
export default fetch; | ||
declare const AbortController: { | ||
new (): AbortController; | ||
prototype: AbortController; | ||
}; | ||
export { AbortController }; |
@@ -17,3 +17,9 @@ /** | ||
*/ | ||
import fetch from 'cross-fetch'; | ||
export * from 'cross-fetch'; | ||
// eslint-disable-next-line unicorn/prefer-export-from -- HACK: for vite | ||
export default fetch; // HACK: a` | ||
// eslint-disable-next-line @typescript-eslint/naming-convention -- HACK: for vite | ||
const { AbortController } = global; | ||
export { AbortController }; | ||
//# sourceMappingURL=fetch-browser.js.map |
@@ -27,2 +27,3 @@ /** | ||
export { Headers } from 'cross-fetch'; | ||
export * from 'fetch-h2'; | ||
export { fetch as default } from 'fetch-h2'; |
@@ -32,3 +32,4 @@ /** | ||
// Cross-fetch has fetch as default export | ||
export * from 'fetch-h2'; | ||
export { fetch as default } from 'fetch-h2'; | ||
//# sourceMappingURL=fetch.js.map |
@@ -20,3 +20,2 @@ /** | ||
import { Buffer } from 'buffer'; | ||
import { AbortController } from 'fetch-h2'; | ||
import EventEmitter from 'eventemitter3'; | ||
@@ -30,3 +29,3 @@ import PQueue from 'p-queue'; | ||
// eslint-disable-next-line node/no-extraneous-import -- hack for skypack? | ||
import fetch, { context } from '@oada/client/dist/fetch.js'; | ||
import fetch, { AbortController, context } from '@oada/client/dist/fetch.js'; | ||
import { WebSocketClient } from './websocket.js'; | ||
@@ -126,2 +125,3 @@ import { handleErrors } from './errors.js'; | ||
// Check for WATCH/UNWATCH | ||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing | ||
if (request.watch || request.method === 'unwatch') { | ||
@@ -213,3 +213,3 @@ trace('WATCH/UNWATCH not currently supported for http(2), falling-back to ws'); | ||
// Happens when the HTTP/2 session is killed | ||
case 'ERR_HTTP2_INVALID_SESSION': | ||
case 'ERR_HTTP2_INVALID_SESSION': { | ||
error('HTTP/2 session was killed, reconnecting'); | ||
@@ -220,4 +220,6 @@ if ('disconnect' in __classPrivateFieldGet(this, _HttpClient_context, "f")) { | ||
return __classPrivateFieldGet(this, _HttpClient_instances, "m", _HttpClient_doRequest).call(this, request, timeout); | ||
default: | ||
} | ||
default: { | ||
throw cError; | ||
} | ||
} | ||
@@ -224,0 +226,0 @@ } |
@@ -18,3 +18,4 @@ /** | ||
/// <reference path="../lib/types.d.ts" /> | ||
import { Config, OADAClient } from './client.js'; | ||
import type { Config } from './client.js'; | ||
import { OADAClient } from './client.js'; | ||
import type ChangeArray from '@oada/types/oada/change/v2.js'; | ||
@@ -28,3 +29,4 @@ /** Create a new instance of OADAClient */ | ||
}): Promise<OADAClient>; | ||
export { OADAClient, Config, GETRequest, PUTRequest, HEADRequest, WatchRequest, ConnectionRequest, ConnectionResponse, ConnectionChange, Connection, } from './client.js'; | ||
export type { Config, GETRequest, PUTRequest, HEADRequest, WatchRequest, ConnectionRequest, ConnectionResponse, ConnectionChange, Connection, } from './client.js'; | ||
export { OADAClient } from './client.js'; | ||
export declare type JsonPrimitive = string | number | boolean | null; | ||
@@ -31,0 +33,0 @@ export declare type JsonArray = Json[]; |
@@ -19,4 +19,4 @@ /** | ||
/// <reference path="types.d.ts" /> | ||
import { autoConnection, parseDomain } from './auto.js'; | ||
import { OADAClient } from './client.js'; | ||
import { autoConnection, parseDomain } from './auto.js'; | ||
/** Create a new instance of OADAClient */ | ||
@@ -46,3 +46,3 @@ export function createInstance(config) { | ||
} | ||
export { OADAClient, } from './client.js'; | ||
export { OADAClient } from './client.js'; | ||
//# sourceMappingURL=index.js.map |
@@ -26,4 +26,4 @@ /** | ||
import { setTimeout } from 'isomorphic-timers-promises'; | ||
import { assert as assertOADASocketRequest, } from '@oada/types/oada/websockets/request.js'; | ||
import { assert as assertOADAChangeV2 } from '@oada/types/oada/change/v2.js'; | ||
import { assert as assertOADASocketRequest } from '@oada/types/oada/websockets/request.js'; | ||
import { is as isOADASocketChange } from '@oada/types/oada/websockets/change.js'; | ||
@@ -30,0 +30,0 @@ import { is as isOADASocketResponse } from '@oada/types/oada/websockets/response.js'; |
@@ -29,3 +29,3 @@ /** | ||
switch (url.protocol) { | ||
case 'http2:': | ||
case 'http2:': { | ||
return Object.assign(url, { | ||
@@ -35,4 +35,5 @@ port: Number(url.port) || 80, | ||
}); | ||
} | ||
case 'https:': | ||
case 'https:': { | ||
return Object.assign(url, { | ||
@@ -42,4 +43,5 @@ port: Number(url.port) || 443, | ||
}); | ||
} | ||
case 'http:': | ||
case 'http:': { | ||
return Object.assign(url, { | ||
@@ -49,5 +51,7 @@ port: Number(url.port) || 80, | ||
}); | ||
} | ||
default: | ||
default: { | ||
throw new Error(`Unsupported domain protocol: ${url.protocol}`); | ||
} | ||
} | ||
@@ -91,11 +95,15 @@ } | ||
// Prefer HTTP/2 | ||
case 'h2': | ||
case 'h2': { | ||
return new HttpClient(domain, token, { concurrency, userAgent }); | ||
} | ||
// If no HTTP/2, use a WebSocket | ||
case 'http/1.1': | ||
case 'http/1.0': | ||
case 'http/1.0': { | ||
return new WebSocketClient(domain, { concurrency, userAgent }); | ||
default: | ||
} | ||
default: { | ||
throw new Error(`Unsupported ALPN protocol: ${alpnProtocol}`); | ||
} | ||
} | ||
@@ -102,0 +110,0 @@ } catch (cError: unknown) { |
@@ -279,5 +279,7 @@ /** | ||
switch (connection) { | ||
case 'auto': | ||
case 'auto': { | ||
throw new Error('Connection type "auto" is not supported'); | ||
case 'ws': | ||
} | ||
case 'ws': { | ||
this.#connection = new WebSocketClient(this.#domain, { | ||
@@ -288,3 +290,5 @@ concurrency: this.#concurrency, | ||
break; | ||
case 'http': | ||
} | ||
case 'http': { | ||
this.#connection = new HttpClient(this.#domain, this.#token, { | ||
@@ -295,5 +299,8 @@ concurrency: this.#concurrency, | ||
break; | ||
default: | ||
} | ||
default: { | ||
// Otherwise, they gave us a WebSocketClient to use | ||
this.#connection = connection; | ||
} | ||
} | ||
@@ -300,0 +307,0 @@ } |
@@ -106,4 +106,6 @@ /** | ||
switch (`${error.status ?? cError?.code}`) { | ||
case '429': | ||
case '429': { | ||
return await handleRatelimit(error, request, ...rest); | ||
} | ||
// Some servers use 503 for rate limit... | ||
@@ -120,4 +122,5 @@ case '503': { | ||
case 'ECONNRESET': | ||
case 'ECONNRESET': { | ||
return await handleReset(error, request, ...rest); | ||
} | ||
@@ -124,0 +127,0 @@ default: |
@@ -18,2 +18,11 @@ /** | ||
import fetch from 'cross-fetch'; | ||
export * from 'cross-fetch'; | ||
// eslint-disable-next-line unicorn/prefer-export-from -- HACK: for vite | ||
export default fetch; // HACK: a` | ||
// eslint-disable-next-line @typescript-eslint/naming-convention -- HACK: for vite | ||
const { AbortController } = global; | ||
export { AbortController }; |
@@ -40,3 +40,4 @@ /** | ||
// Cross-fetch has fetch as default export | ||
export * from 'fetch-h2'; | ||
export { fetch as default } from 'fetch-h2'; |
@@ -20,6 +20,5 @@ /** | ||
import { AbortController, Method } from 'fetch-h2'; | ||
import type { Method, Response } from 'fetch-h2'; | ||
import EventEmitter from 'eventemitter3'; | ||
import PQueue from 'p-queue'; | ||
import type { Response } from 'fetch-h2'; | ||
import debug from 'debug'; | ||
@@ -39,3 +38,3 @@ import { fromString } from 'media-type'; | ||
// eslint-disable-next-line node/no-extraneous-import -- hack for skypack? | ||
import fetch, { context } from '@oada/client/dist/fetch.js'; | ||
import fetch, { AbortController, context } from '@oada/client/dist/fetch.js'; | ||
import type { Json } from './index.js'; | ||
@@ -166,2 +165,3 @@ import { WebSocketClient } from './websocket.js'; | ||
// Check for WATCH/UNWATCH | ||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing | ||
if (request.watch || request.method === 'unwatch') { | ||
@@ -277,3 +277,3 @@ trace( | ||
// Happens when the HTTP/2 session is killed | ||
case 'ERR_HTTP2_INVALID_SESSION': | ||
case 'ERR_HTTP2_INVALID_SESSION': { | ||
error('HTTP/2 session was killed, reconnecting'); | ||
@@ -285,5 +285,7 @@ if ('disconnect' in this.#context) { | ||
return this.#doRequest(request, timeout); | ||
} | ||
default: | ||
default: { | ||
throw cError as Error; | ||
} | ||
} | ||
@@ -290,0 +292,0 @@ } |
@@ -21,4 +21,5 @@ /** | ||
import { Config, OADAClient } from './client.js'; | ||
import { autoConnection, parseDomain } from './auto.js'; | ||
import type { Config } from './client.js'; | ||
import { OADAClient } from './client.js'; | ||
@@ -60,4 +61,3 @@ import type ChangeArray from '@oada/types/oada/change/v2.js'; | ||
export { | ||
OADAClient, | ||
export type { | ||
Config, | ||
@@ -74,2 +74,3 @@ GETRequest, | ||
} from './client.js'; | ||
export { OADAClient } from './client.js'; | ||
@@ -76,0 +77,0 @@ // eslint-disable-next-line @typescript-eslint/ban-types |
@@ -35,3 +35,3 @@ /** | ||
): E { | ||
return isArray(itemOrArray) ? itemOrArray : ([itemOrArray] as E); | ||
return isArray<E>(itemOrArray) ? itemOrArray : ([itemOrArray] as E); | ||
} | ||
@@ -38,0 +38,0 @@ |
@@ -26,6 +26,5 @@ /** | ||
import WebSocketRequest, { | ||
assert as assertOADASocketRequest, | ||
} from '@oada/types/oada/websockets/request.js'; | ||
import type WebSocketRequest from '@oada/types/oada/websockets/request.js'; | ||
import { assert as assertOADAChangeV2 } from '@oada/types/oada/change/v2.js'; | ||
import { assert as assertOADASocketRequest } from '@oada/types/oada/websockets/request.js'; | ||
import { is as isOADASocketChange } from '@oada/types/oada/websockets/change.js'; | ||
@@ -32,0 +31,0 @@ import { is as isOADASocketResponse } from '@oada/types/oada/websockets/response.js'; |
{ | ||
"name": "@oada/client", | ||
"version": "4.3.2", | ||
"version": "4.4.0", | ||
"description": "A lightweight client tool to interact with an OADA-compliant server", | ||
@@ -86,3 +86,3 @@ "repository": "https://github.com/OADA/client", | ||
"dependencies": { | ||
"@oada/types": "^3.2.1", | ||
"@oada/types": "^3.3.0", | ||
"abort-controller": "^3.0.0", | ||
@@ -98,3 +98,3 @@ "buffer": "^6.0.3", | ||
"fetch-h2": "^3.0.2", | ||
"file-type": "^17.1.6", | ||
"file-type": "^18.0.0", | ||
"isomorphic-timers-promises": "^1.0.1", | ||
@@ -106,6 +106,6 @@ "isomorphic-ws": "^5.0.0", | ||
"resolve-alpn": "^1.2.1", | ||
"supports-color": "^9.2.2", | ||
"supports-color": "^9.2.3", | ||
"tslib": "^2.4.0", | ||
"utf-8-validate": "^5.0.9", | ||
"ws": "^8.8.1", | ||
"ws": "^8.9.0", | ||
"xksuid": "^0.0.3" | ||
@@ -117,15 +117,15 @@ }, | ||
"@types/debug": "^4.1.7", | ||
"@types/node": "^16.11.56", | ||
"@types/node": "^16.11.65", | ||
"@types/ws": "^8.5.3", | ||
"@typescript-eslint/eslint-plugin": "^5.34.0", | ||
"@typescript-eslint/parser": "^5.34.0", | ||
"@yarnpkg/sdks": "3.0.0-rc.15", | ||
"ava": "4.3.1", | ||
"axios": "^0.27.2", | ||
"@typescript-eslint/eslint-plugin": "^5.40.0", | ||
"@typescript-eslint/parser": "^5.40.0", | ||
"@yarnpkg/sdks": "3.0.0-rc.25", | ||
"ava": "4.3.3", | ||
"axios": "^1.1.2", | ||
"c8": "^7.12.0", | ||
"dotenv": "^16.0.1", | ||
"eslint": "^8.22.0", | ||
"dotenv": "^16.0.3", | ||
"eslint": "^8.25.0", | ||
"eslint-config-prettier": "^8.5.0", | ||
"eslint-config-xo": "^0.41.0", | ||
"eslint-config-xo-typescript": "^0.52.0", | ||
"eslint-config-xo": "^0.42.0", | ||
"eslint-config-xo-typescript": "^0.53.0", | ||
"eslint-formatter-pretty": "^4.1.0", | ||
@@ -135,5 +135,6 @@ "eslint-import-resolver-node": "^0.3.6", | ||
"eslint-plugin-ava": "^13.2.0", | ||
"eslint-plugin-escompat": "^3.3.3", | ||
"eslint-plugin-eslint-comments": "^3.2.0", | ||
"eslint-plugin-filenames": "^1.3.2", | ||
"eslint-plugin-github": "^4.3.7", | ||
"eslint-plugin-github": "^4.4.0", | ||
"eslint-plugin-i18n-text": "^1.0.1", | ||
@@ -148,11 +149,11 @@ "eslint-plugin-import": "^2.26.0", | ||
"eslint-plugin-prettier": "^4.2.1", | ||
"eslint-plugin-promise": "^6.0.0", | ||
"eslint-plugin-promise": "^6.1.0", | ||
"eslint-plugin-regexp": "^1.9.0", | ||
"eslint-plugin-security": "^1.5.0", | ||
"eslint-plugin-sonarjs": "^0.15.0", | ||
"eslint-plugin-unicorn": "^43.0.2", | ||
"eslint-plugin-sonarjs": "^0.16.0", | ||
"eslint-plugin-unicorn": "^44.0.2", | ||
"prettier": "^2.7.1", | ||
"typescript": "4.7.4" | ||
"typescript": "4.8.2" | ||
}, | ||
"packageManager": "yarn@3.2.2", | ||
"packageManager": "yarn@3.2.4", | ||
"volta": { | ||
@@ -159,0 +160,0 @@ "node": "16.16.0" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
220978
4396
40
2
+ Addedfile-type@18.7.0(transitive)
+ Addednode-gyp-build@4.8.3(transitive)
- Removedfile-type@17.1.6(transitive)
- Removednode-gyp-build@4.8.2(transitive)
Updated@oada/types@^3.3.0
Updatedfile-type@^18.0.0
Updatedsupports-color@^9.2.3
Updatedws@^8.9.0