@prauga/flexdoc-backend 2.1.0 → 2.3.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.
Files changed (49) hide show
  1. package/README.md +227 -227
  2. package/dist/auth.d.ts +11 -0
  3. package/dist/auth.js +99 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/auth.test.d.ts +1 -0
  6. package/dist/auth.test.js +57 -0
  7. package/dist/auth.test.js.map +1 -0
  8. package/dist/flexdoc.module.test.js +9 -0
  9. package/dist/flexdoc.module.test.js.map +1 -1
  10. package/dist/framework-adapters.d.ts +3 -0
  11. package/dist/framework-adapters.js +34 -3
  12. package/dist/framework-adapters.js.map +1 -1
  13. package/dist/framework-adapters.test.js +44 -13
  14. package/dist/framework-adapters.test.js.map +1 -1
  15. package/dist/hono-adapter.d.ts +12 -0
  16. package/dist/hono-adapter.js +63 -0
  17. package/dist/hono-adapter.js.map +1 -0
  18. package/dist/hono-adapter.test.d.ts +1 -0
  19. package/dist/hono-adapter.test.js +82 -0
  20. package/dist/hono-adapter.test.js.map +1 -0
  21. package/dist/index.d.ts +3 -1
  22. package/dist/index.js +4 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/interfaces.d.ts +5 -0
  25. package/dist/renderer/flexdoc.standalone.css +1 -1
  26. package/dist/renderer/flexdoc.standalone.js +49 -197
  27. package/dist/renderer-assets.d.ts +1 -0
  28. package/dist/renderer-assets.js +6 -2
  29. package/dist/renderer-assets.js.map +1 -1
  30. package/dist/setup.js +10 -62
  31. package/dist/setup.js.map +1 -1
  32. package/dist/setup.test.js +6 -1
  33. package/dist/setup.test.js.map +1 -1
  34. package/dist/template.d.ts +1 -0
  35. package/dist/template.js +44 -43
  36. package/dist/template.js.map +1 -1
  37. package/dist/template.test.js +8 -0
  38. package/dist/template.test.js.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +34 -34
  41. package/dist/templates/code-examples.njk +0 -106
  42. package/dist/templates/content.njk +0 -272
  43. package/dist/templates/footer.njk +0 -38
  44. package/dist/templates/header.njk +0 -57
  45. package/dist/templates/layout.njk +0 -647
  46. package/dist/templates/parameters.njk +0 -64
  47. package/dist/templates/request-body.njk +0 -63
  48. package/dist/templates/responses.njk +0 -78
  49. package/dist/templates/sidebar.njk +0 -117
@@ -1 +1 @@
1
- {"version":3,"file":"flexdoc.module.test.js","sourceRoot":"","sources":["../src/flexdoc.module.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flexdoc.module.test.js","sourceRoot":"","sources":["../src/flexdoc.module.test.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export interface FastifyLikeRequest {
13
13
  }
14
14
  export interface FastifyLikeApplication {
15
15
  get(path: string, options: Record<string, unknown>, handler: (req: FastifyLikeRequest, reply: FastifyLikeReply) => any | Promise<any>): void;
16
+ ready?: () => Promise<unknown>;
17
+ swagger?: () => Record<string, unknown>;
16
18
  }
17
19
  export interface NestLikeApplication {
18
20
  getHttpAdapter(): {
@@ -22,4 +24,5 @@ export interface NestLikeApplication {
22
24
  }
23
25
  export declare function setupExpressFlexDoc(app: ExpressLikeApplication, path: string, options: Omit<FlexDocModuleOptions, 'path'>): void;
24
26
  export declare function setupFastifyFlexDoc(app: FastifyLikeApplication, path: string, options: Omit<FlexDocModuleOptions, 'path'>): void;
27
+ export declare function setupFastifySwaggerFlexDoc(app: FastifyLikeApplication, path: string, options?: Omit<FlexDocModuleOptions, 'path' | 'spec' | 'specUrl'>): void;
25
28
  export declare function setupNestFlexDoc(app: NestLikeApplication, path: string, swaggerDocumentOptions: Record<string, unknown>, options?: Omit<FlexDocModuleOptions, 'path' | 'spec' | 'specUrl'>): void;
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.setupExpressFlexDoc = setupExpressFlexDoc;
37
37
  exports.setupFastifyFlexDoc = setupFastifyFlexDoc;
38
+ exports.setupFastifySwaggerFlexDoc = setupFastifySwaggerFlexDoc;
38
39
  exports.setupNestFlexDoc = setupNestFlexDoc;
39
40
  const crypto = __importStar(require("crypto"));
40
41
  const jwt = __importStar(require("jsonwebtoken"));
@@ -98,11 +99,12 @@ async function loadRemoteSpec(url) {
98
99
  throw new Error(`Failed to load OpenAPI spec: HTTP ${response.status}`);
99
100
  return response.json();
100
101
  }
101
- function setupFastifyFlexDoc(app, path, options) {
102
+ function setupFastifyFlexDocInternal(app, path, options, specProvider) {
102
103
  const normalizedPath = path.startsWith('/') ? path : `/${path}`;
103
104
  const rendererBasePath = `${normalizedPath}/__flexdoc`;
104
105
  const auth = options.options?.auth;
105
106
  let remoteSpecPromise = null;
107
+ let generatedSpecPromise = null;
106
108
  const routeOptions = auth ? {
107
109
  preHandler: async (request, reply) => {
108
110
  if (!authorize(request.headers, auth)) {
@@ -112,6 +114,14 @@ function setupFastifyFlexDoc(app, path, options) {
112
114
  },
113
115
  } : {};
114
116
  const resolvedSpec = async () => {
117
+ if (specProvider) {
118
+ if (!generatedSpecPromise)
119
+ generatedSpecPromise = Promise.resolve(specProvider()).catch((error) => {
120
+ generatedSpecPromise = null;
121
+ throw error;
122
+ });
123
+ return generatedSpecPromise;
124
+ }
115
125
  if (options.spec)
116
126
  return options.spec;
117
127
  if (!options.specUrl)
@@ -133,14 +143,35 @@ function setupFastifyFlexDoc(app, path, options) {
133
143
  });
134
144
  app.get(normalizedPath, routeOptions, async (_request, reply) => {
135
145
  try {
136
- const html = (0, template_1.generateFlexDocHTML)(await resolvedSpec(), { ...(options.options || {}), rendererBasePath });
137
- return reply.type('text/html; charset=utf-8').send(html);
146
+ const assets = (0, renderer_assets_1.getRendererAssets)();
147
+ const html = (0, template_1.generateFlexDocHTML)(await resolvedSpec(), {
148
+ ...(options.options || {}),
149
+ rendererBasePath,
150
+ rendererVersion: assets.version,
151
+ });
152
+ return reply
153
+ .type('text/html; charset=utf-8')
154
+ .header('Cache-Control', 'no-cache')
155
+ .send(html);
138
156
  }
139
157
  catch (error) {
140
158
  return reply.code(502).type('text/plain; charset=utf-8').send(`Unable to load OpenAPI specification: ${error instanceof Error ? error.message : 'Unknown error'}`);
141
159
  }
142
160
  });
143
161
  }
162
+ function setupFastifyFlexDoc(app, path, options) {
163
+ setupFastifyFlexDocInternal(app, path, options);
164
+ }
165
+ function setupFastifySwaggerFlexDoc(app, path, options = {}) {
166
+ setupFastifyFlexDocInternal(app, path, options, async () => {
167
+ if (typeof app.ready === 'function')
168
+ await app.ready();
169
+ if (typeof app.swagger !== 'function') {
170
+ throw new Error('setupFastifySwaggerFlexDoc requires @fastify/swagger to be registered before FlexDoc');
171
+ }
172
+ return app.swagger();
173
+ });
174
+ }
144
175
  function setupNestFlexDoc(app, path, swaggerDocumentOptions, options = {}) {
145
176
  let SwaggerModule;
146
177
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"framework-adapters.js","sourceRoot":"","sources":["../src/framework-adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framework-adapters.js","sourceRoot":"","sources":["../src/framework-adapters.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- jest.mock('./renderer-assets', () => ({ getRendererAssets: () => ({ javascript: 'renderer-js', css: 'renderer-css' }) }));
3
+ jest.mock('./renderer-assets', () => ({
4
+ getRendererAssets: () => ({
5
+ javascript: 'renderer-js',
6
+ css: 'renderer-css',
7
+ version: 'test-renderer-version',
8
+ }),
9
+ }));
4
10
  jest.mock('./template', () => ({ generateFlexDocHTML: jest.fn(() => '<html>docs</html>') }));
5
11
  const framework_adapters_1 = require("./framework-adapters");
6
12
  const template_1 = require("./template");
13
+ function replyState() {
14
+ const state = { headers: {} };
15
+ const reply = {
16
+ type(value) { state.type = value; return this; },
17
+ header(name, value) { state.headers[name] = value; return this; },
18
+ code(value) { state.code = value; return this; },
19
+ send(value) { state.body = value; return value; },
20
+ };
21
+ return { state, reply };
22
+ }
7
23
  describe('setupFastifyFlexDoc', () => {
24
+ beforeEach(() => jest.clearAllMocks());
8
25
  it('registers native Fastify docs and renderer routes', async () => {
9
26
  const routes = new Map();
10
27
  const app = { get: (path, options, handler) => routes.set(path, { options, handler }) };
11
28
  (0, framework_adapters_1.setupFastifyFlexDoc)(app, '/docs', { spec: { openapi: '3.1.0', info: { title: 'T', version: '1' }, paths: {} } });
12
29
  expect([...routes.keys()]).toEqual(['/docs/__flexdoc/renderer.js', '/docs/__flexdoc/renderer.css', '/docs']);
13
- const state = { headers: {} };
14
- const reply = {
15
- type(value) { state.type = value; return this; },
16
- header(name, value) { state.headers[name] = value; return this; },
17
- code(value) { state.code = value; return this; },
18
- send(value) { state.body = value; return value; },
19
- };
30
+ const { state, reply } = replyState();
20
31
  await routes.get('/docs').handler({ headers: {} }, reply);
21
32
  expect(state.body).toBe('<html>docs</html>');
22
- expect(template_1.generateFlexDocHTML).toHaveBeenCalled();
33
+ expect(template_1.generateFlexDocHTML).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ rendererVersion: 'test-renderer-version' }));
23
34
  });
24
35
  it('protects Fastify routes when docs auth is configured', async () => {
25
36
  const routes = new Map();
26
37
  const app = { get: (path, options, handler) => routes.set(path, { options, handler }) };
27
38
  (0, framework_adapters_1.setupFastifyFlexDoc)(app, '/docs', { spec: {}, options: { auth: { type: 'basic', secretKey: 'secret' } } });
28
39
  const preHandler = routes.get('/docs').options.preHandler;
29
- const state = {};
30
- const reply = {
31
- header() { return this; }, code(value) { state.code = value; return this; }, send(value) { state.body = value; return value; },
32
- };
40
+ const { state, reply } = replyState();
33
41
  await preHandler({ headers: {} }, reply);
34
42
  expect(state.code).toBe(401);
35
43
  });
44
+ it('resolves @fastify/swagger only after Fastify is ready', async () => {
45
+ const routes = new Map();
46
+ let ready = false;
47
+ const spec = { openapi: '3.1.0', info: { title: 'Generated', version: '1' }, paths: {} };
48
+ const swagger = jest.fn(() => {
49
+ if (!ready)
50
+ throw new Error('swagger called before ready');
51
+ return spec;
52
+ });
53
+ const app = {
54
+ get: (path, options, handler) => routes.set(path, { options, handler }),
55
+ ready: jest.fn(async () => { ready = true; }),
56
+ swagger,
57
+ };
58
+ (0, framework_adapters_1.setupFastifySwaggerFlexDoc)(app, '/docs');
59
+ expect(app.ready).not.toHaveBeenCalled();
60
+ expect(swagger).not.toHaveBeenCalled();
61
+ const { reply } = replyState();
62
+ await routes.get('/docs').handler({ headers: {} }, reply);
63
+ expect(app.ready).toHaveBeenCalledTimes(1);
64
+ expect(swagger).toHaveBeenCalledTimes(1);
65
+ expect(template_1.generateFlexDocHTML).toHaveBeenCalledWith(spec, expect.any(Object));
66
+ });
36
67
  });
37
68
  //# sourceMappingURL=framework-adapters.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"framework-adapters.test.js","sourceRoot":"","sources":["../src/framework-adapters.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framework-adapters.test.js","sourceRoot":"","sources":["../src/framework-adapters.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { FlexDocModuleOptions } from './interfaces';
2
+ export interface HonoLikeRequest {
3
+ header(name: string): string | undefined;
4
+ }
5
+ export interface HonoLikeContext {
6
+ req: HonoLikeRequest;
7
+ body(body: string | Uint8Array, status?: number, headers?: Record<string, string>): unknown;
8
+ }
9
+ export interface HonoLikeApplication {
10
+ get(path: string, handler: (context: HonoLikeContext) => unknown | Promise<unknown>): unknown;
11
+ }
12
+ export declare function setupHonoFlexDoc(app: HonoLikeApplication, path: string, options: Omit<FlexDocModuleOptions, 'path'>): void;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupHonoFlexDoc = setupHonoFlexDoc;
4
+ const auth_1 = require("./auth");
5
+ const renderer_assets_1 = require("./renderer-assets");
6
+ const template_1 = require("./template");
7
+ function setupHonoFlexDoc(app, path, options) {
8
+ const normalizedPath = `/${path.trim().replace(/^\/+|\/+$/g, '')}` || '/docs';
9
+ const base = normalizedPath === '/' ? '/docs' : normalizedPath;
10
+ const rendererBasePath = `${base}/__flexdoc`;
11
+ const auth = options.options?.auth;
12
+ const denyUnauthorized = (context) => {
13
+ if (!auth)
14
+ return undefined;
15
+ const decision = (0, auth_1.authorizeFlexDocRequest)(context.req.header('Authorization'), auth);
16
+ if (decision.authorized)
17
+ return undefined;
18
+ return context.body(decision.message || 'Authentication required', 401, {
19
+ 'Content-Type': 'text/plain; charset=utf-8',
20
+ ...(decision.challenge ? { 'WWW-Authenticate': decision.challenge } : {}),
21
+ });
22
+ };
23
+ const page = (context) => {
24
+ const denied = denyUnauthorized(context);
25
+ if (denied !== undefined)
26
+ return denied;
27
+ const assets = (0, renderer_assets_1.getRendererAssets)();
28
+ const spec = (options.spec || null);
29
+ const html = (0, template_1.generateFlexDocHTML)(spec, {
30
+ ...(options.options || {}),
31
+ specUrl: options.specUrl,
32
+ rendererBasePath,
33
+ rendererVersion: assets.version,
34
+ });
35
+ return context.body(html, 200, {
36
+ 'Content-Type': 'text/html; charset=utf-8',
37
+ 'Cache-Control': 'no-cache',
38
+ });
39
+ };
40
+ app.get(base, page);
41
+ app.get(`${base}/`, page);
42
+ app.get(`${rendererBasePath}/renderer.js`, (context) => {
43
+ const denied = denyUnauthorized(context);
44
+ if (denied !== undefined)
45
+ return denied;
46
+ const assets = (0, renderer_assets_1.getRendererAssets)();
47
+ return context.body(assets.javascript, 200, {
48
+ 'Content-Type': 'application/javascript; charset=utf-8',
49
+ 'Cache-Control': 'public, max-age=31536000, immutable',
50
+ });
51
+ });
52
+ app.get(`${rendererBasePath}/renderer.css`, (context) => {
53
+ const denied = denyUnauthorized(context);
54
+ if (denied !== undefined)
55
+ return denied;
56
+ const assets = (0, renderer_assets_1.getRendererAssets)();
57
+ return context.body(assets.css, 200, {
58
+ 'Content-Type': 'text/css; charset=utf-8',
59
+ 'Cache-Control': 'public, max-age=31536000, immutable',
60
+ });
61
+ });
62
+ }
63
+ //# sourceMappingURL=hono-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-adapter.js","sourceRoot":"","sources":["../src/hono-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const auth_1 = require("./auth");
4
+ const hono_adapter_1 = require("./hono-adapter");
5
+ const template_1 = require("./template");
6
+ jest.mock('./template', () => ({
7
+ generateFlexDocHTML: jest.fn().mockReturnValue('<html>Hono docs</html>'),
8
+ }));
9
+ jest.mock('./renderer-assets', () => ({
10
+ getRendererAssets: jest.fn().mockReturnValue({
11
+ javascript: 'window.renderer = true;',
12
+ css: '.renderer { display: block; }',
13
+ version: 'hono-test-version',
14
+ }),
15
+ }));
16
+ function createContext(authorization) {
17
+ return {
18
+ req: {
19
+ header: (name) => name.toLowerCase() === 'authorization' ? authorization : undefined,
20
+ },
21
+ body: (body, status = 200, headers = {}) => ({ body, status, headers }),
22
+ };
23
+ }
24
+ describe('setupHonoFlexDoc', () => {
25
+ let handlers;
26
+ let app;
27
+ beforeEach(() => {
28
+ jest.clearAllMocks();
29
+ handlers = new Map();
30
+ app = {
31
+ get: jest.fn((path, handler) => {
32
+ handlers.set(path, handler);
33
+ }),
34
+ };
35
+ });
36
+ it('registers docs, trailing slash, and immutable renderer routes', () => {
37
+ (0, hono_adapter_1.setupHonoFlexDoc)(app, '/docs', { spec: { openapi: '3.0.0' } });
38
+ expect(handlers.has('/docs')).toBe(true);
39
+ expect(handlers.has('/docs/')).toBe(true);
40
+ expect(handlers.has('/docs/__flexdoc/renderer.js')).toBe(true);
41
+ expect(handlers.has('/docs/__flexdoc/renderer.css')).toBe(true);
42
+ });
43
+ it('passes the shared renderer host options to the page', async () => {
44
+ (0, hono_adapter_1.setupHonoFlexDoc)(app, '/docs', {
45
+ spec: { openapi: '3.0.0' },
46
+ options: { theme: 'dark' },
47
+ });
48
+ const result = await handlers.get('/docs')(createContext());
49
+ expect(result.status).toBe(200);
50
+ expect(result.headers['Cache-Control']).toBe('no-cache');
51
+ expect(template_1.generateFlexDocHTML).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({
52
+ theme: 'dark',
53
+ rendererBasePath: '/docs/__flexdoc',
54
+ rendererVersion: 'hono-test-version',
55
+ }));
56
+ });
57
+ it('protects docs and assets with the same basic auth contract as setupFlexDoc', async () => {
58
+ const secretKey = 'hono-secret';
59
+ (0, hono_adapter_1.setupHonoFlexDoc)(app, '/docs', {
60
+ spec: { openapi: '3.0.0' },
61
+ options: { auth: { type: 'basic', secretKey } },
62
+ });
63
+ const deniedDocs = await handlers.get('/docs')(createContext());
64
+ const deniedAsset = await handlers.get('/docs/__flexdoc/renderer.js')(createContext());
65
+ expect(deniedDocs.status).toBe(401);
66
+ expect(deniedDocs.headers['WWW-Authenticate']).toBe('Basic');
67
+ expect(deniedAsset.status).toBe(401);
68
+ const username = 'alice';
69
+ const password = (0, auth_1.generateFlexDocPassword)(username, secretKey);
70
+ const authorization = `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`;
71
+ const allowed = await handlers.get('/docs')(createContext(authorization));
72
+ expect(allowed.status).toBe(200);
73
+ });
74
+ it('serves renderer assets with immutable caching', async () => {
75
+ (0, hono_adapter_1.setupHonoFlexDoc)(app, '/docs', { spec: { openapi: '3.0.0' } });
76
+ const result = await handlers.get('/docs/__flexdoc/renderer.css')(createContext());
77
+ expect(result.status).toBe(200);
78
+ expect(result.headers['Cache-Control']).toContain('immutable');
79
+ expect(result.body).toBe('.renderer { display: block; }');
80
+ });
81
+ });
82
+ //# sourceMappingURL=hono-adapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-adapter.test.js","sourceRoot":"","sources":["../src/hono-adapter.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,7 @@ export { FlexDocModule } from './flexdoc.module';
2
2
  export { FlexDocService } from './flexdoc.service';
3
3
  export { FlexDocOptions, FlexDocModuleOptions } from './interfaces';
4
4
  export { setupFlexDoc } from './setup';
5
- export { setupExpressFlexDoc, setupFastifyFlexDoc, setupNestFlexDoc } from './framework-adapters';
5
+ export { setupExpressFlexDoc, setupFastifyFlexDoc, setupFastifySwaggerFlexDoc, setupNestFlexDoc } from './framework-adapters';
6
6
  export type { ExpressLikeApplication, FastifyLikeApplication, FastifyLikeReply, FastifyLikeRequest, NestLikeApplication } from './framework-adapters';
7
+ export { setupHonoFlexDoc } from './hono-adapter';
8
+ export type { HonoLikeApplication, HonoLikeContext } from './hono-adapter';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupNestFlexDoc = exports.setupFastifyFlexDoc = exports.setupExpressFlexDoc = exports.setupFlexDoc = exports.FlexDocService = exports.FlexDocModule = void 0;
3
+ exports.setupHonoFlexDoc = exports.setupNestFlexDoc = exports.setupFastifySwaggerFlexDoc = exports.setupFastifyFlexDoc = exports.setupExpressFlexDoc = exports.setupFlexDoc = exports.FlexDocService = exports.FlexDocModule = void 0;
4
4
  var flexdoc_module_1 = require("./flexdoc.module");
5
5
  Object.defineProperty(exports, "FlexDocModule", { enumerable: true, get: function () { return flexdoc_module_1.FlexDocModule; } });
6
6
  var flexdoc_service_1 = require("./flexdoc.service");
@@ -10,5 +10,8 @@ Object.defineProperty(exports, "setupFlexDoc", { enumerable: true, get: function
10
10
  var framework_adapters_1 = require("./framework-adapters");
11
11
  Object.defineProperty(exports, "setupExpressFlexDoc", { enumerable: true, get: function () { return framework_adapters_1.setupExpressFlexDoc; } });
12
12
  Object.defineProperty(exports, "setupFastifyFlexDoc", { enumerable: true, get: function () { return framework_adapters_1.setupFastifyFlexDoc; } });
13
+ Object.defineProperty(exports, "setupFastifySwaggerFlexDoc", { enumerable: true, get: function () { return framework_adapters_1.setupFastifySwaggerFlexDoc; } });
13
14
  Object.defineProperty(exports, "setupNestFlexDoc", { enumerable: true, get: function () { return framework_adapters_1.setupNestFlexDoc; } });
15
+ var hono_adapter_1 = require("./hono-adapter");
16
+ Object.defineProperty(exports, "setupHonoFlexDoc", { enumerable: true, get: function () { return hono_adapter_1.setupHonoFlexDoc; } });
14
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,2DAAkG;AAAzF,yHAAA,mBAAmB,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAAE,sHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,2DAA8H;AAArH,yHAAA,mBAAmB,OAAA;AAAE,yHAAA,mBAAmB,OAAA;AAAE,gIAAA,0BAA0B,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAE/F,+CAAkD;AAAzC,gHAAA,gBAAgB,OAAA"}
@@ -106,6 +106,9 @@ export interface ThemeConfig {
106
106
  sidebar?: ThemeSidebar;
107
107
  methodColors?: MethodColors;
108
108
  }
109
+ export type ExpandSection = 'parameters' | 'requestBody' | 'responses' | 'tryIt' | 'codeSamples';
110
+ export type ExpandPreset = 'all' | 'none' | 'minimal' | 'documentation' | 'interactive';
111
+ export type ExpandOption = ExpandPreset | Array<ExpandSection | Exclude<ExpandPreset, 'all' | 'none'>>;
109
112
  export interface FlexDocOptions {
110
113
  contractVersion?: '1';
111
114
  title?: string;
@@ -123,6 +126,7 @@ export interface FlexDocOptions {
123
126
  logo?: string | LogoOptions;
124
127
  hideDownloadButton?: boolean;
125
128
  hideTopbar?: boolean;
129
+ expand?: ExpandOption;
126
130
  expandResponses?: string;
127
131
  defaultModelsExpandDepth?: number;
128
132
  showExtensions?: boolean;
@@ -147,6 +151,7 @@ export interface FlexDocOptions {
147
151
  enabled?: boolean;
148
152
  defaultServer?: string;
149
153
  credentials?: 'omit' | 'same-origin' | 'include';
154
+ apiClientPersistenceKey?: string | false;
150
155
  };
151
156
  codeSamples?: {
152
157
  enabled?: boolean;