@scalar/oas-utils 0.17.3 → 0.18.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.
- package/CHANGELOG.md +14 -0
- package/dist/helpers/client-plugins.d.ts +69 -0
- package/dist/helpers/client-plugins.d.ts.map +1 -1
- package/dist/helpers/client-plugins.js +20 -0
- package/dist/helpers/index.d.ts +1 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @scalar/oas-utils
|
|
2
2
|
|
|
3
|
+
## 0.18.1
|
|
4
|
+
|
|
5
|
+
## 0.18.0
|
|
6
|
+
|
|
7
|
+
### Minor Changes
|
|
8
|
+
|
|
9
|
+
- [#9341](https://github.com/scalar/scalar/pull/9341): feat: add WebSocket session transport and plugin hooks for AsyncAPI
|
|
10
|
+
|
|
11
|
+
Add WebSocketSession with connect, send, and close helpers, plus connectWebSocket orchestration using Result-based errors. Extend ClientPlugin with optional webSocketHooks (beforeConnect, onWebSocketMessage, onWebSocketClose).
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#9338](https://github.com/scalar/scalar/pull/9338): perf: warm up the request scripts sandbox on mount when scripts are present, so the first request no longer pays the sandbox cold-start cost
|
|
16
|
+
|
|
3
17
|
## 0.17.3
|
|
4
18
|
|
|
5
19
|
## 0.17.2
|
|
@@ -31,6 +31,20 @@ export type ResponseBodyHandler = ResponseBodyHandlerBase & ({
|
|
|
31
31
|
});
|
|
32
32
|
/** A type representing the hooks that a client plugin can define */
|
|
33
33
|
type ClientPluginHooks = {
|
|
34
|
+
/**
|
|
35
|
+
* Runs when an operation view mounts, before any request is sent. Useful for warming up
|
|
36
|
+
* resources that would otherwise add latency to the first request (for example, lazily
|
|
37
|
+
* created sandboxes). Receives the current document and operation so plugins can decide
|
|
38
|
+
* whether the work is needed at all.
|
|
39
|
+
*/
|
|
40
|
+
onRequestMount: (payload: {
|
|
41
|
+
document: OpenApiDocument;
|
|
42
|
+
operation: OperationObject;
|
|
43
|
+
}) => void | Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Runs before a request is sent. Receives the current document and operation so plugins can
|
|
46
|
+
* modify the request before it is sent (for example, adding headers or modifying the body).
|
|
47
|
+
*/
|
|
34
48
|
beforeRequest: (payload: {
|
|
35
49
|
/** Workspace-store request spec; mutable by pre-request scripts (headers, method). */
|
|
36
50
|
requestBuilder: RequestFactory;
|
|
@@ -38,6 +52,10 @@ type ClientPluginHooks = {
|
|
|
38
52
|
operation: OperationObject;
|
|
39
53
|
variablesStore?: VariablesStore;
|
|
40
54
|
}) => void | Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Runs after a response is received. Receives the current document and operation so plugins can
|
|
57
|
+
* modify the response after it is received (for example, adding headers or modifying the body).
|
|
58
|
+
*/
|
|
41
59
|
responseReceived: (payload: {
|
|
42
60
|
response: Response;
|
|
43
61
|
/** Request builder object that was used to build the request. Mutating this object will not affect the request object. */
|
|
@@ -49,6 +67,44 @@ type ClientPluginHooks = {
|
|
|
49
67
|
variablesStore?: VariablesStore;
|
|
50
68
|
}) => void | Promise<void>;
|
|
51
69
|
};
|
|
70
|
+
/** Direction of a WebSocket message frame */
|
|
71
|
+
export type WebSocketFrameDirection = 'incoming' | 'outgoing';
|
|
72
|
+
/** Opcode classification for a WebSocket frame */
|
|
73
|
+
export type WebSocketFrameType = 'text' | 'binary' | 'close';
|
|
74
|
+
/** A single WebSocket message frame (sent or received) */
|
|
75
|
+
export type WebSocketPluginFrame = {
|
|
76
|
+
direction: WebSocketFrameDirection;
|
|
77
|
+
timestamp: number;
|
|
78
|
+
data: string | ArrayBuffer;
|
|
79
|
+
opcode: WebSocketFrameType;
|
|
80
|
+
};
|
|
81
|
+
/** Close event metadata for WebSocket plugin hooks */
|
|
82
|
+
export type WebSocketPluginCloseInfo = {
|
|
83
|
+
code: number;
|
|
84
|
+
reason: string;
|
|
85
|
+
wasClean: boolean;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* WebSocket-specific plugin hooks for AsyncAPI channel operations.
|
|
89
|
+
*
|
|
90
|
+
* These are intentionally separate from the HTTP `ClientPluginHooks` because
|
|
91
|
+
* the WebSocket lifecycle (long-lived connection, bidirectional frames) does
|
|
92
|
+
* not map onto request/response semantics.
|
|
93
|
+
*/
|
|
94
|
+
export type ClientPluginWebSocketHooks = {
|
|
95
|
+
/** Runs before the WebSocket handshake. Return a modified URL to override. */
|
|
96
|
+
beforeConnect: (payload: {
|
|
97
|
+
url: string;
|
|
98
|
+
}) => string | void | Promise<string | void>;
|
|
99
|
+
/** Runs for every incoming or outgoing frame on an open connection. */
|
|
100
|
+
onWebSocketMessage: (payload: {
|
|
101
|
+
frame: WebSocketPluginFrame;
|
|
102
|
+
}) => void | Promise<void>;
|
|
103
|
+
/** Runs when the connection closes (cleanly or due to error). */
|
|
104
|
+
onWebSocketClose: (payload: {
|
|
105
|
+
info: WebSocketPluginCloseInfo;
|
|
106
|
+
}) => void | Promise<void>;
|
|
107
|
+
};
|
|
52
108
|
/** A vue component which accepts the specified props */
|
|
53
109
|
type ClientPluginComponent<Props extends Record<string, unknown>, Emits extends Record<string, (...args: any[]) => void> = {}> = {
|
|
54
110
|
component: DefineComponent<Props, {}, {}, {}, {}, {}, {}, Emits>;
|
|
@@ -110,6 +166,8 @@ type ClientPluginLifecycle = {
|
|
|
110
166
|
};
|
|
111
167
|
export type ClientPlugin = {
|
|
112
168
|
hooks?: Partial<ClientPluginHooks>;
|
|
169
|
+
/** WebSocket-specific hooks for AsyncAPI channel operations */
|
|
170
|
+
webSocketHooks?: Partial<ClientPluginWebSocketHooks>;
|
|
113
171
|
components?: Partial<ClientPluginComponents>;
|
|
114
172
|
/** Lifecycle hooks for app-level concerns */
|
|
115
173
|
lifecycle?: ClientPluginLifecycle;
|
|
@@ -169,5 +227,16 @@ type HookPayloadMap = {
|
|
|
169
227
|
* The payload type is inferred from the hook name to ensure correct usage.
|
|
170
228
|
*/
|
|
171
229
|
export declare const executeHook: <K extends keyof HookPayloadMap>(payload: HookPayloadMap[K], hookName: K, plugins: ClientPlugin[]) => Promise<HookPayloadMap[K]>;
|
|
230
|
+
type WebSocketHookPayloadMap = {
|
|
231
|
+
[K in keyof ClientPluginWebSocketHooks]: Parameters<ClientPluginWebSocketHooks[K]>[0];
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* Execute a WebSocket plugin hook across all plugins.
|
|
235
|
+
*
|
|
236
|
+
* For `beforeConnect`, the returned URL string (if any) is threaded through
|
|
237
|
+
* sequentially so each plugin can transform the URL. For fire-and-forget hooks
|
|
238
|
+
* (`onWebSocketMessage`, `onWebSocketClose`) the return value is ignored.
|
|
239
|
+
*/
|
|
240
|
+
export declare const executeWebSocketHook: <K extends keyof WebSocketHookPayloadMap>(payload: WebSocketHookPayloadMap[K], hookName: K, plugins: ClientPlugin[]) => Promise<WebSocketHookPayloadMap[K]>;
|
|
172
241
|
export {};
|
|
173
242
|
//# sourceMappingURL=client-plugins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-plugins.d.ts","sourceRoot":"","sources":["../../src/helpers/client-plugins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client-plugins.d.ts","sourceRoot":"","sources":["../../src/helpers/client-plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,3 +36,23 @@ export const executeHook = async (payload, hookName, plugins) => {
|
|
|
36
36
|
}
|
|
37
37
|
return currentPayload;
|
|
38
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* Execute a WebSocket plugin hook across all plugins.
|
|
41
|
+
*
|
|
42
|
+
* For `beforeConnect`, the returned URL string (if any) is threaded through
|
|
43
|
+
* sequentially so each plugin can transform the URL. For fire-and-forget hooks
|
|
44
|
+
* (`onWebSocketMessage`, `onWebSocketClose`) the return value is ignored.
|
|
45
|
+
*/
|
|
46
|
+
export const executeWebSocketHook = async (payload, hookName, plugins) => {
|
|
47
|
+
let currentPayload = payload;
|
|
48
|
+
for (const plugin of plugins) {
|
|
49
|
+
const hook = plugin.webSocketHooks?.[hookName];
|
|
50
|
+
if (hook) {
|
|
51
|
+
const result = await hook(currentPayload);
|
|
52
|
+
if (hookName === 'beforeConnect' && typeof result === 'string') {
|
|
53
|
+
currentPayload = { ...currentPayload, url: result };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return currentPayload;
|
|
58
|
+
};
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { type ClientPlugin, type ResponseBodyHandler, executeHook, subscribePluginEvents } from './client-plugins.js';
|
|
1
|
+
export { type ClientPlugin, type ClientPluginWebSocketHooks, type ResponseBodyHandler, type WebSocketFrameDirection, type WebSocketFrameType, type WebSocketPluginCloseInfo, type WebSocketPluginFrame, executeHook, executeWebSocketHook, subscribePluginEvents, } from './client-plugins.js';
|
|
2
2
|
export { formatJsonOrYamlString, json, parseJsonOrYaml, transformToJson, yaml } from './parse.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/helpers/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { executeHook, subscribePluginEvents } from './client-plugins.js';
|
|
1
|
+
export { executeHook, executeWebSocketHook, subscribePluginEvents, } from './client-plugins.js';
|
|
2
2
|
export { formatJsonOrYamlString, json, parseJsonOrYaml, transformToJson, yaml } from './parse.js';
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"specification",
|
|
17
17
|
"yaml"
|
|
18
18
|
],
|
|
19
|
-
"version": "0.
|
|
19
|
+
"version": "0.18.1",
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=22"
|
|
22
22
|
},
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"flatted": "^3.4.0",
|
|
44
44
|
"vue": "^3.5.30",
|
|
45
45
|
"yaml": "^2.8.3",
|
|
46
|
-
"@scalar/helpers": "0.8.
|
|
47
|
-
"@scalar/
|
|
48
|
-
"@scalar/
|
|
49
|
-
"@scalar/
|
|
46
|
+
"@scalar/helpers": "0.8.1",
|
|
47
|
+
"@scalar/themes": "0.16.0",
|
|
48
|
+
"@scalar/workspace-store": "0.54.0",
|
|
49
|
+
"@scalar/types": "0.13.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/node": "^24.1.0",
|