@scalar/workspace-store 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/events/definitions/ui.d.ts +4 -1
  3. package/dist/events/definitions/ui.d.ts.map +1 -1
  4. package/dist/request-example/builder/build-request.d.ts +3 -0
  5. package/dist/request-example/builder/build-request.d.ts.map +1 -1
  6. package/dist/request-example/builder/build-request.js +32 -16
  7. package/dist/request-example/builder/resolve-request-factory-url.d.ts +1 -1
  8. package/dist/request-example/builder/resolve-request-factory-url.d.ts.map +1 -1
  9. package/dist/request-example/builder/resolve-request-factory-url.js +11 -6
  10. package/dist/request-example/context/get-request-example-context.d.ts +1 -2
  11. package/dist/request-example/context/get-request-example-context.d.ts.map +1 -1
  12. package/dist/request-example/context/index.d.ts +1 -1
  13. package/dist/request-example/context/index.d.ts.map +1 -1
  14. package/dist/request-example/functions.d.ts +486 -0
  15. package/dist/request-example/functions.d.ts.map +1 -0
  16. package/dist/request-example/functions.js +545 -0
  17. package/dist/request-example/index.d.ts +2 -1
  18. package/dist/request-example/index.d.ts.map +1 -1
  19. package/dist/request-example/index.js +1 -0
  20. package/dist/request-example/random-data.d.ts +99 -0
  21. package/dist/request-example/random-data.d.ts.map +1 -0
  22. package/dist/request-example/random-data.js +1181 -0
  23. package/dist/schemas/inmemory-workspace.d.ts +1 -1
  24. package/dist/schemas/reference-config/index.d.ts +1 -1
  25. package/dist/schemas/workspace-specification/index.d.ts +1 -1
  26. package/dist/schemas/workspace.d.ts +2 -2
  27. package/package.json +8 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @scalar/workspace-store
2
2
 
3
+ ## 0.46.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#8632](https://github.com/scalar/scalar/pull/8632): feat: support generation of random data
8
+
9
+ ### Patch Changes
10
+
11
+ - [#8791](https://github.com/scalar/scalar/pull/8791): fix test requests so exploded array query parameters keep all values instead of collapsing to the last one
12
+ - [#8852](https://github.com/scalar/scalar/pull/8852): fix: Allows sending requests when scalar is framed in srcdoc
13
+ - [#8817](https://github.com/scalar/scalar/pull/8817): feat(snippetz): add a Laravel HTTP client plugin for PHP snippets
14
+
15
+ Added a new `php/laravel` client generator in `@scalar/snippetz`, including comprehensive request coverage for headers, cookies, auth, query params, JSON, multipart, form-encoded, binary, and fallback bodies.
16
+
17
+ Updated generated client registries and schema wiring so the new client is available across Scalar:
18
+ - `@scalar/types` `GROUPED_CLIENTS` / `AVAILABLE_CLIENTS`
19
+ - `@scalar/workspace-store` reference-config schema
20
+ - generated docs and integration client enums
21
+
22
+ Updated api-client expectations for the increased total built-in client count.
23
+
24
+ ## 0.45.0
25
+
26
+ ### Minor Changes
27
+
28
+ - [#8761](https://github.com/scalar/scalar/pull/8761): feat: pass new option on operation create event
29
+
3
30
  ## 0.44.0
4
31
 
5
32
  ### Minor Changes
@@ -106,7 +106,10 @@ export type UIEvents = {
106
106
  * Focus the address bar input field.
107
107
  * Typically triggered by keyboard shortcuts for quick navigation.
108
108
  */
109
- 'ui:focus:address-bar': KeyboardEventPayload | undefined;
109
+ 'ui:focus:address-bar': KeyboardEventPayload | {
110
+ /** Whether to clear the address bar before focusing */
111
+ clear?: boolean;
112
+ };
110
113
  /**
111
114
  * Focus the send button to execute a request.
112
115
  * Useful for keyboard-driven workflows.
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/events/definitions/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/events/definitions/ui.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,11 @@ import type { RequestFactory } from '../../request-example/builder/request-facto
2
2
  export declare const buildRequest: (request: RequestFactory, options: {
3
3
  envVariables: Record<string, string>;
4
4
  }) => {
5
+ /** Create a new request object with the replaced values ready to be sent to the server */
5
6
  request: Request;
7
+ /** The abort controller */
6
8
  controller: AbortController;
9
+ /** The flag indicating if the request is being proxied */
7
10
  isUsingProxy: boolean;
8
11
  };
9
12
  //# sourceMappingURL=build-request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-request.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/build-request.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAI/E,eAAO,MAAM,YAAY,GACvB,SAAS,cAAc,EACvB,SAAS;IACP,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;;;;CA4IF,CAAA"}
1
+ {"version":3,"file":"build-request.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/build-request.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAK/E,eAAO,MAAM,YAAY,GACvB,SAAS,cAAc,EACvB,SAAS;IACP,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;IA0IC,0FAA0F;;IAa1F,2BAA2B;;IAE3B,0DAA0D;;CAG7D,CAAA"}
@@ -3,22 +3,31 @@ import { redirectToProxy, shouldUseProxy } from '@scalar/helpers/url/redirect-to
3
3
  import { encode as encodeBase64 } from 'js-base64';
4
4
  import { buildRequestCookieHeader } from '../../request-example/builder/header/build-request-cookie-header.js';
5
5
  import { applyAllowReservedToUrl } from '../../request-example/builder/helpers/apply-allow-reserved-to-url.js';
6
+ import { contextFunctions, isContextFunctionName } from '../../request-example/functions.js';
6
7
  import { resolveRequestFactoryUrl } from '../../request-example/builder/resolve-request-factory-url.js';
7
8
  export const buildRequest = (request, options) => {
9
+ /** Replace the value with the environment variable or context function */
10
+ const replace = (value) => {
11
+ if (isContextFunctionName(value)) {
12
+ return contextFunctions[value].fn() ?? null;
13
+ }
14
+ return options.envVariables[value] ?? null;
15
+ };
16
+ /** Create a new abort controller */
8
17
  const controller = new AbortController();
18
+ /** Create a new headers object with the replaced values */
9
19
  const headers = (() => {
10
- const variables = options.envVariables;
11
20
  const headers = new Headers();
12
21
  request.headers.forEach((value, key) => {
13
- headers.set(replaceEnvVariables(key, variables), replaceEnvVariables(value, variables));
22
+ headers.set(replaceEnvVariables(key, replace), replaceEnvVariables(value, replace));
14
23
  });
15
24
  return headers;
16
25
  })();
26
+ /** Create a new body object with the replaced values */
17
27
  const body = (() => {
18
- const variables = options.envVariables;
19
28
  if (request.body?.mode === 'raw') {
20
29
  if (typeof request.body.value === 'string') {
21
- return replaceEnvVariables(request.body.value, variables);
30
+ return replaceEnvVariables(request.body.value, replace);
22
31
  }
23
32
  return request.body.value;
24
33
  }
@@ -26,33 +35,33 @@ export const buildRequest = (request, options) => {
26
35
  const form = new FormData();
27
36
  request.body.value.forEach((item) => {
28
37
  if (item.type === 'text') {
29
- form.append(replaceEnvVariables(item.key, variables), replaceEnvVariables(item.value, variables));
38
+ form.append(replaceEnvVariables(item.key, replace), replaceEnvVariables(item.value, replace));
30
39
  return;
31
40
  }
32
- form.append(replaceEnvVariables(item.key, variables), item.value);
41
+ form.append(replaceEnvVariables(item.key, replace), item.value);
33
42
  });
34
43
  return form;
35
44
  }
36
45
  if (request.body?.mode === 'urlencoded') {
37
46
  return new URLSearchParams(request.body.value.map((item) => [
38
- replaceEnvVariables(item.key, variables),
39
- replaceEnvVariables(item.value, variables),
47
+ replaceEnvVariables(item.key, replace),
48
+ replaceEnvVariables(item.value, replace),
40
49
  ]));
41
50
  }
42
51
  return null;
43
52
  })();
44
53
  const securityQueryParams = new URLSearchParams();
45
54
  const securityCookies = [];
46
- // Build the request security unless the consumer opted out via disableSecurity
55
+ /** Build the request security unless the consumer opted out via disableSecurity */
47
56
  if (!request.options?.disableSecurity) {
48
57
  request.security.forEach((security) => {
49
- const name = replaceEnvVariables(security.name, options.envVariables);
58
+ const name = replaceEnvVariables(security.name, replace);
50
59
  // Format the security value based on its authentication scheme.
51
60
  // - For 'basic': prefix with 'Basic' and base64-encode the value (username:password).
52
61
  // - For 'bearer': prefix with 'Bearer'.
53
62
  // - Otherwise: use the substituted value as is (for API keys, etc).
54
63
  const securityValue = (() => {
55
- const substitutedValue = replaceEnvVariables(security.value, options.envVariables);
64
+ const substitutedValue = replaceEnvVariables(security.value, replace);
56
65
  if (security.format === 'basic') {
57
66
  return `Basic ${encodeBase64(substitutedValue)}`;
58
67
  }
@@ -79,30 +88,35 @@ export const buildRequest = (request, options) => {
79
88
  }
80
89
  });
81
90
  }
91
+ /** Resolve the request URL with the replaced values */
82
92
  const requestUrl = resolveRequestFactoryUrl(request, {
83
- envVariables: options.envVariables,
93
+ envVariables: replace,
84
94
  securityQueryParams: securityQueryParams,
85
95
  });
96
+ /** Check if the request should be proxied */
86
97
  const isUsingProxy = shouldUseProxy(request.proxyUrl, requestUrl);
98
+ /** Create a new cookies array with the replaced values */
87
99
  const cookies = [...request.cookies, ...securityCookies].map((c) => ({
88
100
  ...c,
89
- name: replaceEnvVariables(c.name, options.envVariables),
90
- value: replaceEnvVariables(c.value, options.envVariables),
101
+ name: replaceEnvVariables(c.name, replace),
102
+ value: replaceEnvVariables(c.value, replace),
91
103
  }));
104
+ /** Build the request cookie header */
92
105
  const cookieHeader = buildRequestCookieHeader({
93
106
  cookies,
94
107
  originalCookieHeader: headers.get('cookie'),
95
108
  url: requestUrl,
96
109
  useCustomCookieHeader: (isUsingProxy || request.options?.isElectron) ?? false,
97
110
  });
98
- // Add the cookie header to the headers
111
+ /** Add the cookie header to the headers */
99
112
  if (cookieHeader) {
100
113
  headers.set(cookieHeader.name, cookieHeader.value);
101
114
  }
102
- // final url
115
+ /** Encode the URL with the allowed reserved query parameters */
103
116
  const encodedUrl = applyAllowReservedToUrl(requestUrl, request.allowedReservedQueryParameters ?? new Set());
104
117
  const finalUrl = isUsingProxy ? redirectToProxy(request.proxyUrl, encodedUrl) : encodedUrl;
105
118
  return {
119
+ /** Create a new request object with the replaced values ready to be sent to the server */
106
120
  request: new Request(finalUrl, {
107
121
  /**
108
122
  * Ensure that all methods are uppercased (though only needed for patch)
@@ -115,7 +129,9 @@ export const buildRequest = (request, options) => {
115
129
  cache: request.cache,
116
130
  signal: controller.signal,
117
131
  }),
132
+ /** The abort controller */
118
133
  controller,
134
+ /** The flag indicating if the request is being proxied */
119
135
  isUsingProxy,
120
136
  };
121
137
  };
@@ -5,7 +5,7 @@ import type { RequestFactory } from '../../request-example/builder/request-facto
5
5
  * without proxy rewriting or reserved-query encoding.
6
6
  */
7
7
  export declare const resolveRequestFactoryUrl: (request: RequestFactory, options: {
8
- envVariables: Record<string, string>;
8
+ envVariables: Record<string, string> | ((value: string) => string | null);
9
9
  securityQueryParams: URLSearchParams;
10
10
  }) => string;
11
11
  //# sourceMappingURL=resolve-request-factory-url.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-request-factory-url.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/resolve-request-factory-url.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAE/E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,cAAc,EACvB,SAAS;IAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,mBAAmB,EAAE,eAAe,CAAA;CAAE,KACtF,MA2BF,CAAA"}
1
+ {"version":3,"file":"resolve-request-factory-url.d.ts","sourceRoot":"","sources":["../../../src/request-example/builder/resolve-request-factory-url.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAA;AAE/E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,cAAc,EACvB,SAAS;IACP,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,CAAA;IACzE,mBAAmB,EAAE,eAAe,CAAA;CACrC,KACA,MAiCF,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { replaceEnvVariables, replacePathVariables } from '@scalar/helpers/regex/replace-variables';
2
- import { mergeUrls } from '@scalar/helpers/url/merge-urls';
2
+ import { mergeSearchParams, mergeUrls } from '@scalar/helpers/url/merge-urls';
3
3
  /**
4
4
  * Resolves the request URL string from a {@link RequestFactory} using the same
5
5
  * rules as {@link buildRequest} (path variables, query, security query params),
@@ -14,15 +14,20 @@ export const resolveRequestFactoryUrl = (request, options) => {
14
14
  const baseUrl = replaceEnvVariables(request.baseUrl, variables);
15
15
  const path = replacePathVariables(request.path.raw, pathVariables);
16
16
  const mergedUrl = mergeUrls(baseUrl, path);
17
- const urlBase = globalThis.window?.location?.origin ?? 'http://localhost:3000';
17
+ // When rendered inside an iframe with srcdoc, the browser reports
18
+ // window.location.origin as the string "null" instead of a real origin.
19
+ // Fall back to localhost so relative URLs can still be resolved.
20
+ const origin = globalThis.window?.location?.origin;
21
+ const urlBase = origin && origin !== 'null' ? origin : 'http://localhost:3000';
18
22
  const url = new URL(mergedUrl, urlBase);
19
- // Merge in operation query params
23
+ const operationQueryParams = new URLSearchParams();
20
24
  for (const [key, value] of request.query.entries()) {
21
- url.searchParams.set(replaceEnvVariables(key, variables), replaceEnvVariables(value, variables));
25
+ operationQueryParams.append(replaceEnvVariables(key, variables), replaceEnvVariables(value, variables));
22
26
  }
23
- // Merge in security query params
27
+ const securityQueryParams = new URLSearchParams();
24
28
  for (const [key, value] of options.securityQueryParams.entries()) {
25
- url.searchParams.set(key, value);
29
+ securityQueryParams.append(key, value);
26
30
  }
31
+ url.search = mergeSearchParams(url.searchParams, operationQueryParams, securityQueryParams).toString();
27
32
  return url.toString();
28
33
  };
@@ -12,7 +12,7 @@ import type { OperationObject } from '../../schemas/v3.1/strict/operation.js';
12
12
  import type { SecurityRequirementObject } from '../../schemas/v3.1/strict/security-requirement.js';
13
13
  import type { ServerObject } from '../../schemas/v3.1/strict/server.js';
14
14
  import type { WorkspaceDocument } from '../../schemas/workspace.js';
15
- type BuildRequestExampleContext = {
15
+ export type BuildRequestExampleContext = {
16
16
  operation: OperationObject;
17
17
  environment: {
18
18
  name: string | null;
@@ -56,5 +56,4 @@ export declare const getRequestExampleContext: (workspaceStore: WorkspaceStore,
56
56
  */
57
57
  fallbackDocument: WorkspaceDocument | null;
58
58
  }>) => Result<BuildRequestExampleContext>;
59
- export {};
60
59
  //# sourceMappingURL=get-request-example-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-request-example-context.d.ts","sourceRoot":"","sources":["../../../src/request-example/context/get-request-example-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAA;AAIjG,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,iCAAiC,CAAA;AAIhF,OAAO,EAAE,KAAK,qBAAqB,EAAiB,MAAM,mDAAmD,CAAA;AAE7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAA;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,KAAK,0BAA0B,GAAG;IAChC,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,WAAW,EAAE,kBAAkB,CAAA;KAChC,CAAA;IACD,OAAO,EAAE;QACP,SAAS,EAAE,aAAa,EAAE,CAAA;QAC1B,QAAQ,EAAE,aAAa,EAAE,CAAA;KAC1B,CAAA;IACD,OAAO,EAAE;QACP,IAAI,EAAE,YAAY,EAAE,CAAA;QACpB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;QAC7B,IAAI,EAAE,UAAU,CAAA;KACjB,CAAA;IACD,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KACnB,CAAA;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAChC,CAAA;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,qBAAqB,CAAA;QAC9B,YAAY,EAAE,yBAAyB,EAAE,CAAA;QACzC,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,eAAe,EAAE,0BAA0B,EAAE,CAAA;QAC7C,IAAI,EAAE,QAAQ,CAAA;KACf,CAAA;CACF,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,gBAAgB,cAAc,EAC9B,cAAc,MAAM,EACpB,oBAAoB,kBAAkB,EACtC,UAAS,OAAO,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,+CAA+C;IAC/C,cAAc,EAAE,2BAA2B,CAAA;IAC3C;;;;OAIG;IACH,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAC3C,CAAM,KACN,MAAM,CAAC,0BAA0B,CAoInC,CAAA"}
1
+ {"version":3,"file":"get-request-example-context.d.ts","sourceRoot":"","sources":["../../../src/request-example/context/get-request-example-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAE9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEpD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAA;AAIjG,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,iCAAiC,CAAA;AAIhF,OAAO,EAAE,KAAK,qBAAqB,EAAiB,MAAM,mDAAmD,CAAA;AAE7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAA;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAA;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5D,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,eAAe,CAAA;IAC1B,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,WAAW,EAAE,kBAAkB,CAAA;KAChC,CAAA;IACD,OAAO,EAAE;QACP,SAAS,EAAE,aAAa,EAAE,CAAA;QAC1B,QAAQ,EAAE,aAAa,EAAE,CAAA;KAC1B,CAAA;IACD,OAAO,EAAE;QACP,IAAI,EAAE,YAAY,EAAE,CAAA;QACpB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;QAC7B,IAAI,EAAE,UAAU,CAAA;KACjB,CAAA;IACD,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KACnB,CAAA;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAChC,CAAA;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,qBAAqB,CAAA;QAC9B,YAAY,EAAE,yBAAyB,EAAE,CAAA;QACzC,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,eAAe,EAAE,0BAA0B,EAAE,CAAA;QAC7C,IAAI,EAAE,QAAQ,CAAA;KACf,CAAA;CACF,CAAA;AAED,eAAO,MAAM,wBAAwB,GACnC,gBAAgB,cAAc,EAC9B,cAAc,MAAM,EACpB,oBAAoB,kBAAkB,EACtC,UAAS,OAAO,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,+CAA+C;IAC/C,cAAc,EAAE,2BAA2B,CAAA;IAC3C;;;;OAIG;IACH,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAC3C,CAAM,KACN,MAAM,CAAC,0BAA0B,CAoInC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  export { getActiveEnvironment } from './environment.js';
2
- export { getRequestExampleContext } from './get-request-example-context.js';
2
+ export { type BuildRequestExampleContext, getRequestExampleContext } from './get-request-example-context.js';
3
3
  export { combineParams } from './helpers/combine-params.js';
4
4
  export { getActiveProxyUrl } from './proxy.js';
5
5
  export { getSecurityRequirements } from './security/get-security-requirements.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/request-example/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/request-example/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,KAAK,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA"}