vovk 3.0.0-draft.404 → 3.0.0-draft.405
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/cjs/client/createRPC.d.ts +3 -1
- package/cjs/client/createRPC.js +9 -3
- package/cjs/client/fetcher.d.ts +3 -1
- package/cjs/client/types.d.ts +3 -1
- package/cjs/openapi/openAPIToVovkSchema/index.d.ts +1 -1
- package/cjs/openapi/openAPIToVovkSchema/index.js +1 -7
- package/cjs/openapi/vovkSchemaToOpenAPI.js +1 -1
- package/cjs/types.d.ts +12 -15
- package/cjs/utils/getGeneratorConfig.d.ts +3 -2
- package/cjs/utils/getGeneratorConfig.js +8 -3
- package/mjs/client/createRPC.d.ts +3 -1
- package/mjs/client/createRPC.js +9 -3
- package/mjs/client/fetcher.d.ts +3 -1
- package/mjs/client/types.d.ts +3 -1
- package/mjs/openapi/openAPIToVovkSchema/index.d.ts +1 -1
- package/mjs/openapi/openAPIToVovkSchema/index.js +1 -7
- package/mjs/openapi/vovkSchemaToOpenAPI.js +1 -1
- package/mjs/types.d.ts +12 -15
- package/mjs/utils/getGeneratorConfig.d.ts +3 -2
- package/mjs/utils/getGeneratorConfig.js +8 -3
- package/package.json +1 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { KnownAny } from '../types';
|
|
2
2
|
import type { VovkClient, VovkClientFetcher, VovkDefaultFetcherOptions } from './types';
|
|
3
|
-
export declare const createRPC: <T, OPTS extends Record<string, KnownAny> = Record<string, never>>(givenSchema: unknown, segmentName: string, rpcModuleName: string,
|
|
3
|
+
export declare const createRPC: <T, OPTS extends Record<string, KnownAny> = Record<string, never>>(givenSchema: unknown, segmentName: string, rpcModuleName: string, givenFetcher?: VovkClientFetcher<OPTS> | Promise<{
|
|
4
|
+
fetcher: VovkClientFetcher<OPTS>;
|
|
5
|
+
}>, options?: VovkDefaultFetcherOptions<OPTS>) => VovkClient<T, OPTS>;
|
package/cjs/client/createRPC.js
CHANGED
|
@@ -17,9 +17,9 @@ const getHandlerPath = (endpoint, params, query) => {
|
|
|
17
17
|
}
|
|
18
18
|
return `${result}${queryStr ? '?' : ''}${queryStr}`;
|
|
19
19
|
};
|
|
20
|
-
const createRPC = (givenSchema, segmentName, rpcModuleName,
|
|
20
|
+
const createRPC = (givenSchema, segmentName, rpcModuleName, givenFetcher, options) => {
|
|
21
21
|
const schema = givenSchema; // fixes incompatibilities with JSON module
|
|
22
|
-
fetcher ??=
|
|
22
|
+
// fetcher ??= defaultFetcher as NonNullable<typeof fetcher>;
|
|
23
23
|
const segmentNamePath = options?.segmentNameOverride ?? segmentName;
|
|
24
24
|
const segmentSchema = schema.segments[segmentName];
|
|
25
25
|
if (!segmentSchema)
|
|
@@ -47,8 +47,14 @@ const createRPC = (givenSchema, segmentName, rpcModuleName, fetcher, options) =>
|
|
|
47
47
|
return endpoint;
|
|
48
48
|
};
|
|
49
49
|
const handler = (async (input = {}) => {
|
|
50
|
+
const fetcher = givenFetcher instanceof Promise
|
|
51
|
+
? (await givenFetcher).fetcher
|
|
52
|
+
: (givenFetcher ?? fetcher_1.fetcher);
|
|
50
53
|
const validate = async (validationInput, { endpoint, }) => {
|
|
51
|
-
const validateOnClient = input.validateOnClient ??
|
|
54
|
+
const validateOnClient = input.validateOnClient ??
|
|
55
|
+
(options?.validateOnClient instanceof Promise
|
|
56
|
+
? (await options?.validateOnClient)?.validateOnClient
|
|
57
|
+
: options?.validateOnClient);
|
|
52
58
|
if (validateOnClient && validation) {
|
|
53
59
|
if (typeof validateOnClient !== 'function') {
|
|
54
60
|
throw new Error('validateOnClient must be a function');
|
package/cjs/client/fetcher.d.ts
CHANGED
|
@@ -11,7 +11,9 @@ export declare function createFetcher<T>({ prepareRequestInit, transformResponse
|
|
|
11
11
|
export declare const fetcher: VovkClientFetcher<{
|
|
12
12
|
apiRoot?: string;
|
|
13
13
|
disableClientValidation?: boolean;
|
|
14
|
-
validateOnClient?: import("./types").VovkValidateOnClient<unknown> |
|
|
14
|
+
validateOnClient?: import("./types").VovkValidateOnClient<unknown> | Promise<{
|
|
15
|
+
validateOnClient: import("./types").VovkValidateOnClient<unknown>;
|
|
16
|
+
}> | undefined;
|
|
15
17
|
interpretAs?: string;
|
|
16
18
|
init?: RequestInit;
|
|
17
19
|
}>;
|
package/cjs/client/types.d.ts
CHANGED
|
@@ -101,7 +101,9 @@ export type VovkClientFetcher<TFetcherOptions> = (options: {
|
|
|
101
101
|
export type VovkDefaultFetcherOptions<T> = T & {
|
|
102
102
|
apiRoot?: string;
|
|
103
103
|
disableClientValidation?: boolean;
|
|
104
|
-
validateOnClient?: VovkValidateOnClient<T
|
|
104
|
+
validateOnClient?: VovkValidateOnClient<T> | Promise<{
|
|
105
|
+
validateOnClient: VovkValidateOnClient<T>;
|
|
106
|
+
}>;
|
|
105
107
|
interpretAs?: string;
|
|
106
108
|
init?: RequestInit;
|
|
107
109
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { VovkOpenAPIMixinNormalized, type VovkSchema } from '../../types';
|
|
2
|
-
export declare function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey,
|
|
2
|
+
export declare function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey, segmentName, }: VovkOpenAPIMixinNormalized & {
|
|
3
3
|
segmentName?: string;
|
|
4
4
|
}): VovkSchema;
|
|
@@ -4,7 +4,7 @@ exports.openAPIToVovkSchema = openAPIToVovkSchema;
|
|
|
4
4
|
const types_1 = require("../../types");
|
|
5
5
|
const applyComponentsSchemas_1 = require("./applyComponentsSchemas");
|
|
6
6
|
const inlineRefs_1 = require("./inlineRefs");
|
|
7
|
-
function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey,
|
|
7
|
+
function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey, segmentName, }) {
|
|
8
8
|
segmentName = segmentName ?? '';
|
|
9
9
|
const forceApiRoot = apiRoot ??
|
|
10
10
|
openAPIObject.servers?.[0]?.url ??
|
|
@@ -26,12 +26,6 @@ function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getMo
|
|
|
26
26
|
controllers: {},
|
|
27
27
|
meta: {
|
|
28
28
|
openAPIObject: noPathsOpenAPIObject,
|
|
29
|
-
package: Object.assign({}, noPathsOpenAPIObject.info
|
|
30
|
-
? {
|
|
31
|
-
description: packageJson?.description ??
|
|
32
|
-
`**${noPathsOpenAPIObject.info.title}**\n${noPathsOpenAPIObject.info.description ?? ''}`,
|
|
33
|
-
}
|
|
34
|
-
: {}, packageJson),
|
|
35
29
|
},
|
|
36
30
|
},
|
|
37
31
|
},
|
|
@@ -50,7 +50,7 @@ function vovkSchemaToOpenAPI({ rootEntry = 'api', schema: fullSchema, config, se
|
|
|
50
50
|
const { openAPIObject, snippets: snippetsConfig, package: packageJson, } = (0, getGeneratorConfig_1.getGeneratorConfig)({
|
|
51
51
|
schema: fullSchema,
|
|
52
52
|
config,
|
|
53
|
-
segmentName: givenSegmentName,
|
|
53
|
+
segmentName: givenSegmentName ?? null,
|
|
54
54
|
});
|
|
55
55
|
for (const [segmentName, segmentSchema] of givenSegmentName
|
|
56
56
|
? [[givenSegmentName, fullSchema.segments[givenSegmentName]]]
|
package/cjs/types.d.ts
CHANGED
|
@@ -338,6 +338,11 @@ export interface VovkGeneratorConfigCommon {
|
|
|
338
338
|
snippets?: VovkSnippetsConfig;
|
|
339
339
|
openAPIObject?: Partial<OpenAPIObject>;
|
|
340
340
|
reExports?: Record<string, string>;
|
|
341
|
+
imports?: {
|
|
342
|
+
fetcher?: string | [string, string] | [string];
|
|
343
|
+
validateOnClient?: string | [string, string] | [string] | null;
|
|
344
|
+
createRPC?: string | [string, string] | [string];
|
|
345
|
+
};
|
|
341
346
|
}
|
|
342
347
|
export type ClientTemplateDef = {
|
|
343
348
|
extends?: string;
|
|
@@ -362,9 +367,6 @@ export interface VovkOpenAPIMixin {
|
|
|
362
367
|
} | {
|
|
363
368
|
object: OpenAPIObject;
|
|
364
369
|
};
|
|
365
|
-
package?: VovkPackageJson;
|
|
366
|
-
readme?: VovkReadmeConfig;
|
|
367
|
-
snippets?: VovkSnippetsConfig;
|
|
368
370
|
apiRoot?: string;
|
|
369
371
|
getModuleName?: 'nestjs-operation-id' | (string & {}) | 'api' | GetOpenAPINameFn;
|
|
370
372
|
getMethodName?: 'nestjs-operation-id' | 'camel-case-operation-id' | 'auto' | GetOpenAPINameFn;
|
|
@@ -387,8 +389,13 @@ export interface VovkSegmentConfig extends VovkGeneratorConfigCommon {
|
|
|
387
389
|
export interface VovkGeneratorConfig extends VovkGeneratorConfigCommon {
|
|
388
390
|
segments?: Record<string, VovkSegmentConfig>;
|
|
389
391
|
}
|
|
390
|
-
interface
|
|
392
|
+
export interface VovkGeneratorConfigStrict extends Omit<VovkGeneratorConfig, 'origin' | 'segments' | 'imports'> {
|
|
391
393
|
origin: string;
|
|
394
|
+
imports: {
|
|
395
|
+
fetcher: [string, string] | [string];
|
|
396
|
+
validateOnClient: [string, string] | [string] | null;
|
|
397
|
+
createRPC: [string, string] | [string];
|
|
398
|
+
};
|
|
392
399
|
segments?: Record<string, Omit<VovkSegmentConfig, 'openAPIMixin'> & {
|
|
393
400
|
openAPIMixin: VovkOpenAPIMixinNormalized;
|
|
394
401
|
}>;
|
|
@@ -409,11 +416,6 @@ type VovkUserConfig = {
|
|
|
409
416
|
segmentedClient?: ClientConfigSegmented;
|
|
410
417
|
bundle?: BundleConfig;
|
|
411
418
|
clientTemplateDefs?: Record<string, ClientTemplateDef>;
|
|
412
|
-
imports?: {
|
|
413
|
-
fetcher?: string | [string, string] | [string];
|
|
414
|
-
validateOnClient?: string | [string, string] | [string];
|
|
415
|
-
createRPC?: string | [string, string] | [string];
|
|
416
|
-
};
|
|
417
419
|
rootSegmentModulesDirName?: string;
|
|
418
420
|
moduleTemplates?: {
|
|
419
421
|
service?: string;
|
|
@@ -426,15 +428,10 @@ export type VovkConfig = VovkUserConfig;
|
|
|
426
428
|
export type VovkStrictConfig = Required<Omit<VovkUserConfig, 'emitConfig' | 'libs' | 'imports' | 'composedClient' | 'segmentedClient' | 'bundle' | 'extendClientWithOpenAPI' | 'generator'>> & {
|
|
427
429
|
emitConfig: (keyof VovkStrictConfig | string)[];
|
|
428
430
|
bundle: RequireAllExcept<NonNullable<VovkUserConfig['bundle']>, 'includeSegments' | 'excludeSegments'>;
|
|
429
|
-
imports: {
|
|
430
|
-
fetcher: [string, string] | [string];
|
|
431
|
-
validateOnClient: [string, string] | [string] | null;
|
|
432
|
-
createRPC: [string, string] | [string];
|
|
433
|
-
};
|
|
434
431
|
libs: Record<string, KnownAny>;
|
|
435
432
|
composedClient: RequireFields<ClientConfigComposed, 'enabled' | 'fromTemplates' | 'outDir' | 'prettifyClient'>;
|
|
436
433
|
segmentedClient: RequireFields<ClientConfigSegmented, 'enabled' | 'fromTemplates' | 'outDir' | 'prettifyClient'>;
|
|
437
|
-
generatorConfig:
|
|
434
|
+
generatorConfig: VovkGeneratorConfigStrict;
|
|
438
435
|
};
|
|
439
436
|
export type RequireFields<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
440
437
|
export type RequireAllExcept<T, K extends keyof T> = Required<Omit<T, K>> & Pick<T, K>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { PackageJson } from 'type-fest';
|
|
2
|
-
import type { VovkGeneratorConfigCommon, VovkReadmeConfig, VovkSnippetsConfig, VovkSchema } from '../types';
|
|
2
|
+
import type { VovkGeneratorConfigCommon, VovkReadmeConfig, VovkSnippetsConfig, VovkSchema, VovkGeneratorConfigStrict } from '../types';
|
|
3
3
|
import type { OpenAPIObject } from 'openapi3-ts/oas31';
|
|
4
4
|
export declare function getGeneratorConfig({ schema, config, segmentName, isBundle, }: {
|
|
5
5
|
schema: VovkSchema;
|
|
6
6
|
config?: VovkGeneratorConfigCommon;
|
|
7
|
-
segmentName
|
|
7
|
+
segmentName: string | null;
|
|
8
8
|
isBundle?: boolean;
|
|
9
9
|
}): {
|
|
10
10
|
readme: VovkReadmeConfig;
|
|
@@ -12,4 +12,5 @@ export declare function getGeneratorConfig({ schema, config, segmentName, isBund
|
|
|
12
12
|
snippets: VovkSnippetsConfig;
|
|
13
13
|
origin: string;
|
|
14
14
|
package: PackageJson;
|
|
15
|
+
imports: VovkGeneratorConfigStrict['imports'];
|
|
15
16
|
};
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getGeneratorConfig = getGeneratorConfig;
|
|
7
7
|
const deepExtend_1 = __importDefault(require("./deepExtend"));
|
|
8
8
|
function getGeneratorConfig({ schema, config, segmentName, isBundle, }) {
|
|
9
|
-
const packageJson = (0, deepExtend_1.default)({}, schema.meta?.package, schema.meta?.config?.generatorConfig?.package, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.package : undefined, segmentName ? schema.segments?.[segmentName]?.meta?.package : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.package : undefined,
|
|
9
|
+
const packageJson = (0, deepExtend_1.default)({}, schema.meta?.package, schema.meta?.config?.generatorConfig?.package, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.package : undefined, segmentName ? schema.segments?.[segmentName]?.meta?.package : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.package : undefined, config?.package);
|
|
10
10
|
return {
|
|
11
11
|
package: packageJson,
|
|
12
12
|
openAPIObject: (0, deepExtend_1.default)({}, {
|
|
@@ -16,12 +16,17 @@ function getGeneratorConfig({ schema, config, segmentName, isBundle, }) {
|
|
|
16
16
|
description: packageJson.description,
|
|
17
17
|
},
|
|
18
18
|
}, schema.meta?.config?.generatorConfig?.openAPIObject, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.openAPIObject : undefined, segmentName ? schema?.segments?.[segmentName]?.meta?.openAPIObject : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIObject : undefined, config?.openAPIObject),
|
|
19
|
-
snippets: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.snippets, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.snippets : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.snippets : undefined,
|
|
20
|
-
readme: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.readme, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.readme : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.readme : undefined,
|
|
19
|
+
snippets: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.snippets, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.snippets : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.snippets : undefined, config?.snippets),
|
|
20
|
+
readme: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.readme, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.readme : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.readme : undefined, config?.readme),
|
|
21
21
|
origin: config?.origin ||
|
|
22
22
|
schema.meta?.config?.generatorConfig?.origin ||
|
|
23
23
|
(segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.origin : undefined) ||
|
|
24
24
|
(isBundle ? schema.meta?.config?.bundle?.generatorConfig?.origin : undefined) ||
|
|
25
25
|
'',
|
|
26
|
+
imports: (0, deepExtend_1.default)({
|
|
27
|
+
fetcher: ['vovk'],
|
|
28
|
+
validateOnClient: null,
|
|
29
|
+
createRPC: ['vovk'],
|
|
30
|
+
}, schema.meta?.config?.generatorConfig?.imports, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.imports : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.imports : undefined, config?.imports),
|
|
26
31
|
};
|
|
27
32
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { KnownAny } from '../types';
|
|
2
2
|
import type { VovkClient, VovkClientFetcher, VovkDefaultFetcherOptions } from './types';
|
|
3
|
-
export declare const createRPC: <T, OPTS extends Record<string, KnownAny> = Record<string, never>>(givenSchema: unknown, segmentName: string, rpcModuleName: string,
|
|
3
|
+
export declare const createRPC: <T, OPTS extends Record<string, KnownAny> = Record<string, never>>(givenSchema: unknown, segmentName: string, rpcModuleName: string, givenFetcher?: VovkClientFetcher<OPTS> | Promise<{
|
|
4
|
+
fetcher: VovkClientFetcher<OPTS>;
|
|
5
|
+
}>, options?: VovkDefaultFetcherOptions<OPTS>) => VovkClient<T, OPTS>;
|
package/mjs/client/createRPC.js
CHANGED
|
@@ -17,9 +17,9 @@ const getHandlerPath = (endpoint, params, query) => {
|
|
|
17
17
|
}
|
|
18
18
|
return `${result}${queryStr ? '?' : ''}${queryStr}`;
|
|
19
19
|
};
|
|
20
|
-
const createRPC = (givenSchema, segmentName, rpcModuleName,
|
|
20
|
+
const createRPC = (givenSchema, segmentName, rpcModuleName, givenFetcher, options) => {
|
|
21
21
|
const schema = givenSchema; // fixes incompatibilities with JSON module
|
|
22
|
-
fetcher ??=
|
|
22
|
+
// fetcher ??= defaultFetcher as NonNullable<typeof fetcher>;
|
|
23
23
|
const segmentNamePath = options?.segmentNameOverride ?? segmentName;
|
|
24
24
|
const segmentSchema = schema.segments[segmentName];
|
|
25
25
|
if (!segmentSchema)
|
|
@@ -47,8 +47,14 @@ const createRPC = (givenSchema, segmentName, rpcModuleName, fetcher, options) =>
|
|
|
47
47
|
return endpoint;
|
|
48
48
|
};
|
|
49
49
|
const handler = (async (input = {}) => {
|
|
50
|
+
const fetcher = givenFetcher instanceof Promise
|
|
51
|
+
? (await givenFetcher).fetcher
|
|
52
|
+
: (givenFetcher ?? fetcher_1.fetcher);
|
|
50
53
|
const validate = async (validationInput, { endpoint, }) => {
|
|
51
|
-
const validateOnClient = input.validateOnClient ??
|
|
54
|
+
const validateOnClient = input.validateOnClient ??
|
|
55
|
+
(options?.validateOnClient instanceof Promise
|
|
56
|
+
? (await options?.validateOnClient)?.validateOnClient
|
|
57
|
+
: options?.validateOnClient);
|
|
52
58
|
if (validateOnClient && validation) {
|
|
53
59
|
if (typeof validateOnClient !== 'function') {
|
|
54
60
|
throw new Error('validateOnClient must be a function');
|
package/mjs/client/fetcher.d.ts
CHANGED
|
@@ -11,7 +11,9 @@ export declare function createFetcher<T>({ prepareRequestInit, transformResponse
|
|
|
11
11
|
export declare const fetcher: VovkClientFetcher<{
|
|
12
12
|
apiRoot?: string;
|
|
13
13
|
disableClientValidation?: boolean;
|
|
14
|
-
validateOnClient?: import("./types").VovkValidateOnClient<unknown> |
|
|
14
|
+
validateOnClient?: import("./types").VovkValidateOnClient<unknown> | Promise<{
|
|
15
|
+
validateOnClient: import("./types").VovkValidateOnClient<unknown>;
|
|
16
|
+
}> | undefined;
|
|
15
17
|
interpretAs?: string;
|
|
16
18
|
init?: RequestInit;
|
|
17
19
|
}>;
|
package/mjs/client/types.d.ts
CHANGED
|
@@ -101,7 +101,9 @@ export type VovkClientFetcher<TFetcherOptions> = (options: {
|
|
|
101
101
|
export type VovkDefaultFetcherOptions<T> = T & {
|
|
102
102
|
apiRoot?: string;
|
|
103
103
|
disableClientValidation?: boolean;
|
|
104
|
-
validateOnClient?: VovkValidateOnClient<T
|
|
104
|
+
validateOnClient?: VovkValidateOnClient<T> | Promise<{
|
|
105
|
+
validateOnClient: VovkValidateOnClient<T>;
|
|
106
|
+
}>;
|
|
105
107
|
interpretAs?: string;
|
|
106
108
|
init?: RequestInit;
|
|
107
109
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { VovkOpenAPIMixinNormalized, type VovkSchema } from '../../types';
|
|
2
|
-
export declare function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey,
|
|
2
|
+
export declare function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey, segmentName, }: VovkOpenAPIMixinNormalized & {
|
|
3
3
|
segmentName?: string;
|
|
4
4
|
}): VovkSchema;
|
|
@@ -4,7 +4,7 @@ exports.openAPIToVovkSchema = openAPIToVovkSchema;
|
|
|
4
4
|
const types_1 = require("../../types");
|
|
5
5
|
const applyComponentsSchemas_1 = require("./applyComponentsSchemas");
|
|
6
6
|
const inlineRefs_1 = require("./inlineRefs");
|
|
7
|
-
function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey,
|
|
7
|
+
function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getModuleName, getMethodName, errorMessageKey, segmentName, }) {
|
|
8
8
|
segmentName = segmentName ?? '';
|
|
9
9
|
const forceApiRoot = apiRoot ??
|
|
10
10
|
openAPIObject.servers?.[0]?.url ??
|
|
@@ -26,12 +26,6 @@ function openAPIToVovkSchema({ apiRoot, source: { object: openAPIObject }, getMo
|
|
|
26
26
|
controllers: {},
|
|
27
27
|
meta: {
|
|
28
28
|
openAPIObject: noPathsOpenAPIObject,
|
|
29
|
-
package: Object.assign({}, noPathsOpenAPIObject.info
|
|
30
|
-
? {
|
|
31
|
-
description: packageJson?.description ??
|
|
32
|
-
`**${noPathsOpenAPIObject.info.title}**\n${noPathsOpenAPIObject.info.description ?? ''}`,
|
|
33
|
-
}
|
|
34
|
-
: {}, packageJson),
|
|
35
29
|
},
|
|
36
30
|
},
|
|
37
31
|
},
|
|
@@ -50,7 +50,7 @@ function vovkSchemaToOpenAPI({ rootEntry = 'api', schema: fullSchema, config, se
|
|
|
50
50
|
const { openAPIObject, snippets: snippetsConfig, package: packageJson, } = (0, getGeneratorConfig_1.getGeneratorConfig)({
|
|
51
51
|
schema: fullSchema,
|
|
52
52
|
config,
|
|
53
|
-
segmentName: givenSegmentName,
|
|
53
|
+
segmentName: givenSegmentName ?? null,
|
|
54
54
|
});
|
|
55
55
|
for (const [segmentName, segmentSchema] of givenSegmentName
|
|
56
56
|
? [[givenSegmentName, fullSchema.segments[givenSegmentName]]]
|
package/mjs/types.d.ts
CHANGED
|
@@ -338,6 +338,11 @@ export interface VovkGeneratorConfigCommon {
|
|
|
338
338
|
snippets?: VovkSnippetsConfig;
|
|
339
339
|
openAPIObject?: Partial<OpenAPIObject>;
|
|
340
340
|
reExports?: Record<string, string>;
|
|
341
|
+
imports?: {
|
|
342
|
+
fetcher?: string | [string, string] | [string];
|
|
343
|
+
validateOnClient?: string | [string, string] | [string] | null;
|
|
344
|
+
createRPC?: string | [string, string] | [string];
|
|
345
|
+
};
|
|
341
346
|
}
|
|
342
347
|
export type ClientTemplateDef = {
|
|
343
348
|
extends?: string;
|
|
@@ -362,9 +367,6 @@ export interface VovkOpenAPIMixin {
|
|
|
362
367
|
} | {
|
|
363
368
|
object: OpenAPIObject;
|
|
364
369
|
};
|
|
365
|
-
package?: VovkPackageJson;
|
|
366
|
-
readme?: VovkReadmeConfig;
|
|
367
|
-
snippets?: VovkSnippetsConfig;
|
|
368
370
|
apiRoot?: string;
|
|
369
371
|
getModuleName?: 'nestjs-operation-id' | (string & {}) | 'api' | GetOpenAPINameFn;
|
|
370
372
|
getMethodName?: 'nestjs-operation-id' | 'camel-case-operation-id' | 'auto' | GetOpenAPINameFn;
|
|
@@ -387,8 +389,13 @@ export interface VovkSegmentConfig extends VovkGeneratorConfigCommon {
|
|
|
387
389
|
export interface VovkGeneratorConfig extends VovkGeneratorConfigCommon {
|
|
388
390
|
segments?: Record<string, VovkSegmentConfig>;
|
|
389
391
|
}
|
|
390
|
-
interface
|
|
392
|
+
export interface VovkGeneratorConfigStrict extends Omit<VovkGeneratorConfig, 'origin' | 'segments' | 'imports'> {
|
|
391
393
|
origin: string;
|
|
394
|
+
imports: {
|
|
395
|
+
fetcher: [string, string] | [string];
|
|
396
|
+
validateOnClient: [string, string] | [string] | null;
|
|
397
|
+
createRPC: [string, string] | [string];
|
|
398
|
+
};
|
|
392
399
|
segments?: Record<string, Omit<VovkSegmentConfig, 'openAPIMixin'> & {
|
|
393
400
|
openAPIMixin: VovkOpenAPIMixinNormalized;
|
|
394
401
|
}>;
|
|
@@ -409,11 +416,6 @@ type VovkUserConfig = {
|
|
|
409
416
|
segmentedClient?: ClientConfigSegmented;
|
|
410
417
|
bundle?: BundleConfig;
|
|
411
418
|
clientTemplateDefs?: Record<string, ClientTemplateDef>;
|
|
412
|
-
imports?: {
|
|
413
|
-
fetcher?: string | [string, string] | [string];
|
|
414
|
-
validateOnClient?: string | [string, string] | [string];
|
|
415
|
-
createRPC?: string | [string, string] | [string];
|
|
416
|
-
};
|
|
417
419
|
rootSegmentModulesDirName?: string;
|
|
418
420
|
moduleTemplates?: {
|
|
419
421
|
service?: string;
|
|
@@ -426,15 +428,10 @@ export type VovkConfig = VovkUserConfig;
|
|
|
426
428
|
export type VovkStrictConfig = Required<Omit<VovkUserConfig, 'emitConfig' | 'libs' | 'imports' | 'composedClient' | 'segmentedClient' | 'bundle' | 'extendClientWithOpenAPI' | 'generator'>> & {
|
|
427
429
|
emitConfig: (keyof VovkStrictConfig | string)[];
|
|
428
430
|
bundle: RequireAllExcept<NonNullable<VovkUserConfig['bundle']>, 'includeSegments' | 'excludeSegments'>;
|
|
429
|
-
imports: {
|
|
430
|
-
fetcher: [string, string] | [string];
|
|
431
|
-
validateOnClient: [string, string] | [string] | null;
|
|
432
|
-
createRPC: [string, string] | [string];
|
|
433
|
-
};
|
|
434
431
|
libs: Record<string, KnownAny>;
|
|
435
432
|
composedClient: RequireFields<ClientConfigComposed, 'enabled' | 'fromTemplates' | 'outDir' | 'prettifyClient'>;
|
|
436
433
|
segmentedClient: RequireFields<ClientConfigSegmented, 'enabled' | 'fromTemplates' | 'outDir' | 'prettifyClient'>;
|
|
437
|
-
generatorConfig:
|
|
434
|
+
generatorConfig: VovkGeneratorConfigStrict;
|
|
438
435
|
};
|
|
439
436
|
export type RequireFields<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
440
437
|
export type RequireAllExcept<T, K extends keyof T> = Required<Omit<T, K>> & Pick<T, K>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { PackageJson } from 'type-fest';
|
|
2
|
-
import type { VovkGeneratorConfigCommon, VovkReadmeConfig, VovkSnippetsConfig, VovkSchema } from '../types';
|
|
2
|
+
import type { VovkGeneratorConfigCommon, VovkReadmeConfig, VovkSnippetsConfig, VovkSchema, VovkGeneratorConfigStrict } from '../types';
|
|
3
3
|
import type { OpenAPIObject } from 'openapi3-ts/oas31';
|
|
4
4
|
export declare function getGeneratorConfig({ schema, config, segmentName, isBundle, }: {
|
|
5
5
|
schema: VovkSchema;
|
|
6
6
|
config?: VovkGeneratorConfigCommon;
|
|
7
|
-
segmentName
|
|
7
|
+
segmentName: string | null;
|
|
8
8
|
isBundle?: boolean;
|
|
9
9
|
}): {
|
|
10
10
|
readme: VovkReadmeConfig;
|
|
@@ -12,4 +12,5 @@ export declare function getGeneratorConfig({ schema, config, segmentName, isBund
|
|
|
12
12
|
snippets: VovkSnippetsConfig;
|
|
13
13
|
origin: string;
|
|
14
14
|
package: PackageJson;
|
|
15
|
+
imports: VovkGeneratorConfigStrict['imports'];
|
|
15
16
|
};
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getGeneratorConfig = getGeneratorConfig;
|
|
7
7
|
const deepExtend_1 = __importDefault(require("./deepExtend"));
|
|
8
8
|
function getGeneratorConfig({ schema, config, segmentName, isBundle, }) {
|
|
9
|
-
const packageJson = (0, deepExtend_1.default)({}, schema.meta?.package, schema.meta?.config?.generatorConfig?.package, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.package : undefined, segmentName ? schema.segments?.[segmentName]?.meta?.package : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.package : undefined,
|
|
9
|
+
const packageJson = (0, deepExtend_1.default)({}, schema.meta?.package, schema.meta?.config?.generatorConfig?.package, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.package : undefined, segmentName ? schema.segments?.[segmentName]?.meta?.package : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.package : undefined, config?.package);
|
|
10
10
|
return {
|
|
11
11
|
package: packageJson,
|
|
12
12
|
openAPIObject: (0, deepExtend_1.default)({}, {
|
|
@@ -16,12 +16,17 @@ function getGeneratorConfig({ schema, config, segmentName, isBundle, }) {
|
|
|
16
16
|
description: packageJson.description,
|
|
17
17
|
},
|
|
18
18
|
}, schema.meta?.config?.generatorConfig?.openAPIObject, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.openAPIObject : undefined, segmentName ? schema?.segments?.[segmentName]?.meta?.openAPIObject : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIObject : undefined, config?.openAPIObject),
|
|
19
|
-
snippets: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.snippets, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.snippets : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.snippets : undefined,
|
|
20
|
-
readme: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.readme, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.readme : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.readme : undefined,
|
|
19
|
+
snippets: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.snippets, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.snippets : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.snippets : undefined, config?.snippets),
|
|
20
|
+
readme: (0, deepExtend_1.default)({}, schema.meta?.config?.generatorConfig?.readme, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.readme : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.readme : undefined, config?.readme),
|
|
21
21
|
origin: config?.origin ||
|
|
22
22
|
schema.meta?.config?.generatorConfig?.origin ||
|
|
23
23
|
(segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.origin : undefined) ||
|
|
24
24
|
(isBundle ? schema.meta?.config?.bundle?.generatorConfig?.origin : undefined) ||
|
|
25
25
|
'',
|
|
26
|
+
imports: (0, deepExtend_1.default)({
|
|
27
|
+
fetcher: ['vovk'],
|
|
28
|
+
validateOnClient: null,
|
|
29
|
+
createRPC: ['vovk'],
|
|
30
|
+
}, schema.meta?.config?.generatorConfig?.imports, isBundle ? schema.meta?.config?.bundle?.generatorConfig?.imports : undefined, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.imports : undefined, config?.imports),
|
|
26
31
|
};
|
|
27
32
|
}
|