@scalar/workspace-store 0.49.3 → 0.51.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 +122 -0
- package/dist/client.d.ts +2 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +58 -25
- package/dist/entities/auth/schema.d.ts +25 -5
- package/dist/entities/auth/schema.d.ts.map +1 -1
- package/dist/events/bus.d.ts +70 -0
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/bus.js +48 -11
- package/dist/events/definitions/analytics.d.ts +0 -12
- package/dist/events/definitions/analytics.d.ts.map +1 -1
- package/dist/events/definitions/auth.d.ts +44 -6
- package/dist/events/definitions/auth.d.ts.map +1 -1
- package/dist/events/definitions/index.d.ts +3 -2
- package/dist/events/definitions/index.d.ts.map +1 -1
- package/dist/events/definitions/log.d.ts +18 -0
- package/dist/events/definitions/log.d.ts.map +1 -0
- package/dist/events/definitions/log.js +1 -0
- package/dist/events/definitions/operation.d.ts +1 -1
- package/dist/events/definitions/operation.d.ts.map +1 -1
- package/dist/events/definitions/ui.d.ts +18 -1
- package/dist/events/definitions/ui.d.ts.map +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/helpers/get-resolved-ref.d.ts +6 -0
- package/dist/helpers/get-resolved-ref.d.ts.map +1 -1
- package/dist/helpers/get-resolved-ref.js +9 -0
- package/dist/helpers/is-hidden.d.ts +8 -0
- package/dist/helpers/is-hidden.d.ts.map +1 -0
- package/dist/helpers/is-hidden.js +5 -0
- package/dist/helpers/merge-object.d.ts +1 -1
- package/dist/helpers/merge-object.d.ts.map +1 -1
- package/dist/mutators/auth.d.ts +22 -3
- package/dist/mutators/auth.d.ts.map +1 -1
- package/dist/mutators/auth.js +213 -37
- package/dist/mutators/cookie.d.ts.map +1 -1
- package/dist/mutators/cookie.js +3 -2
- package/dist/mutators/document.d.ts.map +1 -1
- package/dist/mutators/document.js +5 -4
- package/dist/mutators/environment.d.ts.map +1 -1
- package/dist/mutators/environment.js +12 -5
- package/dist/mutators/index.d.ts +4 -0
- package/dist/mutators/index.d.ts.map +1 -1
- package/dist/mutators/operation/body.d.ts.map +1 -1
- package/dist/mutators/operation/body.js +6 -2
- package/dist/mutators/operation/extensions.d.ts.map +1 -1
- package/dist/mutators/operation/extensions.js +5 -1
- package/dist/mutators/operation/history.d.ts.map +1 -1
- package/dist/mutators/operation/history.js +7 -3
- package/dist/mutators/operation/operation.d.ts.map +1 -1
- package/dist/mutators/operation/operation.js +15 -10
- package/dist/mutators/operation/parameters.d.ts.map +1 -1
- package/dist/mutators/operation/parameters.js +12 -5
- package/dist/mutators/server.d.ts.map +1 -1
- package/dist/mutators/server.js +2 -1
- package/dist/mutators/tag.d.ts.map +1 -1
- package/dist/mutators/tag.js +9 -4
- package/dist/navigation/get-navigation-options.d.ts +1 -1
- package/dist/navigation/get-navigation-options.d.ts.map +1 -1
- package/dist/navigation/get-navigation-options.js +1 -0
- package/dist/navigation/helpers/get-openapi-object.d.ts.map +1 -1
- package/dist/navigation/helpers/get-openapi-object.js +5 -0
- package/dist/navigation/helpers/traverse-document.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-document.js +8 -2
- package/dist/navigation/helpers/traverse-paths.d.ts +4 -2
- package/dist/navigation/helpers/traverse-paths.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-paths.js +9 -6
- package/dist/navigation/helpers/traverse-schemas.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-schemas.js +9 -4
- package/dist/navigation/helpers/traverse-tags.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-tags.js +2 -1
- package/dist/navigation/helpers/traverse-webhooks.d.ts.map +1 -1
- package/dist/navigation/helpers/traverse-webhooks.js +4 -3
- package/dist/navigation/helpers/update-order-ids.d.ts.map +1 -1
- package/dist/navigation/helpers/update-order-ids.js +4 -1
- package/dist/navigation/types.d.ts +4 -0
- package/dist/navigation/types.d.ts.map +1 -1
- package/dist/persistence/index.d.ts +123 -80
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +233 -167
- package/dist/persistence/migrations/v2-team-to-local.d.ts +22 -5
- package/dist/persistence/migrations/v2-team-to-local.d.ts.map +1 -1
- package/dist/persistence/migrations/v2-team-to-local.js +195 -137
- package/dist/request-example/builder/body/build-request-body.d.ts.map +1 -1
- package/dist/request-example/builder/body/build-request-body.js +66 -2
- package/dist/request-example/builder/build-request.d.ts +24 -3
- package/dist/request-example/builder/build-request.d.ts.map +1 -1
- package/dist/request-example/builder/build-request.js +89 -18
- package/dist/request-example/builder/index.d.ts +2 -1
- package/dist/request-example/builder/index.d.ts.map +1 -1
- package/dist/request-example/builder/index.js +2 -1
- package/dist/request-example/builder/request-factory.d.ts.map +1 -1
- package/dist/request-example/builder/request-factory.js +5 -8
- package/dist/request-example/builder/resolve-request-factory-url.d.ts +18 -1
- package/dist/request-example/builder/resolve-request-factory-url.d.ts.map +1 -1
- package/dist/request-example/builder/resolve-request-factory-url.js +29 -4
- package/dist/request-example/context/environment.d.ts.map +1 -1
- package/dist/request-example/context/environment.js +2 -1
- package/dist/request-example/context/get-request-example-context.d.ts.map +1 -1
- package/dist/request-example/context/get-request-example-context.js +7 -0
- package/dist/request-example/context/headers.d.ts +28 -13
- package/dist/request-example/context/headers.d.ts.map +1 -1
- package/dist/request-example/context/headers.js +84 -19
- package/dist/request-example/context/index.d.ts +1 -0
- package/dist/request-example/context/index.d.ts.map +1 -1
- package/dist/request-example/context/index.js +1 -0
- package/dist/request-example/context/security/get-selected-security.d.ts.map +1 -1
- package/dist/request-example/context/security/get-selected-security.js +3 -6
- package/dist/request-example/context/servers.d.ts.map +1 -1
- package/dist/request-example/context/servers.js +3 -3
- package/dist/request-example/index.d.ts +3 -3
- package/dist/request-example/index.d.ts.map +1 -1
- package/dist/request-example/index.js +2 -2
- package/dist/resolve.d.ts.map +1 -1
- package/dist/resolve.js +1 -8
- package/dist/schemas/extensions/document/x-scalar-environments.d.ts +6 -6
- package/dist/schemas/extensions/document/x-scalar-original-source-url.d.ts +15 -0
- package/dist/schemas/extensions/document/x-scalar-original-source-url.d.ts.map +1 -0
- package/dist/schemas/extensions/document/x-scalar-original-source-url.js +16 -0
- package/dist/schemas/extensions/operation/x-badge.d.ts +2 -2
- package/dist/schemas/extensions/operation/x-scalar-stability.d.ts +1 -1
- package/dist/schemas/extensions/schema/x-enum-descriptions.d.ts +2 -2
- package/dist/schemas/extensions/security/x-scalar-credentials-location.d.ts +1 -1
- package/dist/schemas/extensions/security/x-use-pkce.d.ts +1 -1
- package/dist/schemas/extensions/workspace/x-scalar-active-proxy.d.ts +1 -1
- package/dist/schemas/inmemory-workspace.d.ts +3 -4631
- package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
- package/dist/schemas/inmemory-workspace.js +1 -15
- package/dist/schemas/reference-config/index.d.ts +6 -2
- package/dist/schemas/reference-config/index.d.ts.map +1 -1
- package/dist/schemas/reference-config/settings.d.ts +5 -1
- package/dist/schemas/reference-config/settings.d.ts.map +1 -1
- package/dist/schemas/type-guards.d.ts +24 -0
- package/dist/schemas/type-guards.d.ts.map +1 -0
- package/dist/schemas/type-guards.js +30 -0
- package/dist/schemas/v3.1/openapi/index.d.ts +4 -3
- package/dist/schemas/v3.1/openapi/index.d.ts.map +1 -1
- package/dist/schemas/v3.1/openapi/index.js +2 -3
- package/dist/schemas/v3.1/strict/encoding.d.ts +12 -0
- package/dist/schemas/v3.1/strict/encoding.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/encoding.js +11 -0
- package/dist/schemas/v3.1/strict/openapi-document.d.ts +179 -39
- package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
- package/dist/schemas/v3.1/strict/openapi-document.js +2 -2
- package/dist/schemas/workspace-specification/index.d.ts +1 -1
- package/dist/schemas/workspace.d.ts +4 -4377
- package/dist/schemas/workspace.d.ts.map +1 -1
- package/dist/schemas/workspace.js +0 -8
- package/dist/schemas.d.ts +2 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/package.json +8 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,127 @@
|
|
|
1
1
|
# @scalar/workspace-store
|
|
2
2
|
|
|
3
|
+
## 0.51.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#9145](https://github.com/scalar/scalar/pull/9145): feat(workspace-store): expose `style`, `explode`, and `allowReserved` on the multipart Encoding Object schema and type, matching OpenAPI 3.1.1
|
|
8
|
+
- [#9155](https://github.com/scalar/scalar/pull/9155): feat(api-client): expand nested object properties of multipart form-data schemas into individual editable rows (e.g. `props.name`, `props.description`); the wire still sends one `application/json` multipart part per top-level object property — both for the initial schema-derived example and for edited form rows
|
|
9
|
+
- [#9292](https://github.com/scalar/scalar/pull/9292): refactor: move extensions to the schema package
|
|
10
|
+
- [#9301](https://github.com/scalar/scalar/pull/9301): refactor: use AsyncAPI 3.1 schemas from `@scalar/schemas`
|
|
11
|
+
- Remove local minimal AsyncAPI document schema definitions
|
|
12
|
+
- Use `asyncApiObjectSchema` from `@scalar/schemas/asyncapi/3.1` for workspace document validation
|
|
13
|
+
- Use `AsyncApiDocument` type from `@scalar/types/asyncapi/3.1`
|
|
14
|
+
|
|
15
|
+
- [#9256](https://github.com/scalar/scalar/pull/9256): Respect `operationTitleSource: 'path'` when building sidebar navigation so operation paths render instead of summaries.
|
|
16
|
+
|
|
17
|
+
## 0.51.0
|
|
18
|
+
|
|
19
|
+
### Minor Changes
|
|
20
|
+
|
|
21
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): feat: UID-based workspaces and local-team migration
|
|
22
|
+
|
|
23
|
+
IndexedDB v2 migrates existing data into the new shape, collapses all workspaces into the local team (aligned with a single team workspace on the client for now), resolves slug collisions deterministically, re-keys chunk stores by workspaceUid, and strips x-scalar-tabs and x-scalar-active-tab from meta chunks so routing does not follow stale paths after migration or slug changes.
|
|
24
|
+
|
|
25
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): feat: make `WorkspaceDocument` an union of OpenApiDocument and AsyncApiDocument
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): feat: add Cmd/Ctrl+S for `ui:save:local-document` so hosts (e.g. scalar-app) can match the header Save control for local workspaces
|
|
30
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix: stop coercing rebased documents against the strict OpenAPI schema so AsyncAPI documents survive a rebase without having OpenAPI fields injected
|
|
31
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix(api-client): block invalid request URLs before send and surface `buildRequest` failures as results
|
|
32
|
+
|
|
33
|
+
Request construction now treats a bad merged URL as a first-class failure instead of throwing deep inside helpers. After `mergeUrls`, `resolveRequestFactoryUrl` rejects incomplete targets when strict mode applies: relative URLs, an empty server base, or path strings that still contain unresolved `{{variable}}` placeholders. Callers may set `allowMissingRequestServerBase` where a full absolute URL is intentionally optional (for example the embedded modal layout in `OperationBlock`, or API Reference `onBeforeRequest` hooks that build against the document origin).
|
|
34
|
+
|
|
35
|
+
`buildRequest` returns a `Result` (`ok` / `err`) with stable error codes such as `MISSING_REQUEST_SERVER_BASE`, `INVALID_REQUEST_FACTORY_URL`, and `BUILD_REQUEST_FAILED` for unexpected synchronous failures. Those failures are wrapped with `safeRun` from `@scalar/helpers`, which logs to `console.error` and maps throws to a string message on the result. The API Reference plugin path logs and skips `onBeforeRequest` when a preview request cannot be built, so user hooks never run against a half-built fetch payload.
|
|
36
|
+
|
|
37
|
+
Downstream packages (`api-client`, `api-reference`, `scalar-app` where applicable) unwrap the result, show toasts or logs, and avoid calling `sendRequest` until the URL is valid.
|
|
38
|
+
|
|
39
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): remove outdated Biome suppression in schema traversal loop
|
|
40
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix urlencoded request body serialization for nested object and array values
|
|
41
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix: OAuth scope CRUD mutators
|
|
42
|
+
- New mutators **`upsertScope`** and **`deleteScope`** backed by new `AuthEvents` entries; **`updateSelectedScopes`** only updates selection state.
|
|
43
|
+
- **Rename**: `upsertScope` rewrites the scope key in the flow and mirrors the new key in every document- and operation-level selected requirement for that scheme.
|
|
44
|
+
- **Delete**: `deleteScope` removes the scope from the flow and drops it from matching selections.
|
|
45
|
+
|
|
46
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix(workspace-store): respect x-internal and x-scalar-ignore on $ref wrapper schemas, operations, and webhooks in the sidebar
|
|
47
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix: initialize selection when updating OAuth2 scopes with preferredSecurityScheme
|
|
48
|
+
|
|
49
|
+
When preferredSecurityScheme is used, the selection is computed on-the-fly by getSelectedSecurity but not persisted to the auth store. This caused updateSelectedScopes to fail silently when users tried to select scopes, as it couldn't find a stored selection to update.
|
|
50
|
+
|
|
51
|
+
The fix initializes the selection in the auth store when it doesn't exist, allowing scope updates to work correctly with preferredSecurityScheme.
|
|
52
|
+
|
|
53
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix: share executable URL build for copy and buildRequest
|
|
54
|
+
|
|
55
|
+
Copy URL from the operation address bar now matches the URL that is actually sent: path parameters, operation query string, environment substitution, and security schemes that use in: query are all applied the same way as Send.
|
|
56
|
+
|
|
57
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): feat(workspace-store): add `getDocumentType` helper to identify OpenAPI vs AsyncAPI documents
|
|
58
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): feat: add more analytics events
|
|
59
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix(api-client): expand object query parameters in the request UI
|
|
60
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix: omit disabled default headers when building requests
|
|
61
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix(api-client): request body content types — OpenAPI extras, MIME labels, and "Other" without auto Content-Type
|
|
62
|
+
|
|
63
|
+
The request body dropdown lists built-in types first, then any additional media types from the OpenAPI operation. Labels use the MIME essence (no `charset` in the label). The **Other** option is available again for a raw body: it does **not** add an automatic `Content-Type` header (users can set one manually). Code snippets avoid injecting `Content-Type: other`.
|
|
64
|
+
|
|
65
|
+
`getDefaultHeaders` and `filterDisabledDefaultHeaders` are exported from `@scalar/workspace-store/request-example`; the API client uses them for code snippets instead of a duplicate helper.
|
|
66
|
+
|
|
67
|
+
- [#9211](https://github.com/scalar/scalar/pull/9211): fix: forward selected forbidden headers via `X-Scalar-*` when proxying
|
|
68
|
+
|
|
69
|
+
Browsers strip selected forbidden headers from outgoing requests. When using the Scalar proxy (or running in Electron), we now rewrite a small allowlist (`Date`, `DNT`, and `Referer`) to `X-Scalar-*` headers so the proxy can forward the intended upstream headers without opening support for the full forbidden-header set.
|
|
70
|
+
|
|
71
|
+
## 0.50.0
|
|
72
|
+
|
|
73
|
+
### Minor Changes
|
|
74
|
+
|
|
75
|
+
- [#9195](https://github.com/scalar/scalar/pull/9195): feat: UID-based workspaces and local-team migration
|
|
76
|
+
|
|
77
|
+
IndexedDB v2 migrates existing data into the new shape, collapses all workspaces into the local team (aligned with a single team workspace on the client for now), resolves slug collisions deterministically, re-keys chunk stores by workspaceUid, and strips x-scalar-tabs and x-scalar-active-tab from meta chunks so routing does not follow stale paths after migration or slug changes.
|
|
78
|
+
|
|
79
|
+
- [#9018](https://github.com/scalar/scalar/pull/9018): feat: make `WorkspaceDocument` an union of OpenApiDocument and AsyncApiDocument
|
|
80
|
+
|
|
81
|
+
### Patch Changes
|
|
82
|
+
|
|
83
|
+
- [#9185](https://github.com/scalar/scalar/pull/9185): feat: add Cmd/Ctrl+S for `ui:save:local-document` so hosts (e.g. scalar-app) can match the header Save control for local workspaces
|
|
84
|
+
- [#9018](https://github.com/scalar/scalar/pull/9018): fix: stop coercing rebased documents against the strict OpenAPI schema so AsyncAPI documents survive a rebase without having OpenAPI fields injected
|
|
85
|
+
- [#9184](https://github.com/scalar/scalar/pull/9184): fix(api-client): block invalid request URLs before send and surface `buildRequest` failures as results
|
|
86
|
+
|
|
87
|
+
Request construction now treats a bad merged URL as a first-class failure instead of throwing deep inside helpers. After `mergeUrls`, `resolveRequestFactoryUrl` rejects incomplete targets when strict mode applies: relative URLs, an empty server base, or path strings that still contain unresolved `{{variable}}` placeholders. Callers may set `allowMissingRequestServerBase` where a full absolute URL is intentionally optional (for example the embedded modal layout in `OperationBlock`, or API Reference `onBeforeRequest` hooks that build against the document origin).
|
|
88
|
+
|
|
89
|
+
`buildRequest` returns a `Result` (`ok` / `err`) with stable error codes such as `MISSING_REQUEST_SERVER_BASE`, `INVALID_REQUEST_FACTORY_URL`, and `BUILD_REQUEST_FAILED` for unexpected synchronous failures. Those failures are wrapped with `safeRun` from `@scalar/helpers`, which logs to `console.error` and maps throws to a string message on the result. The API Reference plugin path logs and skips `onBeforeRequest` when a preview request cannot be built, so user hooks never run against a half-built fetch payload.
|
|
90
|
+
|
|
91
|
+
Downstream packages (`api-client`, `api-reference`, `scalar-app` where applicable) unwrap the result, show toasts or logs, and avoid calling `sendRequest` until the URL is valid.
|
|
92
|
+
|
|
93
|
+
- [#9142](https://github.com/scalar/scalar/pull/9142): remove outdated Biome suppression in schema traversal loop
|
|
94
|
+
- [#9098](https://github.com/scalar/scalar/pull/9098): fix urlencoded request body serialization for nested object and array values
|
|
95
|
+
- [#9168](https://github.com/scalar/scalar/pull/9168): fix: OAuth scope CRUD mutators
|
|
96
|
+
- New mutators **`upsertScope`** and **`deleteScope`** backed by new `AuthEvents` entries; **`updateSelectedScopes`** only updates selection state.
|
|
97
|
+
- **Rename**: `upsertScope` rewrites the scope key in the flow and mirrors the new key in every document- and operation-level selected requirement for that scheme.
|
|
98
|
+
- **Delete**: `deleteScope` removes the scope from the flow and drops it from matching selections.
|
|
99
|
+
|
|
100
|
+
- [#9142](https://github.com/scalar/scalar/pull/9142): fix(workspace-store): respect x-internal and x-scalar-ignore on $ref wrapper schemas, operations, and webhooks in the sidebar
|
|
101
|
+
- [#8984](https://github.com/scalar/scalar/pull/8984): fix: initialize selection when updating OAuth2 scopes with preferredSecurityScheme
|
|
102
|
+
|
|
103
|
+
When preferredSecurityScheme is used, the selection is computed on-the-fly by getSelectedSecurity but not persisted to the auth store. This caused updateSelectedScopes to fail silently when users tried to select scopes, as it couldn't find a stored selection to update.
|
|
104
|
+
|
|
105
|
+
The fix initializes the selection in the auth store when it doesn't exist, allowing scope updates to work correctly with preferredSecurityScheme.
|
|
106
|
+
|
|
107
|
+
- [#9150](https://github.com/scalar/scalar/pull/9150): fix: share executable URL build for copy and buildRequest
|
|
108
|
+
|
|
109
|
+
Copy URL from the operation address bar now matches the URL that is actually sent: path parameters, operation query string, environment substitution, and security schemes that use in: query are all applied the same way as Send.
|
|
110
|
+
|
|
111
|
+
- [#9159](https://github.com/scalar/scalar/pull/9159): feat(workspace-store): add `getDocumentType` helper to identify OpenAPI vs AsyncAPI documents
|
|
112
|
+
- [#9125](https://github.com/scalar/scalar/pull/9125): feat: add more analytics events
|
|
113
|
+
- [#9055](https://github.com/scalar/scalar/pull/9055): fix(api-client): expand object query parameters in the request UI
|
|
114
|
+
- [#9127](https://github.com/scalar/scalar/pull/9127): fix: omit disabled default headers when building requests
|
|
115
|
+
- [#9134](https://github.com/scalar/scalar/pull/9134): fix(api-client): request body content types — OpenAPI extras, MIME labels, and "Other" without auto Content-Type
|
|
116
|
+
|
|
117
|
+
The request body dropdown lists built-in types first, then any additional media types from the OpenAPI operation. Labels use the MIME essence (no `charset` in the label). The **Other** option is available again for a raw body: it does **not** add an automatic `Content-Type` header (users can set one manually). Code snippets avoid injecting `Content-Type: other`.
|
|
118
|
+
|
|
119
|
+
`getDefaultHeaders` and `filterDisabledDefaultHeaders` are exported from `@scalar/workspace-store/request-example`; the API client uses them for code snippets instead of a duplicate helper.
|
|
120
|
+
|
|
121
|
+
- [#9035](https://github.com/scalar/scalar/pull/9035): fix: forward selected forbidden headers via `X-Scalar-*` when proxying
|
|
122
|
+
|
|
123
|
+
Browsers strip selected forbidden headers from outgoing requests. When using the Scalar proxy (or running in Electron), we now rewrite a small allowlist (`Date`, `DNT`, and `Referer`) to `X-Scalar-*` headers so the proxy can forward the intended upstream headers without opening support for the full forbidden-header set.
|
|
124
|
+
|
|
3
125
|
## 0.49.3
|
|
4
126
|
|
|
5
127
|
### Patch Changes
|
package/dist/client.d.ts
CHANGED
|
@@ -363,9 +363,8 @@ export type WorkspaceStore = {
|
|
|
363
363
|
/**
|
|
364
364
|
* Imports a workspace from a serialized JSON string.
|
|
365
365
|
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
* and configuration, with the imported values.
|
|
366
|
+
* Replaces the current workspace state — documents, metadata, and
|
|
367
|
+
* configuration — with the imported values.
|
|
369
368
|
*
|
|
370
369
|
* @param input - The serialized workspace JSON string to import.
|
|
371
370
|
*/
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,2BAA2B,CAAA;AAErE,OAAO,EAAE,KAAK,UAAU,EAAe,KAAK,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -8,6 +8,7 @@ import { fetchUrls } from '@scalar/json-magic/bundle/plugins/browser';
|
|
|
8
8
|
import { apply, diff, merge } from '@scalar/json-magic/diff';
|
|
9
9
|
import { createMagicProxy, getRaw } from '@scalar/json-magic/magic-proxy';
|
|
10
10
|
import { upgrade } from '@scalar/openapi-upgrader';
|
|
11
|
+
import { asyncApiObjectSchema } from '@scalar/schemas/asyncapi/3.1';
|
|
11
12
|
import { Value } from '@scalar/typebox/value';
|
|
12
13
|
import { coerce } from '@scalar/validation';
|
|
13
14
|
import { reactive } from 'vue';
|
|
@@ -24,7 +25,7 @@ import { unpackProxyObject } from './helpers/unpack-proxy.js';
|
|
|
24
25
|
import { createNavigation } from './navigation/index.js';
|
|
25
26
|
import { externalValueResolver, loadingStatus, normalizeAuthSchemes, normalizeRefs, refsEverywhere, removeExtraScalarKeys, restoreOriginalRefs, syncPathParameters, } from './plugins/bundler/index.js';
|
|
26
27
|
import { extensions } from './schemas/extensions.js';
|
|
27
|
-
import {
|
|
28
|
+
import { isAsyncApiDocument, isOpenApiDocument } from './schemas/type-guards.js';
|
|
28
29
|
import { generateSchema } from './schemas/v3.1/openapi/index.js';
|
|
29
30
|
import { recursiveRef } from './schemas/v3.1/openapi/reference.js';
|
|
30
31
|
import { OpenAPIDocumentSchema as OpenAPIDocumentSchemaStrict, } from './schemas/v3.1/strict/openapi-document.js';
|
|
@@ -422,7 +423,7 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
422
423
|
activeDocument['x-scalar-is-dirty'] = false;
|
|
423
424
|
return true;
|
|
424
425
|
};
|
|
425
|
-
// Add a document to the store synchronously from an in-memory OpenAPI document
|
|
426
|
+
// Add a document to the store synchronously from an in-memory OpenAPI or AsyncAPI document
|
|
426
427
|
async function addInMemoryDocument(input, navigationOptions) {
|
|
427
428
|
const { name } = input;
|
|
428
429
|
const meta = deepClone(input.meta);
|
|
@@ -445,6 +446,45 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
445
446
|
extraDocumentConfigurations[name] = { fetch: input.fetch };
|
|
446
447
|
}
|
|
447
448
|
});
|
|
449
|
+
const loaders = [
|
|
450
|
+
fetchUrls({
|
|
451
|
+
fetch: extraDocumentConfigurations[name]?.fetch ?? workspaceProps?.fetch,
|
|
452
|
+
}),
|
|
453
|
+
];
|
|
454
|
+
// If a file loader plugin is provided, use it to resolve local file references
|
|
455
|
+
// This is useful for non browser environments
|
|
456
|
+
if (workspaceProps?.fileLoader) {
|
|
457
|
+
loaders.push(workspaceProps.fileLoader);
|
|
458
|
+
}
|
|
459
|
+
// AsyncAPI ingestion: skip the OpenAPI-specific upgrade, bundle, coerce,
|
|
460
|
+
// validate, and navigation pipeline. The OpenAPI `coerce` step would
|
|
461
|
+
// otherwise inject an empty `openapi: ''` field and break the type
|
|
462
|
+
// discriminator. Reference resolution and navigation generation for
|
|
463
|
+
// AsyncAPI are out of scope for the MVP — only the workspace-store
|
|
464
|
+
// managed metadata (source url, document hash, spec version) is set so
|
|
465
|
+
// change detection on rebase can compare hashes correctly.
|
|
466
|
+
if (isAsyncApiDocument(clonedRawInputDocument)) {
|
|
467
|
+
const asyncApiDocument = createMagicProxy({
|
|
468
|
+
...clonedRawInputDocument,
|
|
469
|
+
...meta,
|
|
470
|
+
'x-original-aas-version': clonedRawInputDocument.asyncapi,
|
|
471
|
+
'x-scalar-original-document-hash': input.documentHash,
|
|
472
|
+
'x-scalar-original-source-url': input.documentSource,
|
|
473
|
+
});
|
|
474
|
+
await withMeasurementAsync('bundle', async () => await bundle(getRaw(asyncApiDocument), {
|
|
475
|
+
treeShake: false,
|
|
476
|
+
plugins: loaders,
|
|
477
|
+
urlMap: true,
|
|
478
|
+
origin: input.documentSource, // use the document origin (if provided) as the base URL for resolution
|
|
479
|
+
}));
|
|
480
|
+
// We coerce the values only when the document is not preprocessed by the server-side-store
|
|
481
|
+
const coerced = withMeasurementSync('coerceValue', () => coerce(asyncApiObjectSchema, deepClone(getRaw(asyncApiDocument))));
|
|
482
|
+
withMeasurementSync('mergeObjects', () => mergeObjects(asyncApiDocument, coerced));
|
|
483
|
+
workspace.documents[name] = createOverridesProxy(asyncApiDocument, {
|
|
484
|
+
overrides: unpackProxyObject(overrides[name]),
|
|
485
|
+
});
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
448
488
|
const inputDocument = withMeasurementSync('upgrade', () => upgrade(deepClone(clonedRawInputDocument), '3.1'));
|
|
449
489
|
const strictDocument = createMagicProxy({
|
|
450
490
|
...inputDocument,
|
|
@@ -457,16 +497,6 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
457
497
|
// This typically applies when the document is not preprocessed by the server and needs local reference resolution.
|
|
458
498
|
// We need to bundle document first before we validate, so we can also validate the external references
|
|
459
499
|
if (strictDocument[extensions.document.navigation] === undefined) {
|
|
460
|
-
const loaders = [
|
|
461
|
-
fetchUrls({
|
|
462
|
-
fetch: extraDocumentConfigurations[name]?.fetch ?? workspaceProps?.fetch,
|
|
463
|
-
}),
|
|
464
|
-
];
|
|
465
|
-
// If a file loader plugin is provided, use it to resolve local file references
|
|
466
|
-
// This is useful for non browser environments
|
|
467
|
-
if (workspaceProps?.fileLoader) {
|
|
468
|
-
loaders.push(workspaceProps.fileLoader);
|
|
469
|
-
}
|
|
470
500
|
await withMeasurementAsync('bundle', async () => await bundle(getRaw(strictDocument), {
|
|
471
501
|
treeShake: false,
|
|
472
502
|
plugins: [
|
|
@@ -626,6 +656,10 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
626
656
|
console.error(`Document '${documentName}' does not exist in the workspace.`);
|
|
627
657
|
return false;
|
|
628
658
|
}
|
|
659
|
+
// Sidebar navigation is OpenAPI-only for now.
|
|
660
|
+
if (!isOpenApiDocument(document)) {
|
|
661
|
+
return false;
|
|
662
|
+
}
|
|
629
663
|
// Generate the navigation structure for the sidebar.
|
|
630
664
|
const navigation = createNavigation(documentName, document);
|
|
631
665
|
// Set the computed navigation structure on the document metadata.
|
|
@@ -671,7 +705,9 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
671
705
|
await addInMemoryDocument({
|
|
672
706
|
name: documentName,
|
|
673
707
|
document: input,
|
|
674
|
-
// Preserve the current metadata
|
|
708
|
+
// Preserve the current metadata. Source url, document hash, and
|
|
709
|
+
// registry meta are typed identically on the OpenAPI and AsyncAPI
|
|
710
|
+
// document shapes, so the union access does not need narrowing.
|
|
675
711
|
documentSource: currentDocument['x-scalar-original-source-url'],
|
|
676
712
|
documentHash: currentDocument['x-scalar-original-document-hash'],
|
|
677
713
|
meta: {
|
|
@@ -895,7 +931,6 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
895
931
|
return applyChangesInput.resolvedDocument;
|
|
896
932
|
};
|
|
897
933
|
const mergedDocument = getNewActiveDocument();
|
|
898
|
-
const newActiveDocument = coerceValue(OpenAPIDocumentSchemaStrict, mergedDocument);
|
|
899
934
|
// Detect whether the rebase folded in any local edits. When the
|
|
900
935
|
// merged result matches the upstream snapshot the pull was
|
|
901
936
|
// effectively a fast-forward (no unsaved local work to carry
|
|
@@ -904,26 +939,24 @@ export const createWorkspaceStore = (workspaceProps) => {
|
|
|
904
939
|
// the document as dirty so the push flow can surface them, the
|
|
905
940
|
// same way `git pull --rebase` leaves you "ahead of origin"
|
|
906
941
|
// once your local commits get replayed on top.
|
|
907
|
-
//
|
|
908
|
-
// We compare the pre-coerce merged document against upstream
|
|
909
|
-
// because `coerceValue` normalises the merged result against
|
|
910
|
-
// the strict schema and that normalisation can introduce diffs
|
|
911
|
-
// even for pure fast-forwards. The merged document is what the
|
|
912
|
-
// two-way merge actually produced, so its byte-for-byte equality
|
|
913
|
-
// with upstream is the real fast-forward signal.
|
|
914
942
|
const hasLocalChangesAgainstUpstream = diff(newDocumentOrigin, mergedDocument).length > 0;
|
|
915
943
|
// The merged result becomes the new saved baseline so a subsequent
|
|
916
944
|
// revert restores to the post-rebase state, not to the
|
|
917
945
|
// pre-rebase original. Mirror the same content into the
|
|
918
946
|
// deprecated intermediate map so any lingering consumer reads
|
|
919
|
-
// the post-rebase state too.
|
|
920
|
-
|
|
921
|
-
|
|
947
|
+
// the post-rebase state too. We do not coerce against the strict
|
|
948
|
+
// OpenAPI schema here — `addInMemoryDocument` re-runs the full
|
|
949
|
+
// ingestion pipeline (which handles AsyncAPI vs OpenAPI separately
|
|
950
|
+
// and coerces OpenAPI documents internally), and pre-coercing
|
|
951
|
+
// would inject OpenAPI fields into AsyncAPI documents and break
|
|
952
|
+
// the document type discriminator.
|
|
953
|
+
originalDocuments[name] = mergedDocument;
|
|
954
|
+
intermediateDocuments[name] = deepClone(mergedDocument);
|
|
922
955
|
// add the new active document to the workspace but don't re-initialize
|
|
923
956
|
await addInMemoryDocument({
|
|
924
957
|
...input,
|
|
925
958
|
document: {
|
|
926
|
-
...
|
|
959
|
+
...mergedDocument,
|
|
927
960
|
// force regeneration of navigation
|
|
928
961
|
// when we are rebasing, we want to ensure that the navigation is always up to date
|
|
929
962
|
[extensions.document.navigation]: undefined,
|
|
@@ -1520,6 +1520,9 @@ declare const SelectedSecuritySchema: import("@scalar/typebox").TObject<{
|
|
|
1520
1520
|
}>]>, import("@scalar/typebox").TObject<{
|
|
1521
1521
|
'$ref-value': import("@scalar/typebox").TRef<"HeaderObject">;
|
|
1522
1522
|
}>]>]>>>;
|
|
1523
|
+
style: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TLiteral<"form">, import("@scalar/typebox").TLiteral<"spaceDelimited">, import("@scalar/typebox").TLiteral<"pipeDelimited">, import("@scalar/typebox").TLiteral<"deepObject">]>>;
|
|
1524
|
+
explode: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
1525
|
+
allowReserved: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
1523
1526
|
}>;
|
|
1524
1527
|
MediaTypeObject: import("@scalar/typebox").TObject<{
|
|
1525
1528
|
schema: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TRef<"SchemaObject">, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
@@ -1865,8 +1868,9 @@ declare const SelectedSecuritySchema: import("@scalar/typebox").TObject<{
|
|
|
1865
1868
|
externalDocs: import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"ExternalDocumentationObject">>;
|
|
1866
1869
|
}>, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
1867
1870
|
'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
1868
|
-
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
1869
1871
|
"x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
|
|
1872
|
+
}>, import("@scalar/typebox").TObject<{
|
|
1873
|
+
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
1870
1874
|
}>, import("@scalar/typebox").TObject<{
|
|
1871
1875
|
'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
1872
1876
|
name: import("@scalar/typebox").TString;
|
|
@@ -3150,6 +3154,9 @@ export declare const AuthSchema: import("@scalar/typebox").TObject<{
|
|
|
3150
3154
|
}>]>, import("@scalar/typebox").TObject<{
|
|
3151
3155
|
'$ref-value': import("@scalar/typebox").TRef<"HeaderObject">;
|
|
3152
3156
|
}>]>]>>>;
|
|
3157
|
+
style: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TLiteral<"form">, import("@scalar/typebox").TLiteral<"spaceDelimited">, import("@scalar/typebox").TLiteral<"pipeDelimited">, import("@scalar/typebox").TLiteral<"deepObject">]>>;
|
|
3158
|
+
explode: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
3159
|
+
allowReserved: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
3153
3160
|
}>;
|
|
3154
3161
|
MediaTypeObject: import("@scalar/typebox").TObject<{
|
|
3155
3162
|
schema: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TRef<"SchemaObject">, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
@@ -3495,8 +3502,9 @@ export declare const AuthSchema: import("@scalar/typebox").TObject<{
|
|
|
3495
3502
|
externalDocs: import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"ExternalDocumentationObject">>;
|
|
3496
3503
|
}>, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
3497
3504
|
'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
3498
|
-
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
3499
3505
|
"x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
|
|
3506
|
+
}>, import("@scalar/typebox").TObject<{
|
|
3507
|
+
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
3500
3508
|
}>, import("@scalar/typebox").TObject<{
|
|
3501
3509
|
'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
3502
3510
|
name: import("@scalar/typebox").TString;
|
|
@@ -4597,6 +4605,9 @@ export declare const AuthSchema: import("@scalar/typebox").TObject<{
|
|
|
4597
4605
|
}>]>, import("@scalar/typebox").TObject<{
|
|
4598
4606
|
'$ref-value': import("@scalar/typebox").TRef<"HeaderObject">;
|
|
4599
4607
|
}>]>]>>>;
|
|
4608
|
+
style: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TLiteral<"form">, import("@scalar/typebox").TLiteral<"spaceDelimited">, import("@scalar/typebox").TLiteral<"pipeDelimited">, import("@scalar/typebox").TLiteral<"deepObject">]>>;
|
|
4609
|
+
explode: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
4610
|
+
allowReserved: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
4600
4611
|
}>;
|
|
4601
4612
|
MediaTypeObject: import("@scalar/typebox").TObject<{
|
|
4602
4613
|
schema: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TRef<"SchemaObject">, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
@@ -4942,8 +4953,9 @@ export declare const AuthSchema: import("@scalar/typebox").TObject<{
|
|
|
4942
4953
|
externalDocs: import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"ExternalDocumentationObject">>;
|
|
4943
4954
|
}>, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
4944
4955
|
'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
4945
|
-
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
4946
4956
|
"x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
|
|
4957
|
+
}>, import("@scalar/typebox").TObject<{
|
|
4958
|
+
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
4947
4959
|
}>, import("@scalar/typebox").TObject<{
|
|
4948
4960
|
'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
4949
4961
|
name: import("@scalar/typebox").TString;
|
|
@@ -6229,6 +6241,9 @@ export declare const DocumentAuthSchema: import("@scalar/typebox").TRecord<impor
|
|
|
6229
6241
|
}>]>, import("@scalar/typebox").TObject<{
|
|
6230
6242
|
'$ref-value': import("@scalar/typebox").TRef<"HeaderObject">;
|
|
6231
6243
|
}>]>]>>>;
|
|
6244
|
+
style: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TLiteral<"form">, import("@scalar/typebox").TLiteral<"spaceDelimited">, import("@scalar/typebox").TLiteral<"pipeDelimited">, import("@scalar/typebox").TLiteral<"deepObject">]>>;
|
|
6245
|
+
explode: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
6246
|
+
allowReserved: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
6232
6247
|
}>;
|
|
6233
6248
|
MediaTypeObject: import("@scalar/typebox").TObject<{
|
|
6234
6249
|
schema: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TRef<"SchemaObject">, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
@@ -6574,8 +6589,9 @@ export declare const DocumentAuthSchema: import("@scalar/typebox").TRecord<impor
|
|
|
6574
6589
|
externalDocs: import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"ExternalDocumentationObject">>;
|
|
6575
6590
|
}>, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
6576
6591
|
'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
6577
|
-
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
6578
6592
|
"x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
|
|
6593
|
+
}>, import("@scalar/typebox").TObject<{
|
|
6594
|
+
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
6579
6595
|
}>, import("@scalar/typebox").TObject<{
|
|
6580
6596
|
'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
6581
6597
|
name: import("@scalar/typebox").TString;
|
|
@@ -7676,6 +7692,9 @@ export declare const DocumentAuthSchema: import("@scalar/typebox").TRecord<impor
|
|
|
7676
7692
|
}>]>, import("@scalar/typebox").TObject<{
|
|
7677
7693
|
'$ref-value': import("@scalar/typebox").TRef<"HeaderObject">;
|
|
7678
7694
|
}>]>]>>>;
|
|
7695
|
+
style: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TLiteral<"form">, import("@scalar/typebox").TLiteral<"spaceDelimited">, import("@scalar/typebox").TLiteral<"pipeDelimited">, import("@scalar/typebox").TLiteral<"deepObject">]>>;
|
|
7696
|
+
explode: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
7697
|
+
allowReserved: import("@scalar/typebox").TOptional<import("@scalar/typebox").TBoolean>;
|
|
7679
7698
|
}>;
|
|
7680
7699
|
MediaTypeObject: import("@scalar/typebox").TObject<{
|
|
7681
7700
|
schema: import("@scalar/typebox").TOptional<import("@scalar/typebox").TUnion<[import("@scalar/typebox").TRef<"SchemaObject">, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
@@ -8021,8 +8040,9 @@ export declare const DocumentAuthSchema: import("@scalar/typebox").TRecord<impor
|
|
|
8021
8040
|
externalDocs: import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"ExternalDocumentationObject">>;
|
|
8022
8041
|
}>, import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
8023
8042
|
'x-original-oas-version': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
8024
|
-
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
8025
8043
|
"x-scalar-navigation": import("@scalar/typebox").TOptional<import("@scalar/typebox").TRef<"TraversedDocumentObject">>;
|
|
8044
|
+
}>, import("@scalar/typebox").TObject<{
|
|
8045
|
+
'x-scalar-original-source-url': import("@scalar/typebox").TOptional<import("@scalar/typebox").TString>;
|
|
8026
8046
|
}>, import("@scalar/typebox").TObject<{
|
|
8027
8047
|
'x-tagGroups': import("@scalar/typebox").TOptional<import("@scalar/typebox").TArray<import("@scalar/typebox").TIntersect<[import("@scalar/typebox").TObject<{
|
|
8028
8048
|
name: import("@scalar/typebox").TString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/entities/auth/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,iBAAiB,CAAA;AAoBnD,QAAA,MAAM,mBAAmB;;;;IAKxB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE9D,QAAA,MAAM,iBAAiB;;;;;;;IAMtB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAQ1D,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB3B,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEtE,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKhB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B9B,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAEpE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAqD,CAAA;AACnF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE1D,QAAA,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/entities/auth/schema.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMrB,CAAA;AAEF,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAA;AAE5C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAyC,CAAA;AACxE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA"}
|
package/dist/events/bus.d.ts
CHANGED
|
@@ -5,6 +5,37 @@ type Unsubscribe = () => void;
|
|
|
5
5
|
* if the event allows undefined, otherwise requires it.
|
|
6
6
|
*/
|
|
7
7
|
type EventListener<E extends keyof ApiReferenceEvents> = undefined extends ApiReferenceEvents[E] ? (payload?: ApiReferenceEvents[E]) => void : (payload: ApiReferenceEvents[E]) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Tagged-union representation of every event — one branch per event key, each
|
|
10
|
+
* pairing the event name with its specific payload type.
|
|
11
|
+
*
|
|
12
|
+
* Because `event` acts as the discriminant, TypeScript narrows `payload` to
|
|
13
|
+
* the exact type of the matched event when you check `event === '...'` inside
|
|
14
|
+
* a listener (including when the argument is destructured).
|
|
15
|
+
*/
|
|
16
|
+
export type AnyEvent = {
|
|
17
|
+
[E in keyof ApiReferenceEvents]: {
|
|
18
|
+
event: E;
|
|
19
|
+
payload: ApiReferenceEvents[E];
|
|
20
|
+
};
|
|
21
|
+
}[keyof ApiReferenceEvents];
|
|
22
|
+
/**
|
|
23
|
+
* Listener type for `onAny` subscriptions.
|
|
24
|
+
*
|
|
25
|
+
* Receives a single tagged-union object containing the concrete `event` name
|
|
26
|
+
* and its `payload`. Narrowing on `event` narrows `payload` to the exact type
|
|
27
|
+
* for that event — no manual casting or runtime payload checks required just
|
|
28
|
+
* to satisfy types.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* bus.onAny(({ event, payload }) => {
|
|
32
|
+
* if (event === 'log:user-login') {
|
|
33
|
+
* // payload is { uid: string; email?: string; teamUid: string }
|
|
34
|
+
* posthog.identify(payload.uid)
|
|
35
|
+
* }
|
|
36
|
+
* })
|
|
37
|
+
*/
|
|
38
|
+
export type AnyEventListener = (event: AnyEvent) => void;
|
|
8
39
|
/**
|
|
9
40
|
* Helper type for emit parameters that uses rest parameters
|
|
10
41
|
* for a cleaner API surface.
|
|
@@ -24,6 +55,7 @@ type EmitParameters<E extends keyof ApiReferenceEvents> = undefined extends ApiR
|
|
|
24
55
|
*
|
|
25
56
|
* - Full type safety for event names and payloads
|
|
26
57
|
* - Debug mode for development
|
|
58
|
+
* - Listen to every event via `onAny` / `offAny`
|
|
27
59
|
*/
|
|
28
60
|
export type WorkspaceEventBus = {
|
|
29
61
|
/**
|
|
@@ -68,6 +100,44 @@ export type WorkspaceEventBus = {
|
|
|
68
100
|
* })
|
|
69
101
|
*/
|
|
70
102
|
once<E extends keyof ApiReferenceEvents>(event: E, listener: EventListener<E>): Unsubscribe;
|
|
103
|
+
/**
|
|
104
|
+
* Subscribe to every event emitted on the bus.
|
|
105
|
+
*
|
|
106
|
+
* The listener receives the concrete event name as the first argument and
|
|
107
|
+
* the (proxy-unpacked) payload as the second. Use this on the consumer side
|
|
108
|
+
* when you need to handle every event generically — for example, analytics,
|
|
109
|
+
* logging, or forwarding events across a boundary.
|
|
110
|
+
*
|
|
111
|
+
* Because the listener type is a discriminated union over every event key,
|
|
112
|
+
* narrowing on `event` inside the listener body also narrows `payload` to
|
|
113
|
+
* its exact type.
|
|
114
|
+
*
|
|
115
|
+
* @param listener - Callback invoked for every emitted event
|
|
116
|
+
* @returns Unsubscribe function to remove the listener
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* const off = bus.onAny((event, payload) => {
|
|
120
|
+
* if (event === 'log:user-login') {
|
|
121
|
+
* // payload is narrowed to the login payload type
|
|
122
|
+
* posthog.identify(payload.uid)
|
|
123
|
+
* }
|
|
124
|
+
* })
|
|
125
|
+
*
|
|
126
|
+
* // Clean up
|
|
127
|
+
* off()
|
|
128
|
+
*/
|
|
129
|
+
onAny(listener: AnyEventListener): Unsubscribe;
|
|
130
|
+
/**
|
|
131
|
+
* Remove a wildcard listener previously registered with `onAny`.
|
|
132
|
+
*
|
|
133
|
+
* @param listener - The listener function to remove
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* const handler = (event, payload) => console.log(event, payload)
|
|
137
|
+
* bus.onAny(handler)
|
|
138
|
+
* bus.offAny(handler)
|
|
139
|
+
*/
|
|
140
|
+
offAny(listener: AnyEventListener): void;
|
|
71
141
|
/**
|
|
72
142
|
* Emit an event with its payload
|
|
73
143
|
*
|
package/dist/events/bus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,KAAK,WAAW,GAAG,MAAM,IAAI,CAAA;AAE7B;;;GAGG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAI,SAAS,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAC5F,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,GACzC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AAE5C;;;;;;GAMG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAI,SAAS,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAC7F,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1G,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE7G
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD,KAAK,WAAW,GAAG,MAAM,IAAI,CAAA;AAE7B;;;GAGG;AACH,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAI,SAAS,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAC5F,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,GACzC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AAE5C;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG;KACpB,CAAC,IAAI,MAAM,kBAAkB,GAAG;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;KAAE;CAC9E,CAAC,MAAM,kBAAkB,CAAC,CAAA;AAE3B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;AAExD;;;;;;GAMG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,MAAM,kBAAkB,IAAI,SAAS,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAC7F,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1G,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE7G;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;;;;;;;;;;;OAcG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;IAEzF;;;;;;;;;;OAUG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAEnF;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;IAE3F;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,CAAA;IAE9C;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAExC;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,GAAG,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAE1E;;OAEG;IACH,mBAAmB,CAAC,IAAI,IAAI,CAAA;CAC7B,CAAA;AAED;;GAEG;AACH,KAAK,eAAe,GAAG;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAS,eAAoB,KAAG,iBAwNvE,CAAA"}
|