@scalar/fastify-api-reference 1.19.4 → 1.20.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,18 @@
1
1
  # @scalar/fastify-api-reference
2
2
 
3
+ ## 1.20.2
4
+
5
+ ### Patch Changes
6
+
7
+ - b32f46c: chore: update @scalar/api-reference
8
+
9
+ ## 1.19.5
10
+
11
+ ### Patch Changes
12
+
13
+ - 00abdc5: chore: remove body margin reset everywhere, it’s not needed anymore
14
+ - e520363: feat: added oauth2 implicit login flow
15
+
3
16
  ## 1.19.4
4
17
 
5
18
  ### Patch Changes
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Scalar
3
+ Copyright (c) 2023-present Scalar
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -2,11 +2,23 @@ import type { ReferenceConfiguration } from '@scalar/api-reference';
2
2
  import type { FastifyPluginAsync } from 'fastify';
3
3
  export type FastifyApiReferenceOptions = {
4
4
  /**
5
- * Prefix for the registered route
5
+ * If you’re prefixing Fastify with a path, you can set it here.
6
+ * It’ll be added to the JavaScript URL and the route.
7
+ *
8
+ * Example: ${publicPath}${routePrefix}/@scalar/fastify-api-reference/js/browser.js
9
+ */
10
+ publicPath?: string;
11
+ /**
12
+ * Prefix the route with a path. This is where the API Reference will be available.
6
13
  *
7
14
  * @default ''
8
15
  */
9
16
  routePrefix?: string;
17
+ /**
18
+ * The universal configuration object for @scalar/api-reference.
19
+ *
20
+ * Read more: https://github.com/scalar/scalar
21
+ */
10
22
  configuration?: ReferenceConfiguration;
11
23
  };
12
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fastifyApiReference.d.ts","sourceRoot":"","sources":["../src/fastifyApiReference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIjD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,sBAAsB,CAAA;CACvC,CAAA;AAcD;;GAEG;AACH,eAAO,MAAM,UAAU,64EA4EtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,YAAa,0BAA0B,WAkB7D,CAAA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,0BAA0B,UAqB/D;AAED,QAAA,MAAM,mBAAmB,EAAE,kBAAkB,CAC3C,0BAA0B,CAiF3B,CAAA;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"fastifyApiReference.d.ts","sourceRoot":"","sources":["../src/fastifyApiReference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIjD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAA;CACvC,CAAA;AAcD;;GAEG;AACH,eAAO,MAAM,UAAU,64EA4EtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,YAAa,0BAA0B,WAkB7D,CAAA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,0BAA0B,UAgB/D;AAED,QAAA,MAAM,mBAAmB,EAAE,kBAAkB,CAC3C,0BAA0B,CAiF3B,CAAA;AAED,eAAe,mBAAmB,CAAA"}
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;const e=require("node:fs"),n=require("node:path"),t=require("node:url");var o="undefined"!=typeof document?document.currentScript:null;const r={hide:!0},c=e=>`${e??""}/@scalar/fastify-api-reference/js/browser.js`.replace(/\/\//g,"/");function l(e){return`\n<!DOCTYPE html>\n<html>\n <head>\n <title>API Reference</title>\n <meta charset="utf-8" />\n <meta\n name="viewport"\n content="width=device-width, initial-scale=1" />\n <style>\n body {\n margin: 0;\n }\n </style>\n </head>\n <body>\n ${(e=>{var n,t,o,r;const{configuration:l}=e;return`\n <script\n id="api-reference"\n type="application/json"\n data-configuration="${JSON.stringify(l??{}).split('"').join("&quot;")}">${(null==(n=null==l?void 0:l.spec)?void 0:n.content)?"function"==typeof(null==(t=null==l?void 0:l.spec)?void 0:t.content)?JSON.stringify(null==(o=null==l?void 0:l.spec)?void 0:o.content()):JSON.stringify(null==(r=null==l?void 0:l.spec)?void 0:r.content):""}<\/script>\n <script src="${c(e.routePrefix)}"><\/script>\n `})(e)}\n </body>\n</html>\n`}module.exports=async(a,i)=>{var s,d;let{configuration:h}=i;const u=a.hasPlugin("@fastify/swagger");if(a.hasPlugin("fastify-html")||await a.register(import("fastify-html")),!(null==(s=null==h?void 0:h.spec)?void 0:s.content)&&!(null==(d=null==h?void 0:h.spec)?void 0:d.url)&&!u)return void a.log.warn("[@scalar/fastify-api-reference] You didn’t provide a spec.content or spec.url, and @fastify/swagger could not be found. Please provide one of these options.");const m=function(){const r=n.dirname(t.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:o&&o.src||new URL("index.cjs",document.baseURI).href)),c=[n.resolve(`${r}/js/standalone.js`),n.resolve(`${r}/../../dist/js/standalone.js`)].find((n=>e.existsSync(n)));if(void 0===c)throw new Error(`JavaScript file not found: ${n.resolve(`${r}/js/standalone.js`)}`);return e.readFileSync(c,"utf8")}();a.route({method:"GET",url:i.routePrefix??"/",schema:r,async handler(e,n){var t,o;return n.header("Content-Type","text/html; charset=utf-8"),(null==(t=null==h?void 0:h.spec)?void 0:t.content)||(null==(o=null==h?void 0:h.spec)?void 0:o.url)||!u||(h={...h,spec:{content:()=>a.swagger()}}),(null==h?void 0:h.customCss)||(null==h?void 0:h.theme)||(h={...h,customCss:"\n:root {\n --theme-font: 'Inter', var(--system-fonts);\n}\n\n.light-mode {\n color-scheme: light;\n --theme-color-1: #1c1e21;\n --theme-color-2: #757575;\n --theme-color-3: #8e8e8e;\n --theme-color-disabled: #b4b1b1;\n --theme-color-ghost: #a7a7a7;\n --theme-color-accent: #2f8555;\n --theme-background-1: #fff;\n --theme-background-2: #f5f5f5;\n --theme-background-3: #ededed;\n --theme-background-4: rgba(0, 0, 0, 0.06);\n --theme-background-accent: #2f85551f;\n\n --theme-border-color: rgba(0, 0, 0, 0.1);\n --theme-scrollbar-color: rgba(0, 0, 0, 0.18);\n --theme-scrollbar-color-active: rgba(0, 0, 0, 0.36);\n --theme-lifted-brightness: 1;\n --theme-backdrop-brightness: 1;\n\n --theme-shadow-1: 0 1px 3px 0 rgba(0, 0, 0, 0.11);\n --theme-shadow-2: rgba(0, 0, 0, 0.08) 0px 13px 20px 0px,\n rgba(0, 0, 0, 0.08) 0px 3px 8px 0px, #eeeeed 0px 0 0 1px;\n\n --theme-button-1: rgb(49 53 56);\n --theme-button-1-color: #fff;\n --theme-button-1-hover: rgb(28 31 33);\n\n --theme-color-green: #007300;\n --theme-color-red: #af272b;\n --theme-color-yellow: #b38200;\n --theme-color-blue: #3b8ba5;\n --theme-color-orange: #fb892c;\n --theme-color-purple: #5203d1;\n}\n\n.dark-mode {\n color-scheme: dark;\n --theme-color-1: rgba(255, 255, 255, 0.9);\n --theme-color-2: rgba(255, 255, 255, 0.62);\n --theme-color-3: rgba(255, 255, 255, 0.44);\n --theme-color-disabled: rgba(255, 255, 255, 0.34);\n --theme-color-ghost: rgba(255, 255, 255, 0.26);\n --theme-color-accent: #27c2a0;\n --theme-background-1: #1b1b1d;\n --theme-background-2: #242526;\n --theme-background-3: #3b3b3b;\n --theme-background-4: rgba(255, 255, 255, 0.06);\n --theme-background-accent: #27c2a01f;\n\n --theme-border-color: rgba(255, 255, 255, 0.1);\n --theme-scrollbar-color: rgba(255, 255, 255, 0.24);\n --theme-scrollbar-color-active: rgba(255, 255, 255, 0.48);\n --theme-lifted-brightness: 1.45;\n --theme-backdrop-brightness: 0.5;\n\n --theme-shadow-1: 0 1px 3px 0 rgb(0, 0, 0, 0.1);\n --theme-shadow-2: rgba(15, 15, 15, 0.2) 0px 3px 6px,\n rgba(15, 15, 15, 0.4) 0px 9px 24px, 0 0 0 1px rgba(255, 255, 255, 0.1);\n\n --theme-button-1: #f6f6f6;\n --theme-button-1-color: #000;\n --theme-button-1-hover: #e7e7e7;\n\n --theme-color-green: #26b226;\n --theme-color-red: #fb565b;\n --theme-color-yellow: #ffc426;\n --theme-color-blue: #6ecfef;\n --theme-color-orange: #ff8d4d;\n --theme-color-purple: #b191f9;\n}\n"}),n.html`!${l({...i,configuration:h})}`}}),a.route({method:"GET",url:c(i.routePrefix),schema:r,async handler(e,n){n.header("Content-Type","application/javascript; charset=utf-8"),n.send(m)}})};
1
+ "use strict";Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;const e=require("node:fs"),n=require("node:path"),t=require("node:url");var o="undefined"!=typeof document?document.currentScript:null;const r={hide:!0},c=(e,n)=>`${n??""}${e??""}/@scalar/fastify-api-reference/js/browser.js`.replace(/\/\//g,"/");function l(e){return`\n<!DOCTYPE html>\n<html>\n <head>\n <title>API Reference</title>\n <meta charset="utf-8" />\n <meta\n name="viewport"\n content="width=device-width, initial-scale=1" />\n </head>\n <body>\n ${(e=>{var n,t,o,r;const{configuration:l}=e;return`\n <script\n id="api-reference"\n type="application/json"\n data-configuration="${JSON.stringify(l??{}).split('"').join("&quot;")}">${(null==(n=null==l?void 0:l.spec)?void 0:n.content)?"function"==typeof(null==(t=null==l?void 0:l.spec)?void 0:t.content)?JSON.stringify(null==(o=null==l?void 0:l.spec)?void 0:o.content()):JSON.stringify(null==(r=null==l?void 0:l.spec)?void 0:r.content):""}<\/script>\n <script src="${c(e.routePrefix,e.publicPath)}"><\/script>\n `})(e)}\n </body>\n</html>\n`}module.exports=async(a,i)=>{var s,h;let{configuration:d}=i;const u=a.hasPlugin("@fastify/swagger");if(a.hasPlugin("fastify-html")||await a.register(import("fastify-html")),!(null==(s=null==d?void 0:d.spec)?void 0:s.content)&&!(null==(h=null==d?void 0:d.spec)?void 0:h.url)&&!u)return void a.log.warn("[@scalar/fastify-api-reference] You didn’t provide a spec.content or spec.url, and @fastify/swagger could not be found. Please provide one of these options.");const m=function(){const r=n.dirname(t.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:o&&o.src||new URL("index.cjs",document.baseURI).href)),c=[n.resolve(`${r}/js/standalone.js`),n.resolve(`${r}/../../dist/js/standalone.js`)].find((n=>e.existsSync(n)));if(void 0===c)throw new Error(`JavaScript file not found: ${n.resolve(`${r}/js/standalone.js`)}`);return e.readFileSync(c,"utf8")}();a.route({method:"GET",url:i.routePrefix??"/",schema:r,async handler(e,n){var t,o;return n.header("Content-Type","text/html; charset=utf-8"),(null==(t=null==d?void 0:d.spec)?void 0:t.content)||(null==(o=null==d?void 0:d.spec)?void 0:o.url)||!u||(d={...d,spec:{content:()=>a.swagger()}}),(null==d?void 0:d.customCss)||(null==d?void 0:d.theme)||(d={...d,customCss:"\n:root {\n --theme-font: 'Inter', var(--system-fonts);\n}\n\n.light-mode {\n color-scheme: light;\n --theme-color-1: #1c1e21;\n --theme-color-2: #757575;\n --theme-color-3: #8e8e8e;\n --theme-color-disabled: #b4b1b1;\n --theme-color-ghost: #a7a7a7;\n --theme-color-accent: #2f8555;\n --theme-background-1: #fff;\n --theme-background-2: #f5f5f5;\n --theme-background-3: #ededed;\n --theme-background-4: rgba(0, 0, 0, 0.06);\n --theme-background-accent: #2f85551f;\n\n --theme-border-color: rgba(0, 0, 0, 0.1);\n --theme-scrollbar-color: rgba(0, 0, 0, 0.18);\n --theme-scrollbar-color-active: rgba(0, 0, 0, 0.36);\n --theme-lifted-brightness: 1;\n --theme-backdrop-brightness: 1;\n\n --theme-shadow-1: 0 1px 3px 0 rgba(0, 0, 0, 0.11);\n --theme-shadow-2: rgba(0, 0, 0, 0.08) 0px 13px 20px 0px,\n rgba(0, 0, 0, 0.08) 0px 3px 8px 0px, #eeeeed 0px 0 0 1px;\n\n --theme-button-1: rgb(49 53 56);\n --theme-button-1-color: #fff;\n --theme-button-1-hover: rgb(28 31 33);\n\n --theme-color-green: #007300;\n --theme-color-red: #af272b;\n --theme-color-yellow: #b38200;\n --theme-color-blue: #3b8ba5;\n --theme-color-orange: #fb892c;\n --theme-color-purple: #5203d1;\n}\n\n.dark-mode {\n color-scheme: dark;\n --theme-color-1: rgba(255, 255, 255, 0.9);\n --theme-color-2: rgba(255, 255, 255, 0.62);\n --theme-color-3: rgba(255, 255, 255, 0.44);\n --theme-color-disabled: rgba(255, 255, 255, 0.34);\n --theme-color-ghost: rgba(255, 255, 255, 0.26);\n --theme-color-accent: #27c2a0;\n --theme-background-1: #1b1b1d;\n --theme-background-2: #242526;\n --theme-background-3: #3b3b3b;\n --theme-background-4: rgba(255, 255, 255, 0.06);\n --theme-background-accent: #27c2a01f;\n\n --theme-border-color: rgba(255, 255, 255, 0.1);\n --theme-scrollbar-color: rgba(255, 255, 255, 0.24);\n --theme-scrollbar-color-active: rgba(255, 255, 255, 0.48);\n --theme-lifted-brightness: 1.45;\n --theme-backdrop-brightness: 0.5;\n\n --theme-shadow-1: 0 1px 3px 0 rgb(0, 0, 0, 0.1);\n --theme-shadow-2: rgba(15, 15, 15, 0.2) 0px 3px 6px,\n rgba(15, 15, 15, 0.4) 0px 9px 24px, 0 0 0 1px rgba(255, 255, 255, 0.1);\n\n --theme-button-1: #f6f6f6;\n --theme-button-1-color: #000;\n --theme-button-1-hover: #e7e7e7;\n\n --theme-color-green: #26b226;\n --theme-color-red: #fb565b;\n --theme-color-yellow: #ffc426;\n --theme-color-blue: #6ecfef;\n --theme-color-orange: #ff8d4d;\n --theme-color-purple: #b191f9;\n}\n"}),n.html`!${l({...i,configuration:d})}`}}),a.route({method:"GET",url:c(i.routePrefix),schema:r,async handler(e,n){n.header("Content-Type","application/javascript; charset=utf-8"),n.send(m)}})};
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ function getJavaScriptFile() {
19
19
  const schemaToHideRoute = {
20
20
  hide: true
21
21
  };
22
- const getJavaScriptUrl = (routePrefix) => `${routePrefix ?? ""}/@scalar/fastify-api-reference/js/browser.js`.replace(
22
+ const getJavaScriptUrl = (routePrefix, publicPath) => `${publicPath ?? ""}${routePrefix ?? ""}/@scalar/fastify-api-reference/js/browser.js`.replace(
23
23
  /\/\//g,
24
24
  "/"
25
25
  );
@@ -108,7 +108,7 @@ const javascript = (options) => {
108
108
  id="api-reference"
109
109
  type="application/json"
110
110
  data-configuration="${JSON.stringify(configuration ?? {}).split('"').join("&quot;")}">${((_a = configuration == null ? void 0 : configuration.spec) == null ? void 0 : _a.content) ? typeof ((_b = configuration == null ? void 0 : configuration.spec) == null ? void 0 : _b.content) === "function" ? JSON.stringify((_c = configuration == null ? void 0 : configuration.spec) == null ? void 0 : _c.content()) : JSON.stringify((_d = configuration == null ? void 0 : configuration.spec) == null ? void 0 : _d.content) : ""}<\/script>
111
- <script src="${getJavaScriptUrl(options.routePrefix)}"><\/script>
111
+ <script src="${getJavaScriptUrl(options.routePrefix, options.publicPath)}"><\/script>
112
112
  `;
113
113
  };
114
114
  function htmlDocument(options) {
@@ -121,11 +121,6 @@ function htmlDocument(options) {
121
121
  <meta
122
122
  name="viewport"
123
123
  content="width=device-width, initial-scale=1" />
124
- <style>
125
- body {
126
- margin: 0;
127
- }
128
- </style>
129
124
  </head>
130
125
  <body>
131
126
  ${javascript(options)}