fork of hey-api/openapi-ts because I need some additional things
1import type { OperationPathStrategy, OperationStructureStrategy } from '@hey-api/shared';
2import { OperationPath, OperationStrategy } from '@hey-api/shared';
3
4import type { HeyApiSdkPlugin } from '../types';
5
6function resolvePath(plugin: HeyApiSdkPlugin['Instance']): OperationPathStrategy {
7 if (plugin.config.operations.nesting === 'id') {
8 return OperationPath.id();
9 }
10
11 if (plugin.config.operations.nesting === 'operationId') {
12 return OperationPath.fromOperationId({
13 delimiters: plugin.config.operations.nestingDelimiters,
14 fallback: OperationPath.id(),
15 });
16 }
17
18 return plugin.config.operations.nesting;
19}
20
21export function resolveStrategy(plugin: HeyApiSdkPlugin['Instance']): OperationStructureStrategy {
22 // if (plugin.config.operations.strategy === 'flat') {
23 // return OperationStrategy.flat({
24 // path: (operation) => [resolvePath(plugin)(operation).join('.')],
25 // });
26 // }
27
28 if (plugin.config.operations.strategy === 'single') {
29 const root = plugin.config.operations.containerName;
30 return OperationStrategy.single({
31 path: resolvePath(plugin),
32 root: typeof root.name === 'string' ? root.name : (root.name?.('') ?? ''),
33 });
34 }
35
36 if (plugin.config.operations.strategy === 'byTags') {
37 return OperationStrategy.byTags({
38 fallback: plugin.config.operations.strategyDefaultTag,
39 path: resolvePath(plugin),
40 });
41 }
42
43 return plugin.config.operations.strategy;
44}