nuxt-openapi-hyperfetch 0.1.0-alpha.1

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 (109) hide show
  1. package/.editorconfig +26 -0
  2. package/.prettierignore +17 -0
  3. package/.prettierrc.json +12 -0
  4. package/CONTRIBUTING.md +292 -0
  5. package/INSTRUCTIONS.md +327 -0
  6. package/LICENSE +202 -0
  7. package/README.md +202 -0
  8. package/dist/cli/config.d.ts +57 -0
  9. package/dist/cli/config.js +85 -0
  10. package/dist/cli/logger.d.ts +44 -0
  11. package/dist/cli/logger.js +58 -0
  12. package/dist/cli/logo.d.ts +6 -0
  13. package/dist/cli/logo.js +21 -0
  14. package/dist/cli/messages.d.ts +65 -0
  15. package/dist/cli/messages.js +86 -0
  16. package/dist/cli/prompts.d.ts +30 -0
  17. package/dist/cli/prompts.js +118 -0
  18. package/dist/cli/types.d.ts +43 -0
  19. package/dist/cli/types.js +4 -0
  20. package/dist/cli/utils.d.ts +26 -0
  21. package/dist/cli/utils.js +45 -0
  22. package/dist/generate.d.ts +6 -0
  23. package/dist/generate.js +48 -0
  24. package/dist/generators/nuxt-server/bff-templates.d.ts +25 -0
  25. package/dist/generators/nuxt-server/bff-templates.js +737 -0
  26. package/dist/generators/nuxt-server/generator.d.ts +7 -0
  27. package/dist/generators/nuxt-server/generator.js +206 -0
  28. package/dist/generators/nuxt-server/parser.d.ts +5 -0
  29. package/dist/generators/nuxt-server/parser.js +5 -0
  30. package/dist/generators/nuxt-server/templates.d.ts +35 -0
  31. package/dist/generators/nuxt-server/templates.js +412 -0
  32. package/dist/generators/nuxt-server/types.d.ts +5 -0
  33. package/dist/generators/nuxt-server/types.js +5 -0
  34. package/dist/generators/shared/parsers/heyapi-parser.d.ts +11 -0
  35. package/dist/generators/shared/parsers/heyapi-parser.js +248 -0
  36. package/dist/generators/shared/parsers/official-parser.d.ts +5 -0
  37. package/dist/generators/shared/parsers/official-parser.js +5 -0
  38. package/dist/generators/shared/runtime/apiHelpers.d.ts +183 -0
  39. package/dist/generators/shared/runtime/apiHelpers.js +268 -0
  40. package/dist/generators/shared/templates/api-callbacks-plugin.d.ts +178 -0
  41. package/dist/generators/shared/templates/api-callbacks-plugin.js +338 -0
  42. package/dist/generators/shared/types.d.ts +25 -0
  43. package/dist/generators/shared/types.js +4 -0
  44. package/dist/generators/tanstack-query/generator.d.ts +5 -0
  45. package/dist/generators/tanstack-query/generator.js +11 -0
  46. package/dist/generators/use-async-data/generator.d.ts +5 -0
  47. package/dist/generators/use-async-data/generator.js +156 -0
  48. package/dist/generators/use-async-data/parser.d.ts +5 -0
  49. package/dist/generators/use-async-data/parser.js +5 -0
  50. package/dist/generators/use-async-data/runtime/useApiAsyncData.d.ts +38 -0
  51. package/dist/generators/use-async-data/runtime/useApiAsyncData.js +122 -0
  52. package/dist/generators/use-async-data/runtime/useApiAsyncDataRaw.d.ts +54 -0
  53. package/dist/generators/use-async-data/runtime/useApiAsyncDataRaw.js +126 -0
  54. package/dist/generators/use-async-data/templates.d.ts +20 -0
  55. package/dist/generators/use-async-data/templates.js +191 -0
  56. package/dist/generators/use-async-data/types.d.ts +4 -0
  57. package/dist/generators/use-async-data/types.js +4 -0
  58. package/dist/generators/use-fetch/generator.d.ts +5 -0
  59. package/dist/generators/use-fetch/generator.js +131 -0
  60. package/dist/generators/use-fetch/parser.d.ts +9 -0
  61. package/dist/generators/use-fetch/parser.js +282 -0
  62. package/dist/generators/use-fetch/runtime/useApiRequest.d.ts +46 -0
  63. package/dist/generators/use-fetch/runtime/useApiRequest.js +158 -0
  64. package/dist/generators/use-fetch/templates.d.ts +16 -0
  65. package/dist/generators/use-fetch/templates.js +169 -0
  66. package/dist/generators/use-fetch/types.d.ts +5 -0
  67. package/dist/generators/use-fetch/types.js +5 -0
  68. package/dist/index.d.ts +2 -0
  69. package/dist/index.js +213 -0
  70. package/docs/API-REFERENCE.md +887 -0
  71. package/docs/ARCHITECTURE.md +649 -0
  72. package/docs/DEVELOPMENT.md +918 -0
  73. package/docs/QUICK-START.md +323 -0
  74. package/docs/README.md +155 -0
  75. package/docs/TROUBLESHOOTING.md +881 -0
  76. package/eslint.config.js +72 -0
  77. package/package.json +65 -0
  78. package/src/cli/config.ts +140 -0
  79. package/src/cli/logger.ts +66 -0
  80. package/src/cli/logo.ts +25 -0
  81. package/src/cli/messages.ts +97 -0
  82. package/src/cli/prompts.ts +143 -0
  83. package/src/cli/types.ts +50 -0
  84. package/src/cli/utils.ts +49 -0
  85. package/src/generate.ts +57 -0
  86. package/src/generators/nuxt-server/bff-templates.ts +754 -0
  87. package/src/generators/nuxt-server/generator.ts +270 -0
  88. package/src/generators/nuxt-server/parser.ts +5 -0
  89. package/src/generators/nuxt-server/templates.ts +483 -0
  90. package/src/generators/nuxt-server/types.ts +5 -0
  91. package/src/generators/shared/parsers/heyapi-parser.ts +307 -0
  92. package/src/generators/shared/parsers/official-parser.ts +5 -0
  93. package/src/generators/shared/runtime/apiHelpers.ts +466 -0
  94. package/src/generators/shared/templates/api-callbacks-plugin.ts +352 -0
  95. package/src/generators/shared/types.ts +27 -0
  96. package/src/generators/tanstack-query/generator.ts +11 -0
  97. package/src/generators/use-async-data/generator.ts +204 -0
  98. package/src/generators/use-async-data/parser.ts +5 -0
  99. package/src/generators/use-async-data/runtime/useApiAsyncData.ts +220 -0
  100. package/src/generators/use-async-data/runtime/useApiAsyncDataRaw.ts +236 -0
  101. package/src/generators/use-async-data/templates.ts +250 -0
  102. package/src/generators/use-async-data/types.ts +4 -0
  103. package/src/generators/use-fetch/generator.ts +169 -0
  104. package/src/generators/use-fetch/parser.ts +341 -0
  105. package/src/generators/use-fetch/runtime/useApiRequest.ts +223 -0
  106. package/src/generators/use-fetch/templates.ts +214 -0
  107. package/src/generators/use-fetch/types.ts +5 -0
  108. package/src/index.ts +265 -0
  109. package/tsconfig.json +15 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Main messages used throughout the CLI
3
+ */
4
+ export declare const MESSAGES: {
5
+ intro: string;
6
+ outro: {
7
+ success: string;
8
+ cancelled: string;
9
+ noComposables: string;
10
+ };
11
+ prompts: {
12
+ selectBackend: string;
13
+ inputPath: string;
14
+ outputPath: string;
15
+ selectComposables: string;
16
+ serverPath: string;
17
+ customPath: string;
18
+ enableBff: string;
19
+ };
20
+ steps: {
21
+ generatingOpenApi: string;
22
+ };
23
+ };
24
+ /**
25
+ * Predefined choices for select/multiselect prompts
26
+ */
27
+ export declare const CHOICES: {
28
+ backends: ({
29
+ value: "official";
30
+ label: string;
31
+ hint: string;
32
+ } | {
33
+ value: "heyapi";
34
+ label: string;
35
+ hint: string;
36
+ })[];
37
+ composables: ({
38
+ value: string;
39
+ label: string;
40
+ hint: string;
41
+ } | {
42
+ value: string;
43
+ label: string;
44
+ hint?: undefined;
45
+ })[];
46
+ serverPaths: ({
47
+ value: string;
48
+ label: string;
49
+ hint: string;
50
+ } | {
51
+ value: string;
52
+ label: string;
53
+ hint?: undefined;
54
+ })[];
55
+ };
56
+ /**
57
+ * Default values for prompts
58
+ */
59
+ export declare const DEFAULTS: {
60
+ inputPath: string;
61
+ outputPath: string;
62
+ serverPath: string;
63
+ customPath: string;
64
+ enableBff: boolean;
65
+ };
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Main messages used throughout the CLI
3
+ */
4
+ export const MESSAGES = {
5
+ // Intro/Outro messages
6
+ intro: '🎨 Nuxt Swagger Generator',
7
+ outro: {
8
+ success: '🎉 All done! Your files are ready.',
9
+ cancelled: '👋 Operation cancelled.',
10
+ noComposables: '✓ OpenAPI files generated successfully!\nNo composables selected.',
11
+ },
12
+ // Prompt messages
13
+ prompts: {
14
+ selectBackend: 'Select the OpenAPI code generator:',
15
+ inputPath: 'Enter the path to your OpenAPI/Swagger file:',
16
+ outputPath: 'Enter the output directory for generated files:',
17
+ selectComposables: 'Select which composables you want to generate:',
18
+ serverPath: 'Where do you want to generate server routes?',
19
+ customPath: 'Enter custom server route path:',
20
+ enableBff: 'Enable BFF (Backend for Frontend) with transformers and auth?',
21
+ },
22
+ // Process step messages
23
+ steps: {
24
+ generatingOpenApi: 'Generating OpenAPI files',
25
+ },
26
+ };
27
+ /**
28
+ * Predefined choices for select/multiselect prompts
29
+ */
30
+ export const CHOICES = {
31
+ // Generator backend options
32
+ backends: [
33
+ {
34
+ value: 'official',
35
+ label: 'OpenAPI Generator (official)',
36
+ hint: 'Requires Java 11+',
37
+ },
38
+ {
39
+ value: 'heyapi',
40
+ label: '@hey-api/openapi-ts (Node.js)',
41
+ hint: 'No Java required',
42
+ },
43
+ ],
44
+ // Composables selection
45
+ composables: [
46
+ {
47
+ value: 'useFetch',
48
+ label: 'useFetch - Nuxt useFetch composables',
49
+ hint: 'Recommended for most use cases',
50
+ },
51
+ {
52
+ value: 'useAsyncData',
53
+ label: 'useAsyncData - Nuxt useAsyncData composables',
54
+ },
55
+ {
56
+ value: 'nuxtServer',
57
+ label: 'Nuxt Server Routes - Generate server/api/* proxy routes',
58
+ },
59
+ ],
60
+ // Server path options
61
+ serverPaths: [
62
+ {
63
+ value: 'server/api',
64
+ label: 'server/api (recommended)',
65
+ hint: 'Standard Nuxt server directory',
66
+ },
67
+ {
68
+ value: 'src/server/api',
69
+ label: 'src/server/api',
70
+ },
71
+ {
72
+ value: 'custom',
73
+ label: 'Custom path...',
74
+ },
75
+ ],
76
+ };
77
+ /**
78
+ * Default values for prompts
79
+ */
80
+ export const DEFAULTS = {
81
+ inputPath: './swagger.yaml',
82
+ outputPath: './swagger',
83
+ serverPath: 'server/api',
84
+ customPath: './server/api',
85
+ enableBff: true,
86
+ };
@@ -0,0 +1,30 @@
1
+ import type { InitialInputs, ComposablesSelection, BffConfig, GeneratorBackend } from './types.js';
2
+ /**
3
+ * Ask which OpenAPI generator backend to use
4
+ */
5
+ export declare function promptGeneratorBackend(provided?: GeneratorBackend): Promise<GeneratorBackend>;
6
+ /**
7
+ * Ask for input and output paths
8
+ * Only asks for paths that weren't provided via CLI arguments
9
+ */
10
+ export declare function promptInitialInputs(inputProvided?: string, outputProvided?: string): Promise<InitialInputs>;
11
+ /**
12
+ * Ask for the input path only (used when only nuxtServer is selected)
13
+ */
14
+ export declare function promptInputPath(provided?: string): Promise<string>;
15
+ /**
16
+ * Ask which composables to generate (multiselect)
17
+ * Allows user to select none, one, or multiple composables
18
+ */
19
+ export declare function promptComposablesSelection(): Promise<ComposablesSelection>;
20
+ /**
21
+ * Ask for server route path
22
+ * If user selects 'custom', prompts for custom path
23
+ * Returns the final path to use
24
+ */
25
+ export declare function promptServerRoutePath(): Promise<string>;
26
+ /**
27
+ * Ask about BFF (Backend for Frontend) support
28
+ * Returns whether BFF should be enabled
29
+ */
30
+ export declare function promptBffConfig(): Promise<BffConfig>;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * All CLI prompts using @clack/prompts
3
+ * Each function handles a specific prompt flow and returns typed data
4
+ */
5
+ import * as p from '@clack/prompts';
6
+ import { checkCancellation, validateNonEmpty } from './utils.js';
7
+ import { MESSAGES, CHOICES, DEFAULTS } from './messages.js';
8
+ /**
9
+ * Ask which OpenAPI generator backend to use
10
+ */
11
+ export async function promptGeneratorBackend(provided) {
12
+ if (provided) {
13
+ return provided;
14
+ }
15
+ const result = await p.select({
16
+ message: MESSAGES.prompts.selectBackend,
17
+ options: CHOICES.backends,
18
+ initialValue: 'official',
19
+ });
20
+ checkCancellation(result);
21
+ return result;
22
+ }
23
+ /**
24
+ * Ask for input and output paths
25
+ * Only asks for paths that weren't provided via CLI arguments
26
+ */
27
+ export async function promptInitialInputs(inputProvided, outputProvided) {
28
+ let inputPath = inputProvided;
29
+ let outputPath = outputProvided;
30
+ // Ask for input path if not provided
31
+ if (!inputPath) {
32
+ const result = await p.text({
33
+ message: MESSAGES.prompts.inputPath,
34
+ placeholder: DEFAULTS.inputPath,
35
+ defaultValue: DEFAULTS.inputPath,
36
+ });
37
+ checkCancellation(result);
38
+ inputPath = result;
39
+ }
40
+ // Ask for output path if not provided
41
+ if (!outputPath) {
42
+ const result = await p.text({
43
+ message: MESSAGES.prompts.outputPath,
44
+ placeholder: DEFAULTS.outputPath,
45
+ defaultValue: DEFAULTS.outputPath,
46
+ });
47
+ checkCancellation(result);
48
+ outputPath = result;
49
+ }
50
+ return { inputPath, outputPath };
51
+ }
52
+ /**
53
+ * Ask for the input path only (used when only nuxtServer is selected)
54
+ */
55
+ export async function promptInputPath(provided) {
56
+ if (provided) {
57
+ return provided;
58
+ }
59
+ const result = await p.text({
60
+ message: MESSAGES.prompts.inputPath,
61
+ placeholder: DEFAULTS.inputPath,
62
+ defaultValue: DEFAULTS.inputPath,
63
+ });
64
+ checkCancellation(result);
65
+ return result;
66
+ }
67
+ /**
68
+ * Ask which composables to generate (multiselect)
69
+ * Allows user to select none, one, or multiple composables
70
+ */
71
+ export async function promptComposablesSelection() {
72
+ const result = await p.multiselect({
73
+ message: MESSAGES.prompts.selectComposables,
74
+ options: CHOICES.composables,
75
+ initialValues: ['useFetch'], // useFetch checked by default
76
+ required: false, // Allow empty selection
77
+ });
78
+ checkCancellation(result);
79
+ return { composables: result };
80
+ }
81
+ /**
82
+ * Ask for server route path
83
+ * If user selects 'custom', prompts for custom path
84
+ * Returns the final path to use
85
+ */
86
+ export async function promptServerRoutePath() {
87
+ // First, ask for the path type
88
+ const pathResult = await p.select({
89
+ message: MESSAGES.prompts.serverPath,
90
+ options: CHOICES.serverPaths,
91
+ initialValue: DEFAULTS.serverPath,
92
+ });
93
+ checkCancellation(pathResult);
94
+ // If custom selected, ask for custom path
95
+ if (pathResult === 'custom') {
96
+ const customResult = await p.text({
97
+ message: MESSAGES.prompts.customPath,
98
+ placeholder: DEFAULTS.customPath,
99
+ defaultValue: DEFAULTS.customPath,
100
+ validate: validateNonEmpty,
101
+ });
102
+ checkCancellation(customResult);
103
+ return customResult;
104
+ }
105
+ return pathResult;
106
+ }
107
+ /**
108
+ * Ask about BFF (Backend for Frontend) support
109
+ * Returns whether BFF should be enabled
110
+ */
111
+ export async function promptBffConfig() {
112
+ const result = await p.confirm({
113
+ message: MESSAGES.prompts.enableBff,
114
+ initialValue: DEFAULTS.enableBff,
115
+ });
116
+ checkCancellation(result);
117
+ return { enableBff: result };
118
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * TypeScript types for CLI prompts and responses
3
+ */
4
+ /**
5
+ * Generator backend selector (internal)
6
+ */
7
+ export type GeneratorBackend = 'official' | 'heyapi';
8
+ /**
9
+ * Generator engine value for nxh.config — user-facing alias
10
+ * 'openapi' maps to the official Java-based OpenAPI Generator
11
+ * 'heyapi' maps to @hey-api/openapi-ts (Node.js native)
12
+ */
13
+ export type ConfigGenerator = 'openapi' | 'heyapi';
14
+ /**
15
+ * Initial input and output paths
16
+ */
17
+ export interface InitialInputs {
18
+ inputPath: string;
19
+ outputPath: string;
20
+ }
21
+ /**
22
+ * Composables selection (checkbox response)
23
+ */
24
+ export interface ComposablesSelection {
25
+ composables: Array<'useFetch' | 'useAsyncData' | 'nuxtServer'>;
26
+ }
27
+ /**
28
+ * Server route path configuration
29
+ */
30
+ export interface ServerRouteConfig {
31
+ serverPath: string;
32
+ customPath?: string;
33
+ }
34
+ /**
35
+ * BFF (Backend for Frontend) configuration
36
+ */
37
+ export interface BffConfig {
38
+ enableBff: boolean;
39
+ }
40
+ /**
41
+ * Valid composable types
42
+ */
43
+ export type ComposableType = 'useFetch' | 'useAsyncData' | 'nuxtServer';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * TypeScript types for CLI prompts and responses
3
+ */
4
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Handle cancellation uniformly across all prompts
3
+ * This function never returns - it exits the process
4
+ */
5
+ export declare function handleCancel(): never;
6
+ /**
7
+ * Check if user cancelled the prompt and exit if so
8
+ * Use this after every prompt to handle Ctrl+C gracefully
9
+ *
10
+ * @param value - The value returned from a prompt
11
+ *
12
+ * @example
13
+ * const result = await p.text({ message: 'Enter name' });
14
+ * checkCancellation(result);
15
+ * // Now we know result is not a cancel symbol
16
+ */
17
+ export declare function checkCancellation(value: unknown): void;
18
+ /**
19
+ * Format a file path for display in messages
20
+ * Normalizes path separators and removes trailing slashes
21
+ */
22
+ export declare function formatPath(path: string): string;
23
+ /**
24
+ * Validate that a path is not empty
25
+ */
26
+ export declare function validateNonEmpty(value: string | undefined): string | undefined;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Utility functions for CLI operations
3
+ */
4
+ import * as p from '@clack/prompts';
5
+ import { MESSAGES } from './messages.js';
6
+ /**
7
+ * Handle cancellation uniformly across all prompts
8
+ * This function never returns - it exits the process
9
+ */
10
+ export function handleCancel() {
11
+ p.cancel(MESSAGES.outro.cancelled);
12
+ process.exit(0);
13
+ }
14
+ /**
15
+ * Check if user cancelled the prompt and exit if so
16
+ * Use this after every prompt to handle Ctrl+C gracefully
17
+ *
18
+ * @param value - The value returned from a prompt
19
+ *
20
+ * @example
21
+ * const result = await p.text({ message: 'Enter name' });
22
+ * checkCancellation(result);
23
+ * // Now we know result is not a cancel symbol
24
+ */
25
+ export function checkCancellation(value) {
26
+ if (p.isCancel(value)) {
27
+ handleCancel();
28
+ }
29
+ }
30
+ /**
31
+ * Format a file path for display in messages
32
+ * Normalizes path separators and removes trailing slashes
33
+ */
34
+ export function formatPath(path) {
35
+ return path.replace(/\\/g, '/').replace(/\/$/, '');
36
+ }
37
+ /**
38
+ * Validate that a path is not empty
39
+ */
40
+ export function validateNonEmpty(value) {
41
+ if (!value || value.trim() === '') {
42
+ return 'This field is required';
43
+ }
44
+ return undefined;
45
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Check if Java is installed. Returns true if found, false otherwise.
3
+ */
4
+ export declare function checkJavaInstalled(): boolean;
5
+ export declare const generateOpenApiFiles: (input: string, output: string) => void;
6
+ export declare const generateHeyApiFiles: (input: string, output: string) => Promise<void>;
@@ -0,0 +1,48 @@
1
+ import { execSync } from 'child_process';
2
+ import * as path from 'path';
3
+ import { p, logSuccess, logError } from './cli/logger.js';
4
+ /**
5
+ * Check if Java is installed. Returns true if found, false otherwise.
6
+ */
7
+ export function checkJavaInstalled() {
8
+ try {
9
+ execSync('java -version', { stdio: 'ignore' });
10
+ return true;
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ export const generateOpenApiFiles = (input, output) => {
17
+ try {
18
+ const inputPath = path.resolve(input);
19
+ const outputPath = path.resolve(output);
20
+ p.log.info(`Input: ${inputPath}`);
21
+ p.log.info(`Output: ${outputPath}`);
22
+ execSync(`npx @openapitools/openapi-generator-cli generate -i "${inputPath}" -g typescript-fetch -o "${outputPath}"`, { stdio: 'inherit' });
23
+ logSuccess(`Files generated successfully in ${outputPath}`);
24
+ }
25
+ catch (error) {
26
+ logError(`Error generating files: ${String(error)}`);
27
+ process.exit(1);
28
+ }
29
+ };
30
+ export const generateHeyApiFiles = async (input, output) => {
31
+ try {
32
+ const inputPath = path.resolve(input);
33
+ const outputPath = path.resolve(output);
34
+ p.log.info(`Input: ${inputPath}`);
35
+ p.log.info(`Output: ${outputPath}`);
36
+ const { createClient } = await import('@hey-api/openapi-ts');
37
+ await createClient({
38
+ input: inputPath,
39
+ output: outputPath,
40
+ plugins: ['@hey-api/typescript', '@hey-api/sdk'],
41
+ });
42
+ logSuccess(`Files generated successfully in ${outputPath}`);
43
+ }
44
+ catch (error) {
45
+ logError(`Error generating files: ${String(error)}`);
46
+ process.exit(1);
47
+ }
48
+ };
@@ -0,0 +1,25 @@
1
+ import type { MethodInfo } from './types.js';
2
+ /**
3
+ * Generate the Auth Context stub file
4
+ * This file is generated ONCE and never overwritten
5
+ */
6
+ export declare function generateAuthContextStub(): string;
7
+ /**
8
+ * Generate the Auth Types stub file
9
+ * This file is generated ONCE and never overwritten
10
+ */
11
+ export declare function generateAuthTypesStub(): string;
12
+ /**
13
+ * Generate a transformer stub for a specific resource
14
+ * This file is generated ONCE and never overwritten
15
+ */
16
+ export declare function generateTransformerStub(resource: string, methods: MethodInfo[], inputDir: string): string;
17
+ /**
18
+ * Generate transformer examples file
19
+ * This file is ALWAYS regenerated as a reference
20
+ */
21
+ export declare function generateTransformerExamples(): string;
22
+ /**
23
+ * Generate BFF README file
24
+ */
25
+ export declare function generateBffReadme(): string;