@scalar/schemas 0.11.0 → 0.12.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.
- package/CHANGELOG.md +10 -0
- package/dist/asyncapi/3.1/reference.d.ts.map +1 -1
- package/dist/asyncapi/3.1/reference.js +11 -3
- package/dist/extensions/operation/x-code-samples.d.ts +10 -0
- package/dist/extensions/operation/x-code-samples.d.ts.map +1 -1
- package/dist/extensions/operation/x-code-samples.js +2 -0
- package/dist/openapi/3.1/operation.d.ts +8 -0
- package/dist/openapi/3.1/operation.d.ts.map +1 -1
- package/dist/openapi/3.1/reference.d.ts.map +1 -1
- package/dist/openapi/3.1/reference.js +11 -3
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @scalar/schemas
|
|
2
2
|
|
|
3
|
+
## 0.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#10310](https://github.com/scalar/scalar/pull/10310): Connect SDK code samples to named request body examples using optional example and contentType fields. Keep the example switcher available for static samples and use the selected request example in API client snippets. Display unavailable linked samples as a localized status message in all supported languages.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#10315](https://github.com/scalar/scalar/pull/10315): Stop following `$ref-value` chains at the first reference that loops back, so a document whose references point at each other (or at themselves) no longer overflows the stack while it loads.
|
|
12
|
+
|
|
3
13
|
## 0.11.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAA2D,MAAM,oBAAoB,CAAA;AAIzG;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;EAKnC,CAAA;
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/asyncapi/3.1/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAA2D,MAAM,oBAAoB,CAAA;AAIzG;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;AAElD;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;EAKnC,CAAA;AAmBD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ,MAAM,KAAG,MAC4D,CAAA;AAEvH,oEAAoE;AACpE,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAA4D,CAAA"}
|
|
@@ -8,11 +8,19 @@ import { referenceExtensions } from '../../general/bundler-extensions.js';
|
|
|
8
8
|
export const asyncApiReferenceObject = object({
|
|
9
9
|
'$ref': string({ typeComment: 'REQUIRED. The reference string.' }),
|
|
10
10
|
}, { typeName: 'AsyncApiReferenceObject', typeComment: 'JSON Reference for AsyncAPI components.' });
|
|
11
|
+
/**
|
|
12
|
+
* Follows a chain of references to the value at its end. References can form a loop (`A` points at
|
|
13
|
+
* `B` and `B` points back at `A`, or a schema points at itself), so we stop at the first reference we
|
|
14
|
+
* have already passed. Without that, a loop in an untrusted document overflows the stack.
|
|
15
|
+
*/
|
|
11
16
|
const e = (value) => {
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
let current = value;
|
|
19
|
+
while (isObject(current) && '$ref' in current && !seen.has(current)) {
|
|
20
|
+
seen.add(current);
|
|
21
|
+
current = current['$ref-value'];
|
|
14
22
|
}
|
|
15
|
-
return
|
|
23
|
+
return current;
|
|
16
24
|
};
|
|
17
25
|
/**
|
|
18
26
|
* Reference Object with resolved `$ref-value` and bundle extensions.
|
|
@@ -2,22 +2,30 @@ export declare const XCodeSample: import("@scalar/validation").ObjectSchema<{
|
|
|
2
2
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
3
3
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
4
4
|
source: import("@scalar/validation").StringSchema;
|
|
5
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
6
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
5
7
|
}>;
|
|
6
8
|
export declare const XCodeSamples: import("@scalar/validation").ObjectSchema<{
|
|
7
9
|
'x-codeSamples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
8
10
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
9
11
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
10
12
|
source: import("@scalar/validation").StringSchema;
|
|
13
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
14
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
11
15
|
}>>>;
|
|
12
16
|
'x-code-samples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
13
17
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
14
18
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
15
19
|
source: import("@scalar/validation").StringSchema;
|
|
20
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
21
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
16
22
|
}>>>;
|
|
17
23
|
'x-custom-examples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
18
24
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
19
25
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
20
26
|
source: import("@scalar/validation").StringSchema;
|
|
27
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
28
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
21
29
|
}>>>;
|
|
22
30
|
'x-readme': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
|
|
23
31
|
'code-samples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
@@ -43,6 +51,8 @@ export declare const XCodeSamples: import("@scalar/validation").ObjectSchema<{
|
|
|
43
51
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
44
52
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
45
53
|
source: import("@scalar/validation").StringSchema;
|
|
54
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
55
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
46
56
|
}>>>;
|
|
47
57
|
}>;
|
|
48
58
|
//# sourceMappingURL=x-code-samples.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x-code-samples.d.ts","sourceRoot":"","sources":["../../../src/extensions/operation/x-code-samples.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"x-code-samples.d.ts","sourceRoot":"","sources":["../../../src/extensions/operation/x-code-samples.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW;;;;;;EAYvB,CAAA;AA0CD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BxB,CAAA"}
|
|
@@ -4,6 +4,8 @@ export const XCodeSample = object({
|
|
|
4
4
|
lang: optional(string({ typeComment: 'Programming language for syntax highlighting' })),
|
|
5
5
|
label: optional(string({ typeComment: 'Label shown in the code sample picker' })),
|
|
6
6
|
source: string({ typeComment: 'Source code for the sample' }),
|
|
7
|
+
example: optional(string({ typeComment: 'Request body example key used by this sample' })),
|
|
8
|
+
contentType: optional(string({ typeComment: 'Request body media type used by this sample' })),
|
|
7
9
|
}, {
|
|
8
10
|
typeName: 'XCodeSample',
|
|
9
11
|
typeComment: 'A single code sample for documentation or examples',
|
|
@@ -37,16 +37,22 @@ export declare const operation: import("@scalar/validation").IntersectionSchema<
|
|
|
37
37
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
38
38
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
39
39
|
source: import("@scalar/validation").StringSchema;
|
|
40
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
41
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
40
42
|
}>>>;
|
|
41
43
|
'x-code-samples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
42
44
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
43
45
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
44
46
|
source: import("@scalar/validation").StringSchema;
|
|
47
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
48
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
45
49
|
}>>>;
|
|
46
50
|
'x-custom-examples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
47
51
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
48
52
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
49
53
|
source: import("@scalar/validation").StringSchema;
|
|
54
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
55
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
50
56
|
}>>>;
|
|
51
57
|
'x-readme': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ObjectSchema<{
|
|
52
58
|
'code-samples': import("@scalar/validation").OptionalSchema<import("@scalar/validation").ArraySchema<import("@scalar/validation").ObjectSchema<{
|
|
@@ -72,6 +78,8 @@ export declare const operation: import("@scalar/validation").IntersectionSchema<
|
|
|
72
78
|
lang: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
73
79
|
label: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
74
80
|
source: import("@scalar/validation").StringSchema;
|
|
81
|
+
example: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
82
|
+
contentType: import("@scalar/validation").OptionalSchema<import("@scalar/validation").StringSchema>;
|
|
75
83
|
}>>>;
|
|
76
84
|
}>, import("@scalar/validation").ObjectSchema<{
|
|
77
85
|
'x-scalar-stability': import("@scalar/validation").OptionalSchema<import("@scalar/validation").UnionSchema<readonly [import("@scalar/validation").LiteralSchema<"deprecated">, import("@scalar/validation").LiteralSchema<"experimental">, import("@scalar/validation").LiteralSchema<"stable">]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/openapi/3.1/operation.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../src/openapi/3.1/operation.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiDrB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/openapi/3.1/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAA2D,MAAM,oBAAoB,CAAA;AAyBzG;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/openapi/3.1/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAA2D,MAAM,oBAAoB,CAAA;AAyBzG;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAAmC,CAAA;AAmB7E;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MACiE,CAAA"}
|
|
@@ -19,11 +19,19 @@ const reference = object({
|
|
|
19
19
|
* where references follow JSON Schema / OpenAPI schema rules only.
|
|
20
20
|
*/
|
|
21
21
|
export const normalRef = (inner) => union([reference, inner]);
|
|
22
|
+
/**
|
|
23
|
+
* Follows a chain of references to the value at its end. References can form a loop (`A` points at
|
|
24
|
+
* `B` and `B` points back at `A`, or a schema points at itself), so we stop at the first reference we
|
|
25
|
+
* have already passed. Without that, a loop in an untrusted document overflows the stack.
|
|
26
|
+
*/
|
|
22
27
|
const e = (value) => {
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
const seen = new Set();
|
|
29
|
+
let current = value;
|
|
30
|
+
while (isObject(current) && '$ref' in current && !seen.has(current)) {
|
|
31
|
+
seen.add(current);
|
|
32
|
+
current = current['$ref-value'];
|
|
25
33
|
}
|
|
26
|
-
return
|
|
34
|
+
return current;
|
|
27
35
|
};
|
|
28
36
|
/**
|
|
29
37
|
* Inline object or Reference Object with resolved `$ref-value` and bundle extensions.
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"schemas",
|
|
15
15
|
"scalar"
|
|
16
16
|
],
|
|
17
|
-
"version": "0.
|
|
17
|
+
"version": "0.12.0",
|
|
18
18
|
"engines": {
|
|
19
19
|
"node": ">=22"
|
|
20
20
|
},
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"CHANGELOG.md"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@scalar/helpers": "0.
|
|
45
|
-
"@scalar/validation": "0.6.
|
|
44
|
+
"@scalar/helpers": "0.14.0",
|
|
45
|
+
"@scalar/validation": "0.6.5"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@scalar/types": "0.
|
|
48
|
+
"@scalar/types": "0.22.0",
|
|
49
49
|
"vitest": "4.1.10"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|