vovk 3.0.0-draft.340 → 3.0.0-draft.342

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 (82) hide show
  1. package/mjs/client/createRPC.js +4 -3
  2. package/mjs/client/types.d.ts +2 -2
  3. package/mjs/tsconfig.tsbuildinfo +1 -0
  4. package/package.json +5 -3
  5. package/cjs/HttpException.d.ts +0 -7
  6. package/cjs/HttpException.js +0 -15
  7. package/cjs/JSONLinesResponse.d.ts +0 -19
  8. package/cjs/JSONLinesResponse.js +0 -93
  9. package/cjs/VovkApp.d.ts +0 -29
  10. package/cjs/VovkApp.js +0 -200
  11. package/cjs/client/createRPC.d.ts +0 -3
  12. package/cjs/client/createRPC.js +0 -136
  13. package/cjs/client/defaultHandler.d.ts +0 -6
  14. package/cjs/client/defaultHandler.js +0 -29
  15. package/cjs/client/defaultStreamHandler.d.ts +0 -9
  16. package/cjs/client/defaultStreamHandler.js +0 -96
  17. package/cjs/client/fetcher.d.ts +0 -16
  18. package/cjs/client/fetcher.js +0 -100
  19. package/cjs/client/index.d.ts +0 -4
  20. package/cjs/client/index.js +0 -10
  21. package/cjs/client/progressive.d.ts +0 -9
  22. package/cjs/client/progressive.js +0 -51
  23. package/cjs/client/types.d.ts +0 -126
  24. package/cjs/client/types.js +0 -2
  25. package/cjs/createVovkApp.d.ts +0 -63
  26. package/cjs/createVovkApp.js +0 -140
  27. package/cjs/index.d.ts +0 -65
  28. package/cjs/index.js +0 -38
  29. package/cjs/openapi/error.d.ts +0 -2
  30. package/cjs/openapi/error.js +0 -100
  31. package/cjs/openapi/generateFnName.d.ts +0 -23
  32. package/cjs/openapi/generateFnName.js +0 -81
  33. package/cjs/openapi/index.d.ts +0 -12
  34. package/cjs/openapi/index.js +0 -21
  35. package/cjs/openapi/openAPIToVovkSchema/applyComponentsSchemas.d.ts +0 -3
  36. package/cjs/openapi/openAPIToVovkSchema/applyComponentsSchemas.js +0 -67
  37. package/cjs/openapi/openAPIToVovkSchema/index.d.ts +0 -4
  38. package/cjs/openapi/openAPIToVovkSchema/index.js +0 -197
  39. package/cjs/openapi/openAPIToVovkSchema/inlineRefs.d.ts +0 -10
  40. package/cjs/openapi/openAPIToVovkSchema/inlineRefs.js +0 -102
  41. package/cjs/openapi/vovkSchemaToOpenAPI.d.ts +0 -9
  42. package/cjs/openapi/vovkSchemaToOpenAPI.js +0 -233
  43. package/cjs/types.d.ts +0 -405
  44. package/cjs/types.js +0 -74
  45. package/cjs/utils/camelCase.d.ts +0 -6
  46. package/cjs/utils/camelCase.js +0 -37
  47. package/cjs/utils/createCodeExamples.d.ts +0 -19
  48. package/cjs/utils/createCodeExamples.js +0 -110
  49. package/cjs/utils/createDecorator.d.ts +0 -6
  50. package/cjs/utils/createDecorator.js +0 -48
  51. package/cjs/utils/createLLMTools.d.ts +0 -44
  52. package/cjs/utils/createLLMTools.js +0 -118
  53. package/cjs/utils/createStandardValidation.d.ts +0 -81
  54. package/cjs/utils/createStandardValidation.js +0 -33
  55. package/cjs/utils/generateStaticAPI.d.ts +0 -4
  56. package/cjs/utils/generateStaticAPI.js +0 -30
  57. package/cjs/utils/getJSONSchemaExample.d.ts +0 -8
  58. package/cjs/utils/getJSONSchemaExample.js +0 -234
  59. package/cjs/utils/getJSONSchemaSample.d.ts +0 -2
  60. package/cjs/utils/getJSONSchemaSample.js +0 -167
  61. package/cjs/utils/getSchema.d.ts +0 -21
  62. package/cjs/utils/getSchema.js +0 -38
  63. package/cjs/utils/multitenant.d.ts +0 -24
  64. package/cjs/utils/multitenant.js +0 -170
  65. package/cjs/utils/parseQuery.d.ts +0 -25
  66. package/cjs/utils/parseQuery.js +0 -156
  67. package/cjs/utils/reqForm.d.ts +0 -2
  68. package/cjs/utils/reqForm.js +0 -33
  69. package/cjs/utils/reqMeta.d.ts +0 -2
  70. package/cjs/utils/reqMeta.js +0 -13
  71. package/cjs/utils/reqQuery.d.ts +0 -2
  72. package/cjs/utils/reqQuery.js +0 -10
  73. package/cjs/utils/serializeQuery.d.ts +0 -13
  74. package/cjs/utils/serializeQuery.js +0 -65
  75. package/cjs/utils/setHandlerSchema.d.ts +0 -4
  76. package/cjs/utils/setHandlerSchema.js +0 -15
  77. package/cjs/utils/shim.d.ts +0 -0
  78. package/cjs/utils/shim.js +0 -17
  79. package/cjs/utils/upperFirst.d.ts +0 -1
  80. package/cjs/utils/upperFirst.js +0 -6
  81. package/cjs/utils/withValidationLibrary.d.ts +0 -76
  82. package/cjs/utils/withValidationLibrary.js +0 -123
package/cjs/types.js DELETED
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VovkSchemaIdEnum = exports.HttpStatus = exports.HttpMethod = void 0;
4
- // Enums
5
- var HttpMethod;
6
- (function (HttpMethod) {
7
- HttpMethod["GET"] = "GET";
8
- HttpMethod["POST"] = "POST";
9
- HttpMethod["PUT"] = "PUT";
10
- HttpMethod["PATCH"] = "PATCH";
11
- HttpMethod["DELETE"] = "DELETE";
12
- HttpMethod["HEAD"] = "HEAD";
13
- HttpMethod["OPTIONS"] = "OPTIONS";
14
- })(HttpMethod || (exports.HttpMethod = HttpMethod = {}));
15
- var HttpStatus;
16
- (function (HttpStatus) {
17
- HttpStatus[HttpStatus["NULL"] = 0] = "NULL";
18
- HttpStatus[HttpStatus["CONTINUE"] = 100] = "CONTINUE";
19
- HttpStatus[HttpStatus["SWITCHING_PROTOCOLS"] = 101] = "SWITCHING_PROTOCOLS";
20
- HttpStatus[HttpStatus["PROCESSING"] = 102] = "PROCESSING";
21
- HttpStatus[HttpStatus["EARLYHINTS"] = 103] = "EARLYHINTS";
22
- HttpStatus[HttpStatus["OK"] = 200] = "OK";
23
- HttpStatus[HttpStatus["CREATED"] = 201] = "CREATED";
24
- HttpStatus[HttpStatus["ACCEPTED"] = 202] = "ACCEPTED";
25
- HttpStatus[HttpStatus["NON_AUTHORITATIVE_INFORMATION"] = 203] = "NON_AUTHORITATIVE_INFORMATION";
26
- HttpStatus[HttpStatus["NO_CONTENT"] = 204] = "NO_CONTENT";
27
- HttpStatus[HttpStatus["RESET_CONTENT"] = 205] = "RESET_CONTENT";
28
- HttpStatus[HttpStatus["PARTIAL_CONTENT"] = 206] = "PARTIAL_CONTENT";
29
- HttpStatus[HttpStatus["AMBIGUOUS"] = 300] = "AMBIGUOUS";
30
- HttpStatus[HttpStatus["MOVED_PERMANENTLY"] = 301] = "MOVED_PERMANENTLY";
31
- HttpStatus[HttpStatus["FOUND"] = 302] = "FOUND";
32
- HttpStatus[HttpStatus["SEE_OTHER"] = 303] = "SEE_OTHER";
33
- HttpStatus[HttpStatus["NOT_MODIFIED"] = 304] = "NOT_MODIFIED";
34
- HttpStatus[HttpStatus["TEMPORARY_REDIRECT"] = 307] = "TEMPORARY_REDIRECT";
35
- HttpStatus[HttpStatus["PERMANENT_REDIRECT"] = 308] = "PERMANENT_REDIRECT";
36
- HttpStatus[HttpStatus["BAD_REQUEST"] = 400] = "BAD_REQUEST";
37
- HttpStatus[HttpStatus["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
38
- HttpStatus[HttpStatus["PAYMENT_REQUIRED"] = 402] = "PAYMENT_REQUIRED";
39
- HttpStatus[HttpStatus["FORBIDDEN"] = 403] = "FORBIDDEN";
40
- HttpStatus[HttpStatus["NOT_FOUND"] = 404] = "NOT_FOUND";
41
- HttpStatus[HttpStatus["METHOD_NOT_ALLOWED"] = 405] = "METHOD_NOT_ALLOWED";
42
- HttpStatus[HttpStatus["NOT_ACCEPTABLE"] = 406] = "NOT_ACCEPTABLE";
43
- HttpStatus[HttpStatus["PROXY_AUTHENTICATION_REQUIRED"] = 407] = "PROXY_AUTHENTICATION_REQUIRED";
44
- HttpStatus[HttpStatus["REQUEST_TIMEOUT"] = 408] = "REQUEST_TIMEOUT";
45
- HttpStatus[HttpStatus["CONFLICT"] = 409] = "CONFLICT";
46
- HttpStatus[HttpStatus["GONE"] = 410] = "GONE";
47
- HttpStatus[HttpStatus["LENGTH_REQUIRED"] = 411] = "LENGTH_REQUIRED";
48
- HttpStatus[HttpStatus["PRECONDITION_FAILED"] = 412] = "PRECONDITION_FAILED";
49
- HttpStatus[HttpStatus["PAYLOAD_TOO_LARGE"] = 413] = "PAYLOAD_TOO_LARGE";
50
- HttpStatus[HttpStatus["URI_TOO_LONG"] = 414] = "URI_TOO_LONG";
51
- HttpStatus[HttpStatus["UNSUPPORTED_MEDIA_TYPE"] = 415] = "UNSUPPORTED_MEDIA_TYPE";
52
- HttpStatus[HttpStatus["REQUESTED_RANGE_NOT_SATISFIABLE"] = 416] = "REQUESTED_RANGE_NOT_SATISFIABLE";
53
- HttpStatus[HttpStatus["EXPECTATION_FAILED"] = 417] = "EXPECTATION_FAILED";
54
- HttpStatus[HttpStatus["I_AM_A_TEAPOT"] = 418] = "I_AM_A_TEAPOT";
55
- HttpStatus[HttpStatus["MISDIRECTED"] = 421] = "MISDIRECTED";
56
- HttpStatus[HttpStatus["UNPROCESSABLE_ENTITY"] = 422] = "UNPROCESSABLE_ENTITY";
57
- HttpStatus[HttpStatus["FAILED_DEPENDENCY"] = 424] = "FAILED_DEPENDENCY";
58
- HttpStatus[HttpStatus["PRECONDITION_REQUIRED"] = 428] = "PRECONDITION_REQUIRED";
59
- HttpStatus[HttpStatus["TOO_MANY_REQUESTS"] = 429] = "TOO_MANY_REQUESTS";
60
- HttpStatus[HttpStatus["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
61
- HttpStatus[HttpStatus["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
62
- HttpStatus[HttpStatus["BAD_GATEWAY"] = 502] = "BAD_GATEWAY";
63
- HttpStatus[HttpStatus["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";
64
- HttpStatus[HttpStatus["GATEWAY_TIMEOUT"] = 504] = "GATEWAY_TIMEOUT";
65
- HttpStatus[HttpStatus["HTTP_VERSION_NOT_SUPPORTED"] = 505] = "HTTP_VERSION_NOT_SUPPORTED";
66
- })(HttpStatus || (exports.HttpStatus = HttpStatus = {}));
67
- // -----
68
- var VovkSchemaIdEnum;
69
- (function (VovkSchemaIdEnum) {
70
- VovkSchemaIdEnum["META"] = "https://vovk.dev/api/spec/v3/meta.json";
71
- VovkSchemaIdEnum["CONFIG"] = "https://vovk.dev/api/spec/v3/config.json";
72
- VovkSchemaIdEnum["SEGMENT"] = "https://vovk.dev/api/spec/v3/segment.json";
73
- VovkSchemaIdEnum["SCHEMA"] = "https://vovk.dev/api/spec/v3/schema.json";
74
- })(VovkSchemaIdEnum || (exports.VovkSchemaIdEnum = VovkSchemaIdEnum = {}));
@@ -1,6 +0,0 @@
1
- /**
2
- * Converts string to camel case.
3
- * @param {*} input - The value to convert to camel case.
4
- * @returns {string}
5
- */
6
- export declare function camelCase(input: string): string;
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.camelCase = camelCase;
4
- // Convert any value to string
5
- function toString(value) {
6
- return value == null ? '' : String(value);
7
- }
8
- // Regex to match words (including Unicode letters & digits)
9
- const reUnicodeWord = /[\p{Lu}]{2,}(?=[\p{Lu}][\p{Ll}]+[0-9]*|\b)|[\p{Lu}]?[\p{Ll}]+[0-9]*|[\p{Lu}]|[0-9]+/gu;
10
- /**
11
- * Splits string into an array of words based on Unicode word boundaries
12
- * @param {string} str
13
- * @returns {string[]}
14
- */
15
- function unicodeWords(str) {
16
- return str.match(reUnicodeWord) || [];
17
- }
18
- /**
19
- * Converts string to camel case.
20
- * @param {*} input - The value to convert to camel case.
21
- * @returns {string}
22
- */
23
- function camelCase(input) {
24
- const str = toString(input);
25
- // replace separators with space
26
- const sanitized = str.replace(/[\s_-]+/g, ' ').trim();
27
- const words = unicodeWords(sanitized);
28
- return words
29
- .map((word, index) => {
30
- const lower = word.toLowerCase();
31
- if (index === 0) {
32
- return lower;
33
- }
34
- return lower.charAt(0).toUpperCase() + lower.slice(1);
35
- })
36
- .join('');
37
- }
@@ -1,19 +0,0 @@
1
- import type { KnownAny, VovkControllerSchema, VovkHandlerSchema } from '../types.js';
2
- export type CodeSamplePackageJson = {
3
- name?: string;
4
- version?: string;
5
- description?: string;
6
- rs_name?: string;
7
- py_name?: string;
8
- [key: string]: KnownAny;
9
- };
10
- export declare function createCodeExamples({ handlerName, handlerSchema, controllerSchema, package: packageJson, }: {
11
- handlerName: string;
12
- handlerSchema: VovkHandlerSchema;
13
- controllerSchema: VovkControllerSchema;
14
- package?: CodeSamplePackageJson;
15
- }): {
16
- ts: string;
17
- py: string;
18
- rs: string;
19
- };
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCodeExamples = createCodeExamples;
4
- const getJSONSchemaExample_js_1 = require("./getJSONSchemaExample.js");
5
- const toSnakeCase = (str) => str
6
- .replace(/-/g, '_') // Replace hyphens with underscores
7
- .replace(/([a-z0-9])([A-Z])/g, '$1_$2') // Add underscore between lowercase/digit and uppercase
8
- .replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1_$2') // Add underscore between uppercase letters if the second one is followed by a lowercase
9
- .toLowerCase()
10
- .replace(/^_/, ''); // Remove leading underscore
11
- function createCodeExamples({ handlerName, handlerSchema, controllerSchema, package: packageJson, }) {
12
- const queryValidation = handlerSchema?.validation?.query;
13
- const bodyValidation = handlerSchema?.validation?.body;
14
- const paramsValidation = handlerSchema?.validation?.params;
15
- const outputValidation = handlerSchema?.validation?.output;
16
- const iterationValidation = handlerSchema?.validation?.iteration;
17
- const getTsSample = (schema, indent) => (0, getJSONSchemaExample_js_1.getJSONSchemaExample)(schema, { stripQuotes: true, indent: indent ?? 4 });
18
- const getPySample = (schema, indent) => (0, getJSONSchemaExample_js_1.getJSONSchemaExample)(schema, { stripQuotes: false, indent: indent ?? 4, comment: '#' });
19
- const getRsSample = (schema, indent) => (0, getJSONSchemaExample_js_1.getJSONSchemaExample)(schema, { stripQuotes: false, indent: indent ?? 4 });
20
- const hasArg = !!queryValidation || !!bodyValidation || !!paramsValidation;
21
- const rpcName = controllerSchema.rpcModuleName;
22
- const handlerNameSnake = toSnakeCase(handlerName);
23
- const rpcNameSnake = toSnakeCase(rpcName);
24
- const packageName = packageJson?.name || 'vovk-client';
25
- const packageNameSnake = toSnakeCase(packageName);
26
- const tsArgs = hasArg
27
- ? `{
28
- ${[
29
- bodyValidation ? ` body: ${getTsSample(bodyValidation)},` : null,
30
- queryValidation ? ` query: ${getTsSample(queryValidation)},` : null,
31
- paramsValidation ? ` params: ${getTsSample(paramsValidation)},` : null,
32
- ]
33
- .filter(Boolean)
34
- .join('\n')}
35
- }`
36
- : '';
37
- const TS_CODE = `import { ${rpcName} } from '${packageName}';
38
-
39
- ${iterationValidation ? 'using' : 'const'} response = await ${rpcName}.${handlerName}(${tsArgs});
40
- ${outputValidation
41
- ? `
42
- console.log(response);
43
- /*
44
- ${getTsSample(outputValidation, 0)}
45
- */`
46
- : ''}${iterationValidation
47
- ? `
48
- for await (const item of response) {
49
- console.log(item);
50
- /*
51
- ${getTsSample(iterationValidation)}
52
- */
53
- }`
54
- : ''}`;
55
- const PY_CODE = `from ${packageJson?.py_name ?? packageNameSnake} import ${rpcName}
56
-
57
- response = ${rpcName}.${handlerNameSnake}(${hasArg
58
- ? '\n' +
59
- [
60
- bodyValidation ? ` body=${getPySample(bodyValidation)},` : null,
61
- queryValidation ? ` query=${getPySample(queryValidation)},` : null,
62
- paramsValidation ? ` params=${getPySample(paramsValidation)},` : null,
63
- ]
64
- .filter(Boolean)
65
- .join('\n') +
66
- '\n'
67
- : ''})
68
-
69
- ${outputValidation ? `print(response)\n${getPySample(outputValidation, 0)}` : ''}${iterationValidation
70
- ? `for i, item in enumerate(response):
71
- print(f"iteration #{i}:\\n {item}")
72
- # iteration #0:
73
- ${getPySample(iterationValidation)}`
74
- : ''}`;
75
- const serdeUnwrap = (fake) => `from_value(json!(${fake})).unwrap()`;
76
- const RS_CODE = `use ${packageJson?.rs_name ?? packageNameSnake}::${rpcNameSnake};
77
- use serde_json::{ from_value, json };
78
-
79
- pub fn main() {
80
- let response = ${rpcNameSnake}::${handlerNameSnake}(
81
- ${bodyValidation ? serdeUnwrap(getRsSample(bodyValidation)) : '()'}, /* body */
82
- ${queryValidation ? serdeUnwrap(getRsSample(queryValidation)) : '()'}, /* query */
83
- ${paramsValidation ? serdeUnwrap(getRsSample(paramsValidation)) : '()'}, /* params */
84
- None, /* headers (HashMap) */
85
- None, /* api_root */
86
- false, /* disable_client_validation */
87
- );${outputValidation
88
- ? `\n\nmatch response {
89
- Ok(output) => println!("{:?}", output),
90
- /*
91
- output ${getTsSample(outputValidation)}
92
- */
93
- Err(e) => println!("error: {:?}", e),
94
- }`
95
- : ''}${iterationValidation
96
- ? `match response {
97
- Ok(stream) => {
98
- for (i, item) in stream.enumerate() {
99
- println!("#{}: {:?}", i, item);
100
- /*
101
- #0: iteration ${getTsSample(iterationValidation, 8)}
102
- */
103
- }
104
- },
105
- Err(e) => println!("Error initiating stream: {:?}", e),
106
- }`
107
- : ''}
108
- }`;
109
- return { ts: TS_CODE.trim(), py: PY_CODE.trim(), rs: RS_CODE.trim() };
110
- }
@@ -1,6 +0,0 @@
1
- import type { VovkHandlerSchema, KnownAny, VovkController, VovkRequest } from '../types.js';
2
- type Next = () => Promise<unknown>;
3
- export declare function createDecorator<ARGS extends unknown[], REQUEST = VovkRequest>(handler: null | ((this: VovkController, req: REQUEST, next: Next, ...args: ARGS) => unknown), initHandler?: (this: VovkController, ...args: ARGS) => Omit<VovkHandlerSchema, 'path' | 'httpMethod'> | ((handlerSchema: VovkHandlerSchema | null, options: {
4
- handlerName: string;
5
- }) => Omit<Partial<VovkHandlerSchema>, 'path' | 'httpMethod'>) | null | undefined): (...args: ARGS) => (target: KnownAny, propertyKey: string) => void;
6
- export {};
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDecorator = createDecorator;
4
- function createDecorator(handler, initHandler) {
5
- return function decoratorCreator(...args) {
6
- return function decorator(target, propertyKey) {
7
- const controller = target;
8
- const originalMethod = controller[propertyKey];
9
- if (typeof originalMethod !== 'function') {
10
- throw new Error(`Unable to decorate: ${propertyKey} is not a function`);
11
- }
12
- const sourceMethod = originalMethod._sourceMethod ?? originalMethod;
13
- const method = function method(req, params) {
14
- const next = async () => {
15
- return (await originalMethod.call(controller, req, params));
16
- };
17
- return handler ? handler.call(controller, req, next, ...args) : next();
18
- };
19
- controller[propertyKey] = method;
20
- method._controller = controller;
21
- method._sourceMethod = sourceMethod;
22
- method.fn = originalMethod.fn;
23
- method.models = originalMethod.models;
24
- sourceMethod.wrapper = method;
25
- // TODO define internal method type
26
- originalMethod._controller = controller;
27
- const handlerSchema = controller._handlers?.[propertyKey] ?? null;
28
- const initResultReturn = initHandler?.call(controller, ...args);
29
- const initResult = typeof initResultReturn === 'function'
30
- ? initResultReturn(handlerSchema, {
31
- handlerName: propertyKey,
32
- })
33
- : initResultReturn;
34
- const methodSchema = {
35
- ...handlerSchema,
36
- // avoid override of path and httpMethod
37
- ...(initResult?.validation ? { validation: initResult.validation } : {}),
38
- ...(initResult?.openapi ? { openapi: initResult.openapi } : {}),
39
- ...(initResult?.misc ? { misc: initResult.misc } : {}),
40
- };
41
- method.schema = methodSchema;
42
- controller._handlers = {
43
- ...controller._handlers,
44
- [propertyKey]: methodSchema,
45
- };
46
- };
47
- };
48
- }
@@ -1,44 +0,0 @@
1
- import type { KnownAny, VovkHandlerSchema, VovkLLMTool } from '../types.js';
2
- type Handler = ((...args: KnownAny[]) => KnownAny) & {
3
- fn?: (input: KnownAny) => KnownAny;
4
- isRPC?: boolean;
5
- schema?: VovkHandlerSchema;
6
- models?: {
7
- body?: KnownAny;
8
- query?: KnownAny;
9
- params?: KnownAny;
10
- output?: KnownAny;
11
- iteration?: KnownAny;
12
- };
13
- };
14
- type CallerInput = {
15
- handler: Handler;
16
- body: KnownAny;
17
- query: KnownAny;
18
- params: KnownAny;
19
- schema: VovkHandlerSchema;
20
- models: {
21
- body?: KnownAny;
22
- query?: KnownAny;
23
- params?: KnownAny;
24
- output?: KnownAny;
25
- iteration?: KnownAny;
26
- } | undefined;
27
- init?: RequestInit;
28
- meta: Record<string, KnownAny> | undefined;
29
- handlerName: string;
30
- moduleName: string;
31
- };
32
- declare function defaultCaller({ handler, body, query, params, init, meta }: CallerInput, _options: KnownAny): Promise<any>;
33
- export declare function createLLMTools({ modules, caller, meta, onExecute, onError, }: {
34
- modules: Record<string, object | [object, {
35
- init?: RequestInit;
36
- }]>;
37
- caller?: typeof defaultCaller;
38
- meta?: Record<string, KnownAny>;
39
- onExecute?: (result: KnownAny, callerInput: CallerInput, options: KnownAny) => void;
40
- onError?: (error: Error, callerInput: CallerInput, options: KnownAny) => void;
41
- }): {
42
- tools: VovkLLMTool[];
43
- };
44
- export {};
@@ -1,118 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createLLMTools = createLLMTools;
4
- const createLLMTool = ({ moduleName, handlerName, caller, module, init, meta, onExecute, onError, }) => {
5
- if (!module) {
6
- throw new Error(`Module "${moduleName}" not found.`);
7
- }
8
- const handler = module[handlerName];
9
- if (!handler) {
10
- throw new Error(`Handler "${handlerName}" not found in module "${moduleName}".`);
11
- }
12
- const { schema, models } = handler;
13
- if (!schema || !schema.openapi) {
14
- throw new Error(`Handler "${handlerName}" in module "${moduleName}" does not have a valid schema.`);
15
- }
16
- const execute = (input, options) => {
17
- const { body, query, params } = input;
18
- const callerInput = {
19
- schema,
20
- models,
21
- handler,
22
- body,
23
- query,
24
- params,
25
- init,
26
- meta,
27
- handlerName,
28
- moduleName,
29
- };
30
- return caller(callerInput, options)
31
- .then((data) => onExecute(data, callerInput, options) ?? data)
32
- .catch((error) => onError?.(error, callerInput, options) ?? error);
33
- };
34
- const parametersProperties = {
35
- ...(schema?.validation?.body
36
- ? {
37
- body: schema.validation.body,
38
- }
39
- : {}),
40
- ...(schema?.validation?.query
41
- ? {
42
- query: schema.validation.query,
43
- }
44
- : {}),
45
- ...(schema?.validation?.params
46
- ? {
47
- params: schema.validation.params,
48
- }
49
- : {}),
50
- };
51
- return {
52
- type: 'function',
53
- execute,
54
- name: `${moduleName}_${handlerName}`,
55
- description: schema.openapi?.['x-tool-description'] ??
56
- ([schema.openapi?.summary ?? '', schema.openapi?.description ?? ''].filter(Boolean).join('\n') || handlerName),
57
- parameters: {
58
- type: 'object',
59
- properties: parametersProperties,
60
- required: Object.keys(parametersProperties),
61
- additionalProperties: false,
62
- },
63
- models,
64
- };
65
- };
66
- async function defaultCaller({ handler, body, query, params, init, meta },
67
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
68
- _options) {
69
- if (handler.isRPC) {
70
- return handler({
71
- handler,
72
- body,
73
- query,
74
- params,
75
- init,
76
- meta,
77
- });
78
- }
79
- if (handler.fn) {
80
- return handler.fn({
81
- body,
82
- query,
83
- params,
84
- meta,
85
- });
86
- }
87
- throw new Error('Handler is not a valid RPC or controller method');
88
- }
89
- function createLLMTools({ modules, caller = defaultCaller, meta, onExecute = (result) => result, onError = () => { }, }) {
90
- const moduleWithConfig = modules;
91
- const tools = Object.entries(moduleWithConfig ?? {})
92
- .map(([moduleName, moduleWithconfig]) => {
93
- let init;
94
- let module;
95
- if (Array.isArray(moduleWithconfig)) {
96
- [module, { init }] = moduleWithconfig;
97
- }
98
- else {
99
- module = moduleWithconfig;
100
- }
101
- return Object.entries(module ?? {})
102
- .filter(([, handler]) => handler?.schema?.openapi && !handler?.schema?.openapi?.['x-tool-exclude'])
103
- .map(([handlerName]) => createLLMTool({
104
- moduleName,
105
- handlerName,
106
- caller,
107
- module,
108
- init,
109
- meta,
110
- onExecute,
111
- onError,
112
- }));
113
- })
114
- .flat();
115
- return {
116
- tools,
117
- };
118
- }
@@ -1,81 +0,0 @@
1
- import type { StandardSchemaV1 } from '@standard-schema/spec';
2
- import { KnownAny, VovkRequest, VovkTypedMethod, VovkValidationType } from '../types.js';
3
- export declare function createStandardValidation({ toJSONSchema, }: {
4
- toJSONSchema: (model: KnownAny, meta: {
5
- type: VovkValidationType;
6
- }) => KnownAny;
7
- }): <T extends (req: REQ, params: PARAMS extends StandardSchemaV1 ? StandardSchemaV1.InferInput<PARAMS> : Record<string, string>) => KnownAny, BODY extends StandardSchemaV1, QUERY extends StandardSchemaV1, PARAMS extends StandardSchemaV1, OUTPUT extends StandardSchemaV1, ITERATION extends StandardSchemaV1, REQ extends VovkRequest<KnownAny, KnownAny, KnownAny> = VovkRequest<BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferInput<BODY> : undefined, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferInput<QUERY> : undefined, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferInput<PARAMS> : undefined>, IS_FORM extends boolean = false>({ isForm, body, query, params, output, iteration, handle, disableServerSideValidation, skipSchemaEmission, validateEachIteration, }: {
8
- isForm?: IS_FORM;
9
- body?: BODY;
10
- query?: QUERY;
11
- params?: PARAMS;
12
- output?: OUTPUT;
13
- iteration?: ITERATION;
14
- handle: T;
15
- disableServerSideValidation?: boolean | VovkValidationType[];
16
- skipSchemaEmission?: boolean | VovkValidationType[];
17
- validateEachIteration?: boolean;
18
- }) => T & {
19
- __types: {
20
- body: BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any;
21
- query: QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any;
22
- params: PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any;
23
- output: OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any;
24
- iteration: ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any;
25
- isForm: IS_FORM;
26
- };
27
- isRPC?: boolean;
28
- } & {
29
- schema: import("../types.js").VovkHandlerSchema;
30
- wrapper?: ((req: VovkRequest<any, any, any>, params: Parameters<VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>>[1]) => ReturnType<VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>>) | undefined;
31
- } & {
32
- fn: {
33
- <RETURN_TYPE = ReturnType<VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>>>(input?: ((undefined extends BODY | undefined ? undefined extends QUERY | undefined ? undefined extends PARAMS | undefined ? true : false : false : false) extends true ? {
34
- disableClientValidation?: boolean;
35
- } & (undefined extends BODY | undefined ? {
36
- body?: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["body"] | undefined;
37
- } : {
38
- body: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["body"];
39
- }) & (undefined extends QUERY | undefined ? {
40
- query?: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["query"] | undefined;
41
- } : {
42
- query: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["query"];
43
- }) & (undefined extends PARAMS | undefined ? {
44
- params?: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["params"] | undefined;
45
- } : {
46
- params: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["params"];
47
- }) & {
48
- meta?: {
49
- [key: string]: any;
50
- __disableClientValidation?: boolean;
51
- };
52
- } : never) | undefined): (undefined extends BODY | undefined ? undefined extends QUERY | undefined ? undefined extends PARAMS | undefined ? true : false : false : false) extends true ? RETURN_TYPE : never;
53
- <RETURN_TYPE = ReturnType<VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>>>(input: {
54
- disableClientValidation?: boolean;
55
- } & (undefined extends BODY | undefined ? {
56
- body?: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["body"] | undefined;
57
- } : {
58
- body: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["body"];
59
- }) & (undefined extends QUERY | undefined ? {
60
- query?: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["query"] | undefined;
61
- } : {
62
- query: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["query"];
63
- }) & (undefined extends PARAMS | undefined ? {
64
- params?: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["params"] | undefined;
65
- } : {
66
- params: VovkTypedMethod<T, BODY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<BODY> : any, QUERY extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<QUERY> : any, PARAMS extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<PARAMS> : any, OUTPUT extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<OUTPUT> : any, ITERATION extends StandardSchemaV1<unknown, unknown> ? StandardSchemaV1.InferOutput<ITERATION> : any, IS_FORM>["__types"]["params"];
67
- }) & {
68
- meta?: {
69
- [key: string]: any;
70
- __disableClientValidation?: boolean;
71
- };
72
- }): RETURN_TYPE;
73
- };
74
- models: {
75
- iteration?: (ITERATION & ({} | null)) | undefined;
76
- output?: (OUTPUT & ({} | null)) | undefined;
77
- params?: (PARAMS & ({} | null)) | undefined;
78
- query?: (QUERY & ({} | null)) | undefined;
79
- body?: (BODY & ({} | null)) | undefined;
80
- };
81
- };
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createStandardValidation = createStandardValidation;
4
- const types_js_1 = require("../types.js");
5
- const withValidationLibrary_js_1 = require("./withValidationLibrary.js");
6
- const HttpException_js_1 = require("../HttpException.js");
7
- function createStandardValidation({ toJSONSchema, }) {
8
- function withStandard({ isForm, body, query, params, output, iteration, handle, disableServerSideValidation, skipSchemaEmission, validateEachIteration, }) {
9
- return (0, withValidationLibrary_js_1.withValidationLibrary)({
10
- isForm,
11
- body,
12
- query,
13
- params,
14
- output,
15
- iteration,
16
- disableServerSideValidation,
17
- skipSchemaEmission,
18
- validateEachIteration,
19
- handle: handle,
20
- toJSONSchema,
21
- validate: async (data, model, { type, i }) => {
22
- const result = await model['~standard'].validate(data);
23
- if (result.issues?.length) {
24
- throw new HttpException_js_1.HttpException(types_js_1.HttpStatus.BAD_REQUEST, `Validation failed. Invalid ${type === 'iteration' ? `${type} #${i}` : type} on server: ${result.issues
25
- .map(({ message, path }) => `${message}${path ? ` at ${path.join('.')}` : ''}`)
26
- .join(', ')}`, { [type]: data, result });
27
- }
28
- return result.value;
29
- },
30
- });
31
- }
32
- return withStandard;
33
- }
@@ -1,4 +0,0 @@
1
- import type { StaticClass } from '../types.js';
2
- export declare function generateStaticAPI(c: Record<string, StaticClass>, slug?: string): {
3
- [slug]: string[];
4
- }[];
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateStaticAPI = generateStaticAPI;
4
- function generateStaticAPI(c, slug = 'vovk') {
5
- const controllers = c;
6
- return [
7
- { [slug]: ['_schema_'] },
8
- ...Object.values(controllers)
9
- .map((controller) => {
10
- const handlers = controller._handlers;
11
- const splitPrefix = controller._prefix?.split('/') ?? [];
12
- return Object.entries(handlers ?? {})
13
- .map(([name, handler]) => {
14
- const staticParams = controller._handlersMetadata?.[name]?.staticParams;
15
- if (staticParams?.length) {
16
- return staticParams.map((paramsItem) => {
17
- let path = handler.path;
18
- for (const [key, value] of Object.entries(paramsItem ?? {})) {
19
- path = path.replace(`{${key}}`, value);
20
- }
21
- return { [slug]: [...splitPrefix, ...path.split('/')].filter(Boolean) };
22
- });
23
- }
24
- return [{ [slug]: [...splitPrefix, ...handler.path.split('/')].filter(Boolean) }];
25
- })
26
- .flat();
27
- })
28
- .flat(),
29
- ];
30
- }
@@ -1,8 +0,0 @@
1
- import { KnownAny } from '../types.js';
2
- interface SamplerOptions {
3
- comment?: '//' | '#';
4
- stripQuotes?: boolean;
5
- indent?: number;
6
- }
7
- export declare function getJSONSchemaExample(schema: KnownAny, options: SamplerOptions, rootSchema?: KnownAny): string;
8
- export {};