@scalar/schemas 0.3.0 → 0.3.2

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # @scalar/schemas
2
2
 
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#9313](https://github.com/scalar/scalar/pull/9313): feat: add AsyncAPI connection URL builder and server list helpers
8
+
9
+ ## 0.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#9311](https://github.com/scalar/scalar/pull/9311): feat: add typed AsyncAPI WebSocket binding schema
14
+ - Add `asyncApiWsBindingObject` for `bindings.ws` with `method`, `query`, `headers`, and `bindingVersion`
15
+ - Add `asyncApiSchemaObjectOrReference` (Schema Object | Reference Object) for WebSocket binding fields that exclude Multi Format Schema Object
16
+ - Regenerate `@scalar/types/asyncapi/3.1` types
17
+
3
18
  ## 0.3.0
4
19
 
5
20
  ### Minor Changes
@@ -46,5 +46,7 @@ export declare const asyncApiObjectSchema: import("@scalar/validation").Intersec
46
46
  conflictCheckedAgainstHash: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
47
47
  hasConflict: import("@scalar/validation").OptionalSchema<import("@scalar/validation").BooleanSchema>;
48
48
  }>>;
49
+ }>, import("@scalar/validation").ObjectSchema<{
50
+ 'x-scalar-selected-server': import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
49
51
  }>]>]>;
50
52
  //# sourceMappingURL=asyncapi-object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asyncapi-object.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/asyncapi-object.ts"],"names":[],"mappings":"AA8DA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAG/B,CAAA"}
1
+ {"version":3,"file":"asyncapi-object.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/asyncapi-object.ts"],"names":[],"mappings":"AAgEA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAG/B,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { intersection, object, optional, string } from '@scalar/validation';
2
2
  import { XOriginalAasVersion, XScalarIsDirty, XScalarNavigation, XScalarOriginalDocumentHash, XScalarOriginalSourceUrl, XScalarRegistryMeta, XScalarWatchMode, } from '../../extensions/document/index.js';
3
+ import { XScalarSelectedServer } from '../../extensions/server/index.js';
3
4
  import { asyncApiChannelsObject } from './channel.js';
4
5
  import { asyncApiComponentsObject } from './components.js';
5
6
  import { asyncApiInfoObject } from './info.js';
@@ -14,6 +15,7 @@ const asyncApiExtensions = intersection([
14
15
  XScalarIsDirty,
15
16
  XScalarWatchMode,
16
17
  XScalarRegistryMeta,
18
+ XScalarSelectedServer,
17
19
  ], {
18
20
  typeName: 'AsyncApiExtensions',
19
21
  typeComment: 'AsyncAPI document-level Scalar extensions shared with workspace tooling.',
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAA6B,MAAM,oBAAoB,CAAA;AA+C3E,eAAO,MAAM,4BAA4B,mEAGxC,CAAA;AAED,eAAO,MAAM,6BAA6B,mEAGzC,CAAA;AAED,eAAO,MAAM,+BAA+B,mEAG3C,CAAA;AAED,eAAO,MAAM,6BAA6B,mEAGzC,CAAA"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAA6B,MAAM,oBAAoB,CAAA;AAiD3E,eAAO,MAAM,4BAA4B,mEAGxC,CAAA;AAED,eAAO,MAAM,6BAA6B,mEAGzC,CAAA;AAED,eAAO,MAAM,+BAA+B,mEAG3C,CAAA;AAED,eAAO,MAAM,6BAA6B,mEAGzC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { object, optional, unknown } from '@scalar/validation';
2
+ import { asyncApiWsBindingObject } from './ws-binding.js';
2
3
  /**
3
4
  * Protocol keys listed for binding objects in AsyncAPI 3.1.0. Values are
4
5
  * protocol-specific; we accept any JSON-compatible structure.
@@ -31,7 +32,7 @@ const optionalBindingPayload = () => optional(unknown({
31
32
  const bindingObjectProperties = () => {
32
33
  const properties = {};
33
34
  for (const key of ASYNCAPI_3_1_BINDING_PROTOCOL_KEYS) {
34
- properties[key] = optionalBindingPayload();
35
+ properties[key] = key === 'ws' ? optional(asyncApiWsBindingObject) : optionalBindingPayload();
35
36
  }
36
37
  return properties;
37
38
  };
@@ -18,9 +18,10 @@ export { asyncApiOperationTraitObject } from './operation-trait.js';
18
18
  export { asyncApiParameterObject } from './parameter.js';
19
19
  export { asyncApiParametersObject } from './parameters.js';
20
20
  export { type MaybeRefFn, asyncApiReferenceObject, asyncApiResolvedReference, recursiveRef, } from './reference.js';
21
- export { asyncApiMultiFormatSchemaObject, asyncApiSchemaPayload } from './schema-payload.js';
21
+ export { asyncApiMultiFormatSchemaObject, asyncApiSchemaObjectOrReference, asyncApiSchemaPayload, } from './schema-payload.js';
22
22
  export { asyncApiSecuritySchemeObject } from './security-scheme.js';
23
23
  export { asyncApiServerObject, asyncApiServersObject } from './server.js';
24
24
  export { asyncApiServerVariableObject } from './server-variable.js';
25
25
  export { asyncApiTagObject, asyncApiTagsObject } from './tag.js';
26
+ export { asyncApiWsBindingObject } from './ws-binding.js';
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EACL,KAAK,UAAU,EACf,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,GACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EACL,KAAK,UAAU,EACf,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,GACb,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA"}
@@ -18,8 +18,9 @@ export { asyncApiOperationTraitObject } from './operation-trait.js';
18
18
  export { asyncApiParameterObject } from './parameter.js';
19
19
  export { asyncApiParametersObject } from './parameters.js';
20
20
  export { asyncApiReferenceObject, asyncApiResolvedReference, recursiveRef, } from './reference.js';
21
- export { asyncApiMultiFormatSchemaObject, asyncApiSchemaPayload } from './schema-payload.js';
21
+ export { asyncApiMultiFormatSchemaObject, asyncApiSchemaObjectOrReference, asyncApiSchemaPayload, } from './schema-payload.js';
22
22
  export { asyncApiSecuritySchemeObject } from './security-scheme.js';
23
23
  export { asyncApiServerObject, asyncApiServersObject } from './server.js';
24
24
  export { asyncApiServerVariableObject } from './server-variable.js';
25
25
  export { asyncApiTagObject, asyncApiTagsObject } from './tag.js';
26
+ export { asyncApiWsBindingObject } from './ws-binding.js';
@@ -2,6 +2,8 @@ export declare const asyncApiMultiFormatSchemaObject: import("@scalar/validation
2
2
  schemaFormat: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
3
3
  schema: import("@scalar/validation").UnknownSchema;
4
4
  }>;
5
+ /** Schema Object | Reference Object */
6
+ export declare const asyncApiSchemaObjectOrReference: import("@scalar/validation").Schema;
5
7
  /** Multi Format Schema Object | Schema Object | Reference Object */
6
8
  export declare const asyncApiSchemaPayload: import("@scalar/validation").Schema;
7
9
  //# sourceMappingURL=schema-payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-payload.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/schema-payload.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,+BAA+B;;;EAa3C,CAAA;AAcD,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,qCAIjC,CAAA"}
1
+ {"version":3,"file":"schema-payload.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/schema-payload.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,+BAA+B;;;EAa3C,CAAA;AAcD,uCAAuC;AACvC,eAAO,MAAM,+BAA+B,qCAAwC,CAAA;AAEpF,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,qCAIjC,CAAA"}
@@ -16,6 +16,8 @@ const asyncApiSchemaJsonShape = union([
16
16
  typeComment: 'JSON Schema Draft 07 compatible schema (boolean true/false or object); see AsyncAPI Schema Object.',
17
17
  }),
18
18
  ], { typeName: 'AsyncApiSchemaJsonShape' });
19
+ /** Schema Object | Reference Object */
20
+ export const asyncApiSchemaObjectOrReference = recursiveRef(asyncApiSchemaJsonShape);
19
21
  /** Multi Format Schema Object | Schema Object | Reference Object */
20
22
  export const asyncApiSchemaPayload = recursiveRef(union([asyncApiMultiFormatSchemaObject, asyncApiSchemaJsonShape], {
21
23
  typeName: 'AsyncApiMultiFormatSchemaOrSchemaObject',
@@ -0,0 +1,12 @@
1
+ /**
2
+ * AsyncAPI WebSocket binding (channel / operation / server).
3
+ *
4
+ * @see https://github.com/asyncapi/bindings/tree/master/websockets
5
+ */
6
+ export declare const asyncApiWsBindingObject: import("@scalar/validation").ObjectSchema<{
7
+ method: import("@scalar/validation").OptionalSchema<import("@scalar/validation").UnionSchema<readonly [import("@scalar/validation").LiteralSchema<"GET">, import("@scalar/validation").LiteralSchema<"POST">]>>;
8
+ query: import("@scalar/validation").OptionalSchema<import("@scalar/validation").Schema>;
9
+ headers: import("@scalar/validation").OptionalSchema<import("@scalar/validation").Schema>;
10
+ bindingVersion: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
11
+ }>;
12
+ //# sourceMappingURL=ws-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-binding.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/ws-binding.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;EAyBnC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { literal, object, optional, string, union } from '@scalar/validation';
2
+ import { asyncApiSchemaObjectOrReference } from './schema-payload.js';
3
+ /**
4
+ * AsyncAPI WebSocket binding (channel / operation / server).
5
+ *
6
+ * @see https://github.com/asyncapi/bindings/tree/master/websockets
7
+ */
8
+ export const asyncApiWsBindingObject = object({
9
+ method: optional(union([literal('GET'), literal('POST')], {
10
+ typeComment: 'HTTP method used when establishing the WebSocket connection (typically GET).',
11
+ })),
12
+ query: optional(asyncApiSchemaObjectOrReference, {
13
+ typeComment: 'Schema Object describing WebSocket handshake query parameters (type object with properties). May be a Reference Object.',
14
+ }),
15
+ headers: optional(asyncApiSchemaObjectOrReference, {
16
+ typeComment: 'Schema Object describing HTTP headers sent during the WebSocket handshake (type object with properties). May be a Reference Object.',
17
+ }),
18
+ bindingVersion: optional(string({
19
+ typeComment: 'Version of the WebSocket binding. When omitted, "latest" is assumed per the binding spec.',
20
+ })),
21
+ }, {
22
+ typeName: 'AsyncApiWsBindingObject',
23
+ typeComment: 'AsyncAPI WebSocket binding for handshake method, query, and headers.',
24
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"x-scalar-selected-server.d.ts","sourceRoot":"","sources":["../../../src/extensions/server/x-scalar-selected-server.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB;;EAWjC,CAAA"}
1
+ {"version":3,"file":"x-scalar-selected-server.d.ts","sourceRoot":"","sources":["../../../src/extensions/server/x-scalar-selected-server.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,qBAAqB;;EAmBjC,CAAA"}
@@ -1,10 +1,12 @@
1
1
  import { object, optional, string } from '@scalar/validation';
2
2
  import { typeCommentWithExample } from '../type-comment.js';
3
3
  export const XScalarSelectedServer = object({
4
- 'x-scalar-selected-server': optional(string({ typeComment: 'The URL of the currently selected server' })),
4
+ 'x-scalar-selected-server': optional(string({
5
+ typeComment: 'The currently selected server. For OpenAPI documents this is the server URL; for AsyncAPI documents this is the server name (key in `document.servers`).',
6
+ })),
5
7
  }, {
6
8
  typeName: 'XScalarSelectedServer',
7
- typeComment: typeCommentWithExample('The URL of the currently selected server for this API description.', {
9
+ typeComment: typeCommentWithExample('The currently selected server for this API description. For OpenAPI documents the value is the server URL; for AsyncAPI documents the value is the server name (key in `document.servers`).', {
8
10
  language: 'yaml',
9
11
  body: 'x-scalar-selected-server: https://api.example.com',
10
12
  }),
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "schemas",
15
15
  "scalar"
16
16
  ],
17
- "version": "0.3.0",
17
+ "version": "0.3.2",
18
18
  "engines": {
19
19
  "node": ">=22"
20
20
  },
@@ -41,12 +41,12 @@
41
41
  "CHANGELOG.md"
42
42
  ],
43
43
  "dependencies": {
44
- "@scalar/validation": "0.6.0",
45
- "@scalar/helpers": "0.8.0"
44
+ "@scalar/helpers": "0.8.0",
45
+ "@scalar/validation": "0.6.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "vitest": "4.1.0",
49
- "@scalar/types": "0.12.0"
49
+ "@scalar/types": "0.12.2"
50
50
  },
51
51
  "scripts": {
52
52
  "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",