@scalar/fastify-api-reference 0.8.2 → 0.8.4
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 +13 -0
- package/dist/fastifyApiReference.d.ts +4 -4
- package/dist/fastifyApiReference.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -7
- package/dist/js/standalone.js +7 -7
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @scalar/fastify-api-reference
|
|
2
2
|
|
|
3
|
+
## 0.8.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 0c25c75: chore: remove console log from fastify package
|
|
8
|
+
|
|
9
|
+
## 0.8.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- fc540bf: chore: make routePrefix optional
|
|
14
|
+
- fc540bf: chore: use routePrefix for JavaScript file
|
|
15
|
+
|
|
3
16
|
## 0.8.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -4,9 +4,9 @@ export type FastifyApiReferenceOptions = {
|
|
|
4
4
|
/**
|
|
5
5
|
* Prefix for the registered route
|
|
6
6
|
*
|
|
7
|
-
* @default '
|
|
7
|
+
* @default ''
|
|
8
8
|
*/
|
|
9
|
-
routePrefix
|
|
9
|
+
routePrefix?: string;
|
|
10
10
|
configuration?: ReferenceConfiguration;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
@@ -16,11 +16,11 @@ export declare const defaultCss = "\n:root {\n --theme-font: 'Inter', var(--sys
|
|
|
16
16
|
/**
|
|
17
17
|
* The HTML to load the @scalar/api-reference JavaScript package.
|
|
18
18
|
*/
|
|
19
|
-
export declare const javascript: (
|
|
19
|
+
export declare const javascript: (options: FastifyApiReferenceOptions) => string;
|
|
20
20
|
/**
|
|
21
21
|
* The HTML template to render the API Reference.
|
|
22
22
|
*/
|
|
23
|
-
export declare function htmlDocument(
|
|
23
|
+
export declare function htmlDocument(options: FastifyApiReferenceOptions): string;
|
|
24
24
|
declare const _default: FastifyPluginAsync<FastifyApiReferenceOptions>;
|
|
25
25
|
export default _default;
|
|
26
26
|
//# sourceMappingURL=fastifyApiReference.d.ts.map
|
|
@@ -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;AAMjD,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;OAIG;IACH,WAAW,EAAE,MAAM,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;AAMjD,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,i8EA+EtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,YAAa,0BAA0B,WAkB7D,CAAA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,0BAA0B,UAqB/D;;AAuFD,wBAAsC"}
|
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("fastify-plugin"),n=require("node:fs"),t=require("node:path");const o={hide:!0};function
|
|
1
|
+
"use strict";Object.create,Object.defineProperty,Object.getOwnPropertyDescriptor,Object.getOwnPropertyNames,Object.getPrototypeOf,Object.prototype.hasOwnProperty;const e=require("fastify-plugin"),n=require("node:fs"),t=require("node:path");const o={hide:!0},r=e=>`${e??""}/@scalar/fastify-api-reference/js/browser.js`.replace(/\/\//g,"/");function c(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,c;const{configuration:a}=e;return`\n <script\n id="api-reference"\n type="application/json"\n data-configuration="${JSON.stringify(a??{}).split('"').join(""")}">${(null==(n=null==a?void 0:a.spec)?void 0:n.content)?"function"==typeof(null==(t=null==a?void 0:a.spec)?void 0:t.content)?JSON.stringify(null==(o=null==a?void 0:a.spec)?void 0:o.content()):JSON.stringify(null==(c=null==a?void 0:a.spec)?void 0:c.content):""}<\/script>\n <script src="${r(e.routePrefix)}"><\/script>\n `})(e)}\n </body>\n</html>\n`}const a=e((async(e,a)=>{var l,s;let{configuration:i}=a;const h=e.hasPlugin("@fastify/swagger");if(e.hasPlugin("fastify-html")||await e.register(import("fastify-html")),!(null==(l=null==i?void 0:i.spec)?void 0:l.content)&&!(null==(s=null==i?void 0:i.spec)?void 0:s.url)&&!h)return void e.log.warn("[@scalar/fastify-api-reference] You didn’t provide a spec.content or spec.url and @fastify/swagger could not be find either. Please provide one of these options.");const d=function(){const e=[t.resolve(`${__dirname}/js/standalone.js`),t.resolve(`${__dirname}/../../dist/js/standalone.js`)].find((e=>n.existsSync(e)));if(void 0===e)throw new Error(`JavaScript file not found: ${t.resolve(`${__dirname}/js/standalone.js`)}`);return n.readFileSync(e,"utf8")}();e.route({method:"GET",url:a.routePrefix??"/",schema:o,async handler(n,t){var o,r;return t.header("Content-Type","text/html; charset=utf-8"),(null==(o=null==i?void 0:i.spec)?void 0:o.content)||(null==(r=null==i?void 0:i.spec)?void 0:r.url)||!h||(i={...i,spec:{content:()=>e.swagger()}}),(null==i?void 0:i.customCss)||(null==i?void 0:i.theme)||(i={...i,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.scalar-card:nth-of-type(3) {\n display: none;\n}\n"}),t.html`${c({...a,configuration:i})}`}}),e.route({method:"GET",url:r(a.routePrefix),schema:o,async handler(e,n){n.header("Content-Type","application/javascript; charset=utf-8"),n.send(d)}})}));module.exports=a;
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,10 @@ function getJavaScriptFile() {
|
|
|
27
27
|
const schemaToHideRoute = {
|
|
28
28
|
hide: true
|
|
29
29
|
};
|
|
30
|
+
const getJavaScriptUrl = (routePrefix) => `${routePrefix ?? ""}/@scalar/fastify-api-reference/js/browser.js`.replace(
|
|
31
|
+
/\/\//g,
|
|
32
|
+
"/"
|
|
33
|
+
);
|
|
30
34
|
const defaultCss = `
|
|
31
35
|
:root {
|
|
32
36
|
--theme-font: 'Inter', var(--system-fonts);
|
|
@@ -107,17 +111,18 @@ const defaultCss = `
|
|
|
107
111
|
display: none;
|
|
108
112
|
}
|
|
109
113
|
`;
|
|
110
|
-
const javascript = (
|
|
114
|
+
const javascript = (options) => {
|
|
111
115
|
var _a, _b, _c, _d;
|
|
116
|
+
const { configuration } = options;
|
|
112
117
|
return `
|
|
113
118
|
<script
|
|
114
119
|
id="api-reference"
|
|
115
120
|
type="application/json"
|
|
116
|
-
data-configuration="${JSON.stringify(configuration).split('"').join(""")}">${((_a = configuration.spec) == null ? void 0 : _a.content) ? typeof ((_b = configuration.spec) == null ? void 0 : _b.content) === "function" ? JSON.stringify((_c = configuration.spec) == null ? void 0 : _c.content()) : JSON.stringify((_d = configuration.spec) == null ? void 0 : _d.content) : ""}<\/script>
|
|
117
|
-
<script src="
|
|
121
|
+
data-configuration="${JSON.stringify(configuration ?? {}).split('"').join(""")}">${((_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>
|
|
122
|
+
<script src="${getJavaScriptUrl(options.routePrefix)}"><\/script>
|
|
118
123
|
`;
|
|
119
124
|
};
|
|
120
|
-
function htmlDocument(
|
|
125
|
+
function htmlDocument(options) {
|
|
121
126
|
return `
|
|
122
127
|
<!DOCTYPE html>
|
|
123
128
|
<html>
|
|
@@ -134,7 +139,7 @@ function htmlDocument(configuration) {
|
|
|
134
139
|
</style>
|
|
135
140
|
</head>
|
|
136
141
|
<body>
|
|
137
|
-
${javascript(
|
|
142
|
+
${javascript(options)}
|
|
138
143
|
</body>
|
|
139
144
|
</html>
|
|
140
145
|
`;
|
|
@@ -178,12 +183,15 @@ const fastifyApiReference = async (fastify, options) => {
|
|
|
178
183
|
customCss: defaultCss
|
|
179
184
|
};
|
|
180
185
|
}
|
|
181
|
-
return reply.html`${htmlDocument(
|
|
186
|
+
return reply.html`${htmlDocument({
|
|
187
|
+
...options,
|
|
188
|
+
configuration
|
|
189
|
+
})}`;
|
|
182
190
|
}
|
|
183
191
|
});
|
|
184
192
|
fastify.route({
|
|
185
193
|
method: "GET",
|
|
186
|
-
url:
|
|
194
|
+
url: getJavaScriptUrl(options.routePrefix),
|
|
187
195
|
// We don’t know whether @fastify/swagger is registered, but it doesn’t hurt to add a schema anyway.
|
|
188
196
|
// @ts-ignore
|
|
189
197
|
schema: schemaToHideRoute,
|