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.
@@ -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, fetcher?: VovkClientFetcher<OPTS>, options?: VovkDefaultFetcherOptions<OPTS>) => VovkClient<T, OPTS>;
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>;
@@ -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, fetcher, options) => {
20
+ const createRPC = (givenSchema, segmentName, rpcModuleName, givenFetcher, options) => {
21
21
  const schema = givenSchema; // fixes incompatibilities with JSON module
22
- fetcher ??= fetcher_1.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 ?? options?.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');
@@ -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> | undefined;
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
  }>;
@@ -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, package: packageJson, segmentName, }: VovkOpenAPIMixinNormalized & {
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, package: packageJson, segmentName, }) {
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 ProjectConfigStrict extends Omit<VovkGeneratorConfig, 'origin' | 'segments'> {
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: ProjectConfigStrict;
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?: string;
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, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIMixin?.package : undefined, config?.package);
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, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIMixin?.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, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIMixin?.readme : undefined, config?.readme),
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, fetcher?: VovkClientFetcher<OPTS>, options?: VovkDefaultFetcherOptions<OPTS>) => VovkClient<T, OPTS>;
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>;
@@ -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, fetcher, options) => {
20
+ const createRPC = (givenSchema, segmentName, rpcModuleName, givenFetcher, options) => {
21
21
  const schema = givenSchema; // fixes incompatibilities with JSON module
22
- fetcher ??= fetcher_1.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 ?? options?.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');
@@ -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> | undefined;
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
  }>;
@@ -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, package: packageJson, segmentName, }: VovkOpenAPIMixinNormalized & {
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, package: packageJson, segmentName, }) {
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 ProjectConfigStrict extends Omit<VovkGeneratorConfig, 'origin' | 'segments'> {
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: ProjectConfigStrict;
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?: string;
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, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIMixin?.package : undefined, config?.package);
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, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIMixin?.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, segmentName ? schema.meta?.config?.generatorConfig?.segments?.[segmentName]?.openAPIMixin?.readme : undefined, config?.readme),
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vovk",
3
- "version": "3.0.0-draft.404",
3
+ "version": "3.0.0-draft.405",
4
4
  "main": "./cjs/index.js",
5
5
  "module": "./mjs/index.js",
6
6
  "types": "./mjs/index.d.ts",