@scalar/oas-utils 0.1.10 → 0.1.12

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,18 @@
1
1
  # @scalar/oas-utils
2
2
 
3
+ ## 0.1.12
4
+
5
+ ### Patch Changes
6
+
7
+ - 61b8ddc: fix: doesn’t render preview for mimetype variations like application/foobar+json
8
+ - 165b901: feat: dynamic values for generated examples
9
+
10
+ ## 0.1.11
11
+
12
+ ### Patch Changes
13
+
14
+ - 624604e: chore: move http status codes to oas-utils
15
+
3
16
  ## 0.1.10
4
17
 
5
18
  ### Patch Changes
@@ -17,5 +17,9 @@ export declare const getExampleFromSchema: (schema: Record<string, any>, options
17
17
  * @default undefined
18
18
  */
19
19
  mode?: 'read' | 'write';
20
+ /**
21
+ * Dynamic values to add to the example.
22
+ */
23
+ variables?: Record<string, any>;
20
24
  }, level?: number) => any;
21
25
  //# sourceMappingURL=getExampleFromSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getExampleFromSchema.d.ts","sourceRoot":"","sources":["../src/getExampleFromSchema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,WACvB,OAAO,MAAM,EAAE,GAAG,CAAC,YACjB;IACR;;;QAGI;IACJ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB,UACM,MAAM,KACZ,GA+NF,CAAA"}
1
+ {"version":3,"file":"getExampleFromSchema.d.ts","sourceRoot":"","sources":["../src/getExampleFromSchema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,WACvB,OAAO,MAAM,EAAE,GAAG,CAAC,YACjB;IACR;;;QAGI;IACJ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC,UACM,MAAM,KACZ,GA8OF,CAAA"}
@@ -0,0 +1,7 @@
1
+ export type HttpStatusCode = {
2
+ name: string;
3
+ url: string;
4
+ };
5
+ export type HttpStatusCodes = Record<string, HttpStatusCode>;
6
+ export declare const httpStatusCodes: HttpStatusCodes;
7
+ //# sourceMappingURL=httpStatusCodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpStatusCodes.d.ts","sourceRoot":"","sources":["../src/httpStatusCodes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAE5D,eAAO,MAAM,eAAe,EAAE,eAyP7B,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,17 @@
1
1
  export { createHash } from './createHash';
2
+ export { defaultStateFactory, ssrState } from './ssrState';
2
3
  export { fetchSpecFromUrl } from './fetch-spec';
3
4
  export { getExampleFromSchema } from './getExampleFromSchema';
4
5
  export { getHarRequest } from './getHarRequest';
5
6
  export { getParametersFromOperation } from './getParametersFromOperation';
6
7
  export { getRequestBodyFromOperation } from './getRequestBodyFromOperation';
7
8
  export { getRequestFromOperation } from './getRequestFromOperation';
8
- export { normalizeMimeTypeObject } from './normalizeMimeTypeObject';
9
+ export { httpStatusCodes } from './httpStatusCodes';
9
10
  export { json2xml } from './json2xml';
10
- export { formatJsonOrYamlString, isJsonString, json, parseJsonOrYaml, transformToJson, yaml, } from './parse';
11
+ export { normalizeMimeTypeObject } from './normalizeMimeTypeObject';
11
12
  export { prettyPrintJson } from './prettyPrintJson';
12
- export { defaultStateFactory, ssrState } from './ssrState';
13
+ export * from './normalizeMimeType';
13
14
  export * from './types';
15
+ export type { HttpStatusCode, HttpStatusCodes } from './httpStatusCodes';
16
+ export { formatJsonOrYamlString, isJsonString, json, parseJsonOrYaml, transformToJson, yaml, } from './parse';
14
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,IAAI,EACJ,eAAe,EACf,eAAe,EACf,IAAI,GACL,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1D,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,cAAc,qBAAqB,CAAA;AACnC,cAAc,SAAS,CAAA;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,IAAI,EACJ,eAAe,EACf,eAAe,EACf,IAAI,GACL,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -15,6 +15,9 @@ const createHash = (input) => {
15
15
  return hash;
16
16
  };
17
17
 
18
+ const defaultStateFactory = () => ({});
19
+ const ssrState = typeof window !== "undefined" ? window.__SCALAR__ ?? defaultStateFactory() : defaultStateFactory();
20
+
18
21
  const yaml = {
19
22
  /** Parse and throw if the return value is not an object */
20
23
  parse: (val) => {
@@ -114,6 +117,15 @@ const getExampleFromSchema = (schema, options, level = 0) => {
114
117
  if (options?.mode === "read" && schema.writeOnly) {
115
118
  return void 0;
116
119
  }
120
+ if (schema["x-variable"]) {
121
+ const value = options?.variables?.[schema["x-variable"]];
122
+ if (value !== void 0) {
123
+ if (schema.type === "number" || schema.type === "integer") {
124
+ return parseInt(value, 10);
125
+ }
126
+ return value;
127
+ }
128
+ }
117
129
  if (Array.isArray(schema.examples) && schema.examples.length > 0) {
118
130
  return schema.examples[0];
119
131
  }
@@ -364,6 +376,10 @@ function json2xml(data, tab) {
364
376
  return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, "");
365
377
  }
366
378
 
379
+ function normalizeMimeType(contentType) {
380
+ return contentType.replace(/;.*$/, "").replace(/\/.+\+/, "/").trim();
381
+ }
382
+
367
383
  function normalizeMimeTypeObject(content) {
368
384
  if (!content) {
369
385
  return content;
@@ -372,7 +388,7 @@ function normalizeMimeTypeObject(content) {
372
388
  ...content
373
389
  };
374
390
  Object.keys(newContent).forEach((key) => {
375
- const newKey = key.replace(/;.*$/, "").replace(/\/.+\+/, "/").trim();
391
+ const newKey = normalizeMimeType(key);
376
392
  newContent[newKey] = newContent[key];
377
393
  if (key !== newKey) {
378
394
  delete newContent[key];
@@ -572,7 +588,255 @@ const getRequestFromOperation = (operation, options, selectedExampleKey) => {
572
588
  };
573
589
  };
574
590
 
575
- const defaultStateFactory = () => ({});
576
- const ssrState = typeof window !== "undefined" ? window.__SCALAR__ ?? defaultStateFactory() : defaultStateFactory();
591
+ const httpStatusCodes = {
592
+ 100: {
593
+ name: "Continue",
594
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100"
595
+ },
596
+ 101: {
597
+ name: "Switching Protocols",
598
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/101"
599
+ },
600
+ 102: {
601
+ name: "Processing",
602
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/102"
603
+ },
604
+ 103: {
605
+ name: "Early Hints",
606
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/103"
607
+ },
608
+ 200: {
609
+ name: "OK",
610
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200"
611
+ },
612
+ 201: {
613
+ name: "Created",
614
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201"
615
+ },
616
+ 202: {
617
+ name: "Accepted",
618
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202"
619
+ },
620
+ 203: {
621
+ name: "Non-Authoritative Information",
622
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/203"
623
+ },
624
+ 204: {
625
+ name: "No Content",
626
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204"
627
+ },
628
+ 205: {
629
+ name: "Reset Content",
630
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/205"
631
+ },
632
+ 206: {
633
+ name: "Partial Content",
634
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206"
635
+ },
636
+ 207: {
637
+ name: "Multi-Status",
638
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/207"
639
+ },
640
+ 208: {
641
+ name: "Already Reported",
642
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/208"
643
+ },
644
+ 226: {
645
+ name: "IM Used",
646
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/226"
647
+ },
648
+ 300: {
649
+ name: "Multiple Choices",
650
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/300"
651
+ },
652
+ 301: {
653
+ name: "Moved Permanently",
654
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301"
655
+ },
656
+ 302: {
657
+ name: "Found",
658
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302"
659
+ },
660
+ 303: {
661
+ name: "See Other",
662
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303"
663
+ },
664
+ 304: {
665
+ name: "Not Modified",
666
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304"
667
+ },
668
+ 305: {
669
+ name: "Use Proxy",
670
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/305"
671
+ },
672
+ 306: {
673
+ name: "(Unused)",
674
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/306"
675
+ },
676
+ 307: {
677
+ name: "Temporary Redirect",
678
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307"
679
+ },
680
+ 308: {
681
+ name: "Permanent Redirect",
682
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308"
683
+ },
684
+ 400: {
685
+ name: "Bad Request",
686
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400"
687
+ },
688
+ 401: {
689
+ name: "Unauthorized",
690
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401"
691
+ },
692
+ 402: {
693
+ name: "Payment Required",
694
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402"
695
+ },
696
+ 403: {
697
+ name: "Forbidden",
698
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403"
699
+ },
700
+ 404: {
701
+ name: "Not Found",
702
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404"
703
+ },
704
+ 405: {
705
+ name: "Method Not Allowed",
706
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405"
707
+ },
708
+ 406: {
709
+ name: "Not Acceptable",
710
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406"
711
+ },
712
+ 407: {
713
+ name: "Proxy Authentication Required",
714
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/407"
715
+ },
716
+ 408: {
717
+ name: "Request Timeout",
718
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408"
719
+ },
720
+ 409: {
721
+ name: "Conflict",
722
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409"
723
+ },
724
+ 410: {
725
+ name: "Gone",
726
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410"
727
+ },
728
+ 411: {
729
+ name: "Length Required",
730
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/411"
731
+ },
732
+ 412: {
733
+ name: "Precondition Failed",
734
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412"
735
+ },
736
+ 413: {
737
+ name: "Content Too Large",
738
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/413"
739
+ },
740
+ 414: {
741
+ name: "URI Too Long",
742
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/414"
743
+ },
744
+ 415: {
745
+ name: "Unsupported Media Type",
746
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415"
747
+ },
748
+ 416: {
749
+ name: "Range Not Satisfiable",
750
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416"
751
+ },
752
+ 417: {
753
+ name: "Expectation Failed",
754
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/417"
755
+ },
756
+ 421: {
757
+ name: "Misdirected Request",
758
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/421"
759
+ },
760
+ 422: {
761
+ name: "Unprocessable Content",
762
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422"
763
+ },
764
+ 423: {
765
+ name: "Locked",
766
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/423"
767
+ },
768
+ 424: {
769
+ name: "Failed Dependency",
770
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/424"
771
+ },
772
+ 425: {
773
+ name: "Too Early",
774
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/425"
775
+ },
776
+ 426: {
777
+ name: "Upgrade Required",
778
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/426"
779
+ },
780
+ 428: {
781
+ name: "Precondition Required",
782
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/428"
783
+ },
784
+ 429: {
785
+ name: "Too Many Requests",
786
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429"
787
+ },
788
+ 431: {
789
+ name: "Request Header Fields Too Large",
790
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431"
791
+ },
792
+ 451: {
793
+ name: "Unavailable For Legal Reasons",
794
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/451"
795
+ },
796
+ 500: {
797
+ name: "Internal Server Error",
798
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500"
799
+ },
800
+ 501: {
801
+ name: "Not Implemented",
802
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501"
803
+ },
804
+ 502: {
805
+ name: "Bad Gateway",
806
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502"
807
+ },
808
+ 503: {
809
+ name: "Service Unavailable",
810
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503"
811
+ },
812
+ 504: {
813
+ name: "Gateway Timeout",
814
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504"
815
+ },
816
+ 505: {
817
+ name: "HTTP Version Not Supported",
818
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/505"
819
+ },
820
+ 506: {
821
+ name: "Variant Also Negotiates",
822
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/506"
823
+ },
824
+ 507: {
825
+ name: "Insufficient Storage",
826
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/507"
827
+ },
828
+ 508: {
829
+ name: "Loop Detected",
830
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/508"
831
+ },
832
+ 510: {
833
+ name: "Not Extended",
834
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/510"
835
+ },
836
+ 511: {
837
+ name: "Network Authentication Required",
838
+ url: "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/511"
839
+ }
840
+ };
577
841
 
578
- export { createHash, defaultStateFactory, fetchSpecFromUrl, formatJsonOrYamlString, getExampleFromSchema, getHarRequest, getParametersFromOperation, getRequestBodyFromOperation, getRequestFromOperation, isJsonString, json, json2xml, normalizeMimeTypeObject, parseJsonOrYaml, prettyPrintJson, ssrState, transformToJson, yaml };
842
+ export { createHash, defaultStateFactory, fetchSpecFromUrl, formatJsonOrYamlString, getExampleFromSchema, getHarRequest, getParametersFromOperation, getRequestBodyFromOperation, getRequestFromOperation, httpStatusCodes, isJsonString, json, json2xml, normalizeMimeType, normalizeMimeTypeObject, parseJsonOrYaml, prettyPrintJson, ssrState, transformToJson, yaml };
@@ -0,0 +1,3 @@
1
+ import type { ContentType } from './types';
2
+ export declare function normalizeMimeType(contentType: string): ContentType;
3
+ //# sourceMappingURL=normalizeMimeType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeMimeType.d.ts","sourceRoot":"","sources":["../src/normalizeMimeType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,eAUpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeMimeTypeObject.d.ts","sourceRoot":"","sources":["../src/normalizeMimeTypeObject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;;;;;;;;cA6BzE"}
1
+ {"version":3,"file":"normalizeMimeTypeObject.d.ts","sourceRoot":"","sources":["../src/normalizeMimeTypeObject.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC;;;;;;;;cAuBzE"}
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "specification",
17
17
  "yaml"
18
18
  ],
19
- "version": "0.1.10",
19
+ "version": "0.1.12",
20
20
  "engines": {
21
21
  "node": ">=18"
22
22
  },